Mac App Store CLI integration for the dotty ecosystem.
npm install @dottyfiles/masMac App Store CLI integration for the dotty ecosystem.
``bash`
npm install @dottyfiles/mas
- macOS
- mas CLI installed (brew install mas)
- Signed into Mac App Store
`typescript
import { MasService, createMasService } from '@dottyfiles/mas';
const mas = createMasService();
// Check installation
const installed = await mas.isInstalled();
const version = await mas.getVersion();
// List installed apps
const apps = await mas.getInstalledApps();
// [{ id: '497799835', name: 'Xcode' }, ...]
// Check if specific app is installed
const hasXcode = await mas.isAppInstalled('497799835');
// Install an app by ID
await mas.install('497799835', { spinner: 'Installing Xcode...' });
// Search for apps
const results = await mas.search('Xcode');
console.log(results); // [{ id: '497799835', name: 'Xcode' }, ...]
// Check for updates
const outdated = await mas.checkForUpdates();
console.log(${outdated.length} apps have updates available);
// Upgrade all apps
await mas.upgradeAll({ spinner: 'Upgrading apps...' });
`
| Method | Returns | Description |
|--------|---------|-------------|
| isInstalled() | Promise | Check if mas CLI is installed |getVersion()
| | Promise | Get mas version |getInstalledApps()
| | Promise | List all installed App Store apps |isAppInstalled(appId)
| | Promise | Check if app is installed by ID |install(appId, options?)
| | Promise<{ success, stderr? }> | Install an app by ID |search(query)
| | Promise | Search the Mac App Store |checkForUpdates()
| | Promise | List apps with available updates |upgradeAll(options?)
| | Promise<{ success, stderr? }> | Upgrade all installed apps |
`typescript`
interface MasApp {
id: string;
name: string;
}
`typescript`
// Create a service instance
const mas = createMasService();
App IDs are shown in the Mac App Store URL. For example:
- Xcode: https://apps.apple.com/app/xcode/id497799835 -> ID is 497799835
You can also search:
`typescript``
const results = await mas.search('Xcode');
console.log(results[0].id); // '497799835'
MIT