@izara_project/izara-core-generate-service-code 1.0.64 → 1.0.66

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 (256) hide show
  1. package/README.md +73 -11
  2. package/index.js +0 -5
  3. package/package.json +7 -6
  4. package/src/compile/compileProject.js +26 -0
  5. package/src/compile/loadSchemas.js +28 -0
  6. package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
  7. package/src/emit/crud/emitCrudApplicationArtifacts.js +157 -0
  8. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +84 -0
  9. package/src/emit/crud/generateCrudApplicationArtifacts.js +16 -0
  10. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +21 -0
  11. package/src/emit/crud/loadLocalSchemaArrays.js +8 -0
  12. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/CreateEndpoint_Main.ejs +1 -1
  13. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +1 -1
  14. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step → emit/crud/templates}/FlowEndpointBeforeLogical_Main.ejs +2 -2
  15. package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +75 -0
  16. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
  17. package/src/{codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_HdrSqs.ejs → emit/crud/templates/FlowHandler_HdrSqs.ejs} +52 -56
  18. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowMain_Wbs.ejs +1 -3
  19. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +127 -0
  20. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/UpdateEndpoint_Main.ejs +1 -1
  21. package/src/emit/custom/customFlows.js +70 -0
  22. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +308 -0
  23. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +22 -0
  24. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/custom/templates}/FlowEndpoint_Main.ejs +1 -1
  25. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step → emit/custom/templates}/FlowStep_Main.ejs +1 -1
  26. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_Main.ejs +5 -5
  27. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_HdrWbs.ejs +1 -1
  28. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_Main.ejs +3 -3
  29. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_Main.ejs +4 -5
  30. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/FlowHandler_HdrS3.ejs +2 -8
  31. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ProcessS3File_Main.ejs +1 -1
  32. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_Main.ejs +5 -6
  33. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +32 -0
  34. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +63 -0
  35. package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +35 -0
  36. package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +16 -0
  37. package/src/emit/function/functionYamlArtifact.js +111 -0
  38. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
  39. package/src/emit/rbac/emitRbacApplicationArtifacts.js +256 -0
  40. package/src/emit/rbac/generateCreateTargetRoleHandler.js +19 -0
  41. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +21 -0
  42. package/src/emit/rbac/rbacFlowTag.js +7 -0
  43. package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +24 -0
  44. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +25 -0
  45. package/src/emit/rbac/templates/DynamicRbacFlowSchema.ejs +5 -0
  46. package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +17 -0
  47. package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +13 -0
  48. package/src/emit/rbac/templates/ListRbac_Main.ejs +29 -0
  49. package/src/emit/rbac/templates/RbacMutation_Main.ejs +22 -0
  50. package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +10 -0
  51. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +44 -0
  52. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +33 -0
  53. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +11 -0
  54. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +66 -0
  55. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +147 -0
  56. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +23 -0
  57. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +22 -0
  58. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationshipComplete_Main.ejs → emit/relationship/templates/ChangeRelationshipComplete_Main.ejs} +1 -1
  59. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationship_Main.ejs → emit/relationship/templates/ChangeRelationship_Main.ejs} +10 -2
  60. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationshipComplete_Main.ejs → emit/relationship/templates/CreateRelationshipComplete_Main.ejs} +1 -1
  61. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationship_Main.ejs → emit/relationship/templates/CreateRelationship_Main.ejs} +1 -1
  62. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationshipComplete_Main.ejs → emit/relationship/templates/DeleteRelationshipComplete_Main.ejs} +1 -1
  63. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationship_Main.ejs → emit/relationship/templates/DeleteRelationship_Main.ejs} +1 -1
  64. package/src/emit/relationship/templates/FlowHandler_HdrApi.ejs +51 -0
  65. package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrDsq.ejs +1 -1
  66. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +45 -0
  67. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationshipComplete_Main.ejs → emit/relationship/templates/GetRelationshipComplete_Main.ejs} +1 -1
  68. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationship_Main.ejs → emit/relationship/templates/GetRelationship_Main.ejs} +1 -1
  69. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationship_Main.ejs → emit/relationship/templates/MoveRelationship_Main.ejs} +9 -1
  70. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationshipComplete_Main.ejs → emit/relationship/templates/UpdateRelationshipComplete_Main.ejs} +1 -1
  71. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationship_Main.ejs → emit/relationship/templates/UpdateRelationship_Main.ejs} +1 -1
  72. package/src/emit/resource/emitResourceArtifacts.js +300 -0
  73. package/src/emit/resource/generateResourceArtifacts.js +20 -0
  74. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceBeforeLogicalYaml.ejs +1 -1
  75. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceSqsYaml.ejs +6 -6
  76. package/src/{codeGenerators/app/sls_yaml → emit/resource}/templates/SharedResource_Yaml.ejs +8 -8
  77. package/src/emit/system/emitSystemWebSocketArtifacts.js +182 -0
  78. package/src/generate.js +60 -126
  79. package/src/output/commitArtifacts.js +213 -0
  80. package/src/output/mergeHooks.js +55 -0
  81. package/src/output/validateArtifacts.js +62 -0
  82. package/src/plan/buildGenerationPlan.js +50 -0
  83. package/test/core.test.js +159 -0
  84. package/test/createTargetRoleHandler.test.js +68 -0
  85. package/test/crudApplicationArtifacts.test.js +107 -0
  86. package/test/customFlowApplicationArtifacts.test.js +294 -0
  87. package/test/dynamicCrudFlowSchemas.test.js +136 -0
  88. package/test/dynamicRbacFlowSchemas.test.js +101 -0
  89. package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
  90. package/test/functionYamlArtifact.test.js +34 -0
  91. package/test/intTestApi.test.js +29 -0
  92. package/test/publicApi.test.js +209 -0
  93. package/test/relationshipApplicationArtifacts.test.js +68 -0
  94. package/test/resourceArtifacts.test.js +121 -0
  95. package/jsconfig.json +0 -9
  96. package/src/__tests__/getIntTestConfig.test.js +0 -51
  97. package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
  98. package/src/__tests__/pathIntTest.test.js +0 -103
  99. package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
  100. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
  101. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
  102. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
  103. package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
  104. package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -322
  105. package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
  106. package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
  107. package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -504
  108. package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
  109. package/src/codeGenerators/app/sls_yaml/_policy/PolicyEmitter.js +0 -46
  110. package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -94
  111. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyEmitter.test.js +0 -55
  112. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -48
  113. package/src/codeGenerators/app/sls_yaml/_policy/templates/ManagedPolicy_Yaml.ejs +0 -22
  114. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
  115. package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
  116. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
  117. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
  118. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
  119. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
  120. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
  121. package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
  122. package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
  123. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
  124. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
  125. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
  126. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
  127. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
  128. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
  129. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
  130. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
  131. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
  132. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
  133. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
  134. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
  135. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
  136. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
  137. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
  138. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
  139. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
  140. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
  141. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
  142. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
  143. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
  144. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
  145. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
  146. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
  147. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
  148. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
  149. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
  150. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
  151. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
  152. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
  153. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
  154. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
  155. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
  156. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
  157. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
  158. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
  159. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
  160. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
  161. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
  162. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
  163. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
  164. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -55
  165. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
  166. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -93
  167. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
  168. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -25
  169. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
  170. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -43
  171. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -43
  172. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
  173. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
  174. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
  175. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
  176. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
  177. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
  178. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
  179. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
  180. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
  181. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
  182. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
  183. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
  184. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
  185. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
  186. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
  187. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
  188. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -236
  189. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -15
  190. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
  191. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
  192. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
  193. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
  194. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
  195. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
  196. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
  197. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
  198. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
  199. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
  200. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
  201. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
  202. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
  203. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
  204. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
  205. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
  206. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
  207. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
  208. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
  209. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
  210. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
  211. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
  212. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
  213. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
  214. package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
  215. package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
  216. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
  217. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
  218. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
  219. package/src/core/renderTemplateFile.js +0 -22
  220. package/src/core/validate.js +0 -165
  221. package/src/generateCode.js +0 -358
  222. package/src/generateSchema.js +0 -123
  223. package/src/parsers/flowSchemaParser.js +0 -112
  224. package/src/parsers/objectSchemaParser.js +0 -39
  225. package/src/parsers/relationshipSchemaParser.js +0 -51
  226. package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
  227. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
  228. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
  229. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
  230. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
  231. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
  232. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
  233. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
  234. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
  235. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
  236. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
  237. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
  238. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -149
  239. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -143
  240. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
  241. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
  242. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
  243. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
  244. package/test_schema.js +0 -2
  245. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrApi.ejs +0 -0
  246. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
  247. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.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_HdrSqs.ejs +0 -0
  252. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
  253. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
  254. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
  255. /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
  256. /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,55 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
