@izara_project/izara-core-generate-service-code 1.0.65 → 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 (254) 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 -332
  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 -503
  108. package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
  109. package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
  110. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
  111. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
  112. package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
  113. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
  114. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
  115. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
  116. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
  117. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
  118. package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
  119. package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
  120. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
  121. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
  122. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
  123. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
  124. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
  125. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
  126. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
  127. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
  128. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
  129. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
  130. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
  131. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
  132. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
  133. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
  134. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
  135. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
  136. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
  137. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
  138. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
  139. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
  140. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
  141. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
  142. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
  143. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
  144. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
  145. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
  146. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
  147. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
  148. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
  149. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
  150. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
  151. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
  152. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
  153. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
  154. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
  155. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
  156. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
  157. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
  158. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
  159. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
  160. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
  161. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
  162. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
  163. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
  164. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
  165. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
  166. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
  167. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
  168. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
  169. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
  170. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
  171. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
  172. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
  173. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
  174. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
  175. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
  176. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
  177. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
  178. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
  179. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
  180. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
  181. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
  182. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
  183. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
  184. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
  185. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
  186. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
  187. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
  188. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
  189. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
  190. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
  191. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
  192. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
  193. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
  194. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
  195. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
  196. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
  197. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
  198. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
  199. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
  200. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
  201. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
  202. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
  203. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
  204. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
  205. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
  206. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
  207. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
  208. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
  209. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
  210. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
  211. package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
  212. package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
  213. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
  214. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
  215. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
  216. package/src/core/renderTemplateFile.js +0 -22
  217. package/src/core/validate.js +0 -165
  218. package/src/generateCode.js +0 -357
  219. package/src/generateSchema.js +0 -123
  220. package/src/parsers/flowSchemaParser.js +0 -112
  221. package/src/parsers/objectSchemaParser.js +0 -39
  222. package/src/parsers/relationshipSchemaParser.js +0 -51
  223. package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
  224. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
  225. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
  226. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
  227. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
  228. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
  229. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
  230. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
  231. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
  232. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
  233. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
  234. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
  235. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
  236. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
  237. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
  238. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
  239. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
  240. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
  241. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
  242. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
  243. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrApi.ejs +0 -0
  244. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
  245. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +0 -0
  246. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
  247. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
  248. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
  249. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrSqs.ejs +0 -0
  250. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
  251. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
  252. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
  253. /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
  254. /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
- }