{"_id":"@2h2d/ts-config","_rev":"2-e4cf4b8148c0e82f2612aba7641e32a4","name":"@2h2d/ts-config","dist-tags":{"alpha":"0.0.1-alpha.0","latest":"0.0.1"},"versions":{"0.0.1-alpha.0":{"name":"@2h2d/ts-config","version":"0.0.1-alpha.0","author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","_id":"@2h2d/ts-config@0.0.1-alpha.0","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"homepage":"https://github.com/2h2d-co/ts-config#readme","bugs":{"url":"https://github.com/2h2d-co/ts-config/issues"},"dist":{"shasum":"b20ff49547da3d7ceb222e59a5cfb479edbdc3fd","tarball":"https://registry.npmjs.org/@2h2d/ts-config/-/ts-config-0.0.1-alpha.0.tgz","fileCount":5,"integrity":"sha512-dlrFDgNRwmPaM2loye5umQ8BiuOyGhVLYHRksQWAAwUPfqzIJ3tqKmA3mSPTMCYdPGcTlZ2y+gZguWSjvzSRjQ==","signatures":[{"sig":"MEQCIAHsej/naSPW8mq2hfJIWfJgT2Fs2s6/DbwaGA2Z7nFrAiAuhkg7w5dzMhsyjwS9nhTwIA9DT05NiPiMy2xH7tB4OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7269},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"b64f7a388d23c8a539e96fc24c5fe9aff91095c0","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","build":"tsc -p tsconfig.json","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm run build && npm pack --dry-run --ignore-scripts --allow-directory=all","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"},"repository":{"url":"git+https://github.com/2h2d-co/ts-config.git","type":"git"},"_npmVersion":"11.19.0","description":"Shared TypeScript compiler configuration for 2h2d repositories","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0"},"peerDependencies":{"typescript":"7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/ts-config_0.0.1-alpha.0_1787592644945_0.9787730700106507","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"_id":"@2h2d/ts-config@0.0.1","bugs":{"url":"https://github.com/2h2d-co/ts-config/issues"},"dist":{"shasum":"9955f7124f10fd513f4e35a24ccce9fa8856a120","tarball":"https://registry.npmjs.org/@2h2d/ts-config/-/ts-config-0.0.1.tgz","integrity":"sha512-w6BPbLQbP2Vf0vkFP7C6V8Npe+2y+wMWXpZGsIcBvEbOowiSL8mmEZLMSyixYcDAoBFMvd4kEaUh6ycqUSF3kw==","fileCount":5,"unpackedSize":7261,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2h2d%2fts-config@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCIUMIqPeRMZ1p+lFjsO/Yx3IP+pDt/Fnum8cL9HyDOLQIgG9/hmcjmNNxN7xk6IesRDz2gkHiDinbqjzKaATue2gE="}]},"name":"@2h2d/ts-config","type":"module","_from":"file:/home/runner/work/ts-config/ts-config/npm-package/2h2d-ts-config-0.0.1.tgz","author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"engines":{"node":">=22.19.0"},"license":"MIT","scripts":{"fmt":"oxfmt","lint":"oxlint","test":"node --test --test-concurrency=1 test/*.test.ts","build":"tsc -p tsconfig.json","check":"hk check --all --check","release":"node scripts/release.ts","lint:fix":"oxlint --fix","pack:dry":"npm run build && npm pack --dry-run --ignore-scripts --allow-directory=all","typecheck":"tsc -p tsconfig.json"},"version":"0.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6b8beb3-027a-4e7a-bbb6-a9eaf03a7396"},"approver":{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}},"homepage":"https://github.com/2h2d-co/ts-config#readme","_resolved":"/home/runner/work/ts-config/ts-config/npm-package/2h2d-ts-config-0.0.1.tgz","_integrity":"sha512-w6BPbLQbP2Vf0vkFP7C6V8Npe+2y+wMWXpZGsIcBvEbOowiSL8mmEZLMSyixYcDAoBFMvd4kEaUh6ycqUSF3kw==","repository":{"url":"git+https://github.com/2h2d-co/ts-config.git","type":"git"},"_npmVersion":"11.18.0","description":"Shared TypeScript compiler configuration for 2h2d repositories","directories":{},"maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"_nodeVersion":"26.6.0","devDependencies":{"oxfmt":"0.63.0","oxlint":"1.78.0","typescript":"7.0.2","@types/node":"22.20.1","oxlint-tsgolint":"7.0.2001","@2h2d/oxlint-config":"0.1.0"},"peerDependencies":{"typescript":"7.0.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ts-config_0.0.1_1787593004609_0.9874624300605157"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-24T17:30:44.749Z","modified":"2026-08-24T17:36:45.219Z","0.0.1-alpha.0":"2026-08-24T17:30:45.078Z","0.0.1":"2026-08-24T17:36:44.702Z"},"bugs":{"url":"https://github.com/2h2d-co/ts-config/issues"},"author":{"name":"Kaan Ozdokmeci","email":"kaan@ozdokmeci.com"},"license":"MIT","homepage":"https://github.com/2h2d-co/ts-config#readme","repository":{"url":"git+https://github.com/2h2d-co/ts-config.git","type":"git"},"description":"Shared TypeScript compiler configuration for 2h2d repositories","maintainers":[{"name":"kaanozdokmeci","email":"kaan@ozdokmeci.com"}],"readme":"# @2h2d/ts-config\n\nShared TypeScript compiler policy for 2h2d repositories.\n\n## Install\n\n```bash\nnpm install --save-dev --save-exact @2h2d/ts-config typescript@7.0.2\n```\n\n## Use\n\nKeep environment, source-selection, and build settings in the consuming project:\n\n```json\n{\n  \"extends\": \"@2h2d/ts-config/base.json\",\n  \"compilerOptions\": {\n    \"module\": \"NodeNext\",\n    \"target\": \"ES2023\",\n    \"lib\": [\"ES2023\"],\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"src\", \"test\", \"scripts\", \"oxlint.config.ts\"]\n}\n```\n\n## Common policy\n\n`base.json` centralizes:\n\n- strict type checking, unchecked indexed-access protection, and exact optional properties;\n- explicit return, override, switch-fallthrough, index-signature, unreachable-code, and unused-label\n  checks;\n- erasable TypeScript syntax, isolated modules, verbatim module syntax, forced module detection, and\n  checked side-effect imports;\n- TypeScript-extension imports and relative import-extension rewriting;\n- type-check-only operation by default, dependency declaration-file skipping, casing consistency,\n  and prevention of JavaScript emission after a type error.\n\nSee [`base.json`](base.json) for the authoritative settings.\n\n## Intentionally project-local settings\n\nThe package does not prescribe:\n\n- runtime and resolver selection: `module`, `moduleResolution`, `target`, and `lib`;\n- ambient environments: `types`;\n- emitting-build details: declarations, source maps, output paths, and an explicit\n  `noEmit: false`;\n- source selection: `files`, `include`, `exclude`, and project references;\n- framework behavior: JSX, JSON modules, and path aliases;\n- unused local and parameter reporting.\n\nRelative paths in inherited TypeScript configurations resolve relative to the configuration that\ndeclares them. Keeping path-bearing settings in consumers avoids accidentally resolving them from\nthis package inside `node_modules`.\n\nThe current project inventory and adoption differences are recorded in\n[`PROJECT-SETTINGS.md`](https://github.com/2h2d-co/ts-config/blob/main/PROJECT-SETTINGS.md).\n\n## Development\n\n```bash\nnpm install\nnpm run check\nnpm test\nnpm run build\nnpm run pack:dry\n```\n\n## Packaging\n\n`.github/npm-package-files` is the authoritative package-content allowlist used by the local release\ncommand and both CI jobs. Update it whenever the intended published file set changes.\n\n## Release staging\n\nRepository setup:\n\n1. When `new` creates the GitHub repository, it automatically protects `main` and `v*` tags and\n   restricts `npm-publish` to `v*` tags without a deployment reviewer or administrator bypass.\n2. Configure npm trusted publishing for `2h2d-co/ts-config` using\n   `.github/workflows/publish.yml` and the `npm-publish` environment.\n3. Replace `.github/release-signers` if release commits use a different SSH signing key.\n\nIf repository creation was skipped with `--no-github`, configure the branch, tag, and environment\ncontrols manually.\n\nRelease flow:\n\n1. Run `npm run release -- X.Y.Z` from a clean, synchronized `main`.\n2. The release command builds the package from the staged Git index, records its SHA-256 in the\n   SSH-signed release commit, rebuilds the commit to prove reproducibility, and creates a lightweight\n   `vX.Y.Z` tag.\n3. Inspect the commit and tag, then push them atomically with\n   `git push --atomic origin main vX.Y.Z`.\n4. A read-only CI job builds, tests, packs, and inspects the package without publishing credentials.\n5. A separate credentialed job verifies the signed commit and exact package digest before attesting\n   and staging that archive through npm trusted publishing.\n6. Approve the staged package on npmjs.com or with `npm stage approve <stage-id>`.\n\nStable versions use `latest`; prereleases derive a non-`latest` dist-tag such as `alpha`, `beta`, or\n`rc` from their first prerelease identifier.\n","readmeFilename":"README.md"}