{"_id":"@amulet-laboratories/config","_rev":"4-8761f49d29a21b06d4a528c0b9cc1b1c","name":"@amulet-laboratories/config","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@amulet-laboratories/config","version":"0.2.0","license":"MIT","_id":"@amulet-laboratories/config@0.2.0","maintainers":[{"name":"sndhl","email":"sndhl@pm.me"}],"dist":{"shasum":"cc2e643c8e97500f4ab5de69938eba3086256693","tarball":"https://registry.npmjs.org/@amulet-laboratories/config/-/config-0.2.0.tgz","fileCount":16,"integrity":"sha512-6/reeFOhlThIm3OYJMrYgJVUcyEWpHCrXBpTuQ3PfzwNa4NWvMcdBAba8oLgMbsxDKvtFW6h76xz54zYIAedpA==","signatures":[{"sig":"MEUCIGAiB33GBnd3vLz+05B6D7LxkrjOSMOk2zS8Q01RskpKAiEA5IS0hNYvgK5oM1/0Nsu3t+QjwiFu+DZt8XyTVMb6+kU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11780},"type":"module","engines":{"node":">=22","pnpm":">=10"},"exports":{"./prettier":"./prettier.js","./vite/base":"./vite/base.ts","./eslint/vue":"./eslint.vue.js","./eslint/base":"./eslint.base.js","./eslint/nuxt":"./eslint.nuxt.js","./tsconfig/vue":"./tsconfig/vue.json","./tsconfig/base":"./tsconfig/base.json","./tsconfig/node":"./tsconfig/node.json","./stylelint/base":"./stylelint/base.js","./commitlint/base":"./commitlint/base.js","./vite/compression":"./vite/compression.ts","./vite/obfuscation":"./vite/obfuscation.ts","./vite/security-headers":"./vite/security-headers.ts"},"gitHead":"34aeb15b5c875a250e0f49192a4aa9e386f984df","_npmUser":{"name":"sndhl","email":"sndhl@pm.me"},"_npmVersion":"10.9.8","description":"Shared build, lint, and code quality configs for all Amulet Laboratories repos","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@eslint/js":"^9.22.0","postcss-html":"^1.8.1","eslint-plugin-vue":"^9.32.0","typescript-eslint":"^8.26.0","vue-eslint-parser":"^9.4.3","eslint-config-prettier":"^10.1.1","vite-plugin-compression2":"^2.5.2","stylelint-config-standard":"^40.0.0","@commitlint/config-conventional":"^20.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^7.0.0","eslint":"^9.0.0 || ^10.0.0","stylelint":"^17.0.0","typescript":"^5.0.0"},"peerDependenciesMeta":{"vite":{"optional":true},"stylelint":{"optional":true},"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/config_0.2.0_1785307757434_0.610486914602556","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@amulet-laboratories/config","version":"0.2.2","author":{"name":"Amulet Laboratories"},"license":"MIT","_id":"@amulet-laboratories/config@0.2.2","maintainers":[{"name":"sndhl","email":"sndhl@pm.me"}],"homepage":"https://github.com/Amulet-Laboratories/rig/tree/main/config#readme","bugs":{"url":"https://github.com/Amulet-Laboratories/rig/issues"},"dist":{"shasum":"6b41cbd2be980d8a3f48371665e777c2fc9eb0e6","tarball":"https://registry.npmjs.org/@amulet-laboratories/config/-/config-0.2.2.tgz","fileCount":17,"integrity":"sha512-duWzaNQuqkmX82DcAGYrpEvr2nPy/lmzM8ShZQbPtpLbur3T2sZ83MEcGMCITPiOpvjdnO5h30O3DsWvwgHHUg==","signatures":[{"sig":"MEYCIQDpfeIQ6g+fFKmnhtskhL1EVdkG4kPEkqg8/n9rrHQCdQIhAJuaDV5kZcey101ho6mzrIghw7bKPkuY9GEzt2WgJJwU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amulet-laboratories%2fconfig@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13913},"type":"module","_from":"file:/home/runner/work/_temp/amulet-laboratories-config-0.2.2.tgz","engines":{"node":">=22","pnpm":">=10"},"exports":{"./prettier":"./prettier.js","./vite/base":"./vite/base.ts","./eslint/vue":"./eslint.vue.js","./eslint/base":"./eslint.base.js","./eslint/nuxt":"./eslint.nuxt.js","./tsconfig/vue":"./tsconfig/vue.json","./tsconfig/base":"./tsconfig/base.json","./tsconfig/node":"./tsconfig/node.json","./stylelint/base":"./stylelint/base.js","./commitlint/base":"./commitlint/base.js","./vite/compression":"./vite/compression.ts","./vite/obfuscation":"./vite/obfuscation.ts","./vite/security-headers":"./vite/security-headers.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c8c7670-cb68-4ac5-90b5-83a031850fa5"}},"_resolved":"/home/runner/work/_temp/amulet-laboratories-config-0.2.2.tgz","_integrity":"sha512-duWzaNQuqkmX82DcAGYrpEvr2nPy/lmzM8ShZQbPtpLbur3T2sZ83MEcGMCITPiOpvjdnO5h30O3DsWvwgHHUg==","repository":{"url":"git+https://github.com/Amulet-Laboratories/rig.git","type":"git","directory":"config"},"_npmVersion":"12.0.1","description":"Shared build, lint, and code quality configs for all Amulet Laboratories repos","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@eslint/js":"^9.22.0","postcss-html":"^1.8.1","eslint-plugin-vue":"^9.32.0","typescript-eslint":"^8.26.0","vue-eslint-parser":"^9.4.3","eslint-config-prettier":"^10.1.1","vite-plugin-compression2":"^2.5.2","stylelint-config-standard":"^40.0.0","@commitlint/config-conventional":"^20.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^7.0.0","eslint":"^9.0.0 || ^10.0.0","stylelint":"^17.0.0","typescript":"^5.0.0"},"peerDependenciesMeta":{"vite":{"optional":true},"stylelint":{"optional":true},"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/config_0.2.2_1785346533145_0.2534187941965924","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amulet-laboratories/config","version":"0.3.0","author":{"name":"Amulet Laboratories"},"license":"MIT","_id":"@amulet-laboratories/config@0.3.0","maintainers":[{"name":"sndhl","email":"sndhl@pm.me"}],"homepage":"https://github.com/Amulet-Laboratories/rig/tree/main/config#readme","bugs":{"url":"https://github.com/Amulet-Laboratories/rig/issues"},"dist":{"shasum":"c126426bbfa5a56f7d94bce7f312fe419cd7f9a3","tarball":"https://registry.npmjs.org/@amulet-laboratories/config/-/config-0.3.0.tgz","fileCount":15,"integrity":"sha512-xlhH3EJXakitiXDGSshPQ2ZiBdadmLG7Dt02v7hUrLpiW/RtgNAXuTP88fROiQvbxha/VIWo4WItauCFwg//2g==","signatures":[{"sig":"MEUCIGl4O63LIGclXaMXXrni6YTeIhtGvMcnJXEnWoUgi6czAiEA8rxijoQXJnjvhtUs3O21gyX4wHkR0N/dE7osjxq3b7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amulet-laboratories%2fconfig@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18965},"type":"module","_from":"file:/home/runner/work/_temp/amulet-laboratories-config-0.3.0.tgz","engines":{"node":">=22","pnpm":">=10"},"exports":{"./prettier":"./prettier.js","./vite/base":"./vite/base.js","./eslint/vue":"./eslint.vue.js","./eslint/base":"./eslint.base.js","./eslint/nuxt":"./eslint.nuxt.js","./tsconfig/vue":"./tsconfig/vue.json","./tsconfig/base":"./tsconfig/base.json","./stylelint/base":"./stylelint/base.js","./commitlint/base":"./commitlint/base.js","./vite/compression":"./vite/compression.js","./vite/obfuscation":"./vite/obfuscation.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c8c7670-cb68-4ac5-90b5-83a031850fa5"}},"_resolved":"/home/runner/work/_temp/amulet-laboratories-config-0.3.0.tgz","_integrity":"sha512-xlhH3EJXakitiXDGSshPQ2ZiBdadmLG7Dt02v7hUrLpiW/RtgNAXuTP88fROiQvbxha/VIWo4WItauCFwg//2g==","repository":{"url":"git+https://github.com/Amulet-Laboratories/rig.git","type":"git","directory":"config"},"_npmVersion":"12.0.2","description":"Shared build, lint, and code quality configs for all Amulet Laboratories repos","directories":{},"_nodeVersion":"22.23.1","dependencies":{"globals":"^17.8.0","@eslint/js":"^9.22.0","postcss-html":"^1.8.1","eslint-plugin-vue":"^10.8.0","typescript-eslint":"^8.65.0","vue-eslint-parser":"^10.2.0","eslint-config-prettier":"^10.1.8","vite-plugin-compression2":"^2.5.2","stylelint-config-standard":"^40.0.0","@commitlint/config-conventional":"^20.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"vite":"^7.0.0","eslint":"^9.0.0 || ^10.0.0","stylelint":"^17.0.0","typescript":"^5.0.0"},"peerDependenciesMeta":{"vite":{"optional":true},"stylelint":{"optional":true},"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/config_0.3.0_1785649857127_0.43540290200610476","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amulet-laboratories/config","version":"0.3.1","type":"module","description":"Shared build, lint, and code quality configs for all Amulet Laboratories repos","license":"MIT","author":{"name":"Amulet Laboratories"},"repository":{"type":"git","url":"git+https://github.com/Amulet-Laboratories/rig.git","directory":"config"},"homepage":"https://github.com/Amulet-Laboratories/rig/tree/main/config#readme","bugs":{"url":"https://github.com/Amulet-Laboratories/rig/issues"},"engines":{"node":">=22","pnpm":">=10"},"exports":{"./eslint/vue":"./eslint.vue.js","./eslint/nuxt":"./eslint.nuxt.js","./eslint/base":"./eslint.base.js","./prettier":"./prettier.js","./stylelint/base":"./stylelint/base.js","./commitlint/base":"./commitlint/base.js","./tsconfig/base":"./tsconfig/base.json","./tsconfig/vue":"./tsconfig/vue.json","./vite/base":"./vite/base.js","./vite/compression":"./vite/compression.js","./vite/obfuscation":"./vite/obfuscation.js"},"dependencies":{"@commitlint/config-conventional":"^20.5.0","@eslint/js":"^9.22.0","eslint-config-prettier":"^10.1.8","eslint-plugin-vue":"^10.8.0","globals":"^17.8.0","postcss-html":"^1.8.1","stylelint-config-standard":"^40.0.0","typescript-eslint":"^8.65.0","vite-plugin-compression2":"^2.5.2","vue-eslint-parser":"^10.2.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","stylelint":"^17.0.0","typescript":"^5.0.0 || ^6.0.0","vite":"^7.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"stylelint":{"optional":true},"vite":{"optional":true}},"_id":"@amulet-laboratories/config@0.3.1","_integrity":"sha512-kqntdtnxnzviG8AxG3Occ8UHe6JyMAxVGQssACm1/KESqSFGetM7LvLJUNvGsdtxcNRfSzv+J78hvMYyYuubsA==","_resolved":"/home/runner/work/_temp/amulet-laboratories-config-0.3.1.tgz","_from":"file:/home/runner/work/_temp/amulet-laboratories-config-0.3.1.tgz","_nodeVersion":"22.23.1","_npmVersion":"12.0.2","dist":{"integrity":"sha512-kqntdtnxnzviG8AxG3Occ8UHe6JyMAxVGQssACm1/KESqSFGetM7LvLJUNvGsdtxcNRfSzv+J78hvMYyYuubsA==","shasum":"71399969ab068333c3a43d3aa15a61576606cca5","tarball":"https://registry.npmjs.org/@amulet-laboratories/config/-/config-0.3.1.tgz","fileCount":15,"unpackedSize":19289,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amulet-laboratories%2fconfig@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIASe7f86uocTd/9d/+lg/DxMtmVZelk4x1i+JuX5fzZuAiEAo1aOGel1Akmd6rM6HiuKSuNkj3M1nWEoNnmunGH9GWI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c8c7670-cb68-4ac5-90b5-83a031850fa5"}},"directories":{},"maintainers":[{"name":"sndhl","email":"sndhl@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/config_0.3.1_1785650435537_0.29226647919310333"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-29T06:49:17.323Z","modified":"2026-08-02T06:00:52.055Z","0.2.0":"2026-07-29T06:49:17.575Z","0.2.2":"2026-07-29T17:35:33.290Z","0.3.0":"2026-08-02T05:50:57.270Z","0.3.1":"2026-08-02T06:00:35.697Z"},"bugs":{"url":"https://github.com/Amulet-Laboratories/rig/issues"},"author":{"name":"Amulet Laboratories"},"license":"MIT","homepage":"https://github.com/Amulet-Laboratories/rig/tree/main/config#readme","repository":{"type":"git","url":"git+https://github.com/Amulet-Laboratories/rig.git","directory":"config"},"description":"Shared build, lint, and code quality configs for all Amulet Laboratories repos","maintainers":[{"name":"sndhl","email":"sndhl@pm.me"}],"readme":"# @amulet-laboratories/config\n\nShared lint, format, TypeScript and Vite configuration for Amulet Laboratories repositories.\n\nThis package lives at `Rig/config` and is published from the Rig repo. The standalone\n`Config` repository is retired — it never got past three exports and nothing pointed at it.\n\n## Install\n\n```bash\npnpm add -D @amulet-laboratories/config eslint prettier\n```\n\nOr for local development with `file:` linking:\n\n```json\n{\n  \"devDependencies\": {\n    \"@amulet-laboratories/config\": \"file:../Rig/config\"\n  }\n}\n```\n\n## Exports\n\n| Export                           | Purpose                                                                  |\n| -------------------------------- | ------------------------------------------------------------------------ |\n| `eslint/vue`                     | Vue 3 + TypeScript apps and libraries                                    |\n| `eslint/nuxt`                    | `eslint/vue` + Nuxt build dirs, `no-undef` off                           |\n| `eslint/base`                    | JS-only, no Vue                                                          |\n| `prettier`                       | No semis, single quotes, trailing commas, 2-space, 100 cols              |\n| `stylelint/base`                 | `stylelint-config-standard` + Tailwind at-rules, `postcss-html` for SFCs |\n| `commitlint/base`                | Conventional commits                                                     |\n| `tsconfig/base` · `tsconfig/vue` | Strict TS baselines                                                      |\n| `vite/base`                      | Shared `resolve.alias` + terser build settings                           |\n| `vite/compression`               | Brotli + gzip pre-compression plugins                                    |\n| `vite/obfuscation`               | `javascript-obfuscator` settings for release builds                      |\n\n## ESLint\n\n### Vue + TypeScript (Obelisk, Rig)\n\nCreate `eslint.config.js`:\n\n```js\nimport vue from '@amulet-laboratories/config/eslint/vue'\n\nexport default [...vue, { ignores: ['dist/', 'coverage/'] }]\n```\n\n`eslint/vue` declares `globals.browser` itself. Node-side files (build scripts, CLIs)\nneed their own block:\n\n```js\n{\n  files: ['scripts/**/*.{js,mjs,ts}'],\n  languageOptions: { globals: { process: 'readonly', console: 'readonly' } },\n}\n```\n\n### Nuxt sites (the content network)\n\nCreate `eslint.config.js`:\n\n```js\nexport { default } from '@amulet-laboratories/config/eslint/nuxt'\n```\n\nThat is the whole file. `eslint/nuxt` is `eslint/vue` plus the directories a Nuxt\napp generates (`.nuxt/`, `.output/`, `.netlify/`, `dist/`), and it turns\n`no-undef` off — Nuxt injects `useHead`, `useSeoMeta`, `computed` and friends at\nbuild time, so they are not declarable globals and the rule reports every one of\nthem. TypeScript already catches genuinely undefined identifiers.\n\nAdd site-specific rules by spreading instead:\n\n```js\nimport nuxt from '@amulet-laboratories/config/eslint/nuxt'\n\nexport default [...nuxt, { rules: { 'no-console': 'off' } }]\n```\n\n### Base / JS-only (Hex)\n\nCreate `eslint.config.js`:\n\n```js\nimport base from '@amulet-laboratories/config/eslint/base'\n\nexport default [...base, { ignores: ['dist/'] }]\n```\n\n## Prettier\n\nCreate `prettier.config.js`:\n\n```js\nexport { default } from '@amulet-laboratories/config/prettier'\n```\n\nSettings: no semicolons, single quotes, trailing commas, 2-space indent, 100-char print width.\n\n## Stylelint\n\n```js\nexport { default } from '@amulet-laboratories/config/stylelint/base'\n```\n\nExtend it by spreading `ignoreFiles` or overriding `rules`.\n\n## Commitlint\n\n```js\nexport { default } from '@amulet-laboratories/config/commitlint/base'\n```\n\n## Vite\n\n```ts\nimport { baseConfig } from '@amulet-laboratories/config/vite/base'\nimport { compressionPlugins } from '@amulet-laboratories/config/vite/compression'\n\nexport default defineConfig({\n  ...baseConfig,\n  plugins: [vue(), ...compressionPlugins()],\n})\n```\n\n`vite/base` sets `drop_console` and top-level mangling — it is a production-build\nposture, not a neutral default. Merge it deliberately.\n\n`vite/obfuscation` is a plain settings object, applied by a post-build script:\n\n```js\nimport { obfuscationConfig } from '@amulet-laboratories/config/vite/obfuscation'\n```\n\nAll three are plain JS with JSDoc types, not TypeScript — Node will not strip types\nfrom files under `node_modules`, and the obfuscation script is plain Node.\n","readmeFilename":"README.md"}