@izara_project/izara-core-generate-service-code 1.0.53 → 1.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/package.json +1 -2
  2. package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +1 -1
  3. package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +23 -0
  4. package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +16 -16
  5. package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +11 -25
  6. package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +1 -1
  7. package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +3 -3
  8. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +13 -0
  9. package/src/codeGenerators/app/sls_yaml/templates/SharedResource_Yaml.ejs +6 -2
  10. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +10 -44
  11. package/src/codeGenerators/app/src/generatedCode/Flow/FlowEndpoints/EndpointsGenerator.js +119 -0
  12. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +91 -52
  13. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationshipEndpoints/RelationshipFlowGenerator.js +20 -16
  14. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +2 -9
  15. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +1 -7
  16. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/BaseSqsHandler.js +3 -3
  17. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ConfirmAfterUploadS3Generator.js +2 -4
  18. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/CreateObjectGenerator.js +2 -4
  19. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/CreatePreSignUrlGenerator.js +2 -4
  20. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ProcessAfterUploadS3Generator.js +5 -5
  21. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ReservedLimitGenerator.js +2 -4
  22. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowEntryPointBase.js +6 -6
  23. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowMainFunctionBase.js +3 -3
  24. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowStepBase.js +11 -11
  25. package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/triggerCacheBase.js +1 -7
  26. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +18 -15
  27. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_HdrDsq.js → PaginateProcessLogical_HdrDsq.ejs} +1 -1
  28. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +127 -149
  29. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +16 -8
  30. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +17 -9
  31. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +8 -8
  32. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +60 -43
  33. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +151 -151
  34. package/src/codeGenerators/resource/sls_yaml/templates/crud/ResourceYaml.ejs +10 -10
  35. package/src/core/renderTemplateFile.js +22 -0
  36. package/src/generateCode.js +146 -81
  37. package/src/generateIntTest.js +45 -69
  38. package/src/generateResourceIntTest.js +22 -47
  39. package/src/intTestGeneratorShared.js +36 -0
  40. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +12 -10
  41. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +6 -5
  42. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/data.js +0 -119
  43. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/template.ejs +0 -89
  44. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/statusFieldTemplate.ejs +0 -30
  45. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/storedCacheTemplate.ejs +0 -26
  46. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/triggerCacheTemplate.ejs +0 -44
  47. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/index.js +0 -80
  48. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/functionYaml/data.js +0 -129
  49. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/functionYaml/template.ejs +0 -17
  50. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/handler/data.js +0 -63
  51. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/mainFunction/data.js +0 -54
  52. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/mainFunction/template.ejs +0 -129
  53. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/queue/data.js +0 -63
  54. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/queue/template.ejs +0 -45
  55. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/functionYaml/data.js +0 -117
  56. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/functionYaml/template.ejs +0 -20
  57. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/handler/data.js +0 -64
  58. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/mainFunction/data.js +0 -64
  59. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/mainFunction/template.ejs +0 -131
  60. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/functionYaml/data.js +0 -122
  61. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/functionYaml/template.ejs +0 -17
  62. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/handler/data.js +0 -66
  63. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/handler/template.ejs +0 -99
  64. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/mainFunction/data.js +0 -64
  65. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/mainFunction/template.ejs +0 -82
  66. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/sns-sqs/data.js +0 -70
  67. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/sns-sqs/template.ejs +0 -49
  68. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/functionYaml/data.js +0 -139
  69. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/functionYaml/template.ejs +0 -18
  70. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/handler/data.js +0 -63
  71. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/mainFunction/data.js +0 -63
  72. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/mainFunction/template.ejs +0 -262
  73. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/queue/data.js +0 -63
  74. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/queue/template.ejs +0 -45
  75. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/functionYaml/data.js +0 -146
  76. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/functionYaml/template.ejs +0 -14
  77. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/handler/data.js +0 -64
  78. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/mainFunction/data.js +0 -59
  79. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/mainFunction/template.ejs +0 -173
  80. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/sqs/data.js +0 -67
  81. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/sqs/template.ejs +0 -53
  82. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/functionYml/HdrS3/data.js +0 -140
  83. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/functionYml/HdrS3/template.ejs +0 -25
  84. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/handler/handlerS3/data.js +0 -49
  85. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/handler/handlerS3/template.ejs +0 -50
  86. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/ProcessCsvtemplate.ejs +0 -182
  87. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/data.js +0 -49
  88. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/template.ejs +0 -66
  89. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/data.js +0 -77
  90. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/dsqTemplatePath.ejs +0 -32
  91. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/s3Template.ejs +0 -59
  92. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/S3/data.js +0 -61
  93. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/S3/template.ejs +0 -13
  94. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/sns-out/data.js +0 -70
  95. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/websocket/dynamoDb/ReservedTableData.js +0 -69
  96. package/src/codeGenerators/app/src/generatedCode/Flow/SystemFlowDescriptorBuilder.js +0 -151
  97. /package/src/codeGenerators/app/{src/generatedCode/FindData → sls_yaml}/templates/FindData_Yaml.ejs +0 -0
  98. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared/endpoint → FlowEndpoints/templates}/FlowEndpointBeforeLogical_Main.ejs +0 -0
  99. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEndpoint_HdrWbs.ejs +0 -0
  100. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEndpoint_Main.ejs +0 -0
  101. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEntryPoint_Main.ejs +0 -0
  102. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowMain_Wbs.ejs +0 -0
  103. /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/confirmReserved/handler/template.ejs → s3/ConfirmReserved_HdrSqs.ejs} +0 -0
  104. /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/createObject/handler/template.ejs → s3/CreateObject_HdrWbs.ejs} +0 -0
  105. /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/preSignUrl/createPreSignUrl/handler/template.ejs → s3/CreatePreSignUrl_HdrSqs.ejs} +0 -0
  106. /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/preSignUrl/reservedLimit/handler/template.ejs → s3/ReservedLimit_HdrSqs.ejs} +0 -0
  107. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/FlowEndpointComplete_Main.ejs +0 -0
  108. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/FlowStep_Main.ejs +0 -0
  109. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -0
  110. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -0
  111. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -0
  112. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -0
  113. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/templateAwaitingStep.ejs +0 -0
  114. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/templateSendPlugin.ejs +0 -0
  115. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/eventBridge.js +0 -0
  116. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/extTopic.js +0 -0
  117. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/lambdaSyncApi.js +0 -0
  118. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/lambdaSyncInv.js +0 -0
  119. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/ownTopic.js +0 -0
  120. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/registry.js +0 -0
  121. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3.js +0 -0
  122. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrApi.ejs +0 -0
  123. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrInv.ejs +0 -0
  124. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrSqs.ejs +0 -0
  125. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/eventTypes.js +0 -0
  126. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowClassifier.js +0 -0
  127. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowNaming.js +0 -0
  128. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowSelection.js +0 -0
  129. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowStepNormalizer.js +0 -0
  130. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowValidator.js +0 -0
  131. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/registry.js +0 -0
  132. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -0
  133. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/CheckTriggerCache_Main.ejs +0 -0
  134. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -0
  135. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/ProcessTriggerCache_Main.ejs +0 -0
  136. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -0
  137. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -0
  138. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_Main.ejs +0 -0
  139. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -0
  140. /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/yaml/SharedFunctionSqs_Yaml.ejs +0 -0
  141. /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_HdrSqs.js → PaginateProcessLogical_HdrSqs.ejs} +0 -0
  142. /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_Main.js → PaginateProcessLogical_Main.ejs} +0 -0
  143. /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{ProcessLogical_HdrSqs.js → ProcessLogical_HdrSqs.ejs} +0 -0
  144. /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{ProcessLogical_Main.js → ProcessLogical_Main.ejs} +0 -0
  145. /package/src/codeGenerators/app/src/generatedCode/libs/templates/{Consts.js → Consts.ejs} +0 -0
  146. /package/src/codeGenerators/app/src/generatedCode/libs/templates/{GenerateCodeLibs.js → GenerateCodeLibs.ejs} +0 -0