5
-
6
- export async function generateDsqHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates) {
7
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
8
- const flowTag = flow.flowTag;
9
-
10
- // For entry point stepName is empty
11
- const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
12
-
13
- // Function name: matches default export in the referenced _Main.js
14
- const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
15
-
16
- // Queue name: keep the full handler suffix so handler code matches
17
- const queueNameSuffix = suffix;
18
- let queueName = '';
19
- if (stepName) {
20
- queueName = `${flowTag}${stepName}${queueNameSuffix}`;
21
- } else {
22
- if (flow.event && flow.event.includes('ownTopic')) {
23
- queueName = `${flowTag}${queueNameSuffix}`;
24
- } else {
25
- queueName = `${functionName}${queueNameSuffix}`;
26
- }
27
- }
28
-
29
- let startConfig = null;
30
- if (!stepName && flow.flowSteps) {
31
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
32
- if (startStep) {
33
- startConfig = { ...startStep };
34
- // Map properties
35
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
36
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
37
- }
38
- // Map messageAttributes
39
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
40
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
41
- }
42
- }
43
- }
44
-
45
- const handlerContent = ejs.render(templates.dsq || templates.sqs, {
46
- flowTag: flowTag,
47
- flowStepName: stepName || '',
48
- mainFileName: mainFileName,
49
- functionName: functionName,
50
- queueName: queueName,
51
- startConfig: startConfig
52
- });
53
-
54
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
55
- }
@@ -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,93 +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(recordHandlerSharedLib.baseValidatorSchema(');
45
- expect(generatedContent).toContain('type: "object"');
46
- expect(generatedContent).toContain('required: [\'body\', \'messageAttributes\']');
47
-
48
- // Verify it contains reformatDsqMessage
49
- expect(generatedContent).toContain('record = recordHandlerSharedLib.reformatDsqMessage(record._izContext, record);');
50
- expect(generatedContent).toContain('record._izContext.logger.debug(\'record ReceiveMsgOutHdrSqs\', record);');
51
- });
52
-
53
- it('generates a DSQ handler for step containing step properties mapping', async () => {
54
- const templatePath = path.join(__dirname, '..', '..', 'handlers', 'FlowHandler_HdrDsq.ejs');
55
- const dsqTemplate = await fs.readFile(templatePath, 'utf-8');
56
- const templates = { dsq: dsqTemplate };
57
-
58
- const mockFlow = {
59
- flowTag: 'createOrder',
60
- event: ['dsq'],
61
- flowSteps: [
62
- {
63
- stepName: 'Start',
64
- properties: ['orderId'],
65
- messageAttributes: ['userId']
66
- }
67
- ],
68
- stepProperties: {
69
- orderId: { propertyName: 'orderId', type: 'string', required: true }
70
- },
71
- stepMessageAttributes: {
72
- userId: { propertyName: 'userId', type: 'string', required: true }
73
- }
74
- };
75
-
76
- await generateDsqHandler(
77
- mockFlow,
78
- 'StepOne', // step name
79
- 'HdrDsq', // suffix
80
- tmpDir, // flowOutputDir
81
- 'CreateOrderStepOne_Main', // mainFileName
82
- templates
83
- );
84
-
85
- const generatedFilePath = path.join(tmpDir, 'createOrderStepOne_HdrDsq.js');
86
- const generatedContent = await fs.readFile(generatedFilePath, 'utf-8');
87
-
88
- // Verify template rendering and function names
89
- expect(generatedContent).toContain('import createOrderStepOne from \'./CreateOrderStepOne_Main.js\';');
90
- expect(generatedContent).toContain('createOrderStepOne');
91
- expect(generatedContent).toContain('"createOrderStepOneHdrDsq"');
92
- });
93
- });
@@ -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,25 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
-
5
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
6
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
7
- const flowTag = flow.flowTag;
8
-
9
-
10
-
11
- const suffix = 'HdrInv';
12
- const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
13
- const queueName = stepName ? `${upperCase(flowTag)}${upperCase(stepName)}${upperCase(suffix)}` : `Process${upperCase(flowTag)}${upperCase(suffix)}`;
14
- const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
15
-
16
- const handlerContent = ejs.render(templates.inv, {
17
- flowTag: flowTag,
18
- flowStepName: stepName,
19
- mainFileName: mainFileName,
20
- functionName: functionName,
21
- queueName: queueName
22
- });
23
-
24
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
25
- }
@@ -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,43 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
5
-
6
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
7
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
8
- const flowTag = flow.flowTag;
9
-
10
- const suffix = 'HdrApi';
11
- const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
12
- // Queue name: ${flowTag}${flowStepName}${HandlerType}
13
- const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
14
- // Function name matches default export of the referenced _Main.js
15
- const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
16
-
17
- let startConfig = null;
18
- if (!stepName && flow.flowSteps) {
19
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
20
- if (startStep) {
21
- startConfig = { ...startStep };
22
- // Map properties
23
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
24
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
25
- }
26
- // Map messageAttributes
27
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
28
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
29
- }
30
- }
31
- }
32
-
33
- const handlerContent = ejs.render(templates.api, {
34
- flowTag: flowTag,
35
- flowStepName: stepName || '',
36
- mainFileName: mainFileName,
37
- functionName: functionName,
38
- queueName: queueName,
39
- startConfig: startConfig
40
- });
41
-
42
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
43
- }
@@ -1,43 +0,0 @@
1
- import ejs from 'ejs';
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import { normalizePropertyType } from '../shared/propertyNormalizer.js';
5
-
6
- export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
7
- const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
8
- const flowTag = flow.flowTag;
9
-
10
- const suffix = 'HdrInv';
11
- const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
12
- // Queue name: ${flowTag}${flowStepName}${HandlerType}
13
- const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
14
- // Function name matches default export of the referenced _Main.js
15
- const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
16
-
17
- let startConfig = null;
18
- if (!stepName && flow.flowSteps) {
19
- const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
20
- if (startStep) {
21
- startConfig = { ...startStep };
22
- // Map properties
23
- if (startConfig.properties && Array.isArray(startConfig.properties)) {
24
- startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
25
- }
26
- // Map messageAttributes
27
- if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
28
- startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
29
- }
30
- }
31
- }
32
-
33
- const handlerContent = ejs.render(templates.inv, {
34
- flowTag: flowTag,
35
- flowStepName: stepName || '',
36
- mainFileName: mainFileName,
37
- functionName: functionName,
38
- queueName: queueName,
39
- startConfig: startConfig
40
- });
41
-
42
- await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
43
- }
@@ -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
- }
@@ -1,50 +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 generateCreateObject(flow, flowOutputDir) {
11
- const upperCaseFlowTag = upperCase(flow.flowTag);
12
- const functionName = `${flow.flowTag}CreateObject`;
13
- const handlerType = `HdrWbs`;
14
-
15
- const mainFileName = `${functionName}_Main`;
16
- const handlerFileName = `${functionName}_${handlerType}`;
17
-
18
- const mainTemplatePath = path.join(
19
- __dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'CreateObject_Main.ejs'
20
- );
21
- const handlerTemplatePath = path.join(
22
- __dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'CreateObject_HdrWbs.ejs'
23
- );
24
-
25
- let mainTemplateStr, handlerTemplateStr;
26
- try {
27
- mainTemplateStr = await fs.readFile(mainTemplatePath, 'utf-8');
28
- handlerTemplateStr = await fs.readFile(handlerTemplatePath, 'utf-8');
29
- } catch (err) {
30
- throw new Error(`[CreateObjectGenerator] Failed to load template: ${err.message}`);
31
- }
32
-
33
- const mainContent = ejs.render(mainTemplateStr, {
34
- flowTag: flow.flowTag,
35
- objectType: flow.objType.objectType,
36
- functionName: functionName
37
- });
38
-
39
- const handlerContent = ejs.render(handlerTemplateStr, {
40
- functionName,
41
- handlerType,
42
- route: flow.flowTag
43
- });
44
-
45
- const targetMainPath = path.join(flowOutputDir, `${mainFileName}.js`);
46
- await fs.writeFile(targetMainPath, mainContent, 'utf-8');
47
-
48
- const targetHandlerPath = path.join(flowOutputDir, `${handlerFileName}.js`);
49
- await fs.writeFile(targetHandlerPath, handlerContent, 'utf-8');
50
- }