{"_id":"@electronfriends/electron-squirrel-startup","name":"@electronfriends/electron-squirrel-startup","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@electronfriends/electron-squirrel-startup","version":"1.0.0","description":"A modern TypeScript library for handling Squirrel.Windows events in Electron applications","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"type":"module","scripts":{"build":"yarn build:clean && yarn build:cjs && yarn build:esm && yarn build:package-json","build:clean":"rimraf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:package-json":"node -e \"const fs = require('fs'); fs.writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'}, null, 2)); fs.writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}, null, 2));\"","dev":"tsc --watch","test":"node test/simple-test.js && node test/commonjs-test.cjs","prepublishOnly":"yarn build"},"keywords":["electron","squirrel","windows","installer","update","startup","esm","typescript"],"author":{"name":"ElectronFriends"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/electronfriends/electron-squirrel-startup.git"},"bugs":{"url":"https://github.com/electronfriends/electron-squirrel-startup/issues"},"homepage":"https://github.com/electronfriends/electron-squirrel-startup#readme","engines":{"node":">=20.0.0"},"peerDependencies":{"electron":">=13.0.0"},"devDependencies":{"@types/debug":"^4.1.12","@types/node":"^24.2.0","rimraf":"^6.0.1","typescript":"^5.9.2"},"dependencies":{"debug":"^4.4.1"},"_id":"@electronfriends/electron-squirrel-startup@1.0.0","gitHead":"48b3790c829c3b74d76f85ec45557243eb97106f","types":"./dist/cjs/index.d.ts","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-afEwcTPRPSJ5LpqFDSFpnyQh7d+ASVYlvO3YLrG2hjTz6uKz4Re8ic8tgQ3Kuc48nRrKNf15tD0AtdfhhN++rw==","shasum":"6f2360f07eef1e70ee5dc042882cf3fe41439cfa","tarball":"https://registry.npmjs.org/@electronfriends/electron-squirrel-startup/-/electron-squirrel-startup-1.0.0.tgz","fileCount":9,"unpackedSize":24707,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDHZKyTPGPXSWoz+so2XriLWo6AV0AbiAwiN7fTQAH7LQIhAPzPlTuslPq2NShoO3deHRZE02qSm+EEPAocYK3P9WFb"}]},"_npmUser":{"name":"electronfriends","email":"npm@electronfriends.org"},"directories":{},"maintainers":[{"name":"electronfriends","email":"npm@electronfriends.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/electron-squirrel-startup_1.0.0_1754538222502_0.427058296002512"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-07T03:43:42.437Z","1.0.0":"2025-08-07T03:43:42.761Z","modified":"2025-08-07T03:43:42.990Z"},"maintainers":[{"name":"electronfriends","email":"npm@electronfriends.org"}],"description":"A modern TypeScript library for handling Squirrel.Windows events in Electron applications","homepage":"https://github.com/electronfriends/electron-squirrel-startup#readme","keywords":["electron","squirrel","windows","installer","update","startup","esm","typescript"],"repository":{"type":"git","url":"git+https://github.com/electronfriends/electron-squirrel-startup.git"},"author":{"name":"ElectronFriends"},"bugs":{"url":"https://github.com/electronfriends/electron-squirrel-startup/issues"},"license":"MIT","readme":"# electron-squirrel-startup\r\n\r\nA modern, ESM-compatible version of [electron-squirrel-startup](https://github.com/mongodb-js/electron-squirrel-startup) for handling Squirrel.Windows events in Electron applications.\r\n\r\n## Features\r\n\r\n- ✅ **Full ESM Support** - Works with both CommonJS and ES modules\r\n- ✅ **TypeScript First** - Written in TypeScript with full type definitions\r\n- ✅ **Modern APIs** - Promise-based async functions alongside sync compatibility\r\n- ✅ **Better Error Handling** - Proper error types and timeout handling\r\n- ✅ **Configurable** - Customizable options for update paths and timeouts\r\n- ✅ **Backwards Compatible** - Drop-in replacement for the original package\r\n\r\n## Installation\r\n\r\n```bash\r\n# With npm\r\nnpm install @electronfriends/electron-squirrel-startup\r\n\r\n# With yarn\r\nyarn add @electronfriends/electron-squirrel-startup\r\n\r\n# With pnpm\r\npnpm add @electronfriends/electron-squirrel-startup\r\n```\r\n\r\n## Usage\r\n\r\n### Simple Usage (Drop-in Replacement)\r\n\r\nReplace your existing `electron-squirrel-startup` import:\r\n\r\n```javascript\r\n// CommonJS (legacy)\r\nconst squirrelStartup = require('@electronfriends/electron-squirrel-startup');\r\nif (squirrelStartup) {\r\n  // App was handling a squirrel event and has quit\r\n  return;\r\n}\r\n\r\n// ESM (modern)\r\nimport squirrelStartup from '@electronfriends/electron-squirrel-startup';\r\nif (squirrelStartup) {\r\n  // App was handling a squirrel event and has quit\r\n  return;\r\n}\r\n```\r\n\r\n### Advanced Usage with Modern APIs\r\n\r\n```javascript\r\n// ESM with async/await\r\nimport { handleSquirrelEvent, SquirrelCommand, SquirrelError } from '@electronfriends/electron-squirrel-startup';\r\nimport { app } from 'electron';\r\n\r\nasync function main() {\r\n  try {\r\n    const wasHandled = await handleSquirrelEvent({\r\n      timeout: 15000, // 15 second timeout\r\n      detached: true  // Run update process detached\r\n    });\r\n    \r\n    if (wasHandled) {\r\n      console.log('Squirrel event was handled, quitting app');\r\n      app.quit();\r\n      return;\r\n    }\r\n    \r\n    // Continue with normal app initialization\r\n    console.log('No squirrel events, starting app normally');\r\n    \r\n  } catch (error) {\r\n    if (error instanceof SquirrelError) {\r\n      console.error('Squirrel operation failed:', error.message);\r\n      console.error('Command:', error.command);\r\n      console.error('Exit code:', error.exitCode);\r\n    }\r\n    app.quit();\r\n  }\r\n}\r\n\r\nmain();\r\n```\r\n\r\n### TypeScript Usage\r\n\r\n```typescript\r\nimport { \r\n  handleSquirrelEvent, \r\n  handleSquirrelEventSync,\r\n  SquirrelOptions, \r\n  SquirrelCommand, \r\n  SquirrelError \r\n} from '@electronfriends/electron-squirrel-startup';\r\n\r\nconst options: SquirrelOptions = {\r\n  updateExePath: 'C:\\\\Custom\\\\Path\\\\Update.exe',\r\n  timeout: 20000,\r\n  detached: true\r\n};\r\n\r\n// Async version\r\nconst handled = await handleSquirrelEvent(options);\r\n\r\n// Sync version (auto-quits on squirrel events)\r\nconst shouldQuit = handleSquirrelEventSync(options);\r\n```\r\n\r\n## API Reference\r\n\r\n### Functions\r\n\r\n#### `handleSquirrelEvent(options?: SquirrelOptions): Promise<boolean>`\r\n\r\nHandles Squirrel.Windows events asynchronously. Returns a promise that resolves to `true` if a squirrel event was handled, `false` otherwise.\r\n\r\n#### `handleSquirrelEventSync(options?: SquirrelOptions): boolean`\r\n\r\nHandles Squirrel.Windows events synchronously and automatically quits the app if an event was handled. Returns `true` if a squirrel event was handled, `false` otherwise.\r\n\r\n### Types\r\n\r\n#### `SquirrelOptions`\r\n\r\n```typescript\r\ninterface SquirrelOptions {\r\n  /** Custom path to Update.exe (optional) */\r\n  updateExePath?: string;\r\n  /** Timeout for update operations in milliseconds (default: 10000) */\r\n  timeout?: number;\r\n  /** Whether to run update operations detached (default: true) */\r\n  detached?: boolean;\r\n}\r\n```\r\n\r\n#### `SquirrelCommand`\r\n\r\n```typescript\r\nenum SquirrelCommand {\r\n  INSTALL = '--squirrel-install',\r\n  UPDATED = '--squirrel-updated',\r\n  UNINSTALL = '--squirrel-uninstall',\r\n  OBSOLETE = '--squirrel-obsolete',\r\n}\r\n```\r\n\r\n#### `SquirrelError`\r\n\r\nCustom error class for squirrel operation failures:\r\n\r\n```typescript\r\nclass SquirrelError extends Error {\r\n  constructor(\r\n    message: string, \r\n    public readonly command: string, \r\n    public readonly exitCode?: number\r\n  );\r\n}\r\n```\r\n\r\n## Supported Commands\r\n\r\n- `--squirrel-install` - App was just installed\r\n- `--squirrel-updated` - App was just updated  \r\n- `--squirrel-uninstall` - App is being uninstalled\r\n- `--squirrel-obsolete` - App version is obsolete\r\n\r\n## Migration from electron-squirrel-startup\r\n\r\nThis package is designed as a drop-in replacement. Simply replace the package name in your imports:\r\n\r\n```diff\r\n- const squirrelStartup = require('electron-squirrel-startup');\r\n+ const squirrelStartup = require('@electronfriends/electron-squirrel-startup');\r\n\r\n- import squirrelStartup from 'electron-squirrel-startup';\r\n+ import squirrelStartup from '@electronfriends/electron-squirrel-startup';\r\n```\r\n\r\n## Credits\r\n\r\nThis package is based on the original [electron-squirrel-startup](https://github.com/mongodb-js/electron-squirrel-startup) by MongoDB. \r\n\r\n## License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n","readmeFilename":"README.md","_rev":"1-95a2b7defc481ffa05936b354527c057"}