@@ -2,171 +2,171 @@ import path from 'path';
2
2
  import fs from 'fs/promises';
3
3
  import { fileURLToPath } from 'url';
4
4
  import ejs from 'ejs';
5
- import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_internal/shared/flowSelection.js';
5
+
6
+ import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
6
7
 
7
8
  const __filename = fileURLToPath(import.meta.url);
8
9
  const __dirname = path.dirname(__filename);
9
10
 
10
11
  async function appendToFile(filePath, content) {
11
- try {
12
- await fs.mkdir(path.dirname(filePath), { recursive: true });
13
- await fs.appendFile(filePath, content + '\n', 'utf-8');
14
- } catch (error) {
15
- console.error(`[Error] Failed to append to file: ${filePath}`, error);
16
- }
12
+ try {
13
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
14
+ await fs.appendFile(filePath, `${content}\n`, 'utf-8');
15
+ } catch (error) {
16
+ console.error(`[Error] Failed to append file: ${filePath}`, error);
17
+ }
17
18
  }
18
19
 
19
20
  export async function generateFlowResourceYaml(allSchemas, options) {
20
- console.log(' [FlowResourceYamlGenerator] Generating SQS/SNS YAML resources for flows...');
21
-
22
- const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
23
- await fs.mkdir(resourceYamlDir, { recursive: true });
24
-
25
- const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
26
- const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
27
-
28
- const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
29
- const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
30
-
31
- let generatedCount = 0;
32
- const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
33
-
34
- const flows = getFlowsForGeneration(allSchemas);
35
- for (const flow of flows) {
36
- const flowTag = flow.flowTag;
37
-
38
- // Generate In-Queue resources for any flow that listens on its own topic
39
- if (flow.event && flow.event.includes('ownTopic')) {
40
- // Render main ResourceYaml.ejs (e.g., InCreate, CreateHdrSqs)
41
- const yamlContent = ejs.render(resourceYamlTpl, {
42
- queueName: flowTag
43
- });
44
- await appendToFile(yamlOutputPath, yamlContent);
45
- generatedCount++;
46
-
47
- // Check if there are beforeLogical configs for this flow
48
- const generateCodeConfigs = flows
49
- .filter(f => f.generatedCodeConfig && f.generatedCodeConfig.generatedCodeTag.toLowerCase() === flowTag.toLowerCase())
50
- .map(f => ({
51
- ...f.generatedCodeConfig,
52
- flowTag: f.flowTag
53
- }));
54
-
55
- const beforeLogicalConfigs = generateCodeConfigs.filter(c => c.codeHookTag === 'beforeLogical');
56
-
57
- if (beforeLogicalConfigs.length > 0) {
58
- // Collect unique flowTags (like ValidateUnitTrackedProperty) from the beforeLogical configs
59
- const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map(c => c.flowTag))];
60
-
61
- const beforeLogicalYamlContent = ejs.render(resourceBeforeLogicalYamlTpl, {
62
- queueName: `${flowTag}BeforeLogical`,
63
- flowTags: uniqueFlowTags
64
- });
65
-
66
- await appendToFile(yamlOutputPath, beforeLogicalYamlContent);
67
- generatedCount++;
68
- }
69
- } else if (flow.event && flow.event.includes('extTopic')) {
70
- // Custom flows using extTopic do not have ownTopic, but need an entry queue
71
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
72
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
73
- const yamlContent = ejs.render(resourceSqsYamlTpl, {
74
- queueName: `Process${flowTag}Sqs`
75
- });
76
- await appendToFile(yamlOutputPath, yamlContent);
77
- generatedCount++;
78
- }
79
-
80
- // Generate Complete queues for custom FlowSchema
81
- // Also generate queues for any flowStep that uses sqs, dsq, or extTopic
82
- if (flow.flowSteps && Array.isArray(flow.flowSteps)) {
83
- for (const stepConfig of flow.flowSteps) {
84
- const stepName = stepConfig.stepName;
85
- if (stepName === 'InTag') continue;
86
-
87
- const events = stepConfig.event || ['sqs'];
88
- for (const ev of events) {
89
- let queueName = flowTag + stepName;
90
- if (stepName === 'Complete') {
91
- queueName = flowTag + 'Complete';
92
- }
93
-
94
- if (ev === 'sqs' || ev === 'ownTopic') {
95
- // sqs and ownTopic create SNS Topic + Subscription + SQS Queue
96
- const yamlContent = ejs.render(resourceYamlTpl, {
97
- queueName: queueName
98
- });
99
- await appendToFile(yamlOutputPath, yamlContent);
100
- generatedCount++;
101
- } else if (ev === 'dsq' || ev === 'extTopic') {
102
- // extTopic and dsq create ONLY SQS Queue
103
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
104
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
105
- const yamlContent = ejs.render(resourceSqsYamlTpl, {
106
- queueName: queueName
107
- });
108
- await appendToFile(yamlOutputPath, yamlContent);
109
- generatedCount++;
110
- }
111
- }
112
- }
113
- }
21
+ console.log(' [FlowResourceYamlGenerator] Generating SQS/SNS YAML resources for flows...');
114
22
 
