{"_id":"graphddb","_rev":"56-d11c886bc4c64601181831a4b1f2ca78","name":"graphddb","dist-tags":{"release-0.8":"0.8.3","latest":"1.2.5"},"versions":{"0.1.0":{"name":"graphddb","version":"0.1.0","license":"MIT","_id":"graphddb@0.1.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"c086d353f6b588d1969882bc5d863ee5643d0894","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.1.0.tgz","fileCount":12,"integrity":"sha512-nfkkqRCiId+z24DK4hN3MhTppCulaSPsAo6bXI5IBv0xlQDMi2aIVOv/wn5Sp17V7haOtfNhYiP2zcQV6drKqA==","signatures":[{"sig":"MEQCIHsE6qXTixcY4pBK1e+YdXyRkHaBJcsB+RUE9mt5NE8tAiBdYtfMF0UrqBZhP8jVj4qRQ3Mogouw+F5HtNh/mTZvKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":792922},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"68a7c4a218a5cc0b175907cadd6f9c6f8a46f5bc","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.1.0_1782710862586_0.5195885651902401","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"graphddb","version":"0.1.1","license":"MIT","_id":"graphddb@0.1.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"b22b87d65a2f76ee722ed3bcdc619e5987a42272","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.1.1.tgz","fileCount":12,"integrity":"sha512-AinlitikuEmjg3lkAOmO5yByQP9rG3BjovpnCb7jLv90mvOgj7xsP67w+be9XXsUOOPrWWndcFYkx3Sxyb53iQ==","signatures":[{"sig":"MEYCIQCbwZrn1j2TYddMWlzLft3OlgDzuVgRleJ4bdMdBm6q9wIhAKT50vK+x5+ukX3hJ5ajhy0fLkH4klyGqdDa6bLSo9l4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":793701},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"6a8e424938292eb974791b3667d92827bb896d0d","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.1.1_1782714437369_0.4953034837518515","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"graphddb","version":"0.2.0","license":"MIT","_id":"graphddb@0.2.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"c3385c8e5634da86a0adea36b7e5106bae8de1f4","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.0.tgz","fileCount":12,"integrity":"sha512-7tPS5NsKFl3h6oAtFIgZ1RQBWFKc5WodwgSgTkX7p7W682PAOYAhshrwuMG0sOBo0Xvd2Nmo28mOjNFt/jXZzw==","signatures":[{"sig":"MEUCIGc6kEMJFBtXKZjqucpn/l7Rxa217gw1MG+vMIo5pKIuAiEAxv+nJSTv8Qkx3rCHj+XgTAZpqRqqQuXnntiQUnp+V+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":798350},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"1cd5c37702f182175eb2fd9e6ce099cb569e5048","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.0_1782739843411_0.06556445110270825","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"graphddb","version":"0.2.1","license":"MIT","_id":"graphddb@0.2.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"dea86a31abf3e43fc8f9ebc4c26dca723037d5b5","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.1.tgz","fileCount":12,"integrity":"sha512-cAX4b223E4FnFq89xNVz2CSEIFVFu4fgnCpmcL33UCS+GZiB3pfmG8rGWbNw/XFIvlMRXj1wGXFPbjXpzN8ccQ==","signatures":[{"sig":"MEYCIQCOZaVjXGrH1AEHa4LKhoSMhcUbogL7yxUEzpr31IXAiwIhALyipGgW5AGr567k2CUdAFJlP9dxNC4nnZqAOjztAk4y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":822589},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"154fffe9fa970898d0c6b0efd6f27946cd16d8a3","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.1_1782756424696_0.44727134781386124","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"graphddb","version":"0.2.2","license":"MIT","_id":"graphddb@0.2.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"81a4d5b330cbe9bca20d8a74fd34b39995930778","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.2.tgz","fileCount":12,"integrity":"sha512-ufLNPF5k0+Aijw7Yn8ghmArqINNc0MQdlPfpEyhKcL7xkHOrbQfInFeIac0x5iU4o6V2PGjveAGDvfV28dgnrA==","signatures":[{"sig":"MEUCIQCTQ+/lm2mBYDsKmBdm20pPM8udVzOzFM4Fwj5lqb8tFAIgSnLCGtc7NY1UsTN1Pdi6BuA1KarHn3UTYzU5MHzgJjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"71f6afe726ee6691f58b4e892ed4fb0f47cd62a9","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.2_1782773354083_0.22842545431522265","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"graphddb","version":"0.2.3","license":"MIT","_id":"graphddb@0.2.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"bf9e4eaebe7ef7e9ac73e6ad7ffe11c3ea2a5268","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.3.tgz","fileCount":12,"integrity":"sha512-cT+DPf+kAuo+ba+BxEmdvEb2Cetpq801YB2YgbSEtTaWaLTlw6AaWGKZkpd2FBa6ZofO0KeQ2YfVgQ5NgP7BrQ==","signatures":[{"sig":"MEUCIQCUHmfEDr17uLrlrwjTipnl24Nd9sNxkUp0sJyzVMZSugIgYW3CWNHqM2HyqgKJ4u8vL47Q3/tS+k5uSeL0N+EP1IM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830508},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"0b8385bf99346c9926abdaed06f4a7e5bfbaeadc","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.3_1782785039700_0.5263907614896426","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"graphddb","version":"0.2.4","license":"MIT","_id":"graphddb@0.2.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"c306352b6ff5a6f781a8ecca8d607b0ac441d333","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.4.tgz","fileCount":12,"integrity":"sha512-AgCfW5VwISXjNyTGoJd1qLiqFzxJeoMJRaciIKygHSS2OzI0QUIjLxLZtqCOqRykDgcU5BUQ6wVdHZURCO9LfA==","signatures":[{"sig":"MEUCICRcf0ZwxF0ucefc5KVpcchu8vr687CSPsUbmr+2VgbzAiEAgCFgaVSWLf7VGuzGdLZcL/0YdAVAaD/XfI4aJKcmPig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860107},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"c0bd0616199d77acb7b37a754050ab5007a111da","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.4_1782791037914_0.15397483806794","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"graphddb","version":"0.2.5","license":"MIT","_id":"graphddb@0.2.5","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"71aa95e7bd6158d1a2569d5af2348a7543f40ee7","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.2.5.tgz","fileCount":12,"integrity":"sha512-Z05A8qFDj24idUQEM0JjIWL3P0Pk00B9JQR/Ch/uIRCYoieF8Y1TWKszodmwxe8S61Q3/cdH7c6em6yTm5ymzg==","signatures":[{"sig":"MEQCIDB/WjhQPrsqgaUawAkGjXaohABIIBjz3dL/B6AYNWo1AiAorMoCpBGj4PGG447ggBWmbULeWN/zPmlQjSDRY8RUAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":931354},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"b8ad0316608836cc7c7d3343a489e7096e61d56c","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.2.5_1782817986281_0.9713869159923776","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"graphddb","version":"0.3.0","license":"MIT","_id":"graphddb@0.3.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"45a6d2b59d85b1097c88b822bde9a8c2f7a88525","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.3.0.tgz","fileCount":12,"integrity":"sha512-bYFyA75GhA48Cj29antHzhUldVUHl94JEhvrv0ZKdvngRXPhiDghTlTsDH/Hd96147uPJqQgk8kdI5myWHRjcA==","signatures":[{"sig":"MEYCIQDFayUvNViQF0TbdShAEmc5C4VjHmV0g2bwOCQlzlkMaAIhAMxiI1bVSV0PuS+dZL78NBa05l5e85XQb2cJd3/jA+bS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1041955},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"5de2c5393858274a2e2144c38051d16aa3032276","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.3.0_1782819731071_0.6816851012176086","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"graphddb","version":"0.3.1","license":"MIT","_id":"graphddb@0.3.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"d52a00bfd507267001108498395571c45c92451e","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.3.1.tgz","fileCount":12,"integrity":"sha512-acZYjwaEQoLqXEH1B4czltCg0qR8rPO1BLCxsPQxTK2vud38ndOYW/I8sqRa0iNs3sPMo8HguVWfohmI+1yFnw==","signatures":[{"sig":"MEQCIEnppyYm2jVrHbTkiee7oW1YaKF9Yg4pPvxxWhHnUwMZAiBzawtFrwYpCV9nvrD6hdT6DOer7/p9C3aVfs602WArgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1161622},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"f504df0e3167b652601f71da0c4fd83e6aba7ea7","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.3.1_1782835721600_0.3948810326065546","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"graphddb","version":"0.4.0","license":"MIT","_id":"graphddb@0.4.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"c5403094906924e72d6704776f7af709ed372820","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.4.0.tgz","fileCount":12,"integrity":"sha512-uW8H4499nQP7iQmxYJxsd9k1ANStYWeNiq8aXIQHDOTTiwBr5QS9sOhJjoGJtsZ5m8Xe9VM3/+fsY/yFD2hUqA==","signatures":[{"sig":"MEYCIQDKYW2/iMIIAX9jUlLYfNECBbj+0kcCnv7nHjstnS63mQIhAJrdyXsGLplrnil5nBT/miaV4CNyS667s/2nVZoVQR1z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1161308},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"012cad03115f078f7985c7cf5245e31041f260f8","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.4.0_1782842239006_0.8848365700322649","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"graphddb","version":"0.4.1","license":"MIT","_id":"graphddb@0.4.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"90a464bacc5ac9cae0845d2d027fa2f086ef11e7","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.4.1.tgz","fileCount":12,"integrity":"sha512-AxshkGgSXjNwWSEh9nKsYtrROa4v3ZvRD2jfxr3X+mu18WUS036ghCVUadGbDqQ2eNkq7WdZoQ6pH4FGi9B9Hw==","signatures":[{"sig":"MEUCIQDt8gPzkpbcSxK9KJ305t7Zqi+g4eZ6BcXF90Y7/CwldgIgMOmUMUUN+Slt2lbEBlgKDaeQbQ3qPo1132CQqVwZqMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1174773},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"d205371e3247e0fa43b1f90af7e369b6e52880f2","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.4.1_1782845199268_0.6276727936916158","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"graphddb","version":"0.4.2","license":"MIT","_id":"graphddb@0.4.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"f6f297294c3fc73b9b3a29fca2873f708ec6da59","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.4.2.tgz","fileCount":12,"integrity":"sha512-3RA0m9tpcsUL62RwqG5cexyqKTWlqyGCH36cplmrxASRJH/MJWRpTYipuR9Ud1nghQ8DtjWhhm58Rs7UW7icBw==","signatures":[{"sig":"MEUCIDNxYboO+NG49AOY442EqPSmR2+liDRGC91A0MNm8ZfhAiEAoLH1oPSYM4175eqO7tG7OHHm07Dthz8FK6E6XnwPMh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1167716},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"bb0706f2f7024cd85bad07ad5aa42ede763ea290","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.4.2_1782861739277_0.2692061840664628","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"graphddb","version":"0.4.3","license":"MIT","_id":"graphddb@0.4.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"ef4d46bdc281f271db28bed100b209e75cfe1fda","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.4.3.tgz","fileCount":21,"integrity":"sha512-nU80O2aEKZDsloF4wpuPW9GHTOc61asdXxLmReYjJqJ6vdErebpKk83x1rvYjoMETOQzJ06ibXAXZR8AHaMN0Q==","signatures":[{"sig":"MEUCIB4xWUSX3vJEqeoGdepakaZzHNxzDQsRIWoFgKWVJW1wAiEAyIhNneFSNubmyI//oq/FWA8wCiPFPiOrDLdgVnWs7lI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1375693},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"8ea006a61bc90154ee37c2b0dc64c4c9aab4884f","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.4.3_1782864311023_0.8548710061798968","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"graphddb","version":"0.5.0","license":"MIT","_id":"graphddb@0.5.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"ad99aee2d0e91d51d7087ab96826e89f139b2080","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.5.0.tgz","fileCount":22,"integrity":"sha512-LvdJ5/aYBGLbY5BpcpIQN2RWovSzuSon63pSrintXywy/7uw9hvy586sBUvLSVCoSBWVUN1IHXrENgMhXPGnUg==","signatures":[{"sig":"MEQCIGbW5CcVkEfuHIMNoinn4jdkff94wpjJks9X3K7gk3PCAiBJRQfb3VDUsViH+rkkxhkGANFKQ5J6I7QnwkBjatkkGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1452914},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"515e31a1f0e0b3791b369222118eddd529f76e68","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.5.0_1782877615582_0.09840770705947843","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"graphddb","version":"0.5.1","license":"MIT","_id":"graphddb@0.5.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"df06607c7523a292872c68e9f302c1c09a772c53","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.5.1.tgz","fileCount":23,"integrity":"sha512-Ct7lDiMgmYRA/Osf1tJ4CkMsBPLICuCc29erztnuj2nwcAfyrmdbNd1K+Ea+6P8LKe388/DFNaDZiZSr7pz4MQ==","signatures":[{"sig":"MEUCIQC0I0y0c58GhfhvLBMAzkgwi2hb3+7koc6ctxHczGSczAIgWw3Tc26Ew5PW2toUw+TiaDWMjN5YomjcgY0yzqnWJ+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1482492},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"e7f86edd72980938913ade0c38b6da80aa0116b3","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.5.1_1782883144531_0.8881069359758667","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"graphddb","version":"0.5.2","license":"MIT","_id":"graphddb@0.5.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"3158918bd1d95b503e3cba1798b63779ddcef7f2","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.5.2.tgz","fileCount":25,"integrity":"sha512-NWpNuHzaq+Oapt/F7ltqe7J8aVia1tFoHxyKW/GUL7PXulasuOswt8CKYycLJZfFjqQHm5AyQ2Hwz17al4pIxA==","signatures":[{"sig":"MEQCIDVVTCt5ePoCYoEuXeUaPDbgXfdsAHcZkfYKZPs/BhK9AiAegxhuw/WcGdofgWH56q8ZLdEJqEDqWyw3tKMedk+DbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11437197},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"ec16ab32f538f07bea3501eca4e3dd13641d42c3","scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","electrodb":"^3.9.1","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.5.2_1782885582537_0.15224291007715784","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"graphddb","version":"0.5.3","license":"MIT","_id":"graphddb@0.5.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"92fa310d363685195baee4fae0d1745da63d8e87","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.5.3.tgz","fileCount":37,"integrity":"sha512-NZkYl87DKRjBZlujF9ix641fwQ1VQFox0Lp6TNy8E8NXktJifY77AgJ+enGkrmu9KIJZEKsbgCPI0Id25pbGDw==","signatures":[{"sig":"MEYCIQC4bXE7w9PWJiwVvKAcu8DjstDRmA5gniF3RpQE7BtOLAIhAJceiuWyhi67seSn+kl1D/7twfbq0Xr5iYilPseR+zDd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1582504},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"9e9542d3c54032b10148ddf5eb721bbd20ff9214","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","gen:cli:check":"cli-contracts generate --dry-run","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.5.3_1782900688156_0.2951884348934606","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"graphddb","version":"0.6.0","license":"MIT","_id":"graphddb@0.6.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"29f5671dd9b96ee7bdb0a9ce15ddd1400f29235f","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.6.0.tgz","fileCount":37,"integrity":"sha512-tQEGolTnks2IINkzxSgD0zlKBqdClicr6uBb5HpWgonL59IlEdcDicaT22vel3WRD3P5IWwawU04TEcWDYbJcA==","signatures":[{"sig":"MEUCIQCZ8izAZlTCeU5795DH6uIf1R3GHpXJcJImD2flpvdMOgIgBDhnuJfrBlmJUbw/BW+XcNyTzhWpvMmt0fg6jYHCs9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1609756},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"gitHead":"937258b655ed350756847551a60a5b8fc78d6d38","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.6.0_1782946765551_0.8443030823443656","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"graphddb","version":"0.7.0","license":"MIT","_id":"graphddb@0.7.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"61643b28f33e591f85ecd22261eb71de0afadf6b","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.0.tgz","fileCount":40,"integrity":"sha512-XRl033/wrPTSV8mmH3WLOzr5Jp6dt2C2ePsE2wlkK9gJ34fJNMDKYGCo+CzT8m+8dHEZE9c+z2ko3RLfZ8XYQA==","signatures":[{"sig":"MEQCIF1f9fDSKqLya8IXO6e82O9csm0h2XE/Z8BjyOW1wqM/AiB5VRu0HFyojDAuHibTRRU3nggqLPk4i8gxYa83SHKuKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1699878},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"22e27642c37486fd08477870f118576c8241771f","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.0_1782981943020_0.9671594218880952","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"graphddb","version":"0.7.1","license":"MIT","_id":"graphddb@0.7.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"4be611573d020e6f87750132630d3f5c0dbff13e","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.1.tgz","fileCount":40,"integrity":"sha512-tkdPV/Wg8Vikv7JLLhoI9W9cp43LFFkD5cAdjVQLyNA9TxniXcSWZgy8bYS0/AdwwOfJ0JXf9/jIiuKOF9CFfg==","signatures":[{"sig":"MEUCIDBZa3V3KXHzGAQTr/H1+quULJvQNSPlyU1MkwFBJsdrAiEAgRF9pPW4fqfMqailA4RKe77JjPKtYCx0lFbAd6VZFWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1776023},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"2c8c483ebd324ec16be44952855846f5806eb3d0","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.1_1782992889371_0.08428325353724286","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"graphddb","version":"0.7.2","license":"MIT","_id":"graphddb@0.7.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"c88e3c656d0954c48616a6234860d42b50565736","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.2.tgz","fileCount":40,"integrity":"sha512-3rJJOkt1mR/K/KlFSdMj334/y/waBzZlVtqLY9pO2pyqT5YeI0W4HK19g8C4ph6WEIq5QsVnbwXgSSUid2Ishg==","signatures":[{"sig":"MEUCIQCIx8YON0hY53ih/cFrdhNaE39L9mbDYwHAyK+LB3eOpgIgMp5Jz9mLAXWMxuy6hLtHgPbhLw4bzGQXYLUxCUXhb6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1777278},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"f18b403a5504c3cf5cf7f554eb46e186265d35d9","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.0","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.2_1782996005052_0.45407683195283566","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"graphddb","version":"0.7.3","license":"MIT","_id":"graphddb@0.7.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"60705edcb5e9206720712738bcee39a7f67f32b0","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.3.tgz","fileCount":40,"integrity":"sha512-UcsWgi7e8xAYl+eJvk+Kl58J7CjkBpPMm64PJNpKXaJ3lIWmeVKuHBQb/FUQg2NCTtDDM/rDW0ftpk+HoO6rDw==","signatures":[{"sig":"MEUCIE7M4NLBY4RfgpkqwP0veqasKyDCv6DtUndsZ4jHgJd8AiEA8F8pi7bC7of8IQA1O1VLRcM/qdzTI1/D8mOdIIPnvSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1780489},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"c112430989f201ec433dab60142e8d40e0c4f812","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.3_1782999133062_0.24475619860283326","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"graphddb","version":"0.7.4","license":"MIT","_id":"graphddb@0.7.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"50b8316c0268a0c861b219cd3b2c4114f2e080f7","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.4.tgz","fileCount":40,"integrity":"sha512-n6znbruGT+XCJHudpaeY8e8cOBeUMUh2+7Tc1FNu/zFZvf8gPIVQCPqw5qRUKnpSXQpEwV0Y0coTKJrWDt5adg==","signatures":[{"sig":"MEQCIAdbgs6ugHc5CB71RZx/WWsgxYdwbbStpXqPccz9A1LzAiBqHZ8oF0kP4X54ZqY79PHkTl5c2OLS/jLZcdfJgLal2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1780489},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"e454977720cc403652350bdd7a0af51ffbf3df8c","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.4_1783030826264_0.713151550964461","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"graphddb","version":"0.7.5","license":"MIT","_id":"graphddb@0.7.5","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"dc2fa9fba53acc5ba4e0c86b23b9c73b81c5d2bf","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.5.tgz","fileCount":40,"integrity":"sha512-JXazb77dlxmfejOuQg30NJGBd01uWyB6zV0SOEzFqFJ5J4R22CS8f3sIaOwSxB9WajsckBYb6dpSj4x0DXkdDA==","signatures":[{"sig":"MEYCIQDzOKpx8DgSF6DgysMfda580GOcHpEbVv5i/QeW38+XLAIhAJwit6MavV+8g7HfIQsRIOtus2+2hiuLiPaxjRZwnzA9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1893984},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"1810f8c73daa8117a743e033d3c32f09f81969d7","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","sync:py-version":"node scripts/sync-py-version.mjs","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.5_1783051383794_0.6776480641297671","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"graphddb","version":"0.7.6","license":"MIT","_id":"graphddb@0.7.6","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"4f645a8d8c9a90b5d08e1cd801d4e704f59cac9f","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.6.tgz","fileCount":40,"integrity":"sha512-ZD/vhsfSDmNRPNyLEoUzJFOHGk+ptRo2+oFa5T5IA+4eC9xXsJ8yoAn/+U++XXYkpr1ylpa5cuEefB8nIw3XSQ==","signatures":[{"sig":"MEQCICcZCSTruQWAk1XpBH8EvwAgKJDBuwD0sM3E75O9YcWeAiAHgGsWrmfoyQY8SeLTpsXyJHRv2a8MYZ1dVtt6Xas+6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1894186},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"6380af3b976218e43ecc73ecc6f03cb8f46a0e49","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.6_1783104560162_0.428699391224042","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"graphddb","version":"0.7.7","license":"MIT","_id":"graphddb@0.7.7","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"fdf5bf716a4d60ac9a7a8317918f8658eefcf858","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.7.tgz","fileCount":40,"integrity":"sha512-bRavf20+5RMZARSz0LC5XqTmbB0uCOAr4nhoWkoe9wbbDECl7mvHbdK2cfmUCVkRPO3CSCGkYuKje+dDc74jyw==","signatures":[{"sig":"MEUCIQDe1LIvtJg+qU8Yu/uK546YSA+bCG1hXziz/CHY5J654AIgQVMgWm6XsgI/pAsV8wrxBffwC+2lb7farSd7CzT3qFs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1895343},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"28017d5993d8d75d188db0cb8ab58c4225934a2a","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.7_1783125040909_0.4230886956257256","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"graphddb","version":"0.7.8","license":"MIT","_id":"graphddb@0.7.8","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"0e12f38758ff4b2f46aebadb2c9145e8deacb0ab","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.8.tgz","fileCount":40,"integrity":"sha512-sXQlfIGOz7jCK7W0xuTzTmsVBCWGSa13PvWb09OJPPQ92c8Lc1Dj3mvLM2BQF4jvVQ41kF+q3SVsQ/os7BW0Vg==","signatures":[{"sig":"MEYCIQDK9gXhXwwLSwS4putqRoipU2Xbf6u5LiC/ibn98mFhrwIhALJfCsRk+Qp+kTDRYZ0TAYddBPYM7kZHIkq+I/YeFns/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1927584},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"bb9da290bbc84d4ec55fcd102c0bbd54e3a8eadd","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.8_1783225572418_0.6086696615904468","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"graphddb","version":"0.7.9","license":"MIT","_id":"graphddb@0.7.9","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"0e1b63fca85f0eea0c4d4251a841396886b4911b","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.9.tgz","fileCount":40,"integrity":"sha512-UmNkD6nmXBhzFruqvDtTJN6UTo5u5CM8BXFjBa10pX37tyLeevgoeSjX+uw8Xlezdt3b9x7NWUZGadX5gfq3cw==","signatures":[{"sig":"MEUCICoI5GZQAwgQ7b8Vvo64hxH2mWl2jruXp0sLZODkQ8y9AiEA+69lN+006Y6dFh5LX9kek7z3jC7JQXC4gFaYkacKZME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1954363},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"ca365678c6d9556d668980a252118f0b1c64ddff","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.9_1783308128536_0.8988738105066527","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"graphddb","version":"0.7.10","license":"MIT","_id":"graphddb@0.7.10","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"d1a37ae96a7f7e7bb24db375a2e7462a6e283f73","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.7.10.tgz","fileCount":43,"integrity":"sha512-9BssRL6hyyIQz+m1ee0VfUolg/zgiB0rFucbgCyhjiK61ANwioMmcP3UfNH2BVIexbWM37ivm1q3hmXNS3E7+w==","signatures":[{"sig":"MEUCIQCE4owPWU7Gq6zb4WtrQSLg6Ye3dVxkTH/XzdGY1dVEogIgXYcBnCqVT1g/7nlAB+AykEHZfj3szLKdd+oLWy0u9Qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2090268},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"12b8be28939014ca10a452ee0167982e70b764bb","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions.ts --commands python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --queries python/tests/fixtures/definitions_multi.ts --commands python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k, executeQuery, executeList, executeExplain }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.7.10_1783320855211_0.9099615281190345","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"graphddb","version":"0.8.0","license":"MIT","_id":"graphddb@0.8.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"fc53d48fd2d5a16b2a4fe46ab1f6a2fb134e07e3","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.8.0.tgz","fileCount":45,"integrity":"sha512-HIv3oLtyxfzyr1e2Vy2C1MJHWQSJTU5l8pavrYhKRWBSO8LRAPAo5mgEg1CS544AlWU0TSdOSmKlBxmTA8gB2A==","signatures":[{"sig":"MEUCIQDs7/ENOaGFER1rRmg0Q59R9LZl8bx0eXCz5sohw4ucsAIgFqpLEsmxOJL0vfo7tV4qB1aV6MjF2r7C9TXOB63dlI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1843667},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"5242ccd777ef103603dd1932e0f745f3d7aea4de","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.8.0_1783356499506_0.7414945921825593","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"graphddb","version":"0.8.1","license":"MIT","_id":"graphddb@0.8.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"88763dc86a25c4da76d50a5b751b2f0fb9695267","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.8.1.tgz","fileCount":45,"integrity":"sha512-gbkVbx0Cct5z57Dza4ZJVE2HriJ1+daIaarkT5pbWEKCv+BIsPLXyhCn9RUo/JdK7acc07vqxizxUxUzLNjILA==","signatures":[{"sig":"MEQCIFn+mXr+zCGf7wxnVp8+lA9IPcg1MD9ys1/0qJ91jq2oAiAJmz9aK4Rlv+j2+Kb7/EBkCPe2C4y6vEg0k/rERPI+Ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1857064},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"4c194eed19bdc49bc4da67c9e4b2ae9e69403e51","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.8.1_1783383082275_0.11227618829265174","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"graphddb","version":"0.9.0","license":"MIT","_id":"graphddb@0.9.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"d0c1d4f37a8cb3cc7ce7742147a58c418d9c5c2e","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.9.0.tgz","fileCount":46,"integrity":"sha512-0SsTOM4LhKpOX/Oa623wQ3TCe04NgoMG8GKXSJXJUtJ2YnKkcUBBScVsApEOVr96/k739boDP7URJseJPoXdLQ==","signatures":[{"sig":"MEUCIQDZ/Ha7MyYlOUhErPAC4a4CJS5gLyqcIDT7SkD7AGwoEgIgYCLiXrYfRmieXO4BJ82G62F8OX0zxv49+RKRXP1stZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1972071},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"741386836e9a36e90faa6cb3c2f65a37b9fc626d","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.3 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.9.0_1783570460613_0.6011534476790288","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"graphddb","version":"0.9.1","license":"MIT","_id":"graphddb@0.9.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"fd99b453504154d8af4d2f9549d7bd6e1d7a2a42","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.9.1.tgz","fileCount":46,"integrity":"sha512-/MACfomIypXj/NtMirm3DxaZ50D8Dc+jHNSxg+MAQ+CFrptjiypb8jieOuahWv5582Ir33a2LoFI1jbTnUFfQg==","signatures":[{"sig":"MEUCIQCJcNaT3OaZGCU3y/vHCxt/0tFA0ma4dyZmHAzsB4ytGwIgKFfDQzNvqBJjRJLRMeSuvNCKbe7Lfe7e+mq6BmJjjOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1983591},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"23629906a5978cf5c293459b5453eb66fd02317a","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.3 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.9.1_1783586882295_0.1413600823107719","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"graphddb","version":"0.9.2","license":"MIT","_id":"graphddb@0.9.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"29f5f0e5c0f5c0063e9889dea7f970a9a826df84","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.9.2.tgz","fileCount":52,"integrity":"sha512-T7v8qi3HzTZFKHPobwGI+55lWLQWp3knOtvJrNxAPAKWfKWUjTggLDx6YzFBx50Zkqqjqq4D0H/5JXL7fOSMjQ==","signatures":[{"sig":"MEQCIDkFFsDUdMX00HU9nrnrea6vPkfAn42tkTwGtrHyO2RiAiBzM0kFQ4u+XtwxaFFl8NejsY0WUGGZITl2/MAID7i1dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2031265},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"eeaca854ab766e4a036c375cad7afef64c03f5d7","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.3 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.9.2_1783605350628_0.12788489620464238","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"graphddb","version":"0.9.3","license":"MIT","_id":"graphddb@0.9.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"1d4c58542a17b2e5815e098c01524fd15849b2a4","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.9.3.tgz","fileCount":52,"integrity":"sha512-Fn2UVUsvCDOeFjClrU2ojT46wbhAlxPzGm836deaLj/HMyLIcXlJeYmfA+iaKyPDD1vkckPZbUWF9rm8ld9KBQ==","signatures":[{"sig":"MEQCIE+oPWB8ygyjgagFAa0Fa4XgG9Wm6EsPqz5gIa4p5P3VAiBVWe3/4IymKDVd5D6dtxHfV+gHcdbAiDgrYWNEhBEVjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2046766},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"268fef694008599e730d1898ac0352ea249f85f3","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts","gen:rust:behaviors:fixture:straightline":"tsx src/cli.ts generate behaviors --lang rust --straightline --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors_straightline && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors_straightline/behaviors_straightline_generated.rs"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.8 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.9.3_1783739175700_0.7884634941065367","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"graphddb","version":"1.0.0","license":"MIT","_id":"graphddb@1.0.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"e7d3697d08af392aa5e577c3bfffae87eb091431","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.0.tgz","fileCount":52,"integrity":"sha512-CEupAwCrFfMBONYOks77TTMLt5RJra6YYCqaiQPTtocRSWGByIiA6PmGPaOHAChwh5gfos5ASGfxBqNpdsyrYQ==","signatures":[{"sig":"MEUCIQDkylbtwuHoi3zaX1gBtLxSipz0c5Gdm5XEqMo3umnHqwIgenhbGUB49wkiUBeQHJObR0l8ScAPic4fQwBmcxPhqvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2060231},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"11bca90317912160746a4a6f31e329496f23468f","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts","gen:rust:behaviors:fixture:straightline":"tsx src/cli.ts generate behaviors --lang rust --straightline --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors_straightline && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors_straightline/behaviors_straightline_generated.rs"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.8 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.0_1783914261807_0.3034453553482741","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"graphddb","version":"1.0.1","license":"MIT","_id":"graphddb@1.0.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"cd364a38fc800ba52b222395d9ebe9da2d35b8c0","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.1.tgz","fileCount":52,"integrity":"sha512-t2aNXeeCvXO25uQt9yfEidbkShhHQy3nGDWvixJ3u/zjJOnnakvDL7IUKlGFJqDPdPgIhPnAS2PskINJyPVapQ==","signatures":[{"sig":"MEUCIQCPMnPfh3U7wUKLsXE+t7kqYPmY04c8hh13prfIVvelLAIgDK2Q/4GekBSkflUC1Wt0Mx6Um9tbr9S+fHvXDK0WFyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2061484},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"16b4906561e9637ae5e4d723f1435a318e28e950","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts","gen:rust:behaviors:fixture:straightline":"tsx src/cli.ts generate behaviors --lang rust --straightline --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors_straightline && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors_straightline/behaviors_straightline_generated.rs"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.8 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.1_1783927321646_0.8789065947637467","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"graphddb","version":"1.0.2","license":"MIT","_id":"graphddb@1.0.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"9d365d0f50e0b466e2c1449df51d5aa7fb59b87b","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.2.tgz","fileCount":52,"integrity":"sha512-E3kITN9qFbfq67F8mQiV3DYbnjwAn1LLGi0cNFM6jcM9224SeKh9sMWiLK1avadFRU/mSlgbXppyb2TTf5Ka/Q==","signatures":[{"sig":"MEQCIFjYx130hVaP126asqx1ntTqUhRtNJgn8PKbP28LAT21AiBaUqqPz4wY27cfe9ff8e61ysbqrx2hwgdkpD1K5eYSwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2062117},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"b0484e5b93862754acb630332190681503accb4a","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts","gen:rust:behaviors:fixture:straightline":"tsx src/cli.ts generate behaviors --lang rust --straightline --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors_straightline && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors_straightline/behaviors_straightline_generated.rs"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"29.8 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.2_1783933848825_0.7955812709968157","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"graphddb","version":"1.0.3","license":"MIT","_id":"graphddb@1.0.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"f80bad79dedf58c668be055ce9aefec320d1ab6d","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.3.tgz","fileCount":52,"integrity":"sha512-9PEIjx+8vwQhpaWlOe+EgmM0JouHUuKVu4aThNaEZisydRtJ5wBtboLrWZzv3tzrwuhfUWbPHs5+0FmFJrhk/w==","signatures":[{"sig":"MEUCIB0iuxORNmIUBVL8V0+B/Z5HusRDRI0pxCUWGVhtIe0MAiEA3RuTP5rAIQnDLyrmCJ2p5jZxZe3ayExGE1pbiMjLap8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2066814},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"eab62adaf842075d8342fbaa1cc73edfd47575e2","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"30.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.3_1784010572262_0.013759212210276983","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"graphddb","version":"1.0.4","license":"MIT","_id":"graphddb@1.0.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"d7e708f420803029c80b201a3e86f962d298be88","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.4.tgz","fileCount":52,"integrity":"sha512-+gdB0SuaW770TFdfL4xST0ubn+tgSbyNRNIE2OozL9Rssvh1POCer6iyq/M3+9b4DUXlxkn/8gaJ5UL3rewuTw==","signatures":[{"sig":"MEUCIB5wYycuNIZq+8tflLK5V25Kw5dGl1Iy7CHdMqfwaca+AiEAv17oA1poUiz7elYHd56ApUSiPjE1Fsih/H5o4b12o14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2067191},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"d4171864c688c335bea8b71abe27e04fb448951d","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"30.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.4_1784028414938_0.5571768685734468","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"graphddb","version":"1.0.5","license":"MIT","_id":"graphddb@1.0.5","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"45970994b93cdc9f37ba10db3d4d949d70e1a3bf","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.5.tgz","fileCount":52,"integrity":"sha512-UTYcXHXqUdAQZX0ezD0XdXXtb5JzZT1TCyc3FrDhgeTjFrw7QQpRCs6jz2wu2KisZCnVW4g8TJPyfd+qVHWwBA==","signatures":[{"sig":"MEUCIQDrYmFoupU+t6ZjGv6ckvblexSUakwBtVXsfKZhiOA7HAIgOIm0jOJybvKcntjI5u9huJM0ccYcJVSJyuDtac7U80Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2067191},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"843530687fc1a7225e854922e21b868181b19f2e","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"30.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.5_1784030795829_0.3686040321061528","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"graphddb","version":"1.0.6","license":"MIT","_id":"graphddb@1.0.6","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"1547649d7aa4786cc90f4bb201adbd9bd2e6dd5f","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.6.tgz","fileCount":52,"integrity":"sha512-boCdbdzdmalLWd0aa1NwJP3yFKyb1S/J5Y0b5ovUwggT/Oxq6Kb/jvgVXBBLggEBik4t8epaUijJFnp7O1D5HA==","signatures":[{"sig":"MEUCIATb/eTg+QSNV9BULoacbOE8XSi6sVOh/ZEUB3GqtV8fAiEAl9dL3n2dY6A6BlUvB2pNNJ56DMjUOCEug6nFTP8pH1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2070281},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"d1d7d82ae4ded267ff905a65beff33e2d4910d4b","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"30.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.6_1784045570930_0.8292569828798149","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"graphddb","version":"1.0.7","license":"MIT","_id":"graphddb@1.0.7","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"91c665182bbc6a025fce4d8d427dbc830641e667","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.7.tgz","fileCount":52,"integrity":"sha512-02lenVLgkaJ5bM2COV44effADMZE/izWfqKDCrCY2FLmmtOOF7HbKReSu7O5UxNe8/HIoTVSd6LbADhJlVxAfw==","signatures":[{"sig":"MEUCIEMtJrBK7JlM6B1hibhKmMdJJ3EZ9AMO7OE9jc3EONMiAiEA/+xKzLqWTshFqFh03t9w3lwlsCUQkWxxm73HhOMTB0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2070281},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"7cd43c8acf6a993767d9a1db1ebe5a692a0a89ab","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"30.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.7_1784071299358_0.957401009989229","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"graphddb","version":"1.0.8","license":"MIT","_id":"graphddb@1.0.8","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"ec2c4dba4c73a87a5406908e7dbc3105bad52e20","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.8.tgz","fileCount":52,"integrity":"sha512-viE6ilw5+4ubup03I1D7kho36T2TBFJw3sSDu6bZXpzIJ4Nu5nVHUirW0Yn8p9srkedFj/q/tUC0LUa7BY+8tg==","signatures":[{"sig":"MEUCIDOvm7uZ4z0+gwq2n6Hgp6niH/F6PB6I9ErFDvFQHhd5AiEAi6BSjwAymeHXVZMaoIP8ng6HI+LmQ71GZOL0tLneFiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2074749},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"557fa35906db75bf598b69068c8d9416695a889f","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"31.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline. #350/#351 (refs read as a bc `fanout` node, bc 0.7.3) traced growth: 30.18->31.22 KB (+1.04 brotli) — esbuild metafile-traced (minified): total +4.09 KB = bc +3.04 KB AND first-party src/spec +1.05 KB. ZERO new dependency: `behavior-contracts` remains this bundle's ONLY external dep (no new package). The bc +3.04 KB is bc 0.7.3 adding `FanoutNode` VALIDATION to the already-present builder.js (buildComponentDefinition) + guard.js — a VERSION BUMP of an existing dependency, NOT a leak (the fanout node's IR-shape validation is bc's owned responsibility per the SP5 split). The first-party +1.05 KB is the refs-fanout DECLARATION seam: (1) src/spec/components.ts — the `sourceList` branch now builds a bc `FanoutNode` (over/as/component/ports/dedupeKey/drop/relationKind) instead of a batched MapNode, plus the Φ output ROOT reconstruction (`{obj:{<kept>:{ref:[root,f]}}}`) that strips the implicit `refs` source so the OUTPUT root type is a proper subset struct (avoids the go/rust typed-native `cannot use T0 as T5` whole-struct-ref mismatch); (2) src/spec/manifest.ts — `refsSourceElementShape` augments a `refs` source id-list `@list` field with its `{arr:{obj:<key>}}` element shape so the fanout `over` de-boxes (the #347 element-shape typing generalized to the refs read); (3) src/spec/type-notation.ts — the `includeImplicitSources` param on nodeObjType (root bare-return carries the id-list; the output omits it), the `refsImplicitSources` QueryTypeFacts field, and the fanout node's nodePorts/nodeComponent handling; (4) src/spec/operations.ts — deriving `refsImplicitSources` from `sourceList.implicit` into the type facts. graphddb DECLARES the fanout via bc's builder (buildComponentDefinition validates the FanoutNode) and the dedup/dangling-drop is OWNED by bc's shared fanout node (interpreter + native codegen) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 31.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.8_1784090247818_0.759337524184347","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"graphddb","version":"1.0.9","license":"MIT","_id":"graphddb@1.0.9","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"65be3cfa2998b7923cac623ded0a71b01c2e0677","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.0.9.tgz","fileCount":52,"integrity":"sha512-Ndt7PiPlcDDU1d8K9DWIM7UvdyoY/29MxsBCLP9viglgd5uTSCIFwFWEWQ/FJdWUio7LrIRKdbLkObIMIETaSA==","signatures":[{"sig":"MEYCIQDAAkudlYzKNxCBBbDt4/L86lZym3YRVtm5wRCJynkKDwIhAIQSuwXB+tisS+KFBWP7gNphDtl/U/WY8MGDVHFPDyAp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2077178},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"551e3adc409def25c91d8a760650e291373328f6","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:full":"bash benchmark/crosslang/run-bench.sh","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"31.7 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.7.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline. #350/#351 (refs read as a bc `fanout` node, bc 0.7.3) traced growth: 30.18->31.22 KB (+1.04 brotli) — esbuild metafile-traced (minified): total +4.09 KB = bc +3.04 KB AND first-party src/spec +1.05 KB. ZERO new dependency: `behavior-contracts` remains this bundle's ONLY external dep (no new package). The bc +3.04 KB is bc 0.7.3 adding `FanoutNode` VALIDATION to the already-present builder.js (buildComponentDefinition) + guard.js — a VERSION BUMP of an existing dependency, NOT a leak (the fanout node's IR-shape validation is bc's owned responsibility per the SP5 split). The first-party +1.05 KB is the refs-fanout DECLARATION seam: (1) src/spec/components.ts — the `sourceList` branch now builds a bc `FanoutNode` (over/as/component/ports/dedupeKey/drop/relationKind) instead of a batched MapNode, plus the Φ output ROOT reconstruction (`{obj:{<kept>:{ref:[root,f]}}}`) that strips the implicit `refs` source so the OUTPUT root type is a proper subset struct (avoids the go/rust typed-native `cannot use T0 as T5` whole-struct-ref mismatch); (2) src/spec/manifest.ts — `refsSourceElementShape` augments a `refs` source id-list `@list` field with its `{arr:{obj:<key>}}` element shape so the fanout `over` de-boxes (the #347 element-shape typing generalized to the refs read); (3) src/spec/type-notation.ts — the `includeImplicitSources` param on nodeObjType (root bare-return carries the id-list; the output omits it), the `refsImplicitSources` QueryTypeFacts field, and the fanout node's nodePorts/nodeComponent handling; (4) src/spec/operations.ts — deriving `refsImplicitSources` from `sourceList.implicit` into the type facts. graphddb DECLARES the fanout via bc's builder (buildComponentDefinition validates the FanoutNode) and the dedup/dangling-drop is OWNED by bc's shared fanout node (interpreter + native codegen) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 31.7 KB keeps the same ~0.5 KB headroom discipline."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.0.9_1784121536126_0.05551870107281087","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"graphddb","version":"1.1.0","license":"MIT","_id":"graphddb@1.1.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"9d937b8e196edd8edaa9419df366f642ee10ba21","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.1.0.tgz","fileCount":52,"integrity":"sha512-VyUCQsZ3IkgXdinIV50VtAIaXXs1oIT2sBRlm4fZwCPu9Dp7F/jlHF6rSgpjzlAVBBfIpF92C1LmzYZ69+o/ew==","signatures":[{"sig":"MEUCIQCTznDbHAsgDptIXNm9WpJ7bRrWZC8vCzhzjY5aa0SdyAIgaCKu0Fv82EVglhXD155cdfMp0AnPhpvaAEMTSgzwFw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2105635},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"ba364a9c0bbba52c19d9b734ed6be39a8709d7f4","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:full":"bash benchmark/crosslang/run-bench.sh","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"40 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.8.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline. #350/#351 (refs read as a bc `fanout` node, bc 0.7.3) traced growth: 30.18->31.22 KB (+1.04 brotli) — esbuild metafile-traced (minified): total +4.09 KB = bc +3.04 KB AND first-party src/spec +1.05 KB. ZERO new dependency: `behavior-contracts` remains this bundle's ONLY external dep (no new package). The bc +3.04 KB is bc 0.7.3 adding `FanoutNode` VALIDATION to the already-present builder.js (buildComponentDefinition) + guard.js — a VERSION BUMP of an existing dependency, NOT a leak (the fanout node's IR-shape validation is bc's owned responsibility per the SP5 split). The first-party +1.05 KB is the refs-fanout DECLARATION seam: (1) src/spec/components.ts — the `sourceList` branch now builds a bc `FanoutNode` (over/as/component/ports/dedupeKey/drop/relationKind) instead of a batched MapNode, plus the Φ output ROOT reconstruction (`{obj:{<kept>:{ref:[root,f]}}}`) that strips the implicit `refs` source so the OUTPUT root type is a proper subset struct (avoids the go/rust typed-native `cannot use T0 as T5` whole-struct-ref mismatch); (2) src/spec/manifest.ts — `refsSourceElementShape` augments a `refs` source id-list `@list` field with its `{arr:{obj:<key>}}` element shape so the fanout `over` de-boxes (the #347 element-shape typing generalized to the refs read); (3) src/spec/type-notation.ts — the `includeImplicitSources` param on nodeObjType (root bare-return carries the id-list; the output omits it), the `refsImplicitSources` QueryTypeFacts field, and the fanout node's nodePorts/nodeComponent handling; (4) src/spec/operations.ts — deriving `refsImplicitSources` from `sourceList.implicit` into the type facts. graphddb DECLARES the fanout via bc's builder (buildComponentDefinition validates the FanoutNode) and the dedup/dangling-drop is OWNED by bc's shared fanout node (interpreter + native codegen) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 31.7 KB keeps the same ~0.5 KB headroom discipline. #350 (SCP-only declarative migration, bc 0.8.2) traced growth: 31.22->39.45 KB (+8.23 brotli) — esbuild metafile-traced. The imperative model->IR emitter (buildQueryComponent/buildTransactionComponent + hand-assembled {ref:[...]} + bc's buildComponentDefinition path) was DELETED and replaced by ONE compileBehaviors call over a single SemanticBehavior class (the owner-mandated literal-zero: grep loadCompiledIR/assembleComponent/buildComponentDefinition in src = 0). This pulls bc/dist/authoring.js (16.76 KB minified — the recorder Proxy + closed-operator DSL: SemanticBehavior/compileBehaviors/when/concat/refsConnection/catalogComponents/.as) into the bundle as the SOLE IR producer; bc/dist/builder.js (13.6 KB) + guard.js (6.3 KB) + type-gate.js (3.4 KB) remain because compileBehaviors uses them internally to construct + validate + SA5-type the branded ComponentGraphIR. ZERO new dependency (behavior-contracts remains this bundle's only external dep). Load-bearing BY DESIGN — graphddb has NO imperative-IR path anymore (owner directive #350); the declarative authoring IS the seam. New ceiling 40 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc ships a leaner authoring entry (e.g. tree-shakeable recorder) or graphddb narrows its compileBehaviors surface."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.1.0_1784192939587_0.6306619756695484","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"graphddb","version":"1.1.1","license":"MIT","_id":"graphddb@1.1.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"80246388a0a097ad9be68cbbc0cbcf978d0f1c61","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.1.1.tgz","fileCount":52,"integrity":"sha512-9CSrIB5aKcxtq/2GAPK2YbFWv3JQUGVNB3mxW9kpSvXCyGlobKEDT4/tChpKXDQpnSYlOwDCxV0NZkz5L0aWzw==","signatures":[{"sig":"MEQCIDXi6KS6FCnK8IfH3Nz1tXM6Wh4Zb+AsgowzK2lwjjovAiA4ODFEjBbW7q7jQ/w64FwyeOqlQtfT2s4bJ8Ebml0Q+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2105634},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"bb226ba89f22c6f1449138a04c18b045ca1443d4","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","codegen:purity":"node scripts/native-codegen-purity.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","typed:nonvacuity":"node scripts/typed-nonvacuity.mjs","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:full":"bash benchmark/crosslang/run-bench.sh","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","gen:py:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated_behaviors","gen:php:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang php --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out php/tests/fixtures/generated_behaviors","gen:rust:behaviors:fixture":"tsx src/cli.ts generate behaviors --lang rust --typed-native --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out rust/graphddb_runtime/tests/generated_behaviors && rustfmt --edition 2021 rust/graphddb_runtime/tests/generated_behaviors/*.rs","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"40 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.8.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.1","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"graphddb/spec (build-time)":"#290 transitional loop CLOSED at the final sub-pass (P3-5): the components[] emitter is now the PERMANENT (and only) portable carrier of relation fan-out + transaction write plans, so the sub-pass-1 dual-emit bump does not fully revert — the old operation/transaction builders remain as the emitter INTERNAL lowering input (they also feed the TS declarative executor and the AOT prepared plan); only their serialization into operations.json was removed, replaced by the small portable projection. Measured 22.38->22.51 KB across the flip (all first-party src/spec, zero new dependencies, all runtime bundles flat); budget stays 23 KB as the steady-state ceiling. Any future growth must be traced per the size-limit-gate discipline, never blanket-raised. #297 SP1+SP2 traced growth: 22.51->25.02 KB (+2.51 brotli), two traced components — (1) first-party src/spec/catalog.ts: the bc-typed GRAPHDDB_CATALOG + the SP1c emitter validation + the SP2 CQRS effect-derivation invariant, both wired into buildOperations so a catalog/effect mismatch is a BUILD error (load-bearing by design, must ship in this bundle); (2) behavior-contracts/dist/authoring.js partial inclusion, 5.66 KB minified (esbuild metafile-traced): the SP2-mandated classifyBehaviorEffect/referencedComponents live in bc's authoring module, whose top-level `export const add = binOp('add')`-style const-initializer calls esbuild cannot prove pure — bc 0.1.6 ships no sideEffects:false / __PURE__ annotations, so the two tiny helpers drag the authoring-DSL scaffolding along. NOT a new dependency (behavior-contracts already supplied this bundle's contract types); an upstream bc annotation fix reclaims (2), and the ceiling must be re-tightened when it lands. New ceiling 25.5 KB keeps the same ~0.5 KB headroom discipline as the previous 23 KB ceiling. #297 SP3+SP4 traced growth: 25.04->25.26 KB (+0.22 brotli), all first-party src/spec — the SP4 inversion (deriveComponentEffects + assertPublishSplitMatchesDerived with method-naming errors, replacing the SP2 symmetric assertion) plus the additive contractInputs.behaviors registration loop in buildOperations (rename + collision check + re-validation); the publishBehaviors authoring machinery itself is type-only from this bundle (src/define/behaviors.ts never enters dist/spec). Runtime-core bucket flat (39.08->39.07: the eager graphddb.publishBehaviors member tree-shakes out of a { DDBModel }-only consumer — bc 0.1.7 ships sideEffects:false); import-* bucket 47.8->55.4 (+7.6: bc compileBehaviors recorder/scanner + src/define/behaviors.ts + src/executor/behavior-exec.ts, all reachable only via publishBehaviors / behaviorComponents / behavior-exec). #297 SP5 traced growth: 25.26->28.84 KB (+3.58 brotli), one traced component — behavior-contracts/dist/builder.js (11.69 KB minified) + its guard.js dependency (3.51 KB minified), esbuild metafile-traced: SP5 moved components[] IR assembly/validation/canonicalization OUT of src/spec/components.ts and INTO bc's data-registration builder (buildComponentDefinition, bc#26 — the owner-decided split: extraction stays graphddb, IR shape is bc's), and the builder internally applies assertPortableComponentGraph (guard.js) as its fail-closed self-check, so both are load-bearing in the spec build path BY DESIGN (this is the seam the sub-pass exists to create, not a dependency leak). First-party src/spec shrank slightly (the hand-assembled Component return + inline plan emission were replaced by the registration call). New ceiling 29.3 KB keeps the same ~0.5 KB headroom discipline. bc#45 (B1 typed-codegen enabler) traced growth: 29.30->29.43 KB (+0.13 brotli), ONE traced first-party component — src/spec/type-notation.ts (the model->portable-type-notation derivation: DynamoType->PortableType mapping, the ResultNode tree walk keyed off the components[] node ids, the fail-closed UndeterminablePortableType skip, and the deterministic re-canonicalization) plus its wiring in buildOperations (buildManifest() + annotateComponents after buildComponents). ZERO new dependencies: type-notation.ts imports only behavior-contracts (assertPortableComponentGraph/guard.js was ALREADY in this bundle since SP5's buildComponentDefinition) and the already-bundled ./types.js + ./manifest.js. This is the graphddb-owned post-build annotation seam mandated by bc 0.2.2 (whose buildComponentDefinition pre-dates the additive outType/outputType keys and would strip/reject them), so the derivation is load-bearing in the spec build path BY DESIGN — not a dependency leak. New ceiling 29.8 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc gains a builder that carries the notation directly. bc#101/#90/#99 (typed-native read+write consolidation, phase b) traced growth: 29.43->30.18 KB (+0.75 brotli / measured over the whole phase-b), all first-party src/spec — the WRITE type-notation extension in type-notation.ts (annotateWriteComponent + WriteTypeFacts/WriteElemFacts + the WRITE_SENTINEL outType and elemType-on-input-array derivation, so bc's effect-agnostic typed-native emitter covers write components exactly like reads — bc#101) plus its wiring in operations.ts (the writeFacts derivation from transactionSpecs + paramKindToPortable, threaded into annotateComponents) and the components.ts single-map-write output shape fix ({ref:[node]} not {arr:[ref node]}). ZERO new dependencies: the only added imports are first-party (ParamKind from ./define/param, WriteTypeFacts/WriteElemFacts/UndeterminablePortableType from ./type-notation) and a TYPE-ONLY PortableType from behavior-contracts (erased at build — no runtime weight; bc was already the bundle's contract-type source since SP5). This is the graphddb-owned write-annotation seam that makes go/rust emit ONLY the native target for read AND write (consumer-interface §1) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 30.7 KB keeps the same ~0.5 KB headroom discipline. #350/#351 (refs read as a bc `fanout` node, bc 0.7.3) traced growth: 30.18->31.22 KB (+1.04 brotli) — esbuild metafile-traced (minified): total +4.09 KB = bc +3.04 KB AND first-party src/spec +1.05 KB. ZERO new dependency: `behavior-contracts` remains this bundle's ONLY external dep (no new package). The bc +3.04 KB is bc 0.7.3 adding `FanoutNode` VALIDATION to the already-present builder.js (buildComponentDefinition) + guard.js — a VERSION BUMP of an existing dependency, NOT a leak (the fanout node's IR-shape validation is bc's owned responsibility per the SP5 split). The first-party +1.05 KB is the refs-fanout DECLARATION seam: (1) src/spec/components.ts — the `sourceList` branch now builds a bc `FanoutNode` (over/as/component/ports/dedupeKey/drop/relationKind) instead of a batched MapNode, plus the Φ output ROOT reconstruction (`{obj:{<kept>:{ref:[root,f]}}}`) that strips the implicit `refs` source so the OUTPUT root type is a proper subset struct (avoids the go/rust typed-native `cannot use T0 as T5` whole-struct-ref mismatch); (2) src/spec/manifest.ts — `refsSourceElementShape` augments a `refs` source id-list `@list` field with its `{arr:{obj:<key>}}` element shape so the fanout `over` de-boxes (the #347 element-shape typing generalized to the refs read); (3) src/spec/type-notation.ts — the `includeImplicitSources` param on nodeObjType (root bare-return carries the id-list; the output omits it), the `refsImplicitSources` QueryTypeFacts field, and the fanout node's nodePorts/nodeComponent handling; (4) src/spec/operations.ts — deriving `refsImplicitSources` from `sourceList.implicit` into the type facts. graphddb DECLARES the fanout via bc's builder (buildComponentDefinition validates the FanoutNode) and the dedup/dangling-drop is OWNED by bc's shared fanout node (interpreter + native codegen) — load-bearing in the spec build path BY DESIGN, not a dependency leak. New ceiling 31.7 KB keeps the same ~0.5 KB headroom discipline. #350 (SCP-only declarative migration, bc 0.8.2) traced growth: 31.22->39.45 KB (+8.23 brotli) — esbuild metafile-traced. The imperative model->IR emitter (buildQueryComponent/buildTransactionComponent + hand-assembled {ref:[...]} + bc's buildComponentDefinition path) was DELETED and replaced by ONE compileBehaviors call over a single SemanticBehavior class (the owner-mandated literal-zero: grep loadCompiledIR/assembleComponent/buildComponentDefinition in src = 0). This pulls bc/dist/authoring.js (16.76 KB minified — the recorder Proxy + closed-operator DSL: SemanticBehavior/compileBehaviors/when/concat/refsConnection/catalogComponents/.as) into the bundle as the SOLE IR producer; bc/dist/builder.js (13.6 KB) + guard.js (6.3 KB) + type-gate.js (3.4 KB) remain because compileBehaviors uses them internally to construct + validate + SA5-type the branded ComponentGraphIR. ZERO new dependency (behavior-contracts remains this bundle's only external dep). Load-bearing BY DESIGN — graphddb has NO imperative-IR path anymore (owner directive #350); the declarative authoring IS the seam. New ceiling 40 KB keeps the same ~0.5 KB headroom discipline; re-tighten if bc ships a leaner authoring entry (e.g. tree-shakeable recorder) or graphddb narrows its compileBehaviors surface."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.1.1_1784204766978_0.3646193879563224","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"graphddb","version":"0.8.2","license":"MIT","_id":"graphddb@0.8.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"8ff9729af8026e7b1feecccc83bb3d49cc2e1aa5","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.8.2.tgz","fileCount":45,"integrity":"sha512-cnRD458NeEO1MOwOWxAP03pclNcmc5m6tQW5vjKGV5IkyPBW0KAv+/3mmBrjThbK+aHhaZRKhnpBJXAMejvMFQ==","signatures":[{"sig":"MEUCIBzrtgvMHmauRPKy3ja6OXpn42Q7pQBB8iaqAMuEgUEUAiEAsy8InefvbEaeGm41h53jggxCaGLPWshFcxhHptFbZRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1857736},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"6a6afec2da2d43a21cd2d83f9ff172b69776b041","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"20 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.8.2_1784741312919_0.12745484422055653","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"graphddb","version":"0.8.3","license":"MIT","_id":"graphddb@0.8.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"a528f560e91f131924df84c5850421e9024295a5","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-0.8.3.tgz","fileCount":45,"integrity":"sha512-cn1mq6PKrv5UsQwy4m3LSP5ia9AYRjVYNHfr4W/LxsHJykfoCXFyq1uXkIAZICkasmopIHcjjxifglyNa6u5oQ==","signatures":[{"sig":"MEYCIQDh/a8wDgKIv+Gim+ijRSysWJdZT5Kc0NuFtz1xSEvv4wIhAOguTGnQ5d0YyzE8rTkEiWxB4oBR7vI7iMwrZ+AI2AA4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1857736},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./internal":{"types":"./dist/internal/index.d.ts","import":"./dist/internal/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"95fcd395bd102b82619096fbc914ba8905866905","scripts":{"size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","test:ci":"vitest run","test:py":"python3 -m pytest python/tests -m \"not integration\"","size:why":"size-limit --why","docker:up":"docker compose -f docker-compose.test.yml up -d","test:unit":"vitest run","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","docker:down":"docker compose -f docker-compose.test.yml down","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"cli-contracts generate --dry-run","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","bench:crosslang":"tsx benchmark/crosslang/run.ts","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","gen:py:fixtures":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --transactions python/tests/fixtures/definitions.ts --contracts python/tests/fixtures/definitions.ts --out python/tests/fixtures/generated","embedoc:generate":"embedoc generate --all","test:conformance":"tsx conformance/run.ts","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:py:integration":"python3 -m pytest python/tests -m integration","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","bench:crosslang:test":"vitest run benchmark/crosslang/__tests__","gen:py:fixtures:multi":"tsx src/cli.ts generate python --entry python/tests/fixtures/models.ts --contracts python/tests/fixtures/definitions_multi.ts --out python/tests/fixtures/generated_multi","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang:integration":"tsx benchmark/crosslang/integration.ts"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"42 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"80 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"22 KB","import":"{ buildBridgeBundle }"},{"name":"graphddb/internal (AOT prepared-plan loader)","path":"dist/internal/index.js","limit":"30 KB","import":"{ loadPreparedPlan }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"0.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","yaml":"^2.9.0","vitest":"^3.0.0","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^11.0.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.33.14","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^11.0.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_0.8.3_1784866387139_0.7501370729708781","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"graphddb","version":"1.2.0","license":"MIT","_id":"graphddb@1.2.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"45eb8c940b6db184b9ef50713c578745b2a176bf","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.0.tgz","fileCount":54,"integrity":"sha512-dD8EcW6hSwyyiBDp1bNMKOOZPMKENr5nn4IKBkhSkbW76llspvmD2iYOjLu4m3Eguf0eg1lXaqeUeYL6GFr88w==","signatures":[{"sig":"MEUCIQC2ZwEURFM5DF+wL5XYlZJ0OgAWQ9QTBuE7d9i1JjUftwIgNLQBRp3r6YK0WJp7hlM7mN6BGgY6GLh5C7j9qKUr2M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1795584},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"3fd550b7ba2279ccfc08e744ecf47dbd75aee92d","scripts":{"size":"npm run build && npm run size:measure","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:py":"python3 -m pytest python/tests","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","docker:down":"docker compose -f docker-compose.test.yml down","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts","parity:check":"node scripts/check-parity-claims.mjs","size:measure":"size-limit","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","embedoc:generate":"embedoc generate --all","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"41.4 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"18.3 KB","import":"{ buildManifest, buildOperations }"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","limit":"6.1 KB","import":"{ Ddb }"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","limit":"6.25 KB","import":"{ leafHandlers }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.11.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^7.3.6","yaml":"^2.9.0","vitest":"^4.1.10","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.1","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.2.0_1785197986226_0.1439285811916493","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"graphddb","version":"1.2.1","license":"MIT","_id":"graphddb@1.2.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"13685afad43973decf49c08e2bbe64b9c8965c44","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.1.tgz","fileCount":54,"integrity":"sha512-5u5xK9HJ3R3mGDsahpAXYvDxGDZEi0KUZEhcOlzYJBePJ0+CHEPa/pno2pkxXmwhxqUdT3UjyNp27Ld3r60oPw==","signatures":[{"sig":"MEUCIQCeffnyeOhR5jvbOwXf1vxRWFY9oTanwiof5U4y75IttQIgH/ADAmN7/hPl6n+Hid7mmhvsB+f6JKwrsKYGxFDdY4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1796532},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"dfa3c8d4ca950b33ae41a82010081d7aea7807b1","scripts":{"size":"npm run build && npm run size:measure","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:py":"python3 -m pytest python/tests","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","docker:down":"docker compose -f docker-compose.test.yml down","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts","parity:check":"node scripts/check-parity-claims.mjs","size:measure":"size-limit","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","embedoc:generate":"embedoc generate --all","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"41.4 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"18.3 KB","import":"{ buildManifest, buildOperations }"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","limit":"6.1 KB","import":"{ Ddb }"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","limit":"6.25 KB","import":"{ leafHandlers }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.11.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^7.3.6","yaml":"^2.9.0","vitest":"^4.1.10","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.1","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.2.1_1785203587757_0.27296690453705574","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"graphddb","version":"1.2.2","license":"MIT","_id":"graphddb@1.2.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"15934db001e59d58414b06890f0017a7d3ad304f","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.2.tgz","fileCount":54,"integrity":"sha512-54u1Pj8Rhz3Ib+KBdqAnXan3pQeKfPKBoG7Ts0JnxG8doGUE+N0SQt8EK4dcpZvrkwnST1Oeo9WZYERruATgdA==","signatures":[{"sig":"MEQCIDDfwYKN1b664+c4GNLcesykaMpxa2Wt5oly3dwXSd1FAiADJlGX7LKRo1QAOc0vb65bpKNwtCt30nGoXslBDdqb3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1796532},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"05ec73a00e0ce9b1472dacf0d0e10345fa8581d0","scripts":{"size":"npm run build && npm run size:measure","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:py":"python3 -m pytest python/tests","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","docker:down":"docker compose -f docker-compose.test.yml down","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts","parity:check":"node scripts/check-parity-claims.mjs","size:measure":"size-limit","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","embedoc:generate":"embedoc generate --all","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"41.4 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"18.3 KB","import":"{ buildManifest, buildOperations }"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","limit":"6.1 KB","import":"{ Ddb }"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","limit":"6.25 KB","import":"{ leafHandlers }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.11.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^7.3.6","yaml":"^2.9.0","vitest":"^4.1.10","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.1","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.2.2_1785285444762_0.993195822406457","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"graphddb","version":"1.2.3","license":"MIT","_id":"graphddb@1.2.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"f88c491dd883cca473d882013a830995491da149","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.3.tgz","fileCount":54,"integrity":"sha512-MOVyZRux3VON+ViIPznIffB1PMVT+JXjbVno1M54khRLH2LSIh3dZC8jCTqPdN06U7tAJaBkQcIPb4jO14IvKg==","signatures":[{"sig":"MEQCIHqEznLqBNcgajHSxouS4BVFWQfnjE32Z3iaffsnS1bqAiBeuMG8rjkrSThd5mU18Xf/5jHuWot/vrmAsz/DjO94PQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1796566},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"02b105daf184fd6e21bd30fd3bec71569f89f7e3","scripts":{"size":"npm run build && npm run size:measure","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:py":"python3 -m pytest python/tests","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","docker:down":"docker compose -f docker-compose.test.yml down","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts","parity:check":"node scripts/check-parity-claims.mjs","size:measure":"size-limit","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","embedoc:generate":"embedoc generate --all","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"41.4 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"18.3 KB","import":"{ buildManifest, buildOperations }"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","limit":"6.1 KB","import":"{ Ddb }"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","limit":"6.25 KB","import":"{ leafHandlers }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.11.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^7.3.6","yaml":"^2.9.0","vitest":"^4.1.10","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.6","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.2.3_1785290169409_0.12319423432617294","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"graphddb","version":"1.2.4","license":"MIT","_id":"graphddb@1.2.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"bin":{"graphddb":"dist/cli.js"},"dist":{"shasum":"d070526ac5e3e59a09b8da13aa6675e757870e97","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.4.tgz","fileCount":54,"integrity":"sha512-JQ2ppl1+9mlh44wF0XPbTjo2dFKdDPhHUwt3/X6WRA7e34nFT0spJ3AkaF9X367mShuspElR//JTyt2wOuSccw==","signatures":[{"sig":"MEUCIFW0cJ0bGr3z9Bw+QF8Nvyyd6nOwx6FqjT6Ph9skw/QOAiEAhDJ3VsrohS5VXXAGZgmw7k/ZYIbcwi2LhlY42aN7v0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1796574},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"gitHead":"722fc206f4ce4dabed9bb7bf6ff7561d2cbbabd9","scripts":{"size":"npm run build && npm run size:measure","test":"vitest run","build":"tsup","clean":"rm -rf dist","gen:cli":"cli-contracts generate","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","test:py":"python3 -m pytest python/tests","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","deps:check":"node scripts/check-no-local-deps.mjs","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:watch":"vitest","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","docker:down":"docker compose -f docker-compose.test.yml down","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts","parity:check":"node scripts/check-parity-claims.mjs","size:measure":"size-limit","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","embedoc:build":"embedoc build","embedoc:check":"node scripts/embedoc-drift-check.mjs","embedoc:watch":"embedoc watch","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","sync:versions":"node scripts/sync-versions.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","native:no-json":"node scripts/no-json-native.mjs","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","embedoc:generate":"embedoc generate --all","test:integration":"vitest run --config vitest.integration.config.ts","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"esbuild":"^0.28.1"},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","limit":"41.4 KB","import":"{ DDBModel, model, string, number, key, k }"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","limit":"12 KB","import":"{ createTestDB }"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","limit":"18.3 KB","import":"{ buildManifest, buildOperations }"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","limit":"6.1 KB","import":"{ Ddb }"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","limit":"6.25 KB","import":"{ leafHandlers }"}],"_npmVersion":"10.9.8","description":"Graph data modeling on DynamoDB with adjacency list pattern","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"commander":"^15.0.0","handlebars":"^4.7.9","behavior-contracts":"^0.11.16"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^7.3.6","yaml":"^2.9.0","vitest":"^4.1.10","embedoc":"0.14.2","prettier":"^3.9.4","electrodb":"^3.9.1","size-limit":"^12.1.0","typescript":"^5.5.0","@types/node":"^22.20.0","cli-contracts":"^0.34.6","dynamodb-toolbox":"^2.9.0","dynamodb-onetable":"^2.7.7","@aws-sdk/lib-dynamodb":"^3.700.0","@aws-sdk/client-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0"},"peerDependencies":{"tsx":"^4.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","@aws-sdk/client-dynamodb":"^3.0.0"},"size-limit-notes":{"runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"optionalDependencies":{"typescript":"^5.5.0"},"peerDependenciesMeta":{"tsx":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/graphddb_1.2.4_1785994158138_0.14664389296374414","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"graphddb","version":"1.2.5","description":"Graph data modeling on DynamoDB with adjacency list pattern","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"},"./spec":{"types":"./dist/spec/index.d.ts","import":"./dist/spec/index.js"},"./leaf":{"types":"./dist/leaf/index.d.ts","import":"./dist/leaf/index.js"},"./linter":{"types":"./dist/linter/index.d.ts","import":"./dist/linter/index.js"},"./cdc":{"types":"./dist/cdc/index.d.ts","import":"./dist/cdc/index.js"},"./transform":{"types":"./dist/transform/index.d.ts","import":"./dist/transform/index.js"}},"bin":{"graphddb":"dist/cli.js"},"scripts":{"build":"tsup","sync:versions":"node scripts/sync-versions.mjs","test":"vitest run","test:watch":"vitest","test:types":"vitest run --config vitest.typecheck.config.ts && npm run test:types:examples","test:types:examples":"tsc --noEmit -p tsconfig.examples.json","test:types:benchmark":"tsc --noEmit -p benchmark/tsconfig.json","test:integration":"vitest run --config vitest.integration.config.ts","test:py":"python3 -m pytest python/tests","test:vectors":"tsx conformance/vectors-run.ts","validate:cfn":"node scripts/validate-cfn.mjs","gen:cli":"cli-contracts generate","gen:cli:check":"node scripts/cli-contract-drift-check.mjs","clean":"rm -rf dist","size":"npm run build && npm run size:measure","size:measure":"size-limit","docker:up":"docker compose -f docker-compose.test.yml up -d --wait","docker:down":"docker compose -f docker-compose.test.yml down","bench:docker:up":"docker compose -p graphddb-bench -f docker-compose.bench.yml up -d","bench:docker:down":"docker compose -p graphddb-bench -f docker-compose.bench.yml down","embedoc:build":"embedoc build","embedoc:watch":"embedoc watch","embedoc:generate":"embedoc generate --all","prepare":"git config core.hooksPath .githooks 2>/dev/null || true","embedoc:check":"node scripts/embedoc-drift-check.mjs","codegen:check":"node scripts/codegen-drift-check.mjs","parity:check":"node scripts/check-parity-claims.mjs","native:no-json":"node scripts/no-json-native.mjs","deps:check":"node scripts/check-no-local-deps.mjs","vendor:bc-php":"node scripts/vendor-behavior-contracts-php.mjs","vendor:bc-php:check":"node scripts/vendor-behavior-contracts-php.mjs --check","vendor:bc-vectors":"node scripts/vendor-behavior-contracts-vectors.mjs","vendor:bc-vectors:check":"node scripts/vendor-behavior-contracts-vectors.mjs --check","bench:crosslang":"bash benchmark/crosslang/run-bench.sh","bench:micro":"bash benchmark/crosslang/microbench/run-micro.sh","bench:verify":"DDB_ENDPOINT=http://localhost:8101 tsx benchmark/verify.ts"},"size-limit-notes":{"runtime core (DDBModel + authoring)":"41.16 KB measured. Across 8 consecutive clean rebuilds of IDENTICAL sources the figure is 41.16 KB six times, 41.24 KB once and 41.27 KB once — a 0.11 KB spread, because tsup re-splits its chunks and writes the same bytes with the import lists in a different order, which brotli compresses to a different size. The ceiling is therefore the measurement plus 0.24 KB, a margin larger than that spread: below it the gate's verdict depends on which rebuild ran, so a re-run turns a red green and teaches everyone to re-run. Do not re-tighten it under the spread. The entry is the model + authoring surface and the write machinery it reaches. Its largest non-model components are `src/runtime/same-key-collapse.ts` and `src/runtime/transaction-commit.ts` — the op-aware same-physical-key collapse and the one atomic-commit orchestration every write path funnels through — and `src/operations/update.ts` + `src/operations/gsi-derive.ts`, which own the update expression and the single selection of the index-key attributes an update writes. `gsi-derive.ts` also answers which fields each DERIVED write puts on its target row (`maintainWrittenFields` / `derivedUpdateWrittenFields`) and holds `gsiKeySets`, the ONE in-process renderer of those attributes' SET clauses for the synchronous maintenance write, the derived counter and the asynchronous maintenance drain alike: that pair is the 0.3 KB this entry carries so no derived write emits a row its own index cannot see. `gsi-derive.ts` also holds the refusal of an index key composed from an attribute an atomic ADD moves, and the `addedFields`/`context` threading that carries those attributes to it — ~0.07 KB of this entry, the rest of the component being the refusal's own filter, pluralisation and diagnostic text. `src/spec/mutation-command.ts` asks that same refusal for a `updateMode: 'stream'` maintainer when a command is compiled, which the in-process runtime does, so ~0.05 KB of this entry is that one call; relocating `gsiKeySets` and the SET/ADD expression join out of `src/runtime/command-runtime.ts` into modules whose exports tree-shake per export offsets most of it, leaving +0.01 KB net against a build with neither. That canon is shared, not duplicated: this graph reaches it through `update.ts` / `command-runtime.ts` / `mutation-command.ts` and the build-time graph through `src/spec/symbolic.ts`, which is why the component is measured in both and is genuine code rather than a dependency leak. It is deliberately in THIS graph and not the spec's -- the derived-write structures are type-only imports here, so the direction below still holds. The CDC maintenance drain (`src/cdc/maintenance-drain.ts`) reaches `gsiKeySets` for the owner rows it upserts, but its chunk hangs off the `graphddb/cdc` entry and is NOT reachable from `dist/index.js`, so that derivation costs this entry nothing. The built module graph this entry pulls is the same set the `import *` entry pulls: no build-time module is reachable from it, and the spec builders (`graphddb/spec`) reach INTO this graph for the update index-key selection rather than the other way round. size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing: trace any growth to its component and re-tighten to the measurement plus the spread margin, never blanket-raise.","runtime core (import *)":"51.41 KB measured. The same 8 consecutive clean rebuilds of identical sources give 51.41 KB six times, 51.40 KB once and 51.48 KB once — a 0.08 KB spread from the same chunk re-splitting — so the ceiling is the measurement plus 0.24 KB and must not be re-tightened under that spread, or the gate flaps on rebuild order instead of on code. It is the same built module graph as the named-import entry, with the WHOLE root barrel retained instead of only what six named exports reach. That is why both entries exist: a new edge from the barrel to a build-time module is invisible to the named entry, which tree-shakes an export nothing imports, and lands entirely on this one (re-exporting `buildOperations` from the root barrel moves this measurement by 7.4 KB and the named one not at all). This entry is therefore the barrel's leak gate, and the named entry is the reachability gate for the authoring surface itself. Its figure moves with the named entry's components; of them, the stream-maintainer ADD refusal `src/spec/mutation-command.ts` asks at compile time accounts for ~0.04 KB. Same discipline: growth is traced to its component and re-tightened to the measurement plus the spread margin, never blanket-raised.","graphddb/spec (build-time)":"17.83 KB measured (17.80-17.83 across clean rebuilds, the same chunk re-splitting, well inside this entry's margin). The bundle is the model->manifest/operations builders plus the contract layer — the in-process metadata the CloudFormation emitter and the documentation generator read. It produces no IR, serializes nothing, and emits no executable code, because code generation and IR are behavior-contracts' and the artifact a build produces is bc's generated module. Its only external dependency is `behavior-contracts`, type-only, so a bc release moves this measurement by nothing. Its largest component beyond the builders is the refusal of an index key composed from an attribute an atomic ADD moves: that rule lives once, in `src/operations/gsi-derive.ts`, and this graph reaches it through `src/spec/symbolic.ts` for an update's index-key templates and through `src/spec/mutation-command.ts` for a `updateMode: 'stream'` maintainer's owner write — the `addedFields`/`context` threading that carries the ADD-moved attributes is ~0.03 KB of it and the refusal's own filter, pluralisation and diagnostic text the rest. The runtime-core entries reach the same canon through `update.ts` / `command-runtime.ts` / `mutation-command.ts`, so it is measured in every graph by design and adds no module edge. The ceiling is the measurement plus ~0.5 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (@leaf catalog)":"5.79 KB measured. Three pieces of the leaf's own code account for the figure beyond the leaf bodies themselves: `src/middleware/transport.ts` — the transport seam (the funnel, the guard merge, the outcome fan-out, the decision constructors) — and in the catalog `toWireValue`, ONE walk of a read's attributes that checks them against the behavior wire model and converts them in the same pass (rewriting composites in place, because a converting second pass would walk every row of every read twice), and `uniqueKeys`, which names a batch request's duplicated key once because DynamoDB rejects a request that repeats one. None of the three adds a module-graph edge: the only runtime import they bring is `ClientManager`, which the leaf bodies already called — everything else `transport.ts` reaches it takes as `import type`, and the two catalog walks import nothing. The ceiling is the measurement plus ~0.3 KB: size-limit exists to catch a dependency LEAK, so a ceiling far above the measurement detects nothing. Trace any growth to its component and re-tighten; never blanket-raise.","graphddb/leaf (bound for a generated module)":"5.94 KB measured. The binder (`src/leaf/handlers.ts`) is the ports→signature mapping a bc-generated module's `bindAsync` consumes; it pulls in the catalog it calls and nothing else, which is why it measures the catalog plus ~0.15 KB. The entry exists because the catalog's own measurement imports `{ Ddb }` alone — a public export nothing measures is a ceiling with no subject. Same discipline as above: the ceiling is the measurement plus ~0.3 KB, and growth is traced to its component, never blanket-raised."},"size-limit":[{"name":"runtime core (DDBModel + authoring)","path":"dist/index.js","import":"{ DDBModel, model, string, number, key, k }","limit":"41.4 KB"},{"name":"runtime core (import *)","path":"dist/index.js","limit":"51.65 KB"},{"name":"graphddb/testing","path":"dist/testing/index.js","import":"{ createTestDB }","limit":"12 KB"},{"name":"graphddb/spec (build-time)","path":"dist/spec/index.js","import":"{ buildManifest, buildOperations }","limit":"18.3 KB"},{"name":"graphddb/leaf (@leaf catalog)","path":"dist/leaf/index.js","import":"{ Ddb }","limit":"6.1 KB"},{"name":"graphddb/leaf (bound for a generated module)","path":"dist/leaf/index.js","import":"{ leafHandlers }","limit":"6.25 KB"}],"peerDependencies":{"@aws-sdk/client-dynamodb":"^3.0.0","@aws-sdk/lib-dynamodb":"^3.0.0","tsx":"^4.0.0"},"peerDependenciesMeta":{"@aws-sdk/client-dynamodb":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"tsx":{"optional":true}},"devDependencies":{"@aws-sdk/client-dynamodb":"^3.700.0","@aws-sdk/lib-dynamodb":"^3.700.0","@size-limit/preset-small-lib":"^12.1.0","@types/node":"^22.20.0","cli-contracts":"^0.34.6","dynamodb-onetable":"^2.7.7","dynamodb-toolbox":"^2.9.0","electrodb":"^3.9.1","embedoc":"^0.14.9","prettier":"^3.9.4","size-limit":"^12.1.0","tsup":"^8.0.0","tsx":"^4.22.4","typescript":"^5.5.0","vite":"^7.3.6","vitest":"^4.1.11","yaml":"^2.9.0"},"engines":{"node":">=22"},"license":"MIT","dependencies":{"behavior-contracts":"^0.11.16","commander":"^15.0.0","handlebars":"^4.7.9"},"optionalDependencies":{"typescript":"^5.5.0"},"overrides":{"esbuild":"^0.28.1"},"sideEffects":false,"_id":"graphddb@1.2.5","gitHead":"56cdec563edb6ca554b8dbc118a4de029f1def8b","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-GcUOfJaVTyrfgzJ3zTH5rWJ4wX6nn3NgZLhX+e+I8THYWrVI/GwzXL0mfJRv1rLknL6R7ferFE7kNdAdWZIsuw==","shasum":"4c037253990fb5a2550659aab1da89f1244b9c37","tarball":"https://registry.npmjs.org/graphddb/-/graphddb-1.2.5.tgz","fileCount":54,"unpackedSize":1796575,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDipnHsJbMHmwi4aSaCi+hdXZv7Q7gAtJKH4f6Ql81kUQIhAJT1KIwTJGeecUsmZ2JiTpMapiCcc40rNeS5JrMHzZPc"}]},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"directories":{},"maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/graphddb_1.2.5_1789009802604_0.5598752487956886"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T05:27:42.437Z","modified":"2026-09-10T03:10:02.929Z","0.1.0":"2026-06-29T05:27:42.816Z","0.1.1":"2026-06-29T06:27:17.562Z","0.2.0":"2026-06-29T13:30:43.603Z","0.2.1":"2026-06-29T18:07:04.843Z","0.2.2":"2026-06-29T22:49:14.253Z","0.2.3":"2026-06-30T02:03:59.867Z","0.2.4":"2026-06-30T03:43:58.051Z","0.2.5":"2026-06-30T11:13:06.501Z","0.3.0":"2026-06-30T11:42:11.233Z","0.3.1":"2026-06-30T16:08:41.783Z","0.4.0":"2026-06-30T17:57:19.185Z","0.4.1":"2026-06-30T18:46:39.436Z","0.4.2":"2026-06-30T23:22:19.470Z","0.4.3":"2026-07-01T00:05:11.256Z","0.5.0":"2026-07-01T03:46:55.746Z","0.5.1":"2026-07-01T05:19:04.759Z","0.5.2":"2026-07-01T05:59:42.728Z","0.5.3":"2026-07-01T10:11:28.367Z","0.6.0":"2026-07-01T22:59:25.708Z","0.7.0":"2026-07-02T08:45:43.191Z","0.7.1":"2026-07-02T11:48:09.531Z","0.7.2":"2026-07-02T12:40:05.205Z","0.7.3":"2026-07-02T13:32:13.205Z","0.7.4":"2026-07-02T22:20:26.472Z","0.7.5":"2026-07-03T04:03:03.982Z","0.7.6":"2026-07-03T18:49:20.334Z","0.7.7":"2026-07-04T00:30:41.088Z","0.7.8":"2026-07-05T04:26:12.575Z","0.7.9":"2026-07-06T03:22:08.725Z","0.7.10":"2026-07-06T06:54:15.354Z","0.8.0":"2026-07-06T16:48:19.764Z","0.8.1":"2026-07-07T00:11:22.446Z","0.9.0":"2026-07-09T04:14:20.800Z","0.9.1":"2026-07-09T08:48:02.465Z","0.9.2":"2026-07-09T13:55:50.800Z","0.9.3":"2026-07-11T03:06:15.874Z","1.0.0":"2026-07-13T03:44:21.976Z","1.0.1":"2026-07-13T07:22:01.868Z","1.0.2":"2026-07-13T09:10:49.002Z","1.0.3":"2026-07-14T06:29:32.409Z","1.0.4":"2026-07-14T11:26:55.127Z","1.0.5":"2026-07-14T12:06:36.025Z","1.0.6":"2026-07-14T16:12:51.113Z","1.0.7":"2026-07-14T23:21:39.573Z","1.0.8":"2026-07-15T04:37:27.998Z","1.0.9":"2026-07-15T13:18:56.281Z","1.1.0":"2026-07-16T09:08:59.841Z","1.1.1":"2026-07-16T12:26:07.172Z","0.8.2":"2026-07-22T17:28:33.125Z","0.8.3":"2026-07-24T04:13:07.387Z","1.2.0":"2026-07-28T00:19:46.484Z","1.2.1":"2026-07-28T01:53:07.961Z","1.2.2":"2026-07-29T00:37:24.954Z","1.2.3":"2026-07-29T01:56:09.628Z","1.2.4":"2026-08-06T05:29:18.318Z","1.2.5":"2026-09-10T03:10:02.778Z"},"license":"MIT","description":"Graph data modeling on DynamoDB with adjacency list pattern","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"readme":"# GraphDDB\n\n**Portable, contract-first DynamoDB access patterns.**\n\nGraphDDB lets you define your DynamoDB access patterns once in TypeScript, validate them at build time,\ninspect the exact execution plan before anything runs, and execute the *same* contract from five\nlanguages — TypeScript, Python, Rust, Go, and PHP. It is **not an ORM**: it is a contract compiler +\nruntime for explicit DynamoDB access patterns.\n\n<!--\nThe only cross-implementation equivalence CI pins is the Layer-1 conformance lock:\nbehavior-contracts' own vendored vector suites, executed by three independent\nimplementations of the primitives. There is no gate pinning five-language execution\nbyte-identity, so this README does not claim one.\nPARITY-CLAIM: expected=bc-upstream-vectors actual=bc-ts-primitives gate=npm:test:vectors\nPARITY-CLAIM: expected=bc-upstream-vectors actual=bc-python-primitives gate=npm:test:vectors\nPARITY-CLAIM: expected=bc-upstream-vectors actual=bc-php-primitives gate=npm:test:vectors\n-->\n\nThe access patterns become a portable, executable artifact. TypeScript is the single source of truth;\nbehavior-contracts compiles each declaration statically and **emits the execution module for every\nlanguage**. What CI pins is zero drift in those artifacts (`npm run codegen:check`) and\n**byte-identical** primitive results across three runtimes (`npm run test:vectors`). GraphQL-like\ntraversal is one of the authoring surfaces — ergonomic, but not the\npoint. The point is that PK / GSI / projection / relation / cursor / operation limits stay explicit,\nverifiable, and portable rather than hidden behind an abstraction.\n\n## ✨ What GraphDDB does — in three layers\n\n**1. Define** explicit DynamoDB access patterns\n\n- ✅ **Type-safe models** —— the TS class is the single source of truth. Keys / GSIs / field types are checked at compile time.\n- ✅ **Graph-style traversal** —— nest `@hasMany` / `@belongsTo` / `@hasOne` inside `select` (an ergonomic authoring surface — arguments → key lookup, selection → projection).\n- ✅ **CQRS contracts** —— public Query/Command contracts as the read/write authoring surface (N+1-safe, context boundaries, composition across contracts).\n- ✅ **Maintained access paths** —— declare embedded snapshots / aggregate counters kept synchronized atomically with the source write.\n\n**2. Validate & explain** before anything touches DynamoDB\n\n- ✅ **Compile-time safety** —— undefined relations, missing GSIs, limit-less lists, and over-depth traversals are rejected at compile time / by the linter — equally for human- and AI-written code.\n- ✅ **Execution plan (Explain)** —— `explain()` returns the exact DynamoDB operations, so RCU shape is inspectable up front.\n- ✅ **Automatic access-pattern resolution** —— the runtime picks the PK / GSI from the fields you give; `select`ed fields are the only ones read and the only ones in the result type.\n- ✅ **In-memory testing** —— unit-test planner / traversal / transaction / CDC with no Docker, no DynamoDB Local.\n\n**3. Execute the same contract, portably, from five languages**\n\n- ✅ **One declaration, every language** —— the models and the published contracts are declared once in TypeScript; nothing about an access pattern is restated per language.\n- ✅ **5 language runtimes** —— an access pattern is authored once as a `@behavior` over graphddb's `@leaf` catalog and compiled by behavior-contracts into a module for **TypeScript / Python / Rust / Go / PHP**, each binding that language's leaf transports.\n- ✅ **Shared vectors** —— CI pins that TS / Python / PHP evaluate behavior-contracts' own shared vectors identically (`npm run test:vectors`). The physical request each language's `@leaf` transport issues is asserted per language.\n\n**Operational surface** (all built on the layers above): **Middleware** (host-side read/write hooks) ·\n**CDC emulator** (local DynamoDB-Streams-equivalent change events) · **CDC projection**\n(`@cdcProjected()` + `fromChange` / `subscribe` into typed records) · **Prepared statements**\n(compile-once / execute-many, AOT static plans) · **CloudFormation generation** ·\n**Docs generation** (Markdown + Mermaid, Handlebars-overridable).\n\n## 🤔 Philosophy\n\n- **Access patterns as portable contracts** —— an access pattern is defined once and becomes a\n  language-neutral, executable artifact. The same contract is validated, explained, and then executed\n  identically across languages, instead of being re-implemented per stack.\n- **Native DynamoDB access patterns** —— express access patterns directly in code instead of hiding them\n  behind an ORM abstraction. Because PK / GSI, projection, and limits stay visible, the correct design\n  becomes the easiest path.\n- **Compile-time safety** —— undefined relations, missing GSIs, limit-less lists, and traversals exceeding\n  the allowed depth are rejected before execution at compile time / by the linter. The same constraints\n  apply equally to human-written and AI-generated code.\n- **Runtime transparency** —— the runtime is not a black box. `explain()` shows the execution plan, and the\n  plan reveals the shape of RCU usage.\n- **Graph-style traversal is a surface, not the essence** —— GraphQL's query model (arguments → key\n  lookup, selection → projection, relation → Query/Get/BatchGet) is a convenient way to *author* access\n  patterns; the essence is the explicit, portable contract underneath.\n\n## 📦 Install\n\n```bash\nnpm install graphddb\n# AWS SDK v3 is a peer dependency. Install the clients you use:\nnpm install @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb\n```\n\n`tsx` is an optional peer dependency, needed only when running the code-generation CLI\n(`graphddb generate …`) directly against TypeScript definitions (library consumers do not need it):\n\n```bash\nnpm install -D tsx\n```\n\nNode.js ≥ 22 is required.\n\n## 🚀 Quick Start\n\n```ts\nimport { DDBModel, graphddb, model, string, key, k } from 'graphddb';\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb';\n\n@model({ table: 'AppTable', prefix: 'USER' })\nclass UserModel extends DDBModel {\n  static readonly keys = key<{ userId: string }>((c) => ({\n    pk: k`USER#${c.userId}`,\n    sk: k`PROFILE`,\n  }));\n\n  @string userId!: string;\n  @string name!: string;\n}\nconst User = UserModel.asModel();\n\n// Connect the client once. GraphDDB owns throttle / transient retries, so set\n// `maxAttempts: 1` to avoid double retries (SDK × library) — see \"Retry & throttling\" below.\ngraphddb.config.client(new DynamoDBClient({ maxAttempts: 1 }));\n\n// READ —— only the fields you select appear in the result type.\nconst user = await User.query({ userId: 'alice' }, { name: true });\n\n// WRITE —— a unified envelope that writes multiple items atomically (default mode: 'transaction').\nawait graphddb.mutate({\n  user: { update: User, key: { userId: 'alice' }, input: { name: 'Alice B.' } },\n});\n\n// Raw base operations on a single item (named after the DynamoDB API).\nawait User.putItem({ userId: 'alice', name: 'Alice' });\n```\n\nReads center on `query` (a single PK / unique GSI lookup) / `list` (multiple items, with a cursor).\nWrites center on `graphddb.mutate` (a unified envelope), while `putItem` / `updateItem` / `deleteItem` are\npositioned secondarily as raw base operations named after the DynamoDB API. For the full API and options,\nsee [`docs/spec.md`](./docs/spec.md).\n\n```ts\n// query: the 1st argument says \"how to find it\", the 2nd says \"what to return\". The return type is inferred from select.\nconst alice = await User.query({ userId: 'alice' }, { name: true });\n\n// list: keys that return multiple items use a cursor-based list.\nconst page = await GroupMembership.list({ groupId: 'eng' }, { userId: true, role: true }, { limit: 20 });\n// page.items / page.cursor\n```\n\n## 🔎 Inspect Execution Plans (Explain)\n\nThis is what sets GraphDDB apart. `explain()` returns the DynamoDB operations before they run. `select` is\ntranslated into a `ProjectionExpression`, so only the requested attributes are read. The plan can be used\nfor testing, debugging, and RCU estimation:\n\n```ts\nconst plan = GroupMembership.explain(\n  { groupId: 'eng' },\n  { select: { userId: true, role: true }, limit: 10 },\n);\n// {\n//   operations: [{\n//     type: \"Query\",\n//     tableName: \"UserPermissions\",\n//     keyCondition: { PK: \"GROUP#eng\" },\n//     rangeCondition: { operator: \"begins_with\", key: \"SK\", value: \"USER#\" },\n//     limit: 10,\n//   }]\n// }\n```\n\nFor the complete shape of the plan (such as the `rangeCondition` separation on a GSI partial match), see\n[`docs/spec.md`](./docs/spec.md).\n\n## 🧪 Testing (strongly recommended)\n\nThe **in-memory executor** in `graphddb/testing` lets you fully unit-test planner / relation traversal /\ntransaction / CDC with **no Docker and no DynamoDB Local**. Because it never touches a real DynamoDB and\nruns in-process, you can verify model-mapping, query-plans, relation resolution, and differential\naggregation while keeping CI fast and deterministic. See [`docs/testing.md`](./docs/testing.md).\n\n## 🔗 Relation Traversal\n\nA relation is a query bound to the value of the parent entity. Declare it with `@hasMany` / `@belongsTo` /\n`@hasOne` and traverse it by nesting inside `select`. Independent relation subqueries are dispatched in\nparallel, and N `belongsTo` resolutions are aggregated into a single `BatchGetItem` (no N+1):\n\n```ts\nconst alice = await User.query(\n  { email: 'alice@example.com' },\n  {\n    name: true,\n    groups: {\n      select: {\n        role: true,\n        group: { select: { name: true } },   // membership -> Group (belongsTo, BatchGet)\n      },\n      limit: 20,\n    },\n  },\n  { maxDepth: 2 },   // traversal defaults to depth=1. Deeper traversal must be explicitly allowed.\n);\n```\n\n`hasMany` / `list` require a default / max limit. For the complete relation model, see\n[`docs/spec.md`](./docs/spec.md).\n\n## 🧩 Maintained Access Paths\n\nDeclaring a relation or scalar as a **maintained access path** keeps a *separate* row in sync with the\nlifecycle of the source entity (all of it composed into the same atomic transaction as the source write):\n\n- **embedded snapshot** —— `pattern: 'embeddedSnapshot'` on `@hasMany` / `@hasOne` keeps a projected\n  snapshot / bounded collection synchronized onto the owner row.\n- **aggregate counter** —— `@aggregate` + `count()` keeps a scalar aggregate synchronized with an atomic `ADD ±1`.\n- **materialized view / sparse view** —— `@model({ kind })` + `@maintainedFrom` declare a view as its own\n  model (later phases).\n- **versioned history** —— maintenance of versioned history rows.\n\nSynchronized maintenance (`updateMode: 'mutation'`) works in both TS and Python (conformance-verified). For\nhow to declare them, the pattern mapping table, and per-phase coverage, see\n[`docs/design-patterns.md`](./docs/design-patterns.md). Examples:\n[embedded-snapshot-pattern](./examples/embedded-snapshot-pattern/) /\n[aggregate-counter](./examples/aggregate-counter/).\n\n## ⚙️ Runtime\n\nThe runtime's responsibilities are short. For details, see [`docs/spec.md`](./docs/spec.md):\n\n- **access pattern resolution** —— pick the PK / GSI from the fields you give.\n- **projection** —— compile `select` into a `ProjectionExpression`.\n- **relation traversal** —— dispatch bound queries in parallel (N+1-safe BatchGet).\n- **retry / throttling** —— retry throttle / transient errors with full-jitter exponential backoff, no\n  configuration required (set the client to `maxAttempts: 1`, since the library owns retries).\n- **hydration** —— reconstruct raw items into typed partial entities.\n\n## 🛠 More Capabilities\n\nEach capability is summarized here only. For details, operator lists, and procedures, see each doc:\n\n- **Filtering** —— a declarative, type-safe server-side `filter` (compatible with `FilterExpression` /\n  AppSync `ModelFilterInput`). `Model.col` + the `cond` raw escape hatch are shared by read filters / write\n  `condition`s. For the operator list, see [`docs/spec.md`](./docs/spec.md).\n- **Middleware / Hooks** —— `graphddb.config.use` for host-side hooks on reads / writes (logging, metrics, tenant /\n  authorization scoping). Host-only and non-serialized. For hook points, see [`docs/middleware.md`](./docs/middleware.md).\n- **Class hydration** —— `options.hydrate` loads read results into host-language domain objects (opt-in,\n  Phase 1: `query` top level). [`docs/class-hydration.md`](./docs/class-hydration.md).\n- **Multi-language bridge** —— TS is the SSoT for the models; a behavior compiles to a module for each of\n  the 5 languages, and each runtime hosts that language's leaf transports.\n  [`docs/python-bridge.md`](./docs/python-bridge.md).\n- **Prepared statements** —— `graphddb.prepare($ => ({...}))` → `.execute(params)` (unified read/write).\n  \"Contract-free precompilation\": compile a declarative route once and execute it repeatedly with\n  different params. With the **true build-time compilation (AOT)** of `graphddb transform prepared\n  --aot`, plans are emitted as static artifacts and zero runtime compilation happens, including the\n  first call (a stale plan is loud-rejected at load; drift is caught in CI). Without the transform,\n  behavior stays identical through the lazy-slot + structural-memoization fallback. no-runtime-capture\n  is loudly enforced by a build-time lint + a runtime guard.\n  [`docs/prepared-statements.md`](./docs/prepared-statements.md).\n- **CQRS contracts** —— public Query/Command contracts (cardinality matrix, N+1 safety, context boundaries,\n  composition across contracts). [`docs/cqrs-contract.md`](./docs/cqrs-contract.md) /\n  [`docs/mutation-command-derivation.md`](./docs/mutation-command-derivation.md).\n- **CDC emulator** —— change events equivalent to DynamoDB Streams, to drive and test differential\n  aggregation. [`docs/cdc-emulator.md`](./docs/cdc-emulator.md).\n- **CDC projection** —— a typed-consumer-IF that parses the CDC change events of a `@cdcProjected()`\n  source model into typed records. `Model.fromChange(event)` returns `[old, new]`, and\n  `graphddb.subscribe(handlers)` (the sibling of `query` / `mutate`) produces a `ChangeHandler` the\n  consumer mounts on its own stream. graphddb owns parse→typed record only; subscription, sink\n  delivery, and idempotency are the consumer's. [`docs/cdc-projection.md`](./docs/cdc-projection.md).\n- **Multi-language execution** —— an operation is a **behavior**: the consumer authors it as a\n  `@behavior` method over graphddb's `@leaf` catalog in ordinary TypeScript, and `bc generate` reads\n  that source statically — never executing it — and emits the module each language runs. graphddb\n  supplies only the leaf transports the module binds: one declared port set → one physical DynamoDB\n  request. The module takes one of two shapes. **Python / PHP / TypeScript** carry the IR in the\n  module as a native literal and execute it with the shared `run_behavior`. **Go / Rust** get\n  **typed-native** code — direct field access on concrete structs, a local error type, **no\n  `run_behavior`, zero bc-runtime import**; because it has the same shape a careful engineer\n  hand-writes against the SDK (build key → call → unmarshal into a struct → fan out), it runs at\n  **SDK-floor parity** with the hand-written SDK baseline. TypeScript can also emit straight-line\n  native code. Runtime-freeness is guaranteed by behavior-contracts at generation time: a shape it\n  cannot cover natively fails closed, never silently boxed. Generated Rust modules use\n  `std::sync::LazyLock`, so **Rust >= 1.80** is required. Measured results:\n  [`benchmark/crosslang/CROSS-LANG.md`](./benchmark/crosslang/CROSS-LANG.md).\n- **CloudFormation generation** —— `graphddb generate cloudformation` emits a CloudFormation template for\n  the DynamoDB table(s) a model set maps onto (GSI union / Streams / TTL / PITR / PROVISIONED / Auto\n  Scaling). [`docs/cloudformation.md`](./docs/cloudformation.md).\n- **Docs generation** —— `graphddb generate docs` renders a human-facing model specification (Table\n  Overview / ER diagram / Key Schema / Property Matrix / Entity Details / Access Patterns / Mutation\n  Contracts / Maintained Access Paths / CDC / CloudFormation) as Markdown + Mermaid. The layout is\n  defined by bundled Handlebars templates that users can customize with `--template-dir` (per-partial\n  override) and `--helpers` (extra helpers). [`docs/docs-generation.md`](./docs/docs-generation.md).\n\n## 📚 Documentation\n\n**The full documentation is bundled in the npm package** (under `docs/`). After installation you can browse\nevery doc at `node_modules/graphddb/docs/`, and if you add it as a `devDependency` you have all the\ndocumentation available offline at hand. On GitHub, follow the links in the table below.\n\n| Document | Description |\n|----------|-------------|\n| [Specification](./docs/spec.md) | Core API: entities, structured keys/GSIs, query/filter, relations, batch/transaction, design rules, runtime behavior. |\n| [Design patterns](./docs/design-patterns.md) | Mapping representative DynamoDB design patterns onto graphddb features (how to declare `pattern` / `@model({ kind })` + `@maintainedFrom` / `@aggregate`, read & write maintenance, per-phase coverage). |\n| [Middleware / Hooks](./docs/middleware.md) | The `graphddb.config.use` host-side middleware: hook points read R1–R5 / write W1–W5, `{ context }`, ordering. |\n| [Prepared statements](./docs/prepared-statements.md) | `graphddb.prepare` / `.execute` (unified read/write prepared statements), the no-runtime-capture constraint, `graphddb transform prepared` (AOT static plans / compile-time hoisting + build-time lint + drift detection): choosing between the 3 tiers AOT > lazy slot + structural memoization > ad-hoc. |\n| [CQRS contract layer](./docs/cqrs-contract.md) | Public Query/Command contracts, cardinality matrix, N+1 safety, composition across contracts, context boundaries. |\n| [Mutation → command derivation](./docs/mutation-command-derivation.md) | The internal write-plan composition DSL behind the Command IF (`entityWrites`, fragment composition, derivation of atomic `TransactWriteItems`). |\n| [Class hydration](./docs/class-hydration.md) | Opt-in `options.hydrate` that loads read results into host objects (Phase 1: `query` top level). |\n| [Multi-language bridge](./docs/python-bridge.md) | TS as the SSoT for the models, and the Python / Rust / Go / PHP runtimes that host the leaf transports a behavior module binds. |\n| [In-memory test adapter](./docs/testing.md) | Docker-free in-process testing with `graphddb/testing` and `MemoryInspector`. |\n| [CDC emulator](./docs/cdc-emulator.md) | A change-event emulator for differential aggregation patterns (dev/test). |\n| [CDC projection](./docs/cdc-projection.md) | The `@cdcProjected()` + `fromChange` / `subscribe` typed-consumer-IF: a contract that parses CDC change events into typed records. Boundary (parse→typed is graphddb; subscription, sink delivery, idempotency are the consumer's). |\n| [CloudFormation generation](./docs/cloudformation.md) | The `generate cloudformation` command: emit a CloudFormation template for the DynamoDB table(s) a model set maps onto (GSI union / Streams / TTL / PITR / TableClass / SSE / PROVISIONED / Auto Scaling). All options, derivation rules, and scope boundary. |\n| [Docs generation](./docs/docs-generation.md) | The `generate docs` command: generate a model specification (Markdown + Mermaid) from the TS models. All options, output sections, and customizing the Handlebars templates with `--template-dir` / `--helpers`. |\n| [Benchmark](./benchmark/RESULTS.md) | Library comparison against hand-written AWS SDK, ElectroDB, DynamoDB Toolbox, and OneTable. |\n\n## 💡 Examples\n\n| Example | Description |\n|---------|-------------|\n| [user-permissions](./examples/user-permissions/) | Manages users, groups, and permissions with Single Table Design. Includes adjacency lists, inverted indexes, relation traversal, and `explain`. |\n| [aggregate-tree-pattern](./examples/aggregate-tree-pattern/) | Differential tree aggregation (`siteScoreAverage`) driven by the CDC emulator: dirty propagation, throttled sweeps, recomputation. |\n| [embedded-snapshot-pattern](./examples/embedded-snapshot-pattern/) | Treating a relation as a maintained access path: `pattern: 'embeddedSnapshot'` keeps a denormalized collection / snapshot synchronized onto the owner row in the same atomic transaction as the source write. |\n| [aggregate-counter](./examples/aggregate-counter/) | The `@aggregate` counter from RFC §5.2: the `ThreadPost.created` / `removed` lifecycle keeps `ThreadCounter.postCount` synchronized via an atomic `ADD ±1` within the same `TransactWriteItems` as the source write. |\n\n## 🏛 Architecture\n\nA query travels from the TS Model through the Planner / Runtime to DynamoDB:\n\n![Query execution pipeline: TS Model → Planner → Runtime → DynamoDB](./docs/diagrams/query-pipeline.en.svg)\n\nFrom the same TS Model (the SSoT), multiple targets are derived. A behavior's execution module is\nemitted for all 5 languages by behavior-contracts' static compilation (in Python and PHP the emitted\nmodule calls graphddb's leaf transports; Go and Rust are native codegen), and the model layer feeds\nthe CQRS contracts, the CloudFormation template, and the documentation:\n\n![SSoT derivation: TS Model → TS runtime / CQRS / CloudFormation / docs, with the behavior module feeding the 4 language runtimes](./docs/diagrams/ssot-derivation.en.svg)\n\n| Runtime | Package | Distribution |\n|---------|---------|--------------|\n| TypeScript | `graphddb` | npm |\n| Python | `graphddb-runtime` | PyPI |\n| Rust | `graphddb_runtime` | crates.io |\n| Go | `github.com/foo-log-inc/graphddb/go` | go module (`go/vX.Y.Z` tags) |\n| PHP | `graphddb/runtime` | bundled in-repo (not on composer) |\n\nA behavior reaches DynamoDB the same way in every language — the module's shape is what differs\n(see \"Multi-language execution\" under [More Capabilities](#-more-capabilities)):\n\n![How a behavior executes: authoring → bc generate → the generated module → embedded IR (Python/PHP) / typed-native (Go/Rust) / in-process (TypeScript)](./docs/diagrams/execution-paths.en.svg)\n\n> The figures are self-contained SVGs drawn with diagram-contracts (Draw TSX).\n> Sources live in [`diagrams/`](./diagrams/); regenerate with `diagrams/build.sh`.\n\n## 📄 License\n\nMIT\n","readmeFilename":"README.md"}