{
  "version": 3,
  "sources": ["../../../src/cdc/reducer.ts"],
  "sourcesContent": ["import type {\n  ChangeDataCaptureReducerConfig,\n  Model,\n} from '@code-like-a-carpenter/foundation-intermediate-representation';\n\nimport type {Config} from '../config.ts';\nimport {combineFragments} from '../fragments/combine-fragments.ts';\nimport type {ServerlessApplicationModel} from '../types.ts';\n\nimport {makeHandler} from './handler.ts';\n\n/** Generates CDC config for a model */\nexport function defineReducer(\n  config: Config,\n  model: Model,\n  cdc: ChangeDataCaptureReducerConfig\n): {\n  fragment: ServerlessApplicationModel;\n  stack: ServerlessApplicationModel;\n} {\n  const {\n    actionsModuleId,\n    handlerImportName,\n    handlerModuleId,\n    multiReduce,\n    runtimeModuleId,\n    sourceModelName,\n    targetModelName,\n  } = cdc;\n  const {dependenciesModuleId} = model.table;\n\n  const factoryName = multiReduce ? 'makeMultiReducer' : 'makeReducer';\n\n  const code = `// This file is generated. Do not edit by hand.\nimport {${factoryName}} from '${runtimeModuleId}';\nimport {${handlerImportName}} from '${handlerModuleId}';\nimport {\n  ${sourceModelName},\n  ${targetModelName},\n  create${targetModelName},\n  unmarshall${sourceModelName},\n  update${targetModelName},\n  Create${targetModelName}Input,\n  Update${targetModelName}Input\n} from '${actionsModuleId}';\nimport * as dependencies from '${dependenciesModuleId}';\n\nexport const handler = ${factoryName}<\n${sourceModelName},\n${targetModelName},\nCreate${targetModelName}Input,\nUpdate${targetModelName}Input\n>(\n  ${handlerImportName},\n  {\n    createTargetModel: create${targetModelName},\n    unmarshallSourceModel: unmarshall${sourceModelName},\n    updateTargetModel: update${targetModelName}\n  },\n  dependencies\n);\n`;\n\n  const {fragment, stack} = makeHandler(config, model, cdc, code);\n\n  return {fragment: combineFragments(fragment), stack};\n}\n"],
  "mappings": ";AAMA,SAAQ,wBAAuB;AAG/B,SAAQ,mBAAkB;AAGnB,SAAS,cACd,QACA,OACA,KAIA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAC,qBAAoB,IAAI,MAAM;AAErC,QAAM,cAAc,cAAc,qBAAqB;AAEvD,QAAM,OAAO;AAAA,UACL,WAAW,WAAW,eAAe;AAAA,UACrC,iBAAiB,WAAW,eAAe;AAAA;AAAA,IAEjD,eAAe;AAAA,IACf,eAAe;AAAA,UACT,eAAe;AAAA,cACX,eAAe;AAAA,UACnB,eAAe;AAAA,UACf,eAAe;AAAA,UACf,eAAe;AAAA,UACf,eAAe;AAAA,iCACQ,oBAAoB;AAAA;AAAA,yBAE5B,WAAW;AAAA,EAClC,eAAe;AAAA,EACf,eAAe;AAAA,QACT,eAAe;AAAA,QACf,eAAe;AAAA;AAAA,IAEnB,iBAAiB;AAAA;AAAA,+BAEU,eAAe;AAAA,uCACP,eAAe;AAAA,+BACvB,eAAe;AAAA;AAAA;AAAA;AAAA;AAM5C,QAAM,EAAC,UAAU,MAAK,IAAI,YAAY,QAAQ,OAAO,KAAK,IAAI;AAE9D,SAAO,EAAC,UAAU,iBAAiB,QAAQ,GAAG,MAAK;AACrD;",
  "names": []
}