115
- // Generate SQS queues for S3 Event flows
116
- if (flow.event && flow.event.includes('s3')) {
117
- const queueNames = [
118
- `${flowTag}CreatePreSignUrlSqs`,
119
- `${flowTag}ReservedLimitSqs`
120
- ];
121
-
122
- for (const qName of queueNames) {
123
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
124
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
125
- const yamlContent = ejs.render(resourceSqsYamlTpl, {
126
- queueName: qName
127
- });
128
- await appendToFile(yamlOutputPath, yamlContent);
129
- generatedCount++;
130
- }
131
- }
23
+ const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
24
+ await fs.mkdir(resourceYamlDir, { recursive: true });
25
+
26
+ const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
27
+ const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
28
+ const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
29
+
30
+ const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
31
+ const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
32
+ const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
33
+
34
+ let generatedCount = 0;
35
+ const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
36
+ await fs.writeFile(yamlOutputPath, '', 'utf-8');
37
+
38
+ const generatedResources = new Set();
39
+
40
+ async function appendUnique(resourceKey, template, templateData) {
41
+ if (generatedResources.has(resourceKey)) return;
132
42
 
133
- // Generate Dsq queues for Relationship
134
- if (flow.isDynamicRelationshipType) {
135
- // Usually Relationship has dead-letter queue processing
136
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
137
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
138
- const queueName = flowTag + 'Dsq';
139
- const yamlContent = ejs.render(resourceSqsYamlTpl, {
140
- queueName: queueName
43
+ generatedResources.add(resourceKey);
44
+ const yamlContent = ejs.render(template, templateData);
45
+ await appendToFile(yamlOutputPath, yamlContent);
46
+ generatedCount++;
47
+ }
48
+
49
+ const flows = getFlowsForGeneration(allSchemas);
50
+
51
+ for (const flow of flows) {
52
+ const flowTag = flow.flowTag;
53
+
54
+ if (flow.event && flow.event.includes('ownTopic')) {
55
+ await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
56
+
57
+ const generateCodeConfigs = flows
58
+ .filter((candidate) => candidate.generatedCodeConfig
59
+ && candidate.generatedCodeConfig.generatedCodeTag?.toLowerCase() === flowTag.toLowerCase())
60
+ .map((candidate) => ({
61
+ ...candidate.generatedCodeConfig,
62
+ flowTag: candidate.flowTag
63
+ }));
64
+
65
+ const beforeLogicalConfigs = generateCodeConfigs.filter((config) => config.codeHookTag === 'beforeLogical');
66
+ if (beforeLogicalConfigs.length > 0) {
67
+ const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map((config) => config.flowTag))];
68
+ await appendUnique(`${flowTag}BeforeLogical`, resourceBeforeLogicalYamlTpl, {
69
+ queueName: `${flowTag}BeforeLogical`,
70
+ flowTags: uniqueFlowTags
71
+ });
72
+ }
73
+ } else if (flow.event && flow.event.includes('extTopic')) {
74
+ await appendUnique(`Process${flowTag}HdrSqs`, resourceSqsYamlTpl, {
75
+ queueName: `Process${flowTag}HdrSqs`
76
+ });
77
+ }
78
+
79
+ if (Array.isArray(flow.flowSteps)) {
80
+ for (const stepConfig of flow.flowSteps) {
81
+ const stepName = stepConfig.stepName;
82
+ if (stepName === 'InTag') continue;
83
+
84
+ const events = stepConfig.event || ['sqs'];
85
+ for (const ev of events) {
86
+ let queueName = `${flowTag}${stepName}`;
87
+ if (stepName === 'Complete') {
88
+ queueName = `${flowTag}Complete`;
89
+ }
90
+
91
+ if (ev === 'sqs' || ev === 'ownTopic') {
92
+ await appendUnique(queueName, resourceYamlTpl, { queueName });
93
+ } else if (ev === 'dsq' || ev === 'extTopic') {
94
+ await appendUnique(`${queueName}HdrDsq`, resourceSqsYamlTpl, {
95
+ queueName: `${queueName}HdrDsq`
141
96
  });
142
- await appendToFile(yamlOutputPath, yamlContent);
143
- generatedCount++;
97
+ }
144
98
  }
99
+ }
145
100
  }
146
101
 
147
- // Add System Queues
148
- const systemQueues = [
149
- 'ProcessLogical',
150
- 'PaginateProcessLogical',
151
- 'FindData',
152
- 'Register',
153
- 'WebSocket',
154
- 'CreateObjectComplete',
155
- 'UpdateNodeComplete',
156
- 'DeleteNodeComplete',
157
- 'GetNodeComplete'
158
- ];
159
-
160
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
161
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
162
-
163
- for (const sysQueue of systemQueues) {
164
- const yamlContent = ejs.render(resourceSqsYamlTpl, {
165
- queueName: sysQueue
166
- });
167
- await appendToFile(yamlOutputPath, yamlContent);
168
- generatedCount++;
102
+ if (flow.event && flow.event.includes('s3')) {
103
+ const queueNames = [
104
+ `${flowTag}CreatePreSignUrlHdrSqs`,
105
+ `${flowTag}ReservedLimitHdrSqs`
106
+ ];
107
+
108
+ for (const queueName of queueNames) {
109
+ await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
110
+ }
169
111
  }
170
112
 
171
- console.log(` [FlowResourceYamlGenerator] Appended ${generatedCount} sections to generated-sns-in-sqs.yml.`);
113
+ if (flow.isDynamicRelationshipType) {
114
+ const queueName = `${flowTag}HdrDsq`;
115
+ await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
116
+ }
117
+ }
118
+
119
+ const systemOwnTopicFlows = [
120
+ 'Create',
121
+ 'Update',
122
+ 'Delete',
123
+ 'CreateRelationship',
124
+ 'UpdateRelationship',
125
+ 'DeleteRelationship',
126
+ 'ChangeRelationship',
127
+ 'MoveRelationship',
128
+ 'CreateTargetRole',
129
+ 'DeleteTargetRole',
130
+ 'CreateRolePermissions',
131
+ 'DeleteRolePermissions',
132
+ 'CreateUserRole',
133
+ 'DeleteUserFromRole'
134
+ ];
135
+
136
+ for (const flowTag of systemOwnTopicFlows) {
137
+ await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
138
+ }
139
+
140
+ const relationshipActions = [
141
+ 'CreateRelationship',
142
+ 'UpdateRelationship',
143
+ 'DeleteRelationship',
144
+ 'GetRelationship',
145
+ 'ChangeRelationship',
146
+ 'MoveRelationship'
147
+ ];
148
+
149
+ for (const action of relationshipActions) {
150
+ const queueName = `${action}HdrDsq`;
151
+ await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
152
+ }
153
+
154
+ const systemQueues = [
155
+ 'ProcessLogical',
156
+ 'PaginateProcessLogical',
157
+ 'FindData',
158
+ 'Register',
159
+ 'WebSocket',
160
+ 'CreateObjectComplete',
161
+ 'UpdateNodeComplete',
162
+ 'DeleteNodeComplete',
163
+ 'GetNodeComplete'
164
+ ];
165
+
166
+ for (const sysQueue of systemQueues) {
167
+ const queueName = `${sysQueue}HdrSqs`;
168
+ await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
169
+ }
170
+
171
+ console.log(` [FlowResourceYamlGenerator] Appended ${generatedCount} sections to generated-sns-in-sqs.yml.`);
172
172
  }
@@ -10,30 +10,30 @@
10
10
  Type: AWS::SNS::Subscription
11
11
  Properties:
12
12
  TopicArn: !Ref In<%- queueName %>
13
- Endpoint: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- queueName %>Sqs"
13
+ Endpoint: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs"
14
14
  Protocol: "sqs"
15
15
 
16
16
  ##===== [Queue]
17
- <%- queueName %>Sqs:
17
+ <%- queueName %>HdrSqs:
18
18
  Type: "AWS::SQS::Queue"
19
19
  Properties:
20
- QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>Sqs
20
+ QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs
21
21
  RedrivePolicy:
22
22
  deadLetterTargetArn:
23
23
  Fn::GetAtt:
24
- - <%- queueName %>SqsDLQ
24
+ - <%- queueName %>HdrSqsDLQ
25
25
  - Arn
26
26
  maxReceiveCount: 3
27
27
  VisibilityTimeout: 120
28
28
 
29
29
  ##===== [Queue DLQ]
30
- <%- queueName %>SqsDLQ:
30
+ <%- queueName %>HdrSqsDLQ:
31
31
  Type: AWS::SQS::Queue
32
32
  Properties:
33
- QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>SqsDLQ
33
+ QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqsDLQ
34
34
 
35
35
  ##===== [Queue Policy]
36
- <%- queueName %>SqsPolicy:
36
+ <%- queueName %>HdrSqsPolicy:
37
37
  Type: AWS::SQS::QueuePolicy
38
38
  Properties:
39
39
  PolicyDocument:
@@ -44,11 +44,11 @@
44
44
  Principal: "*"
45
45
  Resource:
46
46
  Fn::GetAtt:
47
- - <%- queueName %>Sqs
47
+ - <%- queueName %>HdrSqs
48
48
  - Arn
49
49
  Action: "SQS:SendMessage"
50
50
  Queues:
51
- - Ref: <%- queueName %>Sqs
51
+ - Ref: <%- queueName %>HdrSqs
52
52
 
53
53
  #<#<%- queueName %>QueueSetting#>
54
- #<#/<%- queueName %>QueueSetting#>
54
+ #<#/<%- queueName %>QueueSetting#>
@@ -0,0 +1,22 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import ejs from 'ejs';
4
+
5
+ async function renderTemplateFile(templatePath, templateData = {}, { views } = {}) {
6
+ const template = await fs.readFile(templatePath, 'utf8');
7
+ return ejs.render(template, templateData, views ? { views } : undefined);
8
+ }
9
+
10
+ async function writeRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
11
+ const content = await renderTemplateFile(templatePath, templateData, options);
12
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
13
+ await fs.writeFile(outputPath, content, 'utf8');
14
+ }
15
+
16
+ async function appendRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
17
+ const content = await renderTemplateFile(templatePath, templateData, options);
18
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
19
+ await fs.appendFile(outputPath, `\n${content}`, 'utf8');
20
+ }
21
+
22
+ export { appendRenderedTemplate, renderTemplateFile, writeRenderedTemplate };