From 06a91e24cd9e07a7d2647af5d6d1f0e64f3745da Mon Sep 17 00:00:00 2001 From: Anthony Ting Date: Fri, 14 Nov 2025 11:28:00 -0800 Subject: [PATCH 1/4] fix(examples): rename function names to match integration-test.js script --- .../scripts/generate-sam-template.js | 57 ++++++++++++------- .../__tests__/generate-sam-template.test.ts | 13 ++++- 2 files changed, 47 insertions(+), 23 deletions(-) diff --git a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js index 8b6b8164..23ea4712 100644 --- a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js +++ b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js @@ -45,13 +45,18 @@ function toPascalCase(filename) { * Get TypeScript files from src/examples directory */ function getExampleFiles() { - const examplesDir = path.join(__dirname, "../src/examples"); + const catalogPath = path.join( + __dirname, + "../src/utils/examples-catalog.json", + ); - if (!fs.existsSync(examplesDir)) { - throw new Error(`Examples directory not found: ${examplesDir}`); + if (!fs.existsSync(catalogPath)) { + throw new Error(`Examples directory not found: ${catalogPath}`); } - const exampleFiles = []; + const catalog = JSON.parse(fs.readFileSync(catalogPath, "utf8")); + + const exampleFiles = catalog.map((example) => example.name); // Read all directories in examples const entries = fs.readdirSync(examplesDir, { withFileTypes: true }); @@ -105,25 +110,25 @@ function getExampleFiles() { /** * Create a Lambda function resource configuration */ -function createFunctionResource(filename, skipVerboseLogging = false) { - const resourceName = toPascalCase(filename); - const config = EXAMPLE_CONFIGS[filename] || DEFAULT_CONFIG; +function createFunctionResource( + resourceName, + catalog, + skipVerboseLogging = false, +) { + const config = EXAMPLE_CONFIGS[resourceName] || DEFAULT_CONFIG; const functionResource = { Type: "AWS::Serverless::Function", Properties: { - FunctionName: `${resourceName}-TypeScript`, + FunctionName: resourceName, CodeUri: "./dist", - Handler: `${filename}.handler`, + Handler: catalog.handler, Runtime: "nodejs22.x", Architectures: ["x86_64"], MemorySize: config.memorySize, Timeout: config.timeout, Role: { "Fn::GetAtt": ["DurableFunctionRole", "Arn"] }, - DurableConfig: { - ExecutionTimeout: 3600, - RetentionPeriodInDays: 7, - }, + DurableConfig: catalog.durableConfig, Environment: { Variables: { AWS_ENDPOINT_URL_LAMBDA: "http://host.docker.internal:5000", @@ -149,9 +154,20 @@ function createFunctionResource(filename, skipVerboseLogging = false) { * Generate the complete CloudFormation template */ function generateTemplate(skipVerboseLogging = false) { - const exampleFiles = getExampleFiles(); + const examplesCatalogPath = path.join( + __dirname, + "../src/utils/examples-catalog.json", + ); + + if (!fs.existsSync(examplesCatalogPath)) { + throw new Error(`Examples directory not found: ${examplesCatalogPath}`); + } + + const examplesCatalog = JSON.parse( + fs.readFileSync(examplesCatalogPath, "utf8"), + ); - if (exampleFiles.length === 0) { + if (examplesCatalog.length === 0) { throw new Error("No TypeScript example files found in src/examples"); } @@ -202,12 +218,11 @@ function generateTemplate(skipVerboseLogging = false) { }; // Generate resources for each example file - exampleFiles.forEach((filename) => { - const resourceName = toPascalCase(filename); - template.Resources[resourceName] = createFunctionResource( - filename, - skipVerboseLogging, - ); + examplesCatalog.forEach((catalog) => { + const resourceName = catalog.name.replace(/\s/g, "") + `-22x-NodeJS-Local`; + template.Resources[ + toPascalCase(catalog.handler.slice(0, -".handler".length)) + ] = createFunctionResource(resourceName, catalog, skipVerboseLogging); }); return template; diff --git a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts b/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts index b4e06ed2..03147352 100644 --- a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts +++ b/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts @@ -29,7 +29,7 @@ describe("generate-sam-template", () => { }); test("creates function resource with custom config for steps-with-retry", () => { - const resource = createFunctionResource("steps-with-retry"); + const resource = createFunctionResource("steps-with-retry", {}); expect(resource.Properties.FunctionName).toBe( "StepsWithRetry-TypeScript", @@ -46,7 +46,16 @@ describe("generate-sam-template", () => { }); test("includes required environment variables", () => { - const resource = createFunctionResource("hello-world"); + const resource = createFunctionResource("hello-world", {}); + + expect(resource.Properties.Environment.Variables).toEqual({ + AWS_ENDPOINT_URL_LAMBDA: "http://host.docker.internal:5000", + DURABLE_VERBOSE_MODE: "true", + }); + }); + + test("disables verbose logging when skipVerboseLogging is true", () => { + const resource = createFunctionResource("hello-world", {}, true); expect(resource.Properties.Environment.Variables).toEqual({ AWS_ENDPOINT_URL_LAMBDA: "http://host.docker.internal:5000", From c4c8db2cb177a6bf2a48789ad5eac1a4966d40cb Mon Sep 17 00:00:00 2001 From: Anthony Ting Date: Thu, 4 Dec 2025 16:34:10 -0800 Subject: [PATCH 2/4] fix broken tests --- .../scripts/generate-sam-template.js | 5 - .../__tests__/generate-sam-template.test.ts | 37 +- .../template.yml | 742 ++++++------------ 3 files changed, 253 insertions(+), 531 deletions(-) diff --git a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js index 23ea4712..10b0e565 100644 --- a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js +++ b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js @@ -17,11 +17,6 @@ const EXAMPLE_CONFIGS = { }, ], }, - "wait-for-callback-submitter-retry-success": { - memorySize: 128, - timeout: 120, - policies: [], - }, }; // Default configuration for Lambda functions diff --git a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts b/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts index 03147352..5ec772dc 100644 --- a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts +++ b/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts @@ -17,10 +17,19 @@ describe("generate-sam-template", () => { describe("createFunctionResource", () => { test("creates default function resource", () => { - const resource = createFunctionResource("hello-world"); + const resource = createFunctionResource("hello-world", { + name: "Hello World", + description: "A simple hello world example with no durable operations", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/hello-world/hello-world.ts", + handler: "hello-world.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, + }); expect(resource.Type).toBe("AWS::Serverless::Function"); - expect(resource.Properties.FunctionName).toBe("HelloWorld-TypeScript"); + expect(resource.Properties.FunctionName).toBe("hello-world"); expect(resource.Properties.Handler).toBe("hello-world.handler"); expect(resource.Properties.Runtime).toBe("nodejs22.x"); expect(resource.Properties.MemorySize).toBe(128); @@ -29,11 +38,18 @@ describe("generate-sam-template", () => { }); test("creates function resource with custom config for steps-with-retry", () => { - const resource = createFunctionResource("steps-with-retry", {}); + const resource = createFunctionResource("steps-with-retry", { + name: "Steps With Retry", + description: "An example demonstrating retry functionality with steps", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/step/steps-with-retry/steps-with-retry.ts", + handler: "steps-with-retry.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, + }); - expect(resource.Properties.FunctionName).toBe( - "StepsWithRetry-TypeScript", - ); + expect(resource.Properties.FunctionName).toBe("steps-with-retry"); expect(resource.Properties.MemorySize).toBe(256); expect(resource.Properties.Timeout).toBe(300); expect(resource.Properties.Policies).toEqual([ @@ -48,15 +64,6 @@ describe("generate-sam-template", () => { test("includes required environment variables", () => { const resource = createFunctionResource("hello-world", {}); - expect(resource.Properties.Environment.Variables).toEqual({ - AWS_ENDPOINT_URL_LAMBDA: "http://host.docker.internal:5000", - DURABLE_VERBOSE_MODE: "true", - }); - }); - - test("disables verbose logging when skipVerboseLogging is true", () => { - const resource = createFunctionResource("hello-world", {}, true); - expect(resource.Properties.Environment.Variables).toEqual({ AWS_ENDPOINT_URL_LAMBDA: "http://host.docker.internal:5000", DURABLE_VERBOSE_MODE: "false", diff --git a/packages/aws-durable-execution-sdk-js-examples/template.yml b/packages/aws-durable-execution-sdk-js-examples/template.yml index 85c441ee..6e16a39f 100644 --- a/packages/aws-durable-execution-sdk-js-examples/template.yml +++ b/packages/aws-durable-execution-sdk-js-examples/template.yml @@ -28,7 +28,7 @@ Resources: BlockExample: Type: AWS::Serverless::Function Properties: - FunctionName: BlockExample-TypeScript + FunctionName: BlockExample-22x-NodeJS-Local CodeUri: ./dist Handler: block-example.handler Runtime: nodejs22.x @@ -41,7 +41,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -53,7 +53,7 @@ Resources: ComprehensiveOperations: Type: AWS::Serverless::Function Properties: - FunctionName: ComprehensiveOperations-TypeScript + FunctionName: ComprehensiveOperations-22x-NodeJS-Local CodeUri: ./dist Handler: comprehensive-operations.handler Runtime: nodejs22.x @@ -66,7 +66,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -78,7 +78,7 @@ Resources: ConcurrentOperations: Type: AWS::Serverless::Function Properties: - FunctionName: ConcurrentOperations-TypeScript + FunctionName: ConcurrentOperations-22x-NodeJS-Local CodeUri: ./dist Handler: concurrent-operations.handler Runtime: nodejs22.x @@ -91,7 +91,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -103,7 +103,7 @@ Resources: ConcurrentWait: Type: AWS::Serverless::Function Properties: - FunctionName: ConcurrentWait-TypeScript + FunctionName: ConcurrentWait-22x-NodeJS-Local CodeUri: ./dist Handler: concurrent-wait.handler Runtime: nodejs22.x @@ -116,7 +116,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -125,12 +125,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallback: + ParentContextInChild: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallback-TypeScript + FunctionName: ParentContextinChildError-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback.handler + Handler: parent-context-in-child.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -141,7 +141,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -150,12 +150,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackConcurrent: + ParentContextInStep: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackConcurrent-TypeScript + FunctionName: ParentContextinStepError-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-concurrent.handler + Handler: parent-context-in-step.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -166,7 +166,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -175,12 +175,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackFailures: + ParentContextInWaitCondition: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackFailures-TypeScript + FunctionName: ParentContextinWaitForConditionError-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-failures.handler + Handler: parent-context-in-wait-condition.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -191,7 +191,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -200,12 +200,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackHeartbeat: + CreateCallbackConcurrent: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackHeartbeat-TypeScript + FunctionName: CreateCallback-Concurrent-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-heartbeat.handler + Handler: create-callback-concurrent.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -216,7 +216,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -225,12 +225,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackMixedOps: + CreateCallbackFailures: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackMixedOps-TypeScript + FunctionName: CreateCallback-Failures-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-mixed-ops.handler + Handler: create-callback-failures.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -241,7 +241,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -250,12 +250,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackSerdes: + CreateCallbackHeartbeat: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackSerdes-TypeScript + FunctionName: CreateCallback-Heartbeat-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-serdes.handler + Handler: create-callback-heartbeat.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -266,7 +266,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -275,12 +275,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - CreateCallbackTimeout: + CreateCallbackMixedOps: Type: AWS::Serverless::Function Properties: - FunctionName: CreateCallbackTimeout-TypeScript + FunctionName: CreateCallback-MixedOperations-22x-NodeJS-Local CodeUri: ./dist - Handler: create-callback-timeout.handler + Handler: create-callback-mixed-ops.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -291,7 +291,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -300,12 +300,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - ErrorDeterminism: + CreateCallbackSerdes: Type: AWS::Serverless::Function Properties: - FunctionName: ErrorDeterminism-TypeScript + FunctionName: CreateCallback-CustomSerdes-22x-NodeJS-Local CodeUri: ./dist - Handler: error-determinism.handler + Handler: create-callback-serdes.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -316,7 +316,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -325,12 +325,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - ForceCheckpointing: + CreateCallback: Type: AWS::Serverless::Function Properties: - FunctionName: ForceCheckpointing-TypeScript + FunctionName: CreateCallback-22x-NodeJS-Local CodeUri: ./dist - Handler: force-checkpointing.handler + Handler: create-callback.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -341,7 +341,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -350,12 +350,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - ForceCheckpointingCallback: + CreateCallbackTimeout: Type: AWS::Serverless::Function Properties: - FunctionName: ForceCheckpointingCallback-TypeScript + FunctionName: CreateCallback-Timeout-22x-NodeJS-Local CodeUri: ./dist - Handler: force-checkpointing-callback.handler + Handler: create-callback-timeout.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -366,7 +366,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -375,12 +375,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - ForceCheckpointingInvoke: + ErrorDeterminism: Type: AWS::Serverless::Function Properties: - FunctionName: ForceCheckpointingInvoke-TypeScript + FunctionName: ErrorDeterminism-22x-NodeJS-Local CodeUri: ./dist - Handler: force-checkpointing-invoke.handler + Handler: error-determinism.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -391,7 +391,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -400,12 +400,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - ForceCheckpointingMultipleWait: + ForceCheckpointingCallback: Type: AWS::Serverless::Function Properties: - FunctionName: ForceCheckpointingMultipleWait-TypeScript + FunctionName: ForceCheckpointing-Callback-22x-NodeJS-Local CodeUri: ./dist - Handler: force-checkpointing-multiple-wait.handler + Handler: force-checkpointing-callback.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -416,7 +416,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -425,12 +425,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - HandlerError: + ForceCheckpointingInvoke: Type: AWS::Serverless::Function Properties: - FunctionName: HandlerError-TypeScript + FunctionName: ForceCheckpointing-Invoke-22x-NodeJS-Local CodeUri: ./dist - Handler: handler-error.handler + Handler: force-checkpointing-invoke.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -441,7 +441,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -450,12 +450,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - HelloWorld: + ForceCheckpointingMultipleWait: Type: AWS::Serverless::Function Properties: - FunctionName: HelloWorld-TypeScript + FunctionName: ForceCheckpointing-MultipleWait-22x-NodeJS-Local CodeUri: ./dist - Handler: hello-world.handler + Handler: force-checkpointing-multiple-wait.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -466,7 +466,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -475,12 +475,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - InvokeSimple: + ForceCheckpointing: Type: AWS::Serverless::Function Properties: - FunctionName: InvokeSimple-TypeScript + FunctionName: ForceCheckpointing-StepRetry-22x-NodeJS-Local CodeUri: ./dist - Handler: invoke-simple.handler + Handler: force-checkpointing.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -491,7 +491,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -500,12 +500,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - LoggerAfterCallback: + HandlerError: Type: AWS::Serverless::Function Properties: - FunctionName: LoggerAfterCallback-TypeScript + FunctionName: HandlerError-22x-NodeJS-Local CodeUri: ./dist - Handler: logger-after-callback.handler + Handler: handler-error.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -516,7 +516,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -525,12 +525,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - LoggerAfterWait: + HelloWorld: Type: AWS::Serverless::Function Properties: - FunctionName: LoggerAfterWait-TypeScript + FunctionName: HelloWorld-22x-NodeJS-Local CodeUri: ./dist - Handler: logger-after-wait.handler + Handler: hello-world.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -541,7 +541,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -550,12 +550,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - LoggerLogLevels: + InvokeSimple: Type: AWS::Serverless::Function Properties: - FunctionName: LoggerLogLevels-TypeScript + FunctionName: InvokeSimple-22x-NodeJS-Local CodeUri: ./dist - Handler: logger-log-levels.handler + Handler: invoke-simple.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -566,7 +566,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -575,12 +575,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapBasic: + LoggerAfterCallback: Type: AWS::Serverless::Function Properties: - FunctionName: MapBasic-TypeScript + FunctionName: LoggerAfterCallback-22x-NodeJS-Local CodeUri: ./dist - Handler: map-basic.handler + Handler: logger-after-callback.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -591,7 +591,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -600,12 +600,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapCompletionConfigIssue: + LoggerAfterWait: Type: AWS::Serverless::Function Properties: - FunctionName: MapCompletionConfigIssue-TypeScript + FunctionName: LoggerAfterWait-22x-NodeJS-Local CodeUri: ./dist - Handler: map-completion-config-issue.handler + Handler: logger-after-wait.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -616,7 +616,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -625,12 +625,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapFailureThresholdExceededCount: + LoggerLogLevels: Type: AWS::Serverless::Function Properties: - FunctionName: MapFailureThresholdExceededCount-TypeScript + FunctionName: LoggerLogLevels-22x-NodeJS-Local CodeUri: ./dist - Handler: map-failure-threshold-exceeded-count.handler + Handler: logger-log-levels.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -641,7 +641,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -650,12 +650,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapFailureThresholdExceededPercentage: + PowertoolsLogger: Type: AWS::Serverless::Function Properties: - FunctionName: MapFailureThresholdExceededPercentage-TypeScript + FunctionName: PowertoolsLogger-22x-NodeJS-Local CodeUri: ./dist - Handler: map-failure-threshold-exceeded-percentage.handler + Handler: powertools-logger.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -666,7 +666,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -675,12 +675,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapLargeScale: + SimplePowertoolsLogger: Type: AWS::Serverless::Function Properties: - FunctionName: MapLargeScale-TypeScript + FunctionName: SimplePowertoolsLogger-22x-NodeJS-Local CodeUri: ./dist - Handler: map-large-scale.handler + Handler: simple-powertools-logger.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -691,7 +691,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -700,12 +700,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapMinSuccessful: + MapBasic: Type: AWS::Serverless::Function Properties: - FunctionName: MapMinSuccessful-TypeScript + FunctionName: BasicMap-22x-NodeJS-Local CodeUri: ./dist - Handler: map-min-successful.handler + Handler: map-basic.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -716,7 +716,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -725,12 +725,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapToleratedFailureCount: + MapLargeScale: Type: AWS::Serverless::Function Properties: - FunctionName: MapToleratedFailureCount-TypeScript + FunctionName: LargeScaleMap-22x-NodeJS-Local CodeUri: ./dist - Handler: map-tolerated-failure-count.handler + Handler: map-large-scale.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -741,7 +741,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -750,12 +750,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - MapToleratedFailurePercentage: + MapCompletionConfigIssue: Type: AWS::Serverless::Function Properties: - FunctionName: MapToleratedFailurePercentage-TypeScript + FunctionName: MapCompletionConfigIssue-22x-NodeJS-Local CodeUri: ./dist - Handler: map-tolerated-failure-percentage.handler + Handler: map-completion-config-issue.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -766,7 +766,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -778,7 +778,7 @@ Resources: MultipleWaits: Type: AWS::Serverless::Function Properties: - FunctionName: MultipleWaits-TypeScript + FunctionName: MultipleWaits-22x-NodeJS-Local CodeUri: ./dist Handler: multiple-waits.handler Runtime: nodejs22.x @@ -791,7 +791,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -803,7 +803,7 @@ Resources: NoReplayExecution: Type: AWS::Serverless::Function Properties: - FunctionName: NoReplayExecution-TypeScript + FunctionName: NoReplayExecution-22x-NodeJS-Local CodeUri: ./dist Handler: no-replay-execution.handler Runtime: nodejs22.x @@ -816,7 +816,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -828,7 +828,7 @@ Resources: NonDurable: Type: AWS::Serverless::Function Properties: - FunctionName: NonDurable-TypeScript + FunctionName: Non-Durable-22x-NodeJS-Local CodeUri: ./dist Handler: non-durable.handler Runtime: nodejs22.x @@ -840,9 +840,7 @@ Resources: Fn::GetAtt: - DurableFunctionRole - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 + DurableConfig: null Environment: Variables: AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 @@ -853,7 +851,7 @@ Resources: ParallelBasic: Type: AWS::Serverless::Function Properties: - FunctionName: ParallelBasic-TypeScript + FunctionName: BasicParallel-22x-NodeJS-Local CodeUri: ./dist Handler: parallel-basic.handler Runtime: nodejs22.x @@ -866,57 +864,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParallelFailureThresholdExceededCount: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParallelFailureThresholdExceededCount-TypeScript - CodeUri: ./dist - Handler: parallel-failure-threshold-exceeded-count.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParallelFailureThresholdExceededPercentage: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParallelFailureThresholdExceededPercentage-TypeScript - CodeUri: ./dist - Handler: parallel-failure-threshold-exceeded-percentage.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -928,7 +876,7 @@ Resources: ParallelHeterogeneous: Type: AWS::Serverless::Function Properties: - FunctionName: ParallelHeterogeneous-TypeScript + FunctionName: ParallelHeterogeneous-22x-NodeJS-Local CodeUri: ./dist Handler: parallel-heterogeneous.handler Runtime: nodejs22.x @@ -941,32 +889,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParallelMinSuccessful: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParallelMinSuccessful-TypeScript - CodeUri: ./dist - Handler: parallel-min-successful.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -978,7 +901,7 @@ Resources: ParallelMinSuccessfulCallback: Type: AWS::Serverless::Function Properties: - FunctionName: ParallelMinSuccessfulCallback-TypeScript + FunctionName: ParallelminSuccessfulwithCallbacks-22x-NodeJS-Local CodeUri: ./dist Handler: parallel-min-successful-callback.handler Runtime: nodejs22.x @@ -991,57 +914,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParallelToleratedFailureCount: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParallelToleratedFailureCount-TypeScript - CodeUri: ./dist - Handler: parallel-tolerated-failure-count.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParallelToleratedFailurePercentage: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParallelToleratedFailurePercentage-TypeScript - CodeUri: ./dist - Handler: parallel-tolerated-failure-percentage.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1053,7 +926,7 @@ Resources: ParallelWait: Type: AWS::Serverless::Function Properties: - FunctionName: ParallelWait-TypeScript + FunctionName: Parallelwait-22x-NodeJS-Local CodeUri: ./dist Handler: parallel-wait.handler Runtime: nodejs22.x @@ -1066,107 +939,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParentContextInChild: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParentContextInChild-TypeScript - CodeUri: ./dist - Handler: parent-context-in-child.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParentContextInStep: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParentContextInStep-TypeScript - CodeUri: ./dist - Handler: parent-context-in-step.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - ParentContextInWaitCondition: - Type: AWS::Serverless::Function - Properties: - FunctionName: ParentContextInWaitCondition-TypeScript - CodeUri: ./dist - Handler: parent-context-in-wait-condition.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - PowertoolsLogger: - Type: AWS::Serverless::Function - Properties: - FunctionName: PowertoolsLogger-TypeScript - CodeUri: ./dist - Handler: powertools-logger.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1178,7 +951,7 @@ Resources: PromiseAll: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseAll-TypeScript + FunctionName: PromiseAll-22x-NodeJS-Local CodeUri: ./dist Handler: promise-all.handler Runtime: nodejs22.x @@ -1191,7 +964,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1203,7 +976,7 @@ Resources: PromiseAllSettled: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseAllSettled-TypeScript + FunctionName: PromiseAllSettled-22x-NodeJS-Local CodeUri: ./dist Handler: promise-all-settled.handler Runtime: nodejs22.x @@ -1216,7 +989,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1228,7 +1001,7 @@ Resources: PromiseAllWait: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseAllWait-TypeScript + FunctionName: PromiseAllWithWait-22x-NodeJS-Local CodeUri: ./dist Handler: promise-all-wait.handler Runtime: nodejs22.x @@ -1241,7 +1014,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1253,7 +1026,7 @@ Resources: PromiseAny: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseAny-TypeScript + FunctionName: PromiseAny-22x-NodeJS-Local CodeUri: ./dist Handler: promise-any.handler Runtime: nodejs22.x @@ -1266,7 +1039,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1278,7 +1051,7 @@ Resources: PromiseCombinators: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseCombinators-TypeScript + FunctionName: PromiseCombinators-22x-NodeJS-Local CodeUri: ./dist Handler: promise-combinators.handler Runtime: nodejs22.x @@ -1291,7 +1064,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1303,7 +1076,7 @@ Resources: PromiseRace: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseRace-TypeScript + FunctionName: PromiseRace-22x-NodeJS-Local CodeUri: ./dist Handler: promise-race.handler Runtime: nodejs22.x @@ -1316,7 +1089,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1328,7 +1101,7 @@ Resources: PromiseReplay: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseReplay-TypeScript + FunctionName: PromiseReplay-22x-NodeJS-Local CodeUri: ./dist Handler: promise-replay.handler Runtime: nodejs22.x @@ -1341,7 +1114,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1353,7 +1126,7 @@ Resources: PromiseUnhandledRejection: Type: AWS::Serverless::Function Properties: - FunctionName: PromiseUnhandledRejection-TypeScript + FunctionName: PromiseUnhandledRejection-22x-NodeJS-Local CodeUri: ./dist Handler: promise-unhandled-rejection.handler Runtime: nodejs22.x @@ -1366,7 +1139,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1378,7 +1151,7 @@ Resources: RetryExhaustion: Type: AWS::Serverless::Function Properties: - FunctionName: RetryExhaustion-TypeScript + FunctionName: RetryExhaustion-22x-NodeJS-Local CodeUri: ./dist Handler: retry-exhaustion.handler Runtime: nodejs22.x @@ -1391,7 +1164,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1403,7 +1176,7 @@ Resources: RunInChildContext: Type: AWS::Serverless::Function Properties: - FunctionName: RunInChildContext-TypeScript + FunctionName: RuninChildContext-22x-NodeJS-Local CodeUri: ./dist Handler: run-in-child-context.handler Runtime: nodejs22.x @@ -1416,7 +1189,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1428,7 +1201,7 @@ Resources: RunInChildContextCheckpointSizeLimit: Type: AWS::Serverless::Function Properties: - FunctionName: RunInChildContextCheckpointSizeLimit-TypeScript + FunctionName: RunInChildContextCheckpointSizeLimitBoundary-22x-NodeJS-Local CodeUri: ./dist Handler: run-in-child-context-checkpoint-size-limit.handler Runtime: nodejs22.x @@ -1441,7 +1214,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1450,12 +1223,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - RunInChildContextFailingStep: + RunInChildContextLargeData: Type: AWS::Serverless::Function Properties: - FunctionName: RunInChildContextFailingStep-TypeScript + FunctionName: RunInChildContextLargeData-22x-NodeJS-Local CodeUri: ./dist - Handler: run-in-child-context-failing-step.handler + Handler: run-in-child-context-large-data.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1466,7 +1239,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1475,12 +1248,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - RunInChildContextLargeData: + RunInChildContextFailingStep: Type: AWS::Serverless::Function Properties: - FunctionName: RunInChildContextLargeData-TypeScript + FunctionName: RuninChildContextwithFailingStep-22x-NodeJS-Local CodeUri: ./dist - Handler: run-in-child-context-large-data.handler + Handler: run-in-child-context-failing-step.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1491,7 +1264,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1500,12 +1273,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - SerdeBasic: + SimpleExecution: Type: AWS::Serverless::Function Properties: - FunctionName: SerdeBasic-TypeScript + FunctionName: SimpleExecution-22x-NodeJS-Local CodeUri: ./dist - Handler: serde-basic.handler + Handler: simple-execution.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1516,7 +1289,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1525,12 +1298,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - SimpleExecution: + StepBasic: Type: AWS::Serverless::Function Properties: - FunctionName: SimpleExecution-TypeScript + FunctionName: BasicStep-22x-NodeJS-Local CodeUri: ./dist - Handler: simple-execution.handler + Handler: step-basic.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1541,7 +1314,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1550,12 +1323,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - SimplePowertoolsLogger: + StepNamed: Type: AWS::Serverless::Function Properties: - FunctionName: SimplePowertoolsLogger-TypeScript + FunctionName: NamedStep-22x-NodeJS-Local CodeUri: ./dist - Handler: simple-powertools-logger.handler + Handler: step-named.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1566,7 +1339,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1575,12 +1348,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - StepBasic: + StepErrorDeterminism: Type: AWS::Serverless::Function Properties: - FunctionName: StepBasic-TypeScript + FunctionName: StepErrorDeterminism-22x-NodeJS-Local CodeUri: ./dist - Handler: step-basic.handler + Handler: step-error-determinism.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1591,7 +1364,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1600,12 +1373,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - StepErrorDeterminism: + StepsWithRetry: Type: AWS::Serverless::Function Properties: - FunctionName: StepErrorDeterminism-TypeScript + FunctionName: StepsWithRetry-22x-NodeJS-Local CodeUri: ./dist - Handler: step-error-determinism.handler + Handler: steps-with-retry.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1616,7 +1389,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1625,12 +1398,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - StepNamed: + StepWithRetry: Type: AWS::Serverless::Function Properties: - FunctionName: StepNamed-TypeScript + FunctionName: StepwithRetry-22x-NodeJS-Local CodeUri: ./dist - Handler: step-named.handler + Handler: step-with-retry.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1641,7 +1414,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1650,12 +1423,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - StepWithRetry: + UndefinedResults: Type: AWS::Serverless::Function Properties: - FunctionName: StepWithRetry-TypeScript + FunctionName: UndefinedResults-22x-NodeJS-Local CodeUri: ./dist - Handler: step-with-retry.handler + Handler: undefined-results.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1666,7 +1439,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1675,40 +1448,37 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - StepsWithRetry: + Wait: Type: AWS::Serverless::Function Properties: - FunctionName: StepsWithRetry-TypeScript + FunctionName: WaitState-22x-NodeJS-Local CodeUri: ./dist - Handler: steps-with-retry.handler + Handler: wait.handler Runtime: nodejs22.x Architectures: - x86_64 - MemorySize: 256 - Timeout: 300 + MemorySize: 128 + Timeout: 60 Role: Fn::GetAtt: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 DURABLE_VERBOSE_MODE: "false" DURABLE_EXAMPLES_VERBOSE: "true" - Policies: - - DynamoDBReadPolicy: - TableName: TEST Metadata: SkipBuild: "True" - UndefinedResults: + WaitNamed: Type: AWS::Serverless::Function Properties: - FunctionName: UndefinedResults-TypeScript + FunctionName: NamedWait-22x-NodeJS-Local CodeUri: ./dist - Handler: undefined-results.handler + Handler: wait-named.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1719,7 +1489,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1728,12 +1498,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - Wait: + WaitUnawaited: Type: AWS::Serverless::Function Properties: - FunctionName: Wait-TypeScript + FunctionName: UnawaitedWait-22x-NodeJS-Local CodeUri: ./dist - Handler: wait.handler + Handler: wait-unawaited.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1744,7 +1514,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1753,12 +1523,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - WaitForCallback: + WaitForCallbackAnonymous: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallback-TypeScript + FunctionName: WaitforCallback-AnonymousSubmitter-22x-NodeJS-Local CodeUri: ./dist - Handler: wait-for-callback.handler + Handler: wait-for-callback-anonymous.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1769,7 +1539,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1778,12 +1548,12 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" - WaitForCallbackAnonymous: + WaitForCallback: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackAnonymous-TypeScript + FunctionName: WaitforCallback-22x-NodeJS-Local CodeUri: ./dist - Handler: wait-for-callback-anonymous.handler + Handler: wait-for-callback.handler Runtime: nodejs22.x Architectures: - x86_64 @@ -1794,7 +1564,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1806,7 +1576,7 @@ Resources: WaitForCallbackChildContext: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackChildContext-TypeScript + FunctionName: WaitforCallback-ChildContext-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-child-context.handler Runtime: nodejs22.x @@ -1819,7 +1589,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1831,7 +1601,7 @@ Resources: WaitForCallbackFailingSubmitter: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackFailingSubmitter-TypeScript + FunctionName: WaitforCallback-FailingSubmitter-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-failing-submitter.handler Runtime: nodejs22.x @@ -1844,7 +1614,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1856,7 +1626,7 @@ Resources: WaitForCallbackFailures: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackFailures-TypeScript + FunctionName: WaitforCallback-CallbackFailures-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-failures.handler Runtime: nodejs22.x @@ -1869,7 +1639,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1881,7 +1651,7 @@ Resources: WaitForCallbackHeartbeatSends: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackHeartbeatSends-TypeScript + FunctionName: WaitforCallback-HeartbeatSends-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-heartbeat-sends.handler Runtime: nodejs22.x @@ -1894,7 +1664,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1906,7 +1676,7 @@ Resources: WaitForCallbackMixedOps: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackMixedOps-TypeScript + FunctionName: WaitforCallback-MixedOperations-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-mixed-ops.handler Runtime: nodejs22.x @@ -1919,7 +1689,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1931,7 +1701,7 @@ Resources: WaitForCallbackMultipleInvocations: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackMultipleInvocations-TypeScript + FunctionName: WaitforCallbackMultipleInvocations-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-multiple-invocations.handler Runtime: nodejs22.x @@ -1944,7 +1714,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1956,7 +1726,7 @@ Resources: WaitForCallbackNested: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackNested-TypeScript + FunctionName: WaitforCallback-NestedContexts-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-nested.handler Runtime: nodejs22.x @@ -1969,7 +1739,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -1981,7 +1751,7 @@ Resources: WaitForCallbackSerdes: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackSerdes-TypeScript + FunctionName: WaitforCallback-CustomSerdes-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-serdes.handler Runtime: nodejs22.x @@ -1994,7 +1764,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -2006,7 +1776,7 @@ Resources: WaitForCallbackSubmitterFailureCatchable: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackSubmitterFailureCatchable-TypeScript + FunctionName: WaitforCallback-SubmitterFailureCatchable-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-submitter-failure-catchable.handler Runtime: nodejs22.x @@ -2019,7 +1789,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -2031,20 +1801,20 @@ Resources: WaitForCallbackSubmitterRetrySuccess: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackSubmitterRetrySuccess-TypeScript + FunctionName: WaitforCallback-SubmitterRetrySuccess-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-submitter-retry-success.handler Runtime: nodejs22.x Architectures: - x86_64 MemorySize: 128 - Timeout: 120 + Timeout: 60 Role: Fn::GetAtt: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -2056,7 +1826,7 @@ Resources: WaitForCallbackTimeout: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCallbackTimeout-TypeScript + FunctionName: WaitforCallback-Timeout-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-callback-timeout.handler Runtime: nodejs22.x @@ -2069,7 +1839,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: @@ -2081,7 +1851,7 @@ Resources: WaitForCondition: Type: AWS::Serverless::Function Properties: - FunctionName: WaitForCondition-TypeScript + FunctionName: WaitforCondition-22x-NodeJS-Local CodeUri: ./dist Handler: wait-for-condition.handler Runtime: nodejs22.x @@ -2094,57 +1864,7 @@ Resources: - DurableFunctionRole - Arn DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - WaitNamed: - Type: AWS::Serverless::Function - Properties: - FunctionName: WaitNamed-TypeScript - CodeUri: ./dist - Handler: wait-named.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 - RetentionPeriodInDays: 7 - Environment: - Variables: - AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 - DURABLE_VERBOSE_MODE: "false" - DURABLE_EXAMPLES_VERBOSE: "true" - Metadata: - SkipBuild: "True" - WaitUnawaited: - Type: AWS::Serverless::Function - Properties: - FunctionName: WaitUnawaited-TypeScript - CodeUri: ./dist - Handler: wait-unawaited.handler - Runtime: nodejs22.x - Architectures: - - x86_64 - MemorySize: 128 - Timeout: 60 - Role: - Fn::GetAtt: - - DurableFunctionRole - - Arn - DurableConfig: - ExecutionTimeout: 3600 + ExecutionTimeout: 60 RetentionPeriodInDays: 7 Environment: Variables: From 8038675b7115d39c237746df4c046c6e5acac10f Mon Sep 17 00:00:00 2001 From: Anthony Ting Date: Mon, 8 Dec 2025 15:47:17 -0800 Subject: [PATCH 3/4] migrate generate-sam-template to typescript --- .../package.json | 2 +- .../rollup.config.mjs | 5 + .../__tests__/generate-sam-template.test.ts | 60 ++-- ...m-template.js => generate-sam-template.ts} | 108 ++----- .../template.yml | 275 ++++++++++++++++++ .../tsconfig.build.json | 4 + 6 files changed, 346 insertions(+), 108 deletions(-) rename packages/aws-durable-execution-sdk-js-examples/{src => scripts}/__tests__/generate-sam-template.test.ts (68%) rename packages/aws-durable-execution-sdk-js-examples/scripts/{generate-sam-template.js => generate-sam-template.ts} (68%) create mode 100644 packages/aws-durable-execution-sdk-js-examples/tsconfig.build.json diff --git a/packages/aws-durable-execution-sdk-js-examples/package.json b/packages/aws-durable-execution-sdk-js-examples/package.json index 4ec65ca3..6f9facf6 100644 --- a/packages/aws-durable-execution-sdk-js-examples/package.json +++ b/packages/aws-durable-execution-sdk-js-examples/package.json @@ -36,7 +36,7 @@ "copy-examples": "cp -r dist/examples/*.js dist/examples/*.js.map build/aws-durable-execution-sdk-js-examples", "copy-source": "mkdir -p build/source && cp -r src/examples/*.ts build/source/", "copy-catalog": "cp examples-catalog.json build/aws-durable-execution-sdk-js-examples/", - "generate-sam-template": "node scripts/generate-sam-template.js", + "generate-sam-template": "tsx scripts/generate-sam-template.ts", "test": "npm run unit-test", "test:integration": "NODE_ENV=integration jest --config jest.config.integration.js", "pretest-with-sdk-coverage": "node scripts/copy-sdk-source.js", diff --git a/packages/aws-durable-execution-sdk-js-examples/rollup.config.mjs b/packages/aws-durable-execution-sdk-js-examples/rollup.config.mjs index 91711b4e..74ae8444 100644 --- a/packages/aws-durable-execution-sdk-js-examples/rollup.config.mjs +++ b/packages/aws-durable-execution-sdk-js-examples/rollup.config.mjs @@ -7,6 +7,7 @@ import nodeResolve from "@rollup/plugin-node-resolve"; import json from "@rollup/plugin-json"; import commonJs from "@rollup/plugin-commonjs"; import path from "path"; +import { fileURLToPath } from "url"; const allExamplePaths = examplesCatalog.map((example) => path.resolve(example.path), @@ -43,6 +44,10 @@ export default defineConfig({ typescript({ // Disable incremental build to ensure examples catalog is parsed incremental: false, + tsconfig: path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "./tsconfig.build.json", + ), }), nodeResolve({ preferBuiltins: true, diff --git a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts b/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts similarity index 68% rename from packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts rename to packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts index 5ec772dc..f243db17 100644 --- a/packages/aws-durable-execution-sdk-js-examples/src/__tests__/generate-sam-template.test.ts +++ b/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts @@ -1,9 +1,35 @@ -const { +import { toPascalCase, - getExampleFiles, createFunctionResource, generateTemplate, -} = require("../../scripts/generate-sam-template.js"); + getExamplesCatalogJson, +} from "../generate-sam-template"; + +jest.mock("../generate-sam-template", () => ({ + ...jest.requireActual("../generate-sam-template"), + getExamplesCatalogJson: jest.fn(() => [ + { + name: "hello-world", + description: "A simple hello world example with no durable operations", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/hello-world/hello-world.ts", + handler: "hello-world.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, + }, + { + name: "steps-with-retry", + description: "An example demonstrating retry functionality with steps", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/step/steps-with-retry/steps-with-retry.ts", + handler: "steps-with-retry.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, + }, + ]), +})); describe("generate-sam-template", () => { describe("toPascalCase", () => { @@ -17,16 +43,10 @@ describe("generate-sam-template", () => { describe("createFunctionResource", () => { test("creates default function resource", () => { - const resource = createFunctionResource("hello-world", { - name: "Hello World", - description: "A simple hello world example with no durable operations", - path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/hello-world/hello-world.ts", - handler: "hello-world.handler", - durableConfig: { - ExecutionTimeout: 60, - RetentionPeriodInDays: 7, - }, - }); + const resource = createFunctionResource( + "hello-world", + getExamplesCatalogJson()[0], + ); expect(resource.Type).toBe("AWS::Serverless::Function"); expect(resource.Properties.FunctionName).toBe("hello-world"); @@ -38,16 +58,10 @@ describe("generate-sam-template", () => { }); test("creates function resource with custom config for steps-with-retry", () => { - const resource = createFunctionResource("steps-with-retry", { - name: "Steps With Retry", - description: "An example demonstrating retry functionality with steps", - path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/step/steps-with-retry/steps-with-retry.ts", - handler: "steps-with-retry.handler", - durableConfig: { - ExecutionTimeout: 60, - RetentionPeriodInDays: 7, - }, - }); + const resource = createFunctionResource( + "steps-with-retry", + getExamplesCatalogJson()[1], + ); expect(resource.Properties.FunctionName).toBe("steps-with-retry"); expect(resource.Properties.MemorySize).toBe(256); diff --git a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.ts similarity index 68% rename from packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js rename to packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.ts index 10b0e565..735930c1 100644 --- a/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.js +++ b/packages/aws-durable-execution-sdk-js-examples/scripts/generate-sam-template.ts @@ -1,11 +1,11 @@ #!/usr/bin/env node -const fs = require("fs"); -const path = require("path"); -const yaml = require("js-yaml"); +import fs from "fs"; +import path from "path"; +import yaml from "js-yaml"; // Configuration for different examples that need special settings -const EXAMPLE_CONFIGS = { +const EXAMPLE_CONFIGS: Record = { "steps-with-retry": { memorySize: 256, timeout: 300, @@ -29,90 +29,24 @@ const DEFAULT_CONFIG = { /** * Convert kebab-case filename to PascalCase resource name */ -function toPascalCase(filename) { +function toPascalCase(filename: string) { return filename .split("-") - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .map((word: string) => word.charAt(0).toUpperCase() + word.slice(1)) .join(""); } -/** - * Get TypeScript files from src/examples directory - */ -function getExampleFiles() { - const catalogPath = path.join( - __dirname, - "../src/utils/examples-catalog.json", - ); - - if (!fs.existsSync(catalogPath)) { - throw new Error(`Examples directory not found: ${catalogPath}`); - } - - const catalog = JSON.parse(fs.readFileSync(catalogPath, "utf8")); - - const exampleFiles = catalog.map((example) => example.name); - - // Read all directories in examples - const entries = fs.readdirSync(examplesDir, { withFileTypes: true }); - - for (const entry of entries) { - // Skip non-directories and special directories - if (!entry.isDirectory() || entry.name.startsWith(".")) { - continue; - } - - const dirPath = path.join(examplesDir, entry.name); - const subEntries = fs.readdirSync(dirPath, { withFileTypes: true }); - - // Check if this directory contains TypeScript files directly (standalone examples) - const directTsFiles = subEntries.filter( - (dirent) => - dirent.isFile() && - dirent.name.endsWith(".ts") && - !dirent.name.includes(".test"), - ); - - if (directTsFiles.length > 0) { - // Standalone example directory - directTsFiles.forEach((file) => { - exampleFiles.push(path.basename(file.name, ".ts")); - }); - } else { - // Nested structure - scan subdirectories - const subDirs = subEntries.filter((dirent) => dirent.isDirectory()); - - for (const subDir of subDirs) { - const subDirPath = path.join(dirPath, subDir.name); - const filesInSubDir = fs.readdirSync(subDirPath); - - // Find TypeScript files (excluding test files) - const tsFiles = filesInSubDir.filter( - (file) => file.endsWith(".ts") && !file.includes(".test."), - ); - - // Add each example file (without .ts extension) - tsFiles.forEach((file) => { - exampleFiles.push(path.basename(file, ".ts")); - }); - } - } - } - - return exampleFiles.sort(); // Sort for consistent output -} - /** * Create a Lambda function resource configuration */ function createFunctionResource( - resourceName, - catalog, + resourceName: string, + catalog: any, skipVerboseLogging = false, ) { const config = EXAMPLE_CONFIGS[resourceName] || DEFAULT_CONFIG; - const functionResource = { + const functionResource: Record = { Type: "AWS::Serverless::Function", Properties: { FunctionName: resourceName, @@ -145,10 +79,7 @@ function createFunctionResource( return functionResource; } -/** - * Generate the complete CloudFormation template - */ -function generateTemplate(skipVerboseLogging = false) { +function getExamplesCatalogJson() { const examplesCatalogPath = path.join( __dirname, "../src/utils/examples-catalog.json", @@ -166,7 +97,16 @@ function generateTemplate(skipVerboseLogging = false) { throw new Error("No TypeScript example files found in src/examples"); } - const template = { + return examplesCatalog; +} + +/** + * Generate the complete CloudFormation template + */ +function generateTemplate(skipVerboseLogging = false) { + const examplesCatalog = getExamplesCatalogJson(); + + const template: Record = { AWSTemplateFormatVersion: "2010-09-09", Description: "Durable Function examples written in TypeScript.", Transform: ["AWS::Serverless-2016-10-31"], @@ -213,7 +153,7 @@ function generateTemplate(skipVerboseLogging = false) { }; // Generate resources for each example file - examplesCatalog.forEach((catalog) => { + examplesCatalog.forEach((catalog: { name: string; handler: string }) => { const resourceName = catalog.name.replace(/\s/g, "") + `-22x-NodeJS-Local`; template.Resources[ toPascalCase(catalog.handler.slice(0, -".handler".length)) @@ -262,7 +202,7 @@ function main() { if (skipVerboseLogging) { console.log("🔇 Verbose logging disabled"); } - } catch (error) { + } catch (error: any) { console.error("❌ Error generating template.yml:", error.message); process.exit(1); } @@ -273,9 +213,9 @@ if (require.main === module) { main(); } -module.exports = { +export { generateTemplate, - getExampleFiles, toPascalCase, createFunctionResource, + getExamplesCatalogJson, }; diff --git a/packages/aws-durable-execution-sdk-js-examples/template.yml b/packages/aws-durable-execution-sdk-js-examples/template.yml index 6e16a39f..7db00556 100644 --- a/packages/aws-durable-execution-sdk-js-examples/template.yml +++ b/packages/aws-durable-execution-sdk-js-examples/template.yml @@ -725,6 +725,56 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + MapFailureThresholdExceededCount: + Type: AWS::Serverless::Function + Properties: + FunctionName: Mapfailurethresholdexceededcount-22x-NodeJS-Local + CodeUri: ./dist + Handler: map-failure-threshold-exceeded-count.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" + MapFailureThresholdExceededPercentage: + Type: AWS::Serverless::Function + Properties: + FunctionName: Mapfailurethresholdexceededpercentage-22x-NodeJS-Local + CodeUri: ./dist + Handler: map-failure-threshold-exceeded-percentage.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" MapLargeScale: Type: AWS::Serverless::Function Properties: @@ -750,6 +800,81 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + MapMinSuccessful: + Type: AWS::Serverless::Function + Properties: + FunctionName: MapminSuccessful-22x-NodeJS-Local + CodeUri: ./dist + Handler: map-min-successful.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" + MapToleratedFailureCount: + Type: AWS::Serverless::Function + Properties: + FunctionName: MaptoleratedFailureCount-22x-NodeJS-Local + CodeUri: ./dist + Handler: map-tolerated-failure-count.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" + MapToleratedFailurePercentage: + Type: AWS::Serverless::Function + Properties: + FunctionName: MaptoleratedFailurePercentage-22x-NodeJS-Local + CodeUri: ./dist + Handler: map-tolerated-failure-percentage.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" MapCompletionConfigIssue: Type: AWS::Serverless::Function Properties: @@ -873,6 +998,56 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + ParallelFailureThresholdExceededCount: + Type: AWS::Serverless::Function + Properties: + FunctionName: Parallelfailurethresholdexceededcount-22x-NodeJS-Local + CodeUri: ./dist + Handler: parallel-failure-threshold-exceeded-count.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" + ParallelFailureThresholdExceededPercentage: + Type: AWS::Serverless::Function + Properties: + FunctionName: Parallelfailurethresholdexceededpercentage-22x-NodeJS-Local + CodeUri: ./dist + Handler: parallel-failure-threshold-exceeded-percentage.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" ParallelHeterogeneous: Type: AWS::Serverless::Function Properties: @@ -898,6 +1073,31 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + ParallelMinSuccessful: + Type: AWS::Serverless::Function + Properties: + FunctionName: ParallelminSuccessful-22x-NodeJS-Local + CodeUri: ./dist + Handler: parallel-min-successful.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" ParallelMinSuccessfulCallback: Type: AWS::Serverless::Function Properties: @@ -923,6 +1123,56 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + ParallelToleratedFailureCount: + Type: AWS::Serverless::Function + Properties: + FunctionName: ParalleltoleratedFailureCount-22x-NodeJS-Local + CodeUri: ./dist + Handler: parallel-tolerated-failure-count.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" + ParallelToleratedFailurePercentage: + Type: AWS::Serverless::Function + Properties: + FunctionName: ParalleltoleratedFailurePercentage-22x-NodeJS-Local + CodeUri: ./dist + Handler: parallel-tolerated-failure-percentage.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" ParallelWait: Type: AWS::Serverless::Function Properties: @@ -1273,6 +1523,31 @@ Resources: DURABLE_EXAMPLES_VERBOSE: "true" Metadata: SkipBuild: "True" + SerdeBasic: + Type: AWS::Serverless::Function + Properties: + FunctionName: BasicSerdeswithcreateClassSerdes-22x-NodeJS-Local + CodeUri: ./dist + Handler: serde-basic.handler + Runtime: nodejs22.x + Architectures: + - x86_64 + MemorySize: 128 + Timeout: 60 + Role: + Fn::GetAtt: + - DurableFunctionRole + - Arn + DurableConfig: + ExecutionTimeout: 60 + RetentionPeriodInDays: 7 + Environment: + Variables: + AWS_ENDPOINT_URL_LAMBDA: http://host.docker.internal:5000 + DURABLE_VERBOSE_MODE: "false" + DURABLE_EXAMPLES_VERBOSE: "true" + Metadata: + SkipBuild: "True" SimpleExecution: Type: AWS::Serverless::Function Properties: diff --git a/packages/aws-durable-execution-sdk-js-examples/tsconfig.build.json b/packages/aws-durable-execution-sdk-js-examples/tsconfig.build.json new file mode 100644 index 00000000..b011d031 --- /dev/null +++ b/packages/aws-durable-execution-sdk-js-examples/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["scripts"] +} From 95662156c10267ebedab34ae9b8d74f66c04a0f1 Mon Sep 17 00:00:00 2001 From: Anthony Ting Date: Mon, 8 Dec 2025 15:55:33 -0800 Subject: [PATCH 4/4] fix mocking for examples catalog --- .../__tests__/generate-sam-template.test.ts | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts b/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts index f243db17..9358aefe 100644 --- a/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts +++ b/packages/aws-durable-execution-sdk-js-examples/scripts/__tests__/generate-sam-template.test.ts @@ -5,30 +5,32 @@ import { getExamplesCatalogJson, } from "../generate-sam-template"; -jest.mock("../generate-sam-template", () => ({ - ...jest.requireActual("../generate-sam-template"), - getExamplesCatalogJson: jest.fn(() => [ - { - name: "hello-world", - description: "A simple hello world example with no durable operations", - path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/hello-world/hello-world.ts", - handler: "hello-world.handler", - durableConfig: { - ExecutionTimeout: 60, - RetentionPeriodInDays: 7, +jest.mock("fs", () => ({ + existsSync: jest.fn(() => true), + readFileSync: jest.fn(() => + JSON.stringify([ + { + name: "hello-world", + description: "A simple hello world example with no durable operations", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/hello-world/hello-world.ts", + handler: "hello-world.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, }, - }, - { - name: "steps-with-retry", - description: "An example demonstrating retry functionality with steps", - path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/step/steps-with-retry/steps-with-retry.ts", - handler: "steps-with-retry.handler", - durableConfig: { - ExecutionTimeout: 60, - RetentionPeriodInDays: 7, + { + name: "steps-with-retry", + description: "An example demonstrating retry functionality with steps", + path: "aws-durable-execution-sdk-js/packages/aws-durable-execution-sdk-js-examples/src/examples/step/steps-with-retry/steps-with-retry.ts", + handler: "steps-with-retry.handler", + durableConfig: { + ExecutionTimeout: 60, + RetentionPeriodInDays: 7, + }, }, - }, - ]), + ]), + ), })); describe("generate-sam-template", () => {