{"_id":"@aifsd/strict-json","name":"@aifsd/strict-json","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aifsd/strict-json","version":"0.1.0","license":"Apache-2.0","description":"Strict JSON normalisation, canonicalisation, snapshots, and freezing.","keywords":["typescript","json","canonical-json","strict-json","rfc-8785"],"repository":{"type":"git","url":"git+https://github.com/theGeekist/llm-core.git","directory":"packages/strict-json"},"bugs":{"url":"https://github.com/theGeekist/llm-core/issues"},"author":{"name":"Geekist","email":"hello@geekist.co"},"publishConfig":{"access":"public"},"engines":{"node":">=22"},"type":"module","sideEffects":false,"private":false,"devDependencies":{"canonicalize":"3.0.0","fast-check":"4.9.0"},"main":"./dist/esm/index.js","module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"}},"scripts":{"build":"bun run scripts/build.ts clean && bun run build:types && bun run scripts/build.ts emit","build:types":"tsc -p tsconfig.build.json --emitDeclarationOnly","format":"prettier \"**/*.{ts,js,mjs,json,md}\" --write","format:check":"prettier \"**/*.{ts,js,mjs,json,md}\" --check","lint":"eslint \"**/*.{ts,js,mjs}\"","lint:fix":"eslint \"**/*.{ts,js,mjs}\" --fix","release:check":"bun run lint && bun run typecheck && bun run typecheck:tests && bun run test && bun run format:check","release:build":"bun run release:check && bun run build && bun run test:package","test":"bun test tests","test:coverage":"bun test tests --coverage --coverage-reporter=text","test:package":"node scripts/smoke-package.mjs","typecheck":"tsc --noEmit","typecheck:tests":"tsc -p tsconfig.test.json --noEmit"},"_id":"@aifsd/strict-json@0.1.0","homepage":"https://github.com/theGeekist/llm-core#readme","_integrity":"sha512-xmJ1xUOwvFqNCOie70IvrrpXFpFfMO3uWVavJhXhAQjkq8d7UGkA4fUq0rbCIuDEYFwTmSd4JLU/WK2DoeagHQ==","_resolved":"/private/tmp/aifsd-strict-json-release.iA13Ih/aifsd-strict-json-0.1.0.tgz","_from":"file:/private/tmp/aifsd-strict-json-release.iA13Ih/aifsd-strict-json-0.1.0.tgz","_nodeVersion":"22.22.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-xmJ1xUOwvFqNCOie70IvrrpXFpFfMO3uWVavJhXhAQjkq8d7UGkA4fUq0rbCIuDEYFwTmSd4JLU/WK2DoeagHQ==","shasum":"08adaaf795fef05439542ba0ed4e000feb6eba25","tarball":"https://registry.npmjs.org/@aifsd/strict-json/-/strict-json-0.1.0.tgz","fileCount":19,"unpackedSize":36555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDu49c/yYAMl0EbQ+f7qtiz8tR+V+9MuTbOFs32V/E2LgIhANe5DigMmZj9Ue/EJrBg7GzsRLI5d7IGAAQiCI4RLkrk"}]},"_npmUser":{"name":"jasonnathan","email":"jjnathanjr@pm.me"},"directories":{},"maintainers":[{"name":"jasonnathan","email":"jjnathanjr@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strict-json_0.1.0_1786328848667_0.27584859343459356"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T02:27:28.559Z","0.1.0":"2026-08-10T02:27:28.813Z","modified":"2026-08-10T02:27:28.977Z"},"maintainers":[{"name":"jasonnathan","email":"jjnathanjr@pm.me"}],"description":"Strict JSON normalisation, canonicalisation, snapshots, and freezing.","homepage":"https://github.com/theGeekist/llm-core#readme","keywords":["typescript","json","canonical-json","strict-json","rfc-8785"],"repository":{"type":"git","url":"git+https://github.com/theGeekist/llm-core.git","directory":"packages/strict-json"},"author":{"name":"Geekist","email":"hello@geekist.co"},"bugs":{"url":"https://github.com/theGeekist/llm-core/issues"},"license":"Apache-2.0","readme":"# @aifsd/strict-json\n\nStrict JSON normalisation, canonicalisation, snapshots, and freezing.\n\nThis package owns the small data-boundary contract shared by `@aifsd/llm-core` and `@aifsd/sdk`. It does not own AI contracts, configuration policy, retry, telemetry, paths, adapter state machines, or general-purpose utilities.\n\n```sh\nnpm install @aifsd/strict-json\n```\n\n```ts\nimport { canonicalize, snapshot } from \"@aifsd/strict-json\";\n\nconst captured = snapshot({ z: -0, a: [3, 2, 1] });\nconst identity = canonicalize(captured);\n```\n\nThe accepted grammar is stricter than ordinary JavaScript JSON serialization: unsafe integers, non-finite numbers, lone surrogates, sparse or extended arrays, accessors, symbol keys, exotic prototypes, cycles and non-JSON values are rejected. See [the contract](./docs/internal/STRICT-JSON-CONTRACT.md).\n","readmeFilename":"README.md","_rev":"1-bbc8ff3cb8dfc2a823b0cb2cb6420b96"}