{"_id":"@appydave/appysentinel-config","name":"@appydave/appysentinel-config","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@appydave/appysentinel-config","version":"0.1.0","description":"Shared ESLint, TypeScript, Vitest, and Prettier configs for AppySentinel (Bun + TypeScript + Hono + Zod + Pino)","type":"module","exports":{"./eslint/base":"./eslint/base.config.js","./vitest/node":"./vitest/node.config.ts","./typescript/base":"./typescript/base.json","./typescript/base.json":"./typescript/base.json","./typescript/node":"./typescript/node.json","./typescript/node.json":"./typescript/node.json","./prettier":"./prettier/.prettierrc"},"scripts":{"test":"echo 'config has no tests' && exit 0","typecheck":"echo 'config has no TS sources' && exit 0","lint":"echo 'config self-lint skipped' && exit 0","prepublishOnly":"npm pack --dry-run"},"peerDependencies":{"@eslint/js":"^9.17.0","@typescript-eslint/eslint-plugin":"^8.20.0","@typescript-eslint/parser":"^8.20.0","eslint":"^9.17.0","globals":"^15.14.0","prettier":"^3.4.2","typescript":"^5.7.3","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"peerDependenciesMeta":{"vitest":{"optional":true}},"keywords":["appydave","appysentinel","sentinel","telemetry","config","eslint","eslint-config","vitest","typescript","prettier","boilerplate"],"repository":{"type":"git","url":"git+https://github.com/appydave/appysentinal.git","directory":"packages/config"},"homepage":"https://github.com/appydave/appysentinal#readme","author":{"name":"David Cruwys"},"license":"MIT","gitHead":"f7caf0226461024dda2a761dbc07f4047e5d4884","_id":"@appydave/appysentinel-config@0.1.0","bugs":{"url":"https://github.com/appydave/appysentinal/issues"},"_nodeVersion":"25.8.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-E6dAmpowGNBu5McnsHsvLJhlNpQ+vCs6M/9VVrVrZTRQcUU62dXf7HZKbGvK97tWPuEusjGokNbFSzMwC5vW1g==","shasum":"1632b943e2818da4f25fa01daf44a8992283dda7","tarball":"https://registry.npmjs.org/@appydave/appysentinel-config/-/appysentinel-config-0.1.0.tgz","fileCount":8,"unpackedSize":6244,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzQJFw5ITY/t27HOWbh++rNFFlgowsJjeNl3UFMTJyLgIgQ7G0WC5tGiR/L6AManRlnjCwDDo9ip2ImVXX149t0Ec="}]},"_npmUser":{"name":"klueless-io","email":"david@ideasmen.com.au"},"directories":{},"maintainers":[{"name":"klueless-io","email":"david@ideasmen.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/appysentinel-config_0.1.0_1777202606512_0.9406555724404617"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-26T11:23:26.408Z","0.1.0":"2026-04-26T11:23:26.676Z","modified":"2026-04-26T11:23:26.895Z"},"maintainers":[{"name":"klueless-io","email":"david@ideasmen.com.au"}],"description":"Shared ESLint, TypeScript, Vitest, and Prettier configs for AppySentinel (Bun + TypeScript + Hono + Zod + Pino)","homepage":"https://github.com/appydave/appysentinal#readme","keywords":["appydave","appysentinel","sentinel","telemetry","config","eslint","eslint-config","vitest","typescript","prettier","boilerplate"],"repository":{"type":"git","url":"git+https://github.com/appydave/appysentinal.git","directory":"packages/config"},"author":{"name":"David Cruwys"},"bugs":{"url":"https://github.com/appydave/appysentinal/issues"},"license":"MIT","readme":"# @appydave/appysentinel-config\n\nShared ESLint, TypeScript, Vitest, and Prettier configurations for AppySentinel projects — the headless Bun/Node telemetry-collector boilerplate.\n\nModeled on `@appydave/appystack-config`, trimmed to match the AppySentinel stack spine: **Bun + TypeScript + Hono + Zod + Pino + chokidar + Vitest**. There is no React variant — Sentinels are headless.\n\n## Installation\n\n```bash\nbun add -D @appydave/appysentinel-config\n# or\nnpm install --save-dev @appydave/appysentinel-config\n```\n\n## Usage\n\n### ESLint\n\n```javascript\n// eslint.config.js\nimport sentinelConfig from '@appydave/appysentinel-config/eslint/base';\n\nexport default [\n  ...sentinelConfig,\n  // your overrides\n];\n```\n\n### TypeScript\n\n```json\n{\n  \"extends\": \"@appydave/appysentinel-config/typescript/node\",\n  \"compilerOptions\": {\n    // your overrides\n  },\n  \"include\": [\"src\"]\n}\n```\n\nUse `typescript/base` if you want to compose your own paths and emit settings.\n\n### Vitest\n\n```typescript\n// vitest.config.ts\nimport { mergeConfig, defineConfig } from 'vitest/config';\nimport sentinelConfig from '@appydave/appysentinel-config/vitest/node';\n\nexport default mergeConfig(\n  sentinelConfig,\n  defineConfig({\n    // your overrides\n  })\n);\n```\n\n### Prettier\n\nIn `package.json`:\n\n```json\n{\n  \"prettier\": \"@appydave/appysentinel-config/prettier\"\n}\n```\n\nOr copy the ignore file:\n\n```bash\ncp node_modules/@appydave/appysentinel-config/prettier/.prettierignore .prettierignore\n```\n\n## Why a separate config package?\n\n- **Consistency** — every Sentinel-style project follows the same standards.\n- **Maintainability** — update once, benefit everywhere.\n- **No bikeshedding** — the rules are decided.\n\n## Difference from `@appydave/appystack-config`\n\n| Aspect | appystack-config | appysentinel-config |\n|--------|------------------|---------------------|\n| Target | RVETS web apps | Headless telemetry collectors |\n| ESLint | Has React variant | Base only — no React/JSX |\n| Vitest | `server` + `client` (jsdom) | `node` only |\n| TS | `base` + `node` + `react` | `base` + `node` |\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-9bf5ea106528f54179075fc80d1129b4"}