{"_id":"@aws/durable-execution-sdk-js-testing","_rev":"8-9357475713372d9054a55150a156b81f","name":"@aws/durable-execution-sdk-js-testing","dist-tags":{"latest":"1.1.4"},"versions":{"0.0.0":{"name":"@aws/durable-execution-sdk-js-testing","version":"0.0.0","_id":"@aws/durable-execution-sdk-js-testing@0.0.0","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"dist":{"shasum":"7d0d8a4d3ac230dac6ef9b1c987a08fbff99ea5f","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-0.0.0.tgz","fileCount":1,"integrity":"sha512-jpI4rV7SM3Rc5cjXJQHGVc3T1qLAzH1aZM2FulcNgUQI1V+BOrNggjhjZhdExx3grJlaLYExX876fzS10BexIA==","signatures":[{"sig":"MEYCIQCxvEkLvfZ6mr7YTssqzQ83dv3QPk0fffPa0gvio5CWyAIhAN6VgMu5y6MRwTM5GyM1hGtjPsz+oHFbAYA67mA8QMZ5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154},"gitHead":"82413270b996b0b7179acde80ed7b8a8977e9ec9","scripts":{"test":"echo \"Error: no test specified\" && exit 0"},"_npmUser":{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"},"_npmVersion":"10.9.4","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_0.0.0_1764030194869_0.8276981659690179","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@aws/durable-execution-sdk-js-testing","version":"0.0.1","_id":"@aws/durable-execution-sdk-js-testing@0.0.1","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"dist":{"shasum":"a4de343139f19a510ed92d3aaf08c671b80182c8","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-0.0.1.tgz","fileCount":1,"integrity":"sha512-GMsL2lP+vPbTd1grgkMgt1/uaJmJRaAm6qvErJuSHlyaX99aYFksrKMBXcE5L3Zj7Ym/Sv44e6QzFEit2Qocwg==","signatures":[{"sig":"MEQCIBoEiP7hXOHImaOmBvJxZSDYgyRtpImJZlzdksVzkwfnAiAxl5L2Fw18TGg6D1UrEQHa+sGQWa02VIOjvapAlS4QbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154},"gitHead":"093f3788d163d3280aabd02f12e430ec84930313","scripts":{"test":"echo \"Error: no test specified\" && exit 0"},"_npmUser":{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"},"_npmVersion":"10.9.4","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_0.0.1_1764261741032_0.6053428876428344","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aws/durable-execution-sdk-js-testing","version":"1.0.0","license":"Apache-2.0","_id":"@aws/durable-execution-sdk-js-testing@1.0.0","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","bin":{"run-durable":"dist/cli/run-durable.js"},"dist":{"shasum":"6fe7ed5441bc2a626a1315b981db317f60e38f05","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.0.0.tgz","fileCount":181,"integrity":"sha512-TbGbLi/+fSolwQ5gHgJbdYCxPs3y8vLmYo4o4Z48kiYyFCzNQU68GCX65yjp7AB8OU5n8Rt6X2yvR5/wHy96dw==","signatures":[{"sig":"MEUCIQDuwvZRmZ2OazUuudFX5OCiJ347JiQCvqyCgoBN2oTifAIgIGZrafx8eJztb7QaSfCwpLLUUCRwmBfBMS7Fj4efFBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072535},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"gitHead":"bafbe2ac89f9ccd662f46df0c2ba4b37051cd2e0","private":false,"scripts":{"lint":"eslint --fix","test":"jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","prebuild":"npm run lint","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:types":"tsc --project tsconfig.build.json --outDir dist-types","run-durable":"tsx src/cli/run-durable.ts","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"},"repository":{"url":"ssh:github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","type":"git"},"_npmVersion":"10.9.4","description":"AWS Durable Execution Testing SDK for TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@sinonjs/fake-timers":"^13.0.5","@smithy/smithy-client":"^4.9.1","@aws-sdk/client-lambda":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.0.3","eslint":"^9.29.0","supertest":"^7.1.1","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/morgan":"^1.9.10","@eslint/compat":"^1.3.0","@types/supertest":"^6.0.3","@types/aws-lambda":"^8.10.150","typescript-eslint":"^8.34.1","eslint-plugin-jest":"^29.0.1","eslint-config-prettier":"^10.1.5","@types/sinonjs__fake-timers":"^15.0.1"},"peerDependencies":{"@aws/durable-execution-sdk-js":"*"},"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_1.0.0_1764685513901_0.08822839407870542","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aws/durable-execution-sdk-js-testing","version":"1.1.0","license":"Apache-2.0","_id":"@aws/durable-execution-sdk-js-testing@1.1.0","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"bin":{"run-durable":"dist/cli/run-durable.mjs"},"dist":{"shasum":"6318cd10130cacc6ac4168d5ffa27a04b799e5bf","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.1.0.tgz","fileCount":195,"integrity":"sha512-AasOkSR5P/LNKf1xsc0//NXDwLeWOiRbFySIxLhsjLbAf3jj3GjFRRgC+CntBZHzuQxM2NRF0v3JS511zz2YtA==","signatures":[{"sig":"MEYCIQDC9DTgfomZvP4Dr4/AIUCh1WPAKRdkULmexAMUDJM8qQIhALD3IHPk+Oa0SftRqAv5uS6NWCk/poGEWu9DDp7hFxL4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1067100},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"gitHead":"f161141c6b5114ac41378343e597e1b93f105479","private":false,"scripts":{"lint":"eslint --fix","test":"tsc --noEmit && jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","prebuild":"npm run lint","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:types":"tsc --project tsconfig.build.json --outDir dist-types","run-durable":"NODE_OPTIONS=\"--import tsx\" npx run-durable --","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"},"repository":{"url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","type":"git","directory":"packages/aws-durable-execution-sdk-js-testing"},"_npmVersion":"10.9.4","description":"AWS Durable Execution Testing SDK for TypeScript","directories":{},"_nodeVersion":"22.21.1","dependencies":{"commander":"^14.0.2","@sinonjs/fake-timers":"^13.0.5","@smithy/smithy-client":"^4.9.1","@aws-sdk/client-lambda":"^3.943.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.0.3","eslint":"^9.29.0","supertest":"^7.1.1","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/morgan":"^1.9.10","api-extractor":"^99.99.99","@eslint/compat":"^1.3.0","@types/supertest":"^6.0.3","@types/aws-lambda":"^8.10.150","typescript-eslint":"^8.34.1","eslint-plugin-jest":"^29.0.1","@rollup/plugin-replace":"^6.0.3","eslint-config-prettier":"^10.1.5","@types/sinonjs__fake-timers":"^15.0.1"},"peerDependencies":{"@aws/durable-execution-sdk-js":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_1.1.0_1765926681061_0.517985703278572","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aws/durable-execution-sdk-js-testing","version":"1.1.1","license":"Apache-2.0","_id":"@aws/durable-execution-sdk-js-testing@1.1.1","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"bin":{"run-durable":"dist/cli/run-durable.mjs"},"dist":{"shasum":"1454cc2c5b3fc844500b47a44c6d77a529502c91","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.1.1.tgz","fileCount":179,"integrity":"sha512-4zjEDKBKmKl2Nu9FFF+RgnmOp2yKuqHegxRfGQXI+sinCQsz6FX3ESlzAFVOWXkt0KgdhoQvwVTWRrXQVFgegA==","signatures":[{"sig":"MEUCIQCbEqzC92AX+ig+k5BUHrAAsXiiG5EVbNy3HZNLecjSkQIgEJ/7jGvYVIFv+YjmooMJQpFzYMp2dl9DBAZ28SICavA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1060776},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"gitHead":"64fc8752cc099dc96b45dbe96de69dd770c0bf50","private":false,"scripts":{"lint":"eslint --fix","test":"tsc --noEmit && jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","prebuild":"npm run lint","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:types":"tsc --project tsconfig.build.json --outDir dist-types","run-durable":"NODE_OPTIONS=\"--import tsx\" npx run-durable --","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"},"repository":{"url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","type":"git","directory":"packages/aws-durable-execution-sdk-js-testing"},"_npmVersion":"10.9.4","description":"AWS Durable Execution Testing SDK for TypeScript","directories":{},"_nodeVersion":"22.22.0","dependencies":{"commander":"^14.0.2","@sinonjs/fake-timers":"^13.0.5","@aws-sdk/client-lambda":"^3.943.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.0.3","eslint":"^9.29.0","@eslint/js":"^9.29.0","typescript":"^5.8.3","@eslint/compat":"^1.3.0","@types/aws-lambda":"^8.10.150","typescript-eslint":"^8.34.1","eslint-plugin-jest":"^29.0.1","@rollup/plugin-replace":"^6.0.3","eslint-config-prettier":"^10.1.5","@types/sinonjs__fake-timers":"^15.0.1"},"peerDependencies":{"@aws/durable-execution-sdk-js":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_1.1.1_1769556664756_0.6934481101282963","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aws/durable-execution-sdk-js-testing","version":"1.1.2","license":"Apache-2.0","_id":"@aws/durable-execution-sdk-js-testing@1.1.2","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"bin":{"run-durable":"dist/cli/run-durable.mjs"},"dist":{"shasum":"e1ea2f39861109e8c3294f56d459e208c91c178d","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.1.2.tgz","fileCount":179,"integrity":"sha512-w0LEysi67Wt+5F5tm6rHLuEI8symVM9o9NuUuTAT60EuC+T1JgpsB9zxwWNyeiRfh0Y0xO10Ex4bxPZuCewIHw==","signatures":[{"sig":"MEQCIFiDqvj5VKWjM2TmrPnBE7Cm2CIGRtQXLGEvcLSh2PlnAiBBOggDuidFfzGPZsjPGfdVM5CiJtweUSJkRTzoeqcNvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fdurable-execution-sdk-js-testing@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1104533},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"gitHead":"68d077017c545e677e7a264979304ba071e61d3f","private":false,"scripts":{"lint":"eslint --fix","test":"tsc --noEmit && jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","prebuild":"npm run lint","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:types":"tsc --project tsconfig.build.json --outDir dist-types","run-durable":"NODE_OPTIONS=\"--import tsx\" npx run-durable --","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf95bff8-2cb3-4288-9a26-57b6e16d1a2e"}},"repository":{"url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","type":"git","directory":"packages/aws-durable-execution-sdk-js-testing"},"_npmVersion":"11.16.0","description":"AWS Durable Execution Testing SDK for TypeScript","directories":{},"_nodeVersion":"24.18.0","dependencies":{"commander":"^14.0.2","@sinonjs/fake-timers":"^13.0.5","@aws-sdk/client-lambda":"^3.1014.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.0.3","eslint":"^9.29.0","semver":"^7.5.4","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/semver":"^7.5.8","@eslint/compat":"^1.4.1","@types/aws-lambda":"^8.10.150","typescript-eslint":"^8.34.1","eslint-plugin-jest":"^29.0.1","@rollup/plugin-replace":"^6.0.3","eslint-config-prettier":"^10.1.5","@types/sinonjs__fake-timers":"^15.0.1"},"peerDependencies":{"@aws/durable-execution-sdk-js":"*"},"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_1.1.2_1783014327186_0.26811698337406464","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aws/durable-execution-sdk-js-testing","version":"1.1.3","license":"Apache-2.0","_id":"@aws/durable-execution-sdk-js-testing@1.1.3","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"bin":{"run-durable":"dist/cli/run-durable.mjs"},"dist":{"shasum":"9b4814ad4679979525e66a866c1e1798239d1509","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.1.3.tgz","fileCount":179,"integrity":"sha512-Wl2LLzDeU0l8CQ2S9NdA2L6MR+aX3uRWczmHaLFrPP8hq9VOgaqt7mN8gKe5+n95EakJo5KsFQjeKwQbfB5BPw==","signatures":[{"sig":"MEUCIBjG4mbxjrKeeBvIfRVRBw7+44N6Hjf9j6kq3Jrr1DtgAiEA4w/1CPKEUDhJKrUVZDJ5yvqZC+H72bntoe+R7NUtRnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fdurable-execution-sdk-js-testing@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1104776},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"gitHead":"78bf9c713bd4ad7334e0d8826326cb540d85914f","private":false,"scripts":{"lint":"eslint --fix","test":"tsc --noEmit && jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","prebuild":"npm run lint","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:types":"tsc --project tsconfig.build.json --outDir dist-types","run-durable":"NODE_OPTIONS=\"--import tsx\" npx run-durable --","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf95bff8-2cb3-4288-9a26-57b6e16d1a2e"}},"repository":{"url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","type":"git","directory":"packages/aws-durable-execution-sdk-js-testing"},"_npmVersion":"11.16.0","description":"AWS Durable Execution Testing SDK for TypeScript","directories":{},"_nodeVersion":"24.18.0","dependencies":{"commander":"^14.0.2","@sinonjs/fake-timers":"^13.0.5","@aws-sdk/client-lambda":"^3.1014.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","jest":"^30.0.3","eslint":"^9.29.0","semver":"^7.5.4","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/semver":"^7.5.8","@eslint/compat":"^1.4.1","@types/aws-lambda":"^8.10.150","typescript-eslint":"^8.34.1","eslint-plugin-jest":"^29.0.1","@rollup/plugin-replace":"^6.0.3","eslint-config-prettier":"^10.1.5","@types/sinonjs__fake-timers":"^15.0.1"},"peerDependencies":{"@aws/durable-execution-sdk-js":">=1.0.1 <=2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/durable-execution-sdk-js-testing_1.1.3_1783372141289_0.6028647530747528","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@aws/durable-execution-sdk-js-testing","description":"AWS Durable Execution Testing SDK for TypeScript","version":"1.1.4","license":"Apache-2.0","repository":{"type":"git","url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","directory":"packages/aws-durable-execution-sdk-js-testing"},"homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","engines":{"node":">=22"},"main":"./dist-cjs/index.js","module":"./dist/index.mjs","types":"./dist-types/index.d.ts","bin":{"run-durable":"dist/cli/run-durable.mjs"},"scripts":{"clean":"rm -rf dist dist-cjs dist-types node_modules coverage .tsbuildinfo .rollup.cache","build":"concurrently npm:build:esm npm:build:cjs npm:build:types","build:esm":"rollup --config rollup.config.mjs --environment MODE:esm","build:cjs":"rollup --config rollup.config.mjs --environment MODE:cjs","build:types":"tsc --project tsconfig.build.json --outDir dist-types","prepublishOnly":"npm run build && npm run test","lint":"biome check src --diagnostic-level=error","test":"jest --config jest.config.mjs --collectCoverage --collectCoverageFrom=src/**/*.{ts,js}","run-durable":"NODE_OPTIONS=\"--import tsx\" npx run-durable --","api:extract":"npm run build:types && api-extractor run --local","lint:fix":"biome check --write src"},"exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist/index.mjs","require":"./dist-cjs/index.js"}},"devDependencies":{"@biomejs/biome":"2.5.11","@microsoft/api-extractor":"^7.55.1","@rollup/plugin-replace":"^6.0.3","@types/aws-lambda":"^8.10.150","@types/semver":"^7.5.8","jest":"^30.5.1","semver":"^7.5.4","tsx":"^4.20.5","typescript":"^6.0.3"},"dependencies":{"@aws-sdk/client-lambda":"^3.1014.0","@sinonjs/fake-timers":"^15.4.0","commander":"^14.0.2"},"peerDependencies":{"@aws/durable-execution-sdk-js":">=1.0.1 <=2.4.0"},"private":false,"gitHead":"974f9d4c73a96a613448fce86a213b854e006442","_id":"@aws/durable-execution-sdk-js-testing@1.1.4","bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-eUdmK4/hoLenscnchNCMybcfGywAfPsAStHqNoJISO1yUjTpXDK3zf0nUkTJygVsHdwppD0Nz1TwFdavkCLJBg==","shasum":"0302153c8b259d5e976048434a8a561de2bc75b2","tarball":"https://registry.npmjs.org/@aws/durable-execution-sdk-js-testing/-/durable-execution-sdk-js-testing-1.1.4.tgz","fileCount":178,"unpackedSize":872249,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aws%2fdurable-execution-sdk-js-testing@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAsqtlIdfQ5I+aTh93bKhQSkKTCyxm91amq0/JAeBR0ZAiEAxvxZR2YJ6xyQzMpYGAs/l77qoFcEXULc8Q1qmu+xxhM="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf95bff8-2cb3-4288-9a26-57b6e16d1a2e"}},"directories":{},"maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/durable-execution-sdk-js-testing_1.1.4_1788889273729_0.6592994616063426"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-25T00:23:14.774Z","modified":"2026-09-08T17:41:14.244Z","0.0.0":"2025-11-25T00:23:15.056Z","0.0.1":"2025-11-27T16:42:21.220Z","1.0.0":"2025-12-02T14:25:14.128Z","1.1.0":"2025-12-16T23:11:21.279Z","1.1.1":"2026-01-27T23:31:05.048Z","1.1.2":"2026-07-02T17:45:27.381Z","1.1.3":"2026-07-06T21:09:01.508Z","1.1.4":"2026-09-08T17:41:13.865Z"},"bugs":{"url":"https://github.com/aws/aws-durable-execution-sdk-js/issues"},"license":"Apache-2.0","homepage":"https://github.com/aws/aws-durable-execution-sdk-js/tree/main/packages/aws-durable-execution-sdk-js-testing","repository":{"type":"git","url":"git+ssh://git@github.com/aws/aws-durable-execution-sdk-js.git","directory":"packages/aws-durable-execution-sdk-js-testing"},"description":"AWS Durable Execution Testing SDK for TypeScript","maintainers":[{"name":"durable-execution-dev","email":"durable-execution-dev@amazon.com"}],"readme":"# AWS Durable Execution Testing SDK for JavaScript\n\nTesting utilities for the AWS Durable Execution SDK for JavaScript and TypeScript.\n\n## Features\n\nThis package provides testing tools for durable functions both locally and in the cloud:\n\n- **LocalDurableTestRunner** - Execute and test durable functions locally without AWS deployment\n  - **Time-skipping support** - Skip wait operations and delays for faster test execution\n  - **Function registration** - Register additional functions for chained invoke testing\n  - **Full operation inspection** - Access detailed information about steps, waits, callbacks, and more\n  - **Mock-friendly** - Works seamlessly with Jest and other mocking frameworks\n\n- **CloudDurableTestRunner** - Test against deployed AWS Lambda functions\n  - **Real environment testing** - Validate behavior against actual your actual deployed AWS Lambda function\n  - **Configurable invocation** - Support for different invocation types and polling intervals\n\n- **Testing Capabilities**\n  - **Operation assertions** - Inspect individual operations by name, index, or ID\n  - **Status and result validation** - Verify execution status, results, and error conditions\n  - **Callback testing** - Send callback responses and verify callback behavior\n  - **Retry validation** - Test step retry logic and failure scenarios\n\n- **run-durable CLI** - Command-line tool for quick testing without writing test code\n  - **Zero setup** - Run any durable function with `npx run-durable your-function.js`\n  - **Operation inspection** - View detailed operation tables and execution history\n  - **Time control** - Skip time for fast testing or use real timing for validation\n\n## Installation\n\n```bash\nnpm install --save-dev @aws/durable-execution-sdk-js-testing\n```\n\n## Quick Start\n\n### Handler Code\n\n```typescript\nimport {\n  withDurableExecution,\n  DurableContext,\n} from \"@aws/durable-execution-sdk-js\";\n\nconst handler = async (event: any, context: DurableContext) => {\n  // Execute a durable step with automatic retry\n  const userData = await context.step(\"fetch-user\", async () =>\n    fetchUserFromDB(event.userId),\n  );\n\n  // Wait for 5 seconds\n  await context.wait({ seconds: 5 });\n\n  // Process data in another step\n  const result = await context.step(\"process-user\", async () =>\n    processUser(userData),\n  );\n\n  return result;\n};\n\nexport const lambdaHandler = withDurableExecution(handler);\n```\n\n### Test Code\n\n#### Local Testing\n\n```typescript\nimport {\n  LocalDurableTestRunner,\n  WaitingOperationStatus,\n} from \"@aws/durable-execution-sdk-js-testing\";\nimport { lambdaHandler } from \"./lambdaHandler\";\n\nbeforeAll(() =>\n  LocalDurableTestRunner.setupTestEnvironment({\n    skipTime: true,\n  }),\n);\n\nafterAll(() => LocalDurableTestRunner.teardownTestEnvironment());\n\ndescribe(\"LocalDurableTestRunner\", () => {\n  let runner;\n\n  beforeEach(() => {\n    runner = new LocalDurableTestRunner({\n      handlerFunction: lambdaHandler,\n    });\n  });\n\n  it(\"should wait for 5 seconds and return result\", async () => {\n    const execution = await runner.run({ payload: { userId: \"123\" } });\n\n    expect(execution.getStatus()).toBe(\"SUCCEEDED\");\n    expect(execution.getOperations()).toHaveLength(3); // fetch-user, wait, process-user\n\n    // Check the fetch-user step\n    const fetchStep = runner.getOperation(\"fetch-user\");\n    await fetchStep.waitForData(WaitingOperationStatus.COMPLETED);\n    const fetchDetails = fetchStep.getStepDetails();\n    expect(fetchDetails?.result).toBeDefined();\n\n    // Check the wait operation\n    const waitOp = runner.getOperationByIndex(1);\n    const waitDetails = waitOp.getWaitDetails();\n    expect(waitDetails?.waitSeconds).toBe(5);\n\n    // Check the process-user step\n    const processStep = runner.getOperation(\"process-user\");\n    await processStep.waitForData(WaitingOperationStatus.COMPLETED);\n    const processDetails = processStep.getStepDetails();\n    expect(processDetails?.result).toBeDefined();\n  });\n});\n```\n\n#### Cloud Testing\n\n```typescript\nimport {\n  CloudDurableTestRunner,\n  WaitingOperationStatus,\n} from \"@aws/durable-execution-sdk-js-testing\";\n\ndescribe(\"CloudDurableTestRunner\", () => {\n  let runner;\n\n  beforeEach(() => {\n    runner = new CloudDurableTestRunner({\n      functionName: \"my-durable-function\", // Your deployed function name\n    });\n  });\n\n  it(\"should wait for 5 seconds and return result\", async () => {\n    const execution = await runner.run({ payload: { userId: \"123\" } });\n\n    expect(execution.getStatus()).toBe(\"SUCCEEDED\");\n    expect(execution.getOperations()).toHaveLength(3); // fetch-user, wait, process-user\n\n    // Check the fetch-user step\n    const fetchStep = runner.getOperation(\"fetch-user\");\n    const fetchDetails = fetchStep.getStepDetails();\n    expect(fetchDetails?.result).toBeDefined();\n    expect(fetchDetails?.attempt).toBe(1);\n\n    // Check the wait operation\n    const waitOp = runner.getOperationByIndex(1);\n    const waitDetails = waitOp.getWaitDetails();\n    expect(waitDetails?.waitSeconds).toBe(5);\n\n    // Check the process-user step\n    const processStep = runner.getOperation(\"process-user\");\n    const processDetails = processStep.getStepDetails();\n    expect(processDetails?.result).toBeDefined();\n  });\n});\n```\n\n## Documentation\n\nThis README provides a quick reference for the Testing SDK's main features. For more detailed information:\n\n- **[API Reference](https://docs.aws.amazon.com/durable-execution/)** - Complete technical reference with detailed type definitions and operation specifications\n- **[run-durable CLI Guide](./RUN_DURABLE_CLI.md)** - Complete guide for using the command-line tool to quickly test durable functions\n- **[Contributing](../../CONTRIBUTING.md)** - Learn about contributing to the AWS Durable Execution Testing SDK for JavaScript\n\n## LocalDurableTestRunner\n\nRun durable functions locally with a simulated durable execution backend.\n\n```typescript\nimport { LocalDurableTestRunner } from \"@aws/durable-execution-sdk-js-testing\";\nimport { handler } from \"./my-durable-function\";\n\n// Set up test environment with optional time skipping\nawait LocalDurableTestRunner.setupTestEnvironment({\n  skipTime: true, // Skip wait delays for faster tests\n});\n\nconst runner = new LocalDurableTestRunner({\n  handlerFunction: handler,\n});\n\nconst execution = await runner.run({ payload: { test: \"data\" } });\n\n// Assert on results\nexpect(execution.getStatus()).toBe(\"SUCCEEDED\");\nexpect(execution.getResult()).toEqual(expectedValue);\n\n// Assert on operations\nconst operations = execution.getOperations();\nexpect(operations).toHaveLength(3);\n\n// Clean up test environment\nawait LocalDurableTestRunner.teardownTestEnvironment();\n```\n\n### Mocking\n\nMock external dependencies using Jest or your preferred testing framework:\n\n```typescript\nimport { LocalDurableTestRunner } from \"@aws/durable-execution-sdk-js-testing\";\n\n// Mock external functions\njest.mock(\"../services/userService\", () => ({\n  fetchUserFromDB: jest.fn(),\n  processUser: jest.fn(),\n}));\n\nimport { fetchUserFromDB, processUser } from \"../services/userService\";\nimport { lambdaHandler } from \"./lambdaHandler\";\n\nconst mockFetchUser = fetchUserFromDB as jest.MockedFunction<\n  typeof fetchUserFromDB\n>;\nconst mockProcessUser = processUser as jest.MockedFunction<typeof processUser>;\n\ndescribe(\"Mocked Dependencies\", () => {\n  let runner: LocalDurableTestRunner;\n\n  beforeAll(() =>\n    LocalDurableTestRunner.setupTestEnvironment({ skipTime: true }),\n  );\n  afterAll(() => LocalDurableTestRunner.teardownTestEnvironment());\n\n  beforeEach(() => {\n    runner = new LocalDurableTestRunner({ handlerFunction: lambdaHandler });\n\n    // Reset mocks\n    mockFetchUser.mockClear();\n    mockProcessUser.mockClear();\n  });\n\n  it(\"should call mocked functions and return expected results\", async () => {\n    // Setup mocks\n    const userData = { id: \"123\", name: \"John Doe\" };\n    const processedResult = { id: \"123\", processed: true };\n\n    mockFetchUser.mockResolvedValue(userData);\n    mockProcessUser.mockResolvedValue(processedResult);\n\n    // Run test\n    const execution = await runner.run({ payload: { userId: \"123\" } });\n\n    // Verify results\n    expect(execution.getStatus()).toBe(\"SUCCEEDED\");\n    expect(execution.getResult()).toEqual(processedResult);\n\n    // Verify mock calls\n    expect(mockFetchUser).toHaveBeenCalledWith(\"123\");\n    expect(mockProcessUser).toHaveBeenCalledWith(userData);\n\n    // Verify operations\n    const fetchStep = runner.getOperation(\"fetch-user\");\n    const fetchDetails = fetchStep.getStepDetails();\n    expect(fetchDetails?.result).toEqual(userData);\n  });\n});\n```\n\n### Function Registration\n\nRegister additional functions that can be invoked during local testing of chained invocations:\n\n#### Handler Code\n\n```typescript\nconst mainHandler = withDurableExecution(async (event, context) => {\n  await context.invoke(\"workflow-a:$LATEST\");\n  await context.invoke(\"workflow-b:$LATEST\");\n\n  await context.invoke(\"utility-function\");\n  await context.invoke(\"utility-helper\");\n});\n```\n\n#### Test code\n\n```typescript\nconst runner = new LocalDurableTestRunner({ handlerFunction: mainHandler });\n\n// Register durable functions\nrunner.registerDurableFunction(\"workflow-a:$LATEST\", durableWorkflowA);\n\n// Register regular functions\nrunner.registerFunction(\"utility-function\", utilityHandler);\n\n// Method chaining is supported\nrunner\n  .registerDurableFunction(\"workflow-b:$LATEST\", durableWorkflowB)\n  .registerFunction(\"helper\", helperHandler);\n```\n\n## CloudDurableTestRunner\n\nTest against deployed Lambda functions in AWS.\n\n```typescript\nimport {\n  CloudDurableTestRunner,\n  InvocationType,\n} from \"@aws/durable-execution-sdk-js-testing\";\nimport { LambdaClient } from \"@aws-sdk/client-lambda\";\n\nconst runner = new CloudDurableTestRunner({\n  functionName: \"MyDurableFunction\",\n  client: new LambdaClient({ region: \"us-east-1\" }), // optional\n  config: {\n    pollInterval: 1000, // optional, default 1000ms\n    invocationType: InvocationType.RequestResponse, // optional\n  },\n});\n\nconst execution = await runner.run({ payload: { userId: \"123\" } });\n\nexpect(execution.getStatus()).toBe(\"SUCCEEDED\");\n```\n\n## Test Result API\n\nBoth runners return a `TestResult` object with methods for assertions:\n\n```typescript\nconst execution = await runner.run();\n\n// Get execution status and results\nexecution.getStatus(); // \"SUCCEEDED\" | \"FAILED\" | \"RUNNING\" | etc.\nexecution.getResult(); // Returns the function result\nexecution.getError(); // Returns error details if failed\n\n// Get operations\nexecution.getOperations(); // All operations\nexecution.getOperations({ status: \"SUCCEEDED\" }); // Filter by status\n\n// Get execution history and invocations\nexecution.getHistoryEvents(); // Detailed event history\nexecution.getInvocations(); // Handler invocation details\n\n// Print operations table to console\nexecution.print(); // Default columns\nexecution.print({ name: true, status: true, duration: true }); // Custom columns\n```\n\n## Operation Assertions\n\nAccess specific operations for detailed assertions:\n\n```typescript\n// Get operations by different methods\nconst operation = runner.getOperation(\"my-step\"); // By name\nconst firstOp = runner.getOperationByIndex(0); // By execution order\nconst secondNamedOp = runner.getOperationByNameAndIndex(\"my-step\", 1); // By name + index\nconst opById = runner.getOperationById(\"abc123\"); // By unique ID\n\n// Wait for operation data to be available\nawait operation.waitForData(); // Default to STARTED status\nawait operation.waitForData(WaitingOperationStatus.COMPLETED);\n\n// Get operation details based on type\nconst stepDetails = operation.getStepDetails(); // For step operations\nconst contextDetails = operation.getContextDetails(); // For context operations\nconst callbackDetails = operation.getCallbackDetails(); // For callback operations\nconst waitDetails = operation.getWaitDetails(); // For wait operations\n\n// Get basic operation information\noperation.getName();\noperation.getStatus();\noperation.getStartTimestamp();\noperation.getEndTimestamp();\n```\n\n### Callback Operations\n\nFor callback operations, you can send responses:\n\n```typescript\nconst callback = runner.getOperation(\"my-callback\");\nawait callback.waitForData(WaitingOperationStatus.SUBMITTED);\n\n// Send callback responses\nawait callback.sendCallbackSuccess(\"result data\");\nawait callback.sendCallbackFailure({ errorMessage: \"Failed\" });\nawait callback.sendCallbackHeartbeat();\n```\n\n## Configuration Options\n\n### LocalDurableTestRunner\n\n```typescript\n// Constructor\nnew LocalDurableTestRunner({ handlerFunction: handler });\n\n// Environment setup\nawait LocalDurableTestRunner.setupTestEnvironment({ skipTime: true });\n\n// Environment teardown\nawait LocalDurableTestRunner.teardownTestEnvironment();\n```\n\n### CloudDurableTestRunner\n\n```typescript\n// Basic configuration\nnew CloudDurableTestRunner({ functionName: \"MyFunction:$LATEST\" });\n\n// Advanced configuration\nnew CloudDurableTestRunner({\n  functionName: \"MyFunction:$LATEST\",\n  client: new LambdaClient({ region: \"us-east-1\" }),\n  config: { pollInterval: 500, invocationType: InvocationType.Event },\n});\n```\n\n## Reset Runner State\n\nThe `reset()` method is required if you reuse the same runner instance between tests. Data about an individual execution is cleared from the runner instance when `reset()` is called.\n\n```typescript\ndescribe(\"Reusing Runner Instance\", () => {\n  let runner: LocalDurableTestRunner;\n\n  beforeAll(() => {\n    // Create runner once\n    runner = new LocalDurableTestRunner({ handlerFunction: handler });\n  });\n\n  beforeEach(() => {\n    // Reset state when reusing the same instance\n    runner.reset();\n  });\n\n  // ... tests\n});\n```\n\n## Security\n\nSee [CONTRIBUTING](../../CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md"}