{"_id":"@alma-harness/testing","_rev":"11-0a52459254d86e6b2dadb7feef0801e2","name":"@alma-harness/testing","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.0":{"name":"@alma-harness/testing","version":"0.1.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.1.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"c3b09daf16eedc01e1e8905a4dc39ca4b7b25600","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.1.0.tgz","fileCount":6,"integrity":"sha512-NYZSzr6cSIl+cMReVQ3zSHjfTpelRzI89AiQpDZDr1TMroOKBpafNNqd4SaMdI6fQZ9xFnSIgaNAoGAgpkYfVA==","signatures":[{"sig":"MEUCIAyHL5BRRlG4W+Pfbbs4RKJsWfLPMco0D3tV+7yHjdtcAiEAzKHzeUy59JAybwwQcSqE/JdYBflV1eNfQdcJx+NuGQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253307},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/bf2ffdf40f53731d113df57c75afb1e0/alma-harness-testing-0.1.0.tgz","_integrity":"sha512-NYZSzr6cSIl+cMReVQ3zSHjfTpelRzI89AiQpDZDr1TMroOKBpafNNqd4SaMdI6fQZ9xFnSIgaNAoGAgpkYfVA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.1.0","@alma-harness/memory":"^0.1.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.1.0","@alma-harness/memory":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.1.0_1788211400108_0.45536605518409723","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alma-harness/testing","version":"0.2.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.2.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"fda1da194195e82f2c972a8429d4da70c593f31a","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.2.0.tgz","fileCount":6,"integrity":"sha512-kk+dAfigya3nPzWrYix9Qj5lOz9vXel9btQCqj99YiRQsHGJE3Hj3bwSHhCkNavHA5kMImVsRU1o74Nm9vVkgQ==","signatures":[{"sig":"MEYCIQCBq/h2B3sfq01Y+LVXSfJHwJ8Sx9lWqLdPCREyKVhgIQIhAIRrFHtd4DOXMmeCapy/N1qFNOP4HOsvx1i2Zwv9eUyR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278597},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/c6ef5d512bb07b839b0e3646202cd38a/alma-harness-testing-0.2.0.tgz","_integrity":"sha512-kk+dAfigya3nPzWrYix9Qj5lOz9vXel9btQCqj99YiRQsHGJE3Hj3bwSHhCkNavHA5kMImVsRU1o74Nm9vVkgQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.2.0","@alma-harness/memory":"^0.2.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.2.0","@alma-harness/memory":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.2.0_1788446554442_0.7357252225432886","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alma-harness/testing","version":"0.3.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.3.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"1a3465a47be10ee9ad43cff150d15e6c3a1fd946","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.3.0.tgz","fileCount":6,"integrity":"sha512-58ZBKpGPY/RPYKwTRioEOV8LDslDzEFBuiPNwjkxKSoqJzLywmCeyRuzSz/UUtXP0vGMO1W1gNslY7MRxCKQQA==","signatures":[{"sig":"MEUCIQCuaTH4cW56KpYgYrOgWDcGNoEtyZxVaCacC4TguZ8IgwIgfoF8RDT4EB+LY1O5yqgr5GDVMQCwtdu0B5ZKPoaHPFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293971},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/160c11186933037add2472fc4ea709b9/alma-harness-testing-0.3.0.tgz","_integrity":"sha512-58ZBKpGPY/RPYKwTRioEOV8LDslDzEFBuiPNwjkxKSoqJzLywmCeyRuzSz/UUtXP0vGMO1W1gNslY7MRxCKQQA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.3.0","@alma-harness/memory":"^0.3.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.3.0","@alma-harness/memory":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.3.0_1788455646080_0.3882460275236197","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alma-harness/testing","version":"0.4.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.4.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"bb534549c498ffdccb204b9b443fdc80cdf10d03","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.4.0.tgz","fileCount":6,"integrity":"sha512-sIrc94rPgoi504uAsuxf6WIkB+/rdJvrw9YhaW9yIZzutCNweKNjSemqEBQCobQAbd39R3rbP6GGhqAow9wzIg==","signatures":[{"sig":"MEYCIQCOUhCtOot1toRaBDCRC+p7iOQZ/vWMv6rchGAJDstHyQIhANTrcO4tf9rVY/CK6WUGSLuJlS1SbAUHGnjUuZgHVj6/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293971},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/a7e98d46023e10adee9c0cb76547703e/alma-harness-testing-0.4.0.tgz","_integrity":"sha512-sIrc94rPgoi504uAsuxf6WIkB+/rdJvrw9YhaW9yIZzutCNweKNjSemqEBQCobQAbd39R3rbP6GGhqAow9wzIg==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.4.0","@alma-harness/memory":"^0.4.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.4.0","@alma-harness/memory":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.4.0_1788462111740_0.36424486353630314","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alma-harness/testing","version":"0.5.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.5.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"8f24c765347bdbb7c5bb4746dc5736941d51c395","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.5.0.tgz","fileCount":6,"integrity":"sha512-ynlTe/qkgJ0DAP0tTPDPWs/MF5kXC8CvualGrIbk4MmAcAeyeG4DsVwD1lzyouuk+zgtpwMFy+cdEublRkdeEw==","signatures":[{"sig":"MEYCIQDfLS38eMblBJfPhuNdiOltmMP/5///mXjcR6HaZC+yAAIhAMfdubcVHMmFFHOthEunpEljfikx2Noujk93EdIxDDHf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293971},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/42edb5d3c023a3fc1f0d82484dbf59c9/alma-harness-testing-0.5.0.tgz","_integrity":"sha512-ynlTe/qkgJ0DAP0tTPDPWs/MF5kXC8CvualGrIbk4MmAcAeyeG4DsVwD1lzyouuk+zgtpwMFy+cdEublRkdeEw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.5.0","@alma-harness/memory":"^0.5.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.5.0","@alma-harness/memory":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.5.0_1788472353369_0.2492110925681823","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alma-harness/testing","version":"0.6.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.6.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"aea25c2984c12908355b73dee7dcbc5653d4657b","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.6.0.tgz","fileCount":6,"integrity":"sha512-cmoHSJoMp/jKad8KRqNI7/MA95MsuE/7dhT9eMqFXgEQDR8a60ufAwNwHMt9ZHSIZH1HzLlc1PkHOYLpMz7uEQ==","signatures":[{"sig":"MEYCIQC7ejKl5r5L8zCoivZiaJdKNzY6S8wcbipbLlP6STLzLAIhAP7e4VS1wv/0M961lyw+JHD8so7M1sch5slXA79JKlKv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516170},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/afb1442f315cf61776151bec8f288dcf/alma-harness-testing-0.6.0.tgz","_integrity":"sha512-cmoHSJoMp/jKad8KRqNI7/MA95MsuE/7dhT9eMqFXgEQDR8a60ufAwNwHMt9ZHSIZH1HzLlc1PkHOYLpMz7uEQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.6.0","@alma-harness/memory":"^0.6.0","@alma-harness/execution":"^0.6.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.6.0","@alma-harness/memory":"^0.6.0","@alma-harness/execution":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.6.0_1788902328941_0.18525411842016148","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alma-harness/testing","version":"0.6.1","license":"Apache-2.0","_id":"@alma-harness/testing@0.6.1","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"078a33a2182f2c8751029be2ba11246450bacd44","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.6.1.tgz","fileCount":6,"integrity":"sha512-yMwEtTk6THsy4/QhL2wv3EiM/2dflHmNUiil2QHRhsnxLvbncJvDfQvewjSZQCgia4g/FZ8lYKjg8dS+MSc2uQ==","signatures":[{"sig":"MEUCIQDapAAkR4yEba1Pwyph1Tuve9m02tDb2SSPCPPzh7JmrQIgZs93OoK9WBd5B/mugUmNIwX9hMCi/541hC5eyINw3Qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":516170},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.6.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/4435357bcd5d67bb28c19ac0b71b827e/alma-harness-testing-0.6.1.tgz","_integrity":"sha512-yMwEtTk6THsy4/QhL2wv3EiM/2dflHmNUiil2QHRhsnxLvbncJvDfQvewjSZQCgia4g/FZ8lYKjg8dS+MSc2uQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.6.1","@alma-harness/memory":"^0.6.1","@alma-harness/execution":"^0.6.1"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.6.1","@alma-harness/memory":"^0.6.1","@alma-harness/execution":"^0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.6.1_1788905833640_0.33408618187870687","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alma-harness/testing","version":"0.7.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.7.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"4c119eee56de158c728d878043bdfe73bbf648a8","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.7.0.tgz","fileCount":6,"integrity":"sha512-tuwy4bPMmLfyuHucQ7SM0tXH1nKa8/CeYbqaPniH9/HS5vhI0XeNqED8TJqaHwNryteoAdIesgk6vPOqGtUMwA==","signatures":[{"sig":"MEYCIQD9JMawx2Zc8W0nr/5IwrZaZgFmLXOdUf2ntwXT+oj0BQIhANxIyaB34X+qlLGF3yL0zinCoa+pKwryyu3rH/6GPwbs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":479267},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/815f3789a65f234af5b4026e3c280fab/alma-harness-testing-0.7.0.tgz","_integrity":"sha512-tuwy4bPMmLfyuHucQ7SM0tXH1nKa8/CeYbqaPniH9/HS5vhI0XeNqED8TJqaHwNryteoAdIesgk6vPOqGtUMwA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.7.0","@alma-harness/memory":"^0.7.0","@alma-harness/execution":"^0.7.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.7.0","@alma-harness/memory":"^0.7.0","@alma-harness/execution":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.7.0_1789137038407_0.05886056872907042","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@alma-harness/testing","version":"0.8.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.8.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"c9d44578b44b99861322ba781034a1fa817dbd15","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.8.0.tgz","fileCount":6,"integrity":"sha512-GF1fPB5ysPLAWs6JgcVqCRR5vuv9W5jd8FTOcIXmR2FZlPh9z1d3w1XKqt97r5Y525Wa0zWLW51f1TZ+hC+qyw==","signatures":[{"sig":"MEQCIAzc7ErdNmGuvQ5e/81LY/UDORkSPnO//4U9vG1XMoVrAiBkKxBx5/n4sc9CDI0ftkuv9H9UyGTrh5zYJRWZAyQldA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":479267},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/520d2a6bbf6fef23c37767f207bc1f6a/alma-harness-testing-0.8.0.tgz","_integrity":"sha512-GF1fPB5ysPLAWs6JgcVqCRR5vuv9W5jd8FTOcIXmR2FZlPh9z1d3w1XKqt97r5Y525Wa0zWLW51f1TZ+hC+qyw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.8.0","@alma-harness/memory":"^0.8.0","@alma-harness/execution":"^0.8.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.8.0","@alma-harness/memory":"^0.8.0","@alma-harness/execution":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.8.0_1789155225421_0.30379268641644974","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@alma-harness/testing","version":"0.9.0","license":"Apache-2.0","_id":"@alma-harness/testing@0.9.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"642428c3460b955512f0881545c51265e11df7a1","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.9.0.tgz","fileCount":6,"integrity":"sha512-edii+FKM/w6rvu0easzpJhLDJaY1XaNimnqEpuCL7yiZ3g3Oy9LYyYkkYbsBuIupMgBw/JUss9Tp9QCYbZqJsQ==","signatures":[{"sig":"MEYCIQDYP7ZYZojhfOifZpdDuI6BxwW8O49mJKOntjrB7egpgwIhAIZ1MEJnQSPTIyCmKQmyP4nJnTrp5h8fOLEUJCNZ7NnF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":479267},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-testing-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/6984cca606840c43b1b28097bb2942fb/alma-harness-testing-0.9.0.tgz","_integrity":"sha512-edii+FKM/w6rvu0easzpJhLDJaY1XaNimnqEpuCL7yiZ3g3Oy9LYyYkkYbsBuIupMgBw/JUss9Tp9QCYbZqJsQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.9.0","@alma-harness/memory":"^0.9.0","@alma-harness/execution":"^0.9.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.9.0","@alma-harness/memory":"^0.9.0","@alma-harness/execution":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/testing_0.9.0_1789655798280_0.5863891738971967","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"_id":"@alma-harness/testing@0.10.0","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"f61bfaeeb37f32bbc240e56b63b1206a66870840","tarball":"https://registry.npmjs.org/@alma-harness/testing/-/testing-0.10.0.tgz","fileCount":6,"integrity":"sha512-FUZWKKMs6o3x4JHiB5fbqINmRJbTxnNX+eaq+YNIxpJXOOg9ZK0Cj5UnkNRq04Idw04RDKNE+HlquqPB0yGFew==","signatures":[{"sig":"MEYCIQDtCm3rSLmQDwyaqC1NtLlh2aaSP46g1Q3ype5Fuak3ogIhAPTvocZMXrJKmqkD5oxQR6BUDd3MMgb370kU2+c4sezx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD47N+LvS6mcVqeGqAawJZVeJ0T2SH2SnVXJ8PoBnclbQIgJ+Ki66Er7jArs8GuNKNFSpNKFqzCkqLwp8KwX74T5/k="}],"unpackedSize":495258},"main":"./dist/index.js","name":"@alma-harness/testing","type":"module","_from":"file:alma-harness-testing-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.10.0","_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/1ffc5f833648e929d2167e1198083f86/alma-harness-testing-0.10.0.tgz","_integrity":"sha512-FUZWKKMs6o3x4JHiB5fbqINmRJbTxnNX+eaq+YNIxpJXOOg9ZK0Cj5UnkNRq04Idw04RDKNE+HlquqPB0yGFew==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"_npmVersion":"11.18.0","description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","directories":{},"maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/core":"^0.10.0","@alma-harness/memory":"^0.10.0","@alma-harness/execution":"^0.10.0"},"peerDependencies":{"vitest":">=3","@alma-harness/core":"^0.10.0","@alma-harness/memory":"^0.10.0","@alma-harness/execution":"^0.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/testing_0.10.0_1789675278068_0.38842541978555123"}}},"time":{"created":"2026-08-31T21:23:19.968Z","modified":"2026-09-17T20:01:18.377Z","0.1.0":"2026-08-31T21:23:20.435Z","0.2.0":"2026-09-03T14:42:34.584Z","0.3.0":"2026-09-03T17:14:06.237Z","0.4.0":"2026-09-03T19:01:51.859Z","0.5.0":"2026-09-03T21:52:33.502Z","0.6.0":"2026-09-08T21:18:49.148Z","0.6.1":"2026-09-08T22:17:13.839Z","0.7.0":"2026-09-11T14:30:38.569Z","0.8.0":"2026-09-11T19:33:45.559Z","0.9.0":"2026-09-17T14:36:38.423Z","0.10.0":"2026-09-17T20:01:18.188Z"},"bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"license":"Apache-2.0","homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/testing"},"description":"Alma's shared storage contract suites: what correct means for every SessionStore, EpisodeStore, ProfileStore, and MemoryErasure adapter, on any backend.","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"readme":"# @alma-harness/testing\n\nThe shared storage contract suites of [Alma](https://github.com/FabioFernandesCarneiro/alma)\n— what \"correct\" means for every storage adapter, on any backend.\n\n> **Status: pre-1.0.** The API is still moving; see the\n> [roadmap](../../docs/architecture.md#12-adoption-roadmap) for where it stands.\n\n## What it owns\n\n- `describeSessionStoreContract` — the `SessionStore` contract.\n- `describeEpisodeStoreContract`, `describeProfileStoreContract` — the memory\n  storage contracts: deterministic ids, three states never conflated, the\n  three-case confidence rule, identity never extracted, a budget on every read.\n- `describeMemoryErasureContract` — the LGPD/GDPR story as a test: content\n  gone, derived data invalidated, every declared copy surface reached. The\n  fixture's `watermarks` and `accessEvents` are required: six cases used to\n  return silently without them, green on an in-flight guard and a trail the\n  adapter never proved (spec: erasure-reaches-the-claims).\n- `describeSpendStoreContract` — the `SpendStore` contract (spec: spend-store):\n  atomic increment-and-return, UTC day bucketing, org-wide day aggregation,\n  no lost increments under concurrency.\n- `describeRoutineStoreContract` — the `RoutineStore` contract (spec:\n  clock-tick): a routine round-trips with its registration stamp, the stamp\n  survives re-registration, cancel removes, `list` sees every scope.\n- `describeRoutineRunStoreContract` — the `RoutineRunStore` contract (spec:\n  postgres-routine-runs, routine-claims-and-memory-json): atomic claims have\n  one winner, collection transitions only from submitted, terminal records\n  survive retries; a run round-trips whole, upserts by key, lists\n  newest first with an inclusive `since` that compares instants, and is\n  isolated by routine, uid and org.\n- The proof tests that run each suite against the reference implementations\n  (`@alma-harness/core/testing` for sessions, `@alma-harness/memory/testing`\n  for memory) — which is what proves the contracts are satisfiable at all.\n\nBackend neutrality is enforced by running one suite against every backend —\nthe reason `pnpm check:all` refuses to pass with no `DATABASE_URL` rather than\nletting these suites skip themselves (spec 031). From an adapter's test file:\n\n```ts\nimport { describeEpisodeStoreContract } from \"@alma-harness/testing\";\n\ndescribeEpisodeStoreContract(\"MyEpisodeStore\", { create: () => new MyEpisodeStore() });\n```\n\nRequires vitest (peer dependency): a contract suite IS a set of tests.\n\n## What it must never do\n\n- Weaken a suite for one backend's convenience — a backend idiom that cannot\n  pass the shared contract is a bug in the adapter, not in the contract.\n- Grow assertions an adapter can satisfy by convention only: every normative\n  rule of the memory charter is pinned here, or it is not a rule.\n- Ship in a runtime dependency graph. This package is a devDependency of\n  adapters, never a dependency of products.\n\nThe routine-run contract also verifies warning metadata through claims, updates\nand scoped reads, defensive array copies, and empty-array normalization.\n\n`describeCostSettlementStoreContract` verifies idempotent receipts, concurrent\nconflicts, original totals, complete normalized usage, scoped bounded reads,\nconsumer acknowledgements and late projection work on memory and Postgres.\n`settlementFixture` provides synthetic known priced usage for adapter suites.\nThe Postgres suite additionally verifies real rollback, lost commit acknowledgement,\nlegacy upgrade, retention and a limited login. No provider is called.\n\n## Durable execution journal\n\n`describeExecutionStoreContract(name, factory)` proves claim uniqueness, scoped\nidentity binding, the transition matrix, evidence/pricing preservation, bounded\nreconciliation/listing and exclusive recovery. `executionFixture` creates closed\nmetadata without prompts or responses. The same real-clock suite runs on memory\nand PostgreSQL; lease/deadline observations use bounded polling. PostgreSQL adds\nactual limited-login RLS, lock waits, lost commit acknowledgements, raw SQL shape\nchecks and erasure/retention compatibility tests.\n\n## Documentation\n\n[Docs index](../../docs/README.md) · [Architecture](../../docs/architecture.md)\n· [Invariants](../../docs/invariants.md)\n\nApache-2.0\n\n`describeExecutionResultStoreContract` runs the same reservation, immutable binding,\nclosed-envelope, caller ownership, concurrency, scope/session isolation, erasure,\nexpiry and narrowed-policy contract against memory and PostgreSQL. Its factory\nsupplies `create(policy)` and `reopen(store, policy)` over the same stored records.\nThe PostgreSQL package additionally exercises real locks, raw payload nulling,\ncommit acknowledgement loss, transaction rollback, SQL shape checks and limited\nlogin RLS. This proves the storage seam; provider dispatch adoption is a later slice.\n\n`describeUsageInboxContract` proves immutable event identity, scoped acknowledgements,\nsnapshot ownership, evidence preservation and both bounded history/pending readers.\n`usageInboxFixture` supplies synthetic metadata. The same suite runs on execution's\nmemory reference and real PostgreSQL; PG adds fault, migration, erasure and RLS tests.\n\n`describeGovernedCostSettlementStoreContract` tests atomic financial decisions,\nmode/operation/call conflicts and governed projections. Its factory is\n`GovernedCostSettlementStoreFactory`; `governedSettlementFixture` is synthetic.\nThe new memory reference also runs the ordinary cost-settlement contract. Testing\nnow peers on execution for these public types. Real PostgreSQL adds write faults,\nlost acknowledgements, limited-role RLS and retention/migration compatibility.\n\n`describeGovernedExecutionContract` supplements the legacy journal suite with\npolicy binding, settled/completed replay, fenced recovery and closed proof checks.\n`describeGovernedInboxContract` pins governed input snapshots. Use\n`governedExecutionFixture` and `executionProof` for deterministic journal tests;\nthe latter uses the volatile governed financial reference, not production billing.\n\nThe result expiry sweep contract waits for the latest persisted expiry before\nchecking bounded removal counts. A controlled-clock reference invocation pins\nstaggered preparation times; adapter invocations retain real clocks.\n\nThe retired TurnStore suite is inventoried in [the retirement ledger](../../docs/turn-store-retirement-ledger.md). Canonical operation admission replaces TTL takeover; historical SQL erasure/retention proofs remain in postgres tests.\n","readmeFilename":"README.md"}