@izara_project/izara-core-generate-service-code 1.0.65 → 1.0.67

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 (257) hide show
  1. package/README.md +73 -11
  2. package/docs/TriggeredCache Flow.drawio +193 -0
  3. package/docs/test.mmd +47 -0
  4. package/docs/test.png +0 -0
  5. package/index.js +0 -5
  6. package/package.json +7 -6
  7. package/src/compile/compileProject.js +26 -0
  8. package/src/compile/loadSchemas.js +50 -0
  9. package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
  10. package/src/emit/crud/emitCrudApplicationArtifacts.js +161 -0
  11. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +84 -0
  12. package/src/emit/crud/generateCrudApplicationArtifacts.js +16 -0
  13. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +21 -0
  14. package/src/emit/crud/loadLocalSchemaArrays.js +8 -0
  15. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/CreateEndpoint_Main.ejs +6 -6
  16. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +6 -6
  17. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step → emit/crud/templates}/FlowEndpointBeforeLogical_Main.ejs +2 -2
  18. package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +96 -0
  19. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
  20. package/src/emit/crud/templates/FlowHandler_HdrApi.ejs +69 -0
  21. package/src/{codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_HdrSqs.ejs → emit/crud/templates/FlowHandler_HdrSqs.ejs} +52 -56
  22. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowMain_Wbs.ejs +1 -3
  23. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +2 -2
  24. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +127 -0
  25. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/UpdateEndpoint_Main.ejs +11 -9
  26. package/src/emit/custom/customFlows.js +121 -0
  27. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +325 -0
  28. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +22 -0
  29. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/custom/templates}/FlowEndpoint_Main.ejs +5 -5
  30. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step → emit/custom/templates}/FlowStep_Main.ejs +1 -1
  31. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_Main.ejs +5 -5
  32. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_HdrWbs.ejs +1 -1
  33. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_Main.ejs +3 -3
  34. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_Main.ejs +4 -5
  35. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/FlowHandler_HdrS3.ejs +2 -8
  36. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ProcessS3File_Main.ejs +1 -1
  37. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_Main.ejs +5 -6
  38. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +32 -0
  39. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +63 -0
  40. package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +35 -0
  41. package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +16 -0
  42. package/src/emit/function/functionYamlArtifact.js +125 -0
  43. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
  44. package/src/emit/rbac/emitRbacApplicationArtifacts.js +270 -0
  45. package/src/emit/rbac/generateCreateTargetRoleHandler.js +19 -0
  46. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +21 -0
  47. package/src/emit/rbac/rbacFlowTag.js +7 -0
  48. package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +24 -0
  49. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +25 -0
  50. package/src/emit/rbac/templates/DynamicRbacFlowSchema.ejs +5 -0
  51. package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +17 -0
  52. package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +13 -0
  53. package/src/emit/rbac/templates/ListRbac_Main.ejs +29 -0
  54. package/src/emit/rbac/templates/RbacMutation_Main.ejs +22 -0
  55. package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +10 -0
  56. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +44 -0
  57. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +33 -0
  58. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +11 -0
  59. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +66 -0
  60. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +148 -0
  61. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +23 -0
  62. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +22 -0
  63. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationshipComplete_Main.ejs → emit/relationship/templates/ChangeRelationshipComplete_Main.ejs} +1 -1
  64. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationship_Main.ejs → emit/relationship/templates/ChangeRelationship_Main.ejs} +12 -4
  65. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationshipComplete_Main.ejs → emit/relationship/templates/CreateRelationshipComplete_Main.ejs} +1 -1
  66. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationship_Main.ejs → emit/relationship/templates/CreateRelationship_Main.ejs} +1 -1
  67. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationshipComplete_Main.ejs → emit/relationship/templates/DeleteRelationshipComplete_Main.ejs} +1 -1
  68. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationship_Main.ejs → emit/relationship/templates/DeleteRelationship_Main.ejs} +1 -1
  69. package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrDsq.ejs +1 -1
  70. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +45 -0
  71. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationshipComplete_Main.ejs → emit/relationship/templates/GetRelationshipComplete_Main.ejs} +1 -1
  72. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationship_Main.ejs → emit/relationship/templates/GetRelationship_Main.ejs} +1 -1
  73. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationship_Main.ejs → emit/relationship/templates/MoveRelationship_Main.ejs} +9 -1
  74. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationshipComplete_Main.ejs → emit/relationship/templates/UpdateRelationshipComplete_Main.ejs} +1 -1
  75. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationship_Main.ejs → emit/relationship/templates/UpdateRelationship_Main.ejs} +1 -1
  76. package/src/emit/resource/emitResourceArtifacts.js +595 -0
  77. package/src/emit/resource/generateResourceArtifacts.js +20 -0
  78. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceBeforeLogicalYaml.ejs +1 -1
  79. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceSqsYaml.ejs +6 -6
  80. package/src/{codeGenerators/app/sls_yaml → emit/resource}/templates/SharedResource_Yaml.ejs +8 -8
  81. package/src/emit/system/emitSystemWebSocketArtifacts.js +183 -0
  82. package/src/generate.js +60 -126
  83. package/src/output/commitArtifacts.js +213 -0
  84. package/src/output/mergeHooks.js +55 -0
  85. package/src/output/validateArtifacts.js +62 -0
  86. package/src/plan/buildGenerationPlan.js +50 -0
  87. package/test/core.test.js +159 -0
  88. package/test/createTargetRoleHandler.test.js +68 -0
  89. package/test/crudApplicationArtifacts.test.js +107 -0
  90. package/test/customFlowApplicationArtifacts.test.js +297 -0
  91. package/test/dynamicCrudFlowSchemas.test.js +136 -0
  92. package/test/dynamicRbacFlowSchemas.test.js +101 -0
  93. package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
  94. package/test/functionYamlArtifact.test.js +34 -0
  95. package/test/intTestApi.test.js +29 -0
  96. package/test/publicApi.test.js +209 -0
  97. package/test/relationshipApplicationArtifacts.test.js +68 -0
  98. package/test/resourceArtifacts.test.js +121 -0
  99. package/jsconfig.json +0 -9
  100. package/src/__tests__/getIntTestConfig.test.js +0 -51
  101. package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
  102. package/src/__tests__/pathIntTest.test.js +0 -103
  103. package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
  104. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
  105. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
  106. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
  107. package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
  108. package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -332
  109. package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
  110. package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
  111. package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -503
  112. package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
  113. package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
  114. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
  115. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
  116. package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
  117. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
  118. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
  119. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
  120. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
  121. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
  122. package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
  123. package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
  124. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
  125. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
  126. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
  127. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
  128. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
  129. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
  130. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
  131. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
  132. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
  133. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
  134. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
  135. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
  136. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
  137. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
  138. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
  139. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
  140. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
  141. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
  142. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
  143. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
  144. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
  145. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
  146. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
  147. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
  148. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
  149. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
  150. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
  151. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
  152. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
  153. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
  154. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
  155. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
  156. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
  157. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
  158. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
  159. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
  160. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
  161. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
  162. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
  163. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
  164. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
  165. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
  166. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
  167. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
  168. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
  169. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
  170. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
  171. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
  172. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
  173. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
  174. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
  175. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
  176. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
  177. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
  178. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
  179. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
  180. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
  181. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
  182. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
  183. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
  184. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
  185. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
  186. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
  187. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
  188. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
  189. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
  190. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
  191. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
  192. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
  193. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
  194. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
  195. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
  196. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
  197. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
  198. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
  199. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
  200. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
  201. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
  202. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
  203. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
  204. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
  205. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
  206. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
  207. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
  208. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
  209. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
  210. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
  211. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
  212. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
  213. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
  214. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
  215. package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
  216. package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
  217. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
  218. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
  219. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
  220. package/src/core/renderTemplateFile.js +0 -22
  221. package/src/core/validate.js +0 -165
  222. package/src/generateCode.js +0 -357
  223. package/src/generateSchema.js +0 -123
  224. package/src/parsers/flowSchemaParser.js +0 -112
  225. package/src/parsers/objectSchemaParser.js +0 -39
  226. package/src/parsers/relationshipSchemaParser.js +0 -51
  227. package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
  228. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
  229. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
  230. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
  231. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
  232. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
  233. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
  234. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
  235. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
  236. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
  237. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
  238. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
  239. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
  240. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
  241. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
  242. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
  243. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
  244. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
  245. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
  246. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
  247. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
  248. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
  249. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
  250. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
  251. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrApi.ejs +0 -0
  252. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrSqs.ejs +0 -0
  253. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
  254. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
  255. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
  256. /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
  257. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/SystemDynamoDB_Yaml.ejs +0 -0
@@ -1,52 +0,0 @@
1
- import dynamodbSharedLib from '@izara_project/izara-core-library-dynamodb';
2
- import { middlewareHandler as middleware, response } from "@izara_project/izara-middleware";
3
-
4
- export const main = middleware.wrap(async (event, context) => {
5
-
6
- event._izContext.logger.debug('Event:', event);
7
- const { eventType, connectionId } = event.requestContext
8
- try {
9
-
10
- if (event.requestContext) {
11
- switch (eventType) {
12
- case 'CONNECT':
13
- console.log('Connect websocket')
14
-
15
- let { userId, submittedByUserId } = event.queryStringParameters;
16
-
17
- await dynamodbSharedLib.putItem(event._izContext,
18
- await dynamodbSharedLib.tableName(event._izContext, "UserUploadRecords"),
19
- {
20
- connectionId: connectionId,
21
- userId: userId,
22
- submittedByUserId: submittedByUserId,
23
- expirationTime: Math.floor(Date.now() / 1000) + 7200 // ttl time milliSecond to second + 2 hour
24
- }
25
- )
26
- //(<webSocketConnect>)
27
- //(</webSocketConnect>)
28
- break
29
- case 'DISCONNECT':
30
- console.log('Websocket are Disconnection')
31
- await dynamodbSharedLib.deleteItem(event._izContext,
32
- await dynamodbSharedLib.tableName(event._izContext, "UserUploadRecords"),
33
- {
34
- connectionId: connectionId,
35
- }
36
- )
37
- //(<webSocketDisconnect>)
38
- //(</webSocketDisconnect>)
39
- break
40
- case '$default':
41
- console.log('Received unknown route:', route)
42
- break
43
- }
44
- }
45
-
46
- return (response.webSocketSuccess());
47
-
48
- } catch (err) {
49
- event._izContext.logger.error('Error, WebSocketConnect: ', err);
50
- return (response.failure(err));
51
- }
52
- });
@@ -1,13 +0,0 @@
1
- <%- functionName -%>:
2
- handler: <%- handlerFilePath %>.main
3
- name: ${self:custom.iz_resourcePrefix}<%- functionName %>
4
- role: <%- roleName %>Role
5
- #<#<WebSocketConnectSetting#>
6
- #<#/<WebSocketConnectSetting#>
7
- events:
8
- - websocket:
9
- route: $connect
10
- - websocket:
11
- route: $disconnect
12
- - websocket:
13
- route: $default
@@ -1,28 +0,0 @@
1
- <%- resourceName %>Table:
2
- Type: "AWS::DynamoDB::Table"
3
- Properties:
4
- TableName: ${self:custom.iz_resourcePrefix}<%- tableName %>
5
- BillingMode: PAY_PER_REQUEST
6
- AttributeDefinitions:
7
- <%_ attributes.forEach(attribute => { -%>
8
- - AttributeName: <%- attribute['AttributeName'] %>
9
- AttributeType: <%- attribute['AttributeType'] %>
10
- <%_ }) _%>
11
- KeySchema:
12
- <%_ attributes.forEach(attribute => { -%>
13
- <%_ if (attribute.keyType === 'partitionKey' || attribute.keyType === "identifier") { -%>
14
- - AttributeName: <%- attribute["AttributeName"] %>
15
- KeyType: HASH
16
- <%_ } -%>
17
- <%_ if(attribute.keyType === "sortKey") { -%>
18
- - AttributeName: <%- attribute["AttributeName"] %>
19
- KeyType: RANGE
20
- <%_ } -%>
21
- <%_ }) _%>
22
- <%_ if (typeof ttl !== 'undefined' && ttl && typeof ttlAttributeName !== 'undefined' && ttlAttributeName) { _%>
23
- TimeToLiveSpecification:
24
- AttributeName: <%- ttlAttributeName %>
25
- Enabled: true
26
- <%_ } _%>
27
- #<#<%- tableName %>DynamoDbSetting#>
28
- #<#/<%- tableName %>DynamoDbSetting#>
@@ -1,63 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
5
- import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
6
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
7
-
8
- export async function generateDsqHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates) {
9
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
10
- const flowTag = flow.flowTag;
11
-
12
- const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
13
-
14
- // For entry point stepName is empty
15
- const handlerFileName = stepName
16
- ? `${flowTag}${stepName}_${suffix}`
17
- : (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
18
-
19
- // Function name: matches default export in the referenced _Main.js
20
- const functionName = stepName
21
- ? `${flowTag}${stepName}`
22
- : (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
23
-
24
- // Queue name: keep the full handler suffix so handler code matches
25
- const queueNameSuffix = suffix;
26
- let queueName = '';
27
- if (stepName) {
28
- queueName = `${flowTag}${stepName}${queueNameSuffix}`;
29
- } else {
30
- if (flow.event && flow.event.includes('ownTopic')) {
31
- queueName = `${flowTag}${queueNameSuffix}`;
32
- } else {
33
- queueName = `${functionName}${queueNameSuffix}`;
34
- }
35
- }
36
-
37
- let startConfig = null;
38
- if (!stepName && flow.flowSteps) {
39
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
40
- if (startStep) {
41
- startConfig = { ...startStep };
42
- // Map properties
43
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
44
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
45
- }
46
- // Map messageAttributes
47
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
48
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
49
- }
50
- }
51
- }
52
-
53
- const handlerContent = ejs.render(templates.dsq || templates.sqs, {
54
- flowTag: flowTag,
55
- flowStepName: stepName || '',
56
- mainFileName: mainFileName,
57
- functionName: functionName,
58
- queueName: queueName,
59
- startConfig: startConfig
60
- });
61
-
62
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
63
- }
@@ -1,66 +0,0 @@
1
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
2
- import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
3
- import ejs from 'ejs';
4
- import fs from 'fs/promises';
5
- import path from 'path';
6
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
7
-
8
- export async function generateSqsHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates) {
9
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
10
- const flowTag = flow.flowTag;
11
-
12
- const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
13
-
14
- // For entry point stepName is empty
15
- const handlerFileName = stepName
16
- ? `${flowTag}${stepName}_${suffix}`
17
- : (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
18
-
19
- // Function name: matches default export in the referenced _Main.js
20
- // For entry point: Process${upperCase(flowTag)} (e.g. ProcessOwnTopicFlow)
21
- // For steps: ${flowTag}${flowStepName} (e.g. OwnTopicFlowProcess)
22
- const functionName = stepName
23
- ? `${flowTag}${stepName}`
24
- : (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
25
-
26
- // Queue name: keep the full handler suffix so handler code matches
27
- // the generated queue/resource names.
28
- const queueNameSuffix = suffix;
29
- let queueName = '';
30
- if (stepName) {
31
- queueName = `${flowTag}${stepName}${queueNameSuffix}`;
32
- } else {
33
- if (flow.event && flow.event.includes('ownTopic')) {
34
- queueName = `${flowTag}${queueNameSuffix}`;
35
- } else {
36
- queueName = `${functionName}${queueNameSuffix}`;
37
- }
38
- }
39
-
40
- let startConfig = null;
41
- if (!stepName && flow.flowSteps) {
42
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
43
- if (startStep) {
44
- startConfig = { ...startStep };
45
- // Map properties
46
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
47
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
48
- }
49
- // Map messageAttributes
50
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
51
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
52
- }
53
- }
54
- }
55
-
56
- const handlerContent = ejs.render(templates.sqs, {
57
- flowTag: flowTag,
58
- flowStepName: stepName || '',
59
- mainFileName: mainFileName,
60
- functionName: functionName,
61
- queueName: queueName,
62
- startConfig: startConfig
63
- });
64
-
65
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
66
- }
@@ -1,94 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import os from 'os';
5
- import { fileURLToPath } from 'url';
6
- import { generateDsqHandler } from '../BaseDsqHandler.js';
7
-
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
-
11
- describe('generateDsqHandler', () => {
12
- let tmpDir;
13
- beforeEach(async () => {
14
- tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'iz-dsq-handler-'));
15
- });
16
- afterEach(async () => {
17
- await fs.rm(tmpDir, { recursive: true, force: true });
18
- });
19
-
20
- it('generates a DSQ handler file containing reformatDsqMessage and setValidatorSchema', async () => {
21
- // Read the template
22
- const templatePath = path.join(__dirname, '..', '..', 'handlers', 'FlowHandler_HdrDsq.ejs');
23
- const dsqTemplate = await fs.readFile(templatePath, 'utf-8');
24
- const templates = { dsq: dsqTemplate };
25
-
26
- const mockFlow = {
27
- flowTag: 'createOrder',
28
- event: ['dsq']
29
- };
30
-
31
- await generateDsqHandler(
32
- mockFlow,
33
- '', // entry point
34
- 'HdrDsq', // suffix
35
- tmpDir, // flowOutputDir
36
- 'ProcessCreateOrder_Main', // mainFileName
37
- templates
38
- );
39
-
40
- const generatedFilePath = path.join(tmpDir, 'ProcessCreateOrder_HdrDsq.js');
41
- const generatedContent = await fs.readFile(generatedFilePath, 'utf-8');
42
-
43
- // Verify it contains setValidatorSchema on line 39 (approx or exactly depending on formatting, let's verify substring)
44
- expect(generatedContent).toContain('middleware.setValidatorSchema(');
45
- expect(generatedContent).toContain('recordHandlerSharedLib.baseValidatorSchema({');
46
- expect(generatedContent).toContain('type: \'object\'');
47
- expect(generatedContent).toContain('required: [\'body\', \'messageAttributes\']');
48
-
49
- // Verify it contains reformatDsqMessage
50
- expect(generatedContent).toContain('record = recordHandlerSharedLib.reformatDsqMessage(');
51
- expect(generatedContent).toContain('record._izContext.logger.debug(\'record ReceiveMsgOutHdrSqs\', record);');
52
- });
53
-
54
- it('generates a DSQ handler for step containing step properties mapping', async () => {
55
- const templatePath = path.join(__dirname, '..', '..', 'handlers', 'FlowHandler_HdrDsq.ejs');
56
- const dsqTemplate = await fs.readFile(templatePath, 'utf-8');
57
- const templates = { dsq: dsqTemplate };
58
-
59
- const mockFlow = {
60
- flowTag: 'createOrder',
61
- event: ['dsq'],
62
- flowSteps: [
63
- {
64
- stepName: 'Start',
65
- properties: ['orderId'],
66
- messageAttributes: ['userId']
67
- }
68
- ],
69
- stepProperties: {
70
- orderId: { propertyName: 'orderId', type: 'string', required: true }
71
- },
72
- stepMessageAttributes: {
73
- userId: { propertyName: 'userId', type: 'string', required: true }
74
- }
75
- };
76
-
77
- await generateDsqHandler(
78
- mockFlow,
79
- 'StepOne', // step name
80
- 'HdrDsq', // suffix
81
- tmpDir, // flowOutputDir
82
- 'CreateOrderStepOne_Main', // mainFileName
83
- templates
84
- );
85
-
86
- const generatedFilePath = path.join(tmpDir, 'createOrderStepOne_HdrDsq.js');
87
- const generatedContent = await fs.readFile(generatedFilePath, 'utf-8');
88
-
89
- // Verify template rendering and function names
90
- expect(generatedContent).toContain('import createOrderStepOne from \'./CreateOrderStepOne_Main.js\';');
91
- expect(generatedContent).toContain('createOrderStepOne');
92
- expect(generatedContent).toContain('\'createOrderStepOneHdrDsq\'');
93
- });
94
- });
@@ -1,5 +0,0 @@
1
- import { generateDsqHandler } from './BaseDsqHandler.js';
2
-
3
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
4
- await generateDsqHandler(flow, stepName, 'HdrDsq', flowOutputDir, mainFileName, templates);
5
- }
@@ -1,33 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
5
- import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
6
-
7
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
8
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
9
- const flowTag = flow.flowTag;
10
-
11
- const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
12
-
13
- const suffix = 'HdrInv';
14
- const handlerFileName = stepName
15
- ? `${flowTag}${stepName}_${suffix}`
16
- : (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
17
- const queueName = stepName
18
- ? `${upperCase(flowTag)}${upperCase(stepName)}${upperCase(suffix)}`
19
- : (isOwnTopic ? `${upperCase(flowTag)}${upperCase(suffix)}` : `Process${upperCase(flowTag)}${upperCase(suffix)}`);
20
- const functionName = stepName
21
- ? `${flowTag}${stepName}`
22
- : (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
23
-
24
- const handlerContent = ejs.render(templates.inv, {
25
- flowTag: flowTag,
26
- flowStepName: stepName,
27
- mainFileName: mainFileName,
28
- functionName: functionName,
29
- queueName: queueName
30
- });
31
-
32
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
33
- }
@@ -1,6 +0,0 @@
1
- import { generateSqsHandler } from './BaseSqsHandler.js';
2
-
3
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
4
- const suffix = flow.initiateBy === 'user' && !stepName ? 'HdrWbs' : 'HdrSqs';
5
- await generateSqsHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates);
6
- }
@@ -1,51 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
5
- import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
6
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
7
-
8
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
9
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
10
- const flowTag = flow.flowTag;
11
-
12
- const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
13
-
14
- const suffix = 'HdrApi';
15
- const handlerFileName = stepName
16
- ? `${flowTag}${stepName}_${suffix}`
17
- : (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
18
- // Queue name: ${flowTag}${flowStepName}${HandlerType}
19
- const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
20
- // Function name matches default export of the referenced _Main.js
21
- const functionName = stepName
22
- ? `${flowTag}${stepName}`
23
- : (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
24
-
25
- let startConfig = null;
26
- if (!stepName && flow.flowSteps) {
27
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
28
- if (startStep) {
29
- startConfig = { ...startStep };
30
- // Map properties
31
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
32
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
33
- }
34
- // Map messageAttributes
35
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
36
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
37
- }
38
- }
39
- }
40
-
41
- const handlerContent = ejs.render(templates.api, {
42
- flowTag: flowTag,
43
- flowStepName: stepName || '',
44
- mainFileName: mainFileName,
45
- functionName: functionName,
46
- queueName: queueName,
47
- startConfig: startConfig
48
- });
49
-
50
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
51
- }
@@ -1,51 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
5
- import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
6
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
7
-
8
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
9
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
10
- const flowTag = flow.flowTag;
11
-
12
- const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
13
-
14
- const suffix = 'HdrInv';
15
- const handlerFileName = stepName
16
- ? `${flowTag}${stepName}_${suffix}`
17
- : (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
18
- // Queue name: ${flowTag}${flowStepName}${HandlerType}
19
- const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
20
- // Function name matches default export of the referenced _Main.js
21
- const functionName = stepName
22
- ? `${flowTag}${stepName}`
23
- : (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
24
-
25
- let startConfig = null;
26
- if (!stepName && flow.flowSteps) {
27
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
28
- if (startStep) {
29
- startConfig = { ...startStep };
30
- // Map properties
31
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
32
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
33
- }
34
- // Map messageAttributes
35
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
36
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
37
- }
38
- }
39
- }
40
-
41
- const handlerContent = ejs.render(templates.inv, {
42
- flowTag: flowTag,
43
- flowStepName: stepName || '',
44
- mainFileName: mainFileName,
45
- functionName: functionName,
46
- queueName: queueName,
47
- startConfig: startConfig
48
- });
49
-
50
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
51
- }
@@ -1,54 +0,0 @@
1
- import { generateSqsHandler } from './BaseSqsHandler.js';
2
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
3
- import { ownTopicWebSocketMainFileName, ownTopicWebSocketFunctionName } from '../shared/flowNaming.js';
4
- import ejs from 'ejs';
5
- import fs from 'fs/promises';
6
- import path from 'path';
7
-
8
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates, generateCode = []) {
9
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
10
-
11
- // --- PROCESS ONLY (1-Step Architecture) ---
12
- // The Process Main Logic File is already generated by FlowMainFunctionGenerator (Process{FlowTag}_Main.js)
13
-
14
- // Generate Process Handler File (HdrSqs)
15
- await generateSqsHandler(flow, stepName, 'HdrSqs', flowOutputDir, mainFileName, templates);
16
-
17
- // ownTopic flows ALWAYS generate the WebSocket entry + SNS-publish main file,
18
- // regardless of initiateBy (legacy behavior: WebSocket is the universal entry point).
19
- if (!stepName) {
20
- const isOwnTopicConvention = !isCrudFlow(flow.flowTag) && !isRbacFlow(flow.flowTag) && !isRelationshipFlow(flow.flowTag);
21
- let entryPointFileName;
22
- let wbsFunctionName;
23
-
24
- if (isOwnTopicConvention) {
25
- entryPointFileName = ownTopicWebSocketMainFileName(flow.flowTag);
26
- wbsFunctionName = ownTopicWebSocketFunctionName(flow.flowTag);
27
- } else {
28
- entryPointFileName = `${upperCase(flow.flowTag)}_Main`;
29
- wbsFunctionName = upperCase(flow.flowTag);
30
- }
31
- const handlerFileName = `${upperCase(flow.flowTag)}_HdrWbs`;
32
-
33
- // 1. Render HdrWbs.js
34
- const handlerContent = ejs.render(templates.endpointHdrWbs, {
35
- flowTag: flow.flowTag,
36
- upperCaseFlowTag: upperCase(flow.flowTag),
37
- flowStepName: '',
38
- mainFileName: entryPointFileName,
39
- functionName: wbsFunctionName,
40
- route: flow.flowTag
41
- });
42
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
43
-
44
- // 2. Render _Main.js (SNS publish version for ownTopic flows)
45
- const mainContent = ejs.render(templates.wbsMain, {
46
- flowTag: flow.flowTag,
47
- upperCaseFlowTag: upperCase(flow.flowTag),
48
- topicArn: `${upperCase(flow.flowTag)}_In`,
49
- generateCode: generateCode,
50
- functionName: wbsFunctionName
51
- });
52
- await fs.writeFile(path.join(flowOutputDir, `${entryPointFileName}.js`), mainContent, 'utf-8');
53
- }
54
- }
@@ -1,17 +0,0 @@
1
- import ownTopic from './ownTopic.js';
2
- import extTopic from './extTopic.js';
3
- import lambdaSyncInv from './lambdaSyncInv.js';
4
- import lambdaSyncApi from './lambdaSyncApi.js';
5
- import eventBridge from './eventBridge.js';
6
- import s3 from './s3.js';
7
- import dsq from './dsq.js';
8
-
9
- export const EVENT_HANDLERS = {
10
- ownTopic,
11
- extTopic,
12
- lambdaSyncInv,
13
- lambdaSyncApi,
14
- eventBridge,
15
- s3,
16
- dsq
17
- };
@@ -1,56 +0,0 @@
1
- /*
2
- Copyright (C) 2020 Sven Mason <http://izara.io>
3
-
4
- This program is free software: you can redistribute it and/or modify
5
- it under the terms of the GNU Affero General Public License as
6
- published by the Free Software Foundation, either version 3 of the
7
- License, or (at your option) any later version.
8
-
9
- This program is distributed in the hope that it will be useful,
10
- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- GNU Affero General Public License for more details.
13
-
14
- You should have received a copy of the GNU Affero General Public License
15
- along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- */
17
-
18
- import ejs from 'ejs';
19
- import fs from 'fs/promises';
20
- import path from 'path';
21
- import { fileURLToPath } from 'url';
22
-
23
- const __filename = fileURLToPath(import.meta.url);
24
- const __dirname = path.dirname(__filename);
25
-
26
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
27
-
28
- import generateCreateObject from './s3Components/CreateObjectGenerator.js';
29
- import generateReservedLimit from './s3Components/ReservedLimitGenerator.js';
30
- import generateCreatePreSignUrl from './s3Components/CreatePreSignUrlGenerator.js';
31
- import generateProcessAfterUploadS3 from './s3Components/ProcessAfterUploadS3Generator.js';
32
- import generateConfirmAfterUploadS3 from './s3Components/ConfirmAfterUploadS3Generator.js';
33
-
34
- export default async function generate(
35
- flow,
36
- stepName,
37
- flowOutputDir,
38
- mainFileName,
39
- templates,
40
- generateCode = []
41
- ) {
42
- if (stepName) return;
43
-
44
- const flowTag = flow.flowTag;
45
- if (!flowTag) {
46
- console.warn(' [s3.js] flow is missing flowTag — skipping');
47
- return;
48
- }
49
-
50
- // Call the ported legacy subgenerators to reconstruct the fully separated S3 event flow
51
- await generateCreateObject(flow, flowOutputDir);
52
- await generateReservedLimit(flow, flowOutputDir);
53
- await generateCreatePreSignUrl(flow, flowOutputDir);
54
- await generateProcessAfterUploadS3(flow, flowOutputDir);
55
- await generateConfirmAfterUploadS3(flow, flowOutputDir);
56
- }
@@ -1,46 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { fileURLToPath } from 'url';
5
-
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = path.dirname(__filename);
8
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
9
-
10
- export default async function generateConfirmAfterUploadS3(flow, flowOutputDir) {
11
- const functionName = `${flow.flowTag}ConfirmAfterUpload`;
12
- const handlerType = `HdrSqs`;
13
-
14
- const mainFileName = `${functionName}_Main`;
15
- const handlerFileName = `${functionName}_${handlerType}`;
16
-
17
- const mainTemplatePath = path.join(
18
- __dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'ConfirmReserved_Main.ejs'
19
- );
20
- const handlerTemplatePath = path.join(
21
- __dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'ConfirmReserved_HdrSqs.ejs'
22
- );
23
-
24
- let mainTemplateStr, handlerTemplateStr;
25
- try {
26
- mainTemplateStr = await fs.readFile(mainTemplatePath, 'utf-8');
27
- handlerTemplateStr = await fs.readFile(handlerTemplatePath, 'utf-8');
28
- } catch (err) {
29
- throw new Error(`[ConfirmAfterUploadS3Generator] Failed to load template: ${err.message}`);
30
- }
31
-
32
- const mainContent = ejs.render(mainTemplateStr, {
33
- functionName: functionName
34
- });
35
-
36
- const handlerContent = ejs.render(handlerTemplateStr, {
37
- functionName,
38
- handlerType
39
- });
40
-
41
- const targetMainPath = path.join(flowOutputDir, `${mainFileName}.js`);
42
- await fs.writeFile(targetMainPath, mainContent, 'utf-8');
43
-
44
- const targetHandlerPath = path.join(flowOutputDir, `${handlerFileName}.js`);
45
- await fs.writeFile(targetHandlerPath, handlerContent, 'utf-8');
46
- }