{
  "version": 3,
  "sources": ["../../../src/cdc/table.ts"],
  "sourcesContent": ["import type {TableWithCdc} from '@code-like-a-carpenter/foundation-intermediate-representation';\n\nimport type {Resource7} from '../__generated__/json-schemas/serverless-application-model.ts';\nimport type {Config} from '../config.ts';\nimport {combineFragments} from '../fragments/combine-fragments.ts';\nimport {writeLambda} from '../fragments/lambda.ts';\nimport {\n  makeDispatcherStack,\n  makeDispatcherStackName,\n} from '../stacks/dispatcher.ts';\nimport type {ServerlessApplicationModel} from '../types.ts';\n\n/** Generates CDC config for a table */\nexport function defineTableCdc(\n  table: TableWithCdc,\n  config: Config\n): {\n  fragment: ServerlessApplicationModel;\n  stack: ServerlessApplicationModel;\n} {\n  const {dispatcherConfig, dependenciesModuleId, tableName} = table;\n\n  const {\n    batchSize,\n    filename,\n    directory,\n    maximumRetryAttempts,\n    memorySize,\n    nestedStackLocation,\n    runtimeModuleId,\n    timeout,\n  } = dispatcherConfig;\n\n  writeLambda(\n    directory,\n    `// This file is generated. Do not edit by hand.\n\nimport {makeDynamoDBStreamDispatcher} from '${runtimeModuleId}';\nimport * as dependencies from '${dependenciesModuleId}';\n\nexport const handler = makeDynamoDBStreamDispatcher({\n  ...dependencies,\n  tableName: '${tableName}',\n});\n`\n  );\n\n  const stack: Resource7 = {\n    Properties: {\n      Location: nestedStackLocation,\n      Parameters: {\n        BatchSize: batchSize,\n        CodeUri: filename,\n        EventBus: 'default',\n        MaximumRetryAttempts: maximumRetryAttempts,\n        MemorySize: memorySize,\n        StreamArn: {'Fn::GetAtt': [tableName, 'StreamArn']},\n        Timeout: timeout,\n      },\n    },\n    Type: 'AWS::Serverless::Application',\n  };\n\n  const stackName = makeDispatcherStackName(table);\n\n  const fragment = combineFragments({\n    Resources: {\n      [stackName]: stack,\n    },\n  });\n\n  const dispatcherStack = makeDispatcherStack(config);\n\n  return {fragment, stack: dispatcherStack};\n}\n"],
  "mappings": ";AAIA,SAAQ,wBAAuB;AAC/B,SAAQ,mBAAkB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAIA,SAAS,eACd,OACA,QAIA;AACA,QAAM,EAAC,kBAAkB,sBAAsB,UAAS,IAAI;AAE5D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ;AAAA,IACE;AAAA,IACA;AAAA;AAAA,8CAE0C,eAAe;AAAA,iCAC5B,oBAAoB;AAAA;AAAA;AAAA;AAAA,gBAIrC,SAAS;AAAA;AAAA;AAAA,EAGvB;AAEA,QAAM,QAAmB;AAAA,IACvB,YAAY;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,QACV,WAAW;AAAA,QACX,SAAS;AAAA,QACT,UAAU;AAAA,QACV,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,WAAW,EAAC,cAAc,CAAC,WAAW,WAAW,EAAC;AAAA,QAClD,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM;AAAA,EACR;AAEA,QAAM,YAAY,wBAAwB,KAAK;AAE/C,QAAM,WAAW,iBAAiB;AAAA,IAChC,WAAW;AAAA,MACT,CAAC,SAAS,GAAG;AAAA,IACf;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,oBAAoB,MAAM;AAElD,SAAO,EAAC,UAAU,OAAO,gBAAe;AAC1C;",
  "names": []
}
