{
  "version": 3,
  "sources": ["../../../src/stacks/dispatcher.ts"],
  "sourcesContent": ["import type {TableWithCdc} from '@code-like-a-carpenter/foundation-intermediate-representation';\n\nimport type {Resource1} from '../__generated__/json-schemas/serverless-application-model.ts';\nimport type {Config} from '../config.ts';\nimport {combineFragments} from '../fragments/combine-fragments.ts';\nimport {makeLogGroup} from '../fragments/log-group.ts';\nimport type {ServerlessApplicationModel} from '../types.ts';\n\nexport function isDispatcherStack(resourceName: string) {\n  return resourceName.startsWith('FNDNSTD');\n}\n\nexport function makeDispatcherStackName(table: TableWithCdc): string {\n  // Foundation Nested Stack Table Dispatcher\n  return `FNDNSTD${table.dispatcherConfig.functionName}`;\n}\n\nexport function makeDispatcherStack(\n  config: Config\n): ServerlessApplicationModel {\n  const functionName = 'Function';\n\n  const fn: Resource1 = {\n    Metadata: {\n      BuildMethod: 'esbuild',\n      buildProperties: {\n        EntryPoints: ['./index'],\n        External: config.buildProperties.external,\n        Minify: config.buildProperties.minify,\n        Sourcemap: config.buildProperties.sourcemap,\n        Target: config.buildProperties.target,\n      },\n    },\n    Properties: {\n      // @ts-expect-error - typedef does not know about intrinsic functions\n      CodeUri: {Ref: 'CodeUri'},\n      Events: {\n        Stream: {\n          Properties: {\n            BatchSize: {Ref: 'BatchSize'},\n            FunctionResponseTypes: ['ReportBatchItemFailures'],\n            MaximumRetryAttempts: {Ref: 'MaximumRetryAttempts'},\n            StartingPosition: 'TRIM_HORIZON',\n            Stream: {Ref: 'StreamArn'},\n          },\n          Type: 'DynamoDB',\n        },\n      },\n      Handler: 'index.handler',\n      MemorySize: {Ref: 'MemorySize'},\n      Policies: [\n        'AWSLambdaBasicExecutionRole',\n        'AWSLambda_ReadOnlyAccess',\n        'AWSXrayWriteOnlyAccess',\n        'CloudWatchLambdaInsightsExecutionRolePolicy',\n        {CloudWatchPutMetricPolicy: {}},\n        {\n          EventBridgePutEventsPolicy: {\n            EventBusName: {Ref: 'EventBus'},\n          },\n        },\n      ],\n      Runtime: 'nodejs22.x',\n      Timeout: {Ref: 'Timeout'},\n      Tracing: 'Active',\n    },\n    Type: 'AWS::Serverless::Function',\n  };\n\n  return combineFragments(makeLogGroup({functionName}), {\n    AWSTemplateFormatVersion: '2010-09-09',\n    Outputs: {\n      FunctionName: {\n        Export: {\n          // eslint-disable-next-line no-template-curly-in-string\n          Name: {'Fn::Sub': '${AWS::StackName}-FunctionName'},\n        },\n        Value: {Ref: 'Function'},\n      },\n    },\n    Parameters: {\n      BatchSize: {\n        Type: 'Number',\n      },\n      CodeUri: {\n        Type: 'String',\n      },\n      EventBus: {\n        Type: 'String',\n      },\n      MaximumRetryAttempts: {\n        Type: 'Number',\n      },\n      MemorySize: {\n        Type: 'Number',\n      },\n      StreamArn: {\n        Type: 'String',\n      },\n      Timeout: {\n        Type: 'Number',\n      },\n    },\n    Resources: {\n      [functionName]: fn,\n    },\n    Transform: 'AWS::Serverless-2016-10-31',\n  });\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,+BAA+B;AAC/B,uBAA2B;AAGpB,SAAS,kBAAkB,cAAsB;AACtD,SAAO,aAAa,WAAW,SAAS;AAC1C;AAEO,SAAS,wBAAwB,OAA6B;AAEnE,SAAO,UAAU,MAAM,iBAAiB,YAAY;AACtD;AAEO,SAAS,oBACd,QAC4B;AAC5B,QAAM,eAAe;AAErB,QAAM,KAAgB;AAAA,IACpB,UAAU;AAAA,MACR,aAAa;AAAA,MACb,iBAAiB;AAAA,QACf,aAAa,CAAC,SAAS;AAAA,QACvB,UAAU,OAAO,gBAAgB;AAAA,QACjC,QAAQ,OAAO,gBAAgB;AAAA,QAC/B,WAAW,OAAO,gBAAgB;AAAA,QAClC,QAAQ,OAAO,gBAAgB;AAAA,MACjC;AAAA,IACF;AAAA,IACA,YAAY;AAAA;AAAA,MAEV,SAAS,EAAC,KAAK,UAAS;AAAA,MACxB,QAAQ;AAAA,QACN,QAAQ;AAAA,UACN,YAAY;AAAA,YACV,WAAW,EAAC,KAAK,YAAW;AAAA,YAC5B,uBAAuB,CAAC,yBAAyB;AAAA,YACjD,sBAAsB,EAAC,KAAK,uBAAsB;AAAA,YAClD,kBAAkB;AAAA,YAClB,QAAQ,EAAC,KAAK,YAAW;AAAA,UAC3B;AAAA,UACA,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,YAAY,EAAC,KAAK,aAAY;AAAA,MAC9B,UAAU;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAC,2BAA2B,CAAC,EAAC;AAAA,QAC9B;AAAA,UACE,4BAA4B;AAAA,YAC1B,cAAc,EAAC,KAAK,WAAU;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,SAAS,EAAC,KAAK,UAAS;AAAA,MACxB,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,EACR;AAEA,aAAO,+CAAiB,+BAAa,EAAC,aAAY,CAAC,GAAG;AAAA,IACpD,0BAA0B;AAAA,IAC1B,SAAS;AAAA,MACP,cAAc;AAAA,QACZ,QAAQ;AAAA;AAAA,UAEN,MAAM,EAAC,WAAW,iCAAgC;AAAA,QACpD;AAAA,QACA,OAAO,EAAC,KAAK,WAAU;AAAA,MACzB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,sBAAsB;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,MACA,YAAY;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,CAAC,YAAY,GAAG;AAAA,IAClB;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;",
  "names": []
}
