@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
@@ -0,0 +1,308 @@
1
+ import ejs from 'ejs';
2
+ import { readFile } from 'node:fs/promises';
3
+
4
+ import {
5
+ renderApiFunctionYaml,
6
+ renderEventBridgeFunctionYaml,
7
+ renderInvFunctionYaml,
8
+ renderSqsFunctionYaml,
9
+ renderWbsFunctionYaml
10
+ } from '../function/functionYamlArtifact.js';
11
+ import { customFlowRoleName, flowExtTopicSteps, generatedOwnTopicFlows, supportedCustomFlows, triggerCacheFlows, triggerCacheQueueNames, upperFirst } from './customFlows.js';
12
+
13
+ const YAML_PATH = 'app/sls_yaml/generatedCode/source/flow-schema.yml';
14
+ const TEMPLATE_URL = new URL('../crud/templates/', import.meta.url);
15
+ const CUSTOM_TEMPLATE_URL = new URL('./templates/', import.meta.url);
16
+ const DSQ_TEMPLATE_URL = new URL('../relationship/templates/', import.meta.url);
17
+
18
+ export async function emitCustomFlowApplicationArtifacts(flows, { systemFunctions = [], objects = [] } = {}) {
19
+ const customFlows = supportedCustomFlows(flows);
20
+ const generatedRoots = generatedOwnTopicFlows(flows);
21
+ const steps = flowExtTopicSteps(flows);
22
+ const triggerCache = triggerCacheFlows(flows);
23
+ if (customFlows.length === 0 && generatedRoots.length === 0 && steps.length === 0 && triggerCache.length === 0 && systemFunctions.length === 0) return [];
24
+
25
+ const emitted = await Promise.all(customFlows.map(flow => emitFlow(flow, objects)));
26
+ const roots = await Promise.all(generatedRoots.map(flow => emitOwnTopicRoot(flow, objects)));
27
+ const stepResults = await Promise.all(steps.map(emitExtTopicStep));
28
+ const triggerCacheResults = await Promise.all(triggerCache.map(emitTriggerCacheFlow));
29
+ return [
30
+ ...emitted.flatMap(result => result.artifacts),
31
+ ...roots.flatMap(result => result.artifacts),
32
+ ...stepResults.flatMap(result => result.artifacts),
33
+ ...triggerCacheResults.flatMap(result => result.artifacts),
34
+ { path: YAML_PATH, content: [...systemFunctions, ...emitted.flatMap(result => result.functions), ...roots.flatMap(result => result.functions), ...stepResults.map(result => result.function), ...triggerCacheResults.flatMap(result => result.functions)].join('\n') }
35
+ ];
36
+ }
37
+
38
+ export function customFlowApplicationManagedPaths(flows, { includeYaml = false } = {}) {
39
+ return [
40
+ ...supportedCustomFlows(flows).flatMap(flow => flowPaths(flow)),
41
+ ...generatedOwnTopicFlows(flows).flatMap(ownTopicRootPaths),
42
+ ...flowExtTopicSteps(flows).flatMap(({ flowTag, stepName }) => {
43
+ const source = `app/src/generatedCode/FlowSchemas/${flowTag}/source`;
44
+ return [`${source}/${flowTag}${stepName}_Main.js`, `${source}/${flowTag}${stepName}_HdrSqs.js`];
45
+ }),
46
+ ...triggerCacheFlows(flows).flatMap(triggerCachePaths),
47
+ ...(supportedCustomFlows(flows).length > 0 || generatedOwnTopicFlows(flows).length > 0 || flowExtTopicSteps(flows).length > 0 || triggerCacheFlows(flows).length > 0 || includeYaml ? [YAML_PATH] : [])
48
+ ];
49
+ }
50
+
51
+ async function emitTriggerCacheFlow(flow) {
52
+ const tag = upperFirst(flow.flowTag);
53
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
54
+ const handlerRoot = `src/generatedCode/FlowSchemas/${tag}/source`;
55
+ const roleName = customFlowRoleName(flow.flowTag);
56
+ const [processQueue, checkQueue, completeSqsQueue, completeDsqQueue] = triggerCacheQueueNames(flow);
57
+ const process = `TriggerCache${tag}`;
58
+ const check = `CheckTriggerCache${tag}Complete`;
59
+ const complete = `TriggerCache${tag}Complete`;
60
+ const handler = (functionName, handlerType) => `${handlerRoot}/${functionName}_${handlerType}.main`;
61
+
62
+ return {
63
+ artifacts: [
64
+ { path: `${source}/${process}_Main.js`, content: await renderCustom('triggerCache/TriggerCache_Main.ejs', { functionName: process }) },
65
+ { path: `${source}/${process}_HdrDsq.js`, content: await renderDsq('FlowHandler_HdrDsq.ejs', { functionName: process, mainFileName: `${process}_Main`, queueName: processQueue, startConfig: null }) },
66
+ { path: `${source}/${check}_Main.js`, content: await renderCustom('triggerCache/CheckTriggerCache_Main.ejs', { functionName: check, flowTag: flow.flowTag }) },
67
+ { path: `${source}/${check}_HdrSqs.js`, content: await renderCustom('triggerCache/CheckTriggerCache_HdrSqs.ejs', { functionName: check, queueName: checkQueue }) },
68
+ { path: `${source}/${complete}_Main.js`, content: await renderCustom('triggerCache/TriggerCacheComplete_Main.ejs', { functionName: complete, flowTag: flow.flowTag }) },
69
+ { path: `${source}/${complete}_HdrSqs.js`, content: await render('FlowHandler_HdrSqs.ejs', { functionName: complete, mainFileName: `${complete}_Main`, queueName: completeSqsQueue, startConfig: null, usePassBack: false }) },
70
+ { path: `${source}/${complete}_HdrDsq.js`, content: await renderDsq('FlowHandler_HdrDsq.ejs', { functionName: complete, mainFileName: `${complete}_Main`, queueName: completeDsqQueue, startConfig: null, usePassBack: false }) }
71
+ ],
72
+ functions: [
73
+ renderSqsFunctionYaml({ functionName: `${process}HdrDsq`, handlerPath: handler(process, 'HdrDsq'), roleName, queueName: processQueue }),
74
+ renderSqsFunctionYaml({ functionName: `${check}HdrSqs`, handlerPath: handler(check, 'HdrSqs'), roleName, queueName: checkQueue }),
75
+ renderSqsFunctionYaml({ functionName: `${complete}HdrSqs`, handlerPath: handler(complete, 'HdrSqs'), roleName, queueName: completeSqsQueue }),
76
+ renderSqsFunctionYaml({ functionName: `${complete}HdrDsq`, handlerPath: handler(complete, 'HdrDsq'), roleName, queueName: completeDsqQueue })
77
+ ]
78
+ };
79
+ }
80
+
81
+ function triggerCachePaths(flow) {
82
+ const tag = upperFirst(flow.flowTag);
83
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
84
+ const process = `TriggerCache${tag}`;
85
+ const check = `CheckTriggerCache${tag}Complete`;
86
+ const complete = `TriggerCache${tag}Complete`;
87
+ return [
88
+ `${source}/${process}_Main.js`,
89
+ `${source}/${process}_HdrDsq.js`,
90
+ `${source}/${check}_Main.js`,
91
+ `${source}/${check}_HdrSqs.js`,
92
+ `${source}/${complete}_Main.js`,
93
+ `${source}/${complete}_HdrSqs.js`,
94
+ `${source}/${complete}_HdrDsq.js`
95
+ ];
96
+ }
97
+
98
+ async function emitFlow(flow, objects) {
99
+ const tag = upperFirst(flow.flowTag);
100
+ const process = `Process${tag}`;
101
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
102
+ const handlerRoot = `src/generatedCode/FlowSchemas/${tag}/source`;
103
+ const shared = { flowTag: flow.flowTag, flowStepName: '', mainFileName: `${process}_Main`, functionName: process, startConfig: startConfig(flow) };
104
+ const artifacts = needsProcessMain(flow)
105
+ ? [{ path: `${source}/${process}_Main.js`, content: await renderEndpointMain(flow, process, objects) }]
106
+ : [];
107
+ const functions = [];
108
+
109
+ if (flow.event.includes('extTopic')) {
110
+ artifacts.push({ path: `${source}/${process}_HdrSqs.js`, content: await render('FlowHandler_HdrSqs.ejs', { ...shared, queueName: `${process}HdrSqs` }) });
111
+ functions.push(renderSqsFunctionYaml({ functionName: `${process}HdrSqs`, handlerPath: `${handlerRoot}/${process}_HdrSqs.main`, roleName: customFlowRoleName(flow.flowTag), queueName: `${process}HdrSqs` }));
112
+ }
113
+ if (flow.event.includes('lambdaSyncInv')) {
114
+ artifacts.push({ path: `${source}/${process}_HdrInv.js`, content: await render('FlowHandler_HdrInv.ejs', shared) });
115
+ functions.push(renderInvFunctionYaml({ functionName: `${process}HdrInv`, handlerPath: `${handlerRoot}/${process}_HdrInv.main`, roleName: customFlowRoleName(flow.flowTag) }));
116
+ }
117
+ if (flow.event.includes('lambdaSyncApi')) {
118
+ artifacts.push({ path: `${source}/${process}_HdrApi.js`, content: await render('FlowHandler_HdrApi.ejs', shared) });
119
+ functions.push(renderApiFunctionYaml({ functionName: `${process}HdrApi`, handlerPath: `${handlerRoot}/${process}_HdrApi.main`, roleName: customFlowRoleName(flow.flowTag) }));
120
+ }
121
+ if (flow.event.includes('eventBridge')) {
122
+ artifacts.push({ path: `${source}/${process}_HdrInv.js`, content: await render('FlowHandler_HdrInv.ejs', shared) });
123
+ functions.push(renderEventBridgeFunctionYaml({ functionName: `${process}HdrInv`, handlerPath: `${handlerRoot}/${process}_HdrInv.main`, roleName: customFlowRoleName(flow.flowTag), flowTag: tag, schedules: flow.schedules ?? [] }));
124
+ }
125
+ if (flow.event.includes('ownTopic')) {
126
+ const root = await emitOwnTopicRoot(flow, objects);
127
+ artifacts.push(...root.artifacts);
128
+ functions.push(...root.functions);
129
+ }
130
+ if (flow.event.includes('s3')) {
131
+ const s3Artifacts = await emitS3Flow(flow, source, handlerRoot);
132
+ artifacts.push(...s3Artifacts.artifacts);
133
+ functions.push(...s3Artifacts.functions);
134
+ }
135
+ return { artifacts, functions };
136
+ }
137
+
138
+ function flowPaths(flow) {
139
+ const tag = upperFirst(flow.flowTag);
140
+ const process = `Process${tag}`;
141
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
142
+ const paths = needsProcessMain(flow) ? [`${source}/${process}_Main.js`] : [];
143
+ if (flow.event.includes('extTopic')) paths.push(`${source}/${process}_HdrSqs.js`);
144
+ if (flow.event.includes('lambdaSyncInv') || flow.event.includes('eventBridge')) paths.push(`${source}/${process}_HdrInv.js`);
145
+ if (flow.event.includes('lambdaSyncApi')) paths.push(`${source}/${process}_HdrApi.js`);
146
+ if (flow.event.includes('ownTopic')) paths.push(...ownTopicRootPaths(flow));
147
+ if (flow.event.includes('s3')) {
148
+ ['ConfirmAfterUpload', 'CreateObject', 'CreatePreSignUrl', 'ProcessAfterUpload', 'ReservedLimit'].forEach(action => {
149
+ const handler = action === 'CreateObject' ? 'HdrWbs' : action === 'ProcessAfterUpload' ? 'HdrS3' : 'HdrSqs';
150
+ paths.push(`${source}/${tag}${action}_Main.js`, `${source}/${tag}${action}_${handler}.js`);
151
+ });
152
+ }
153
+ return paths;
154
+ }
155
+
156
+ async function emitExtTopicStep({ flow, step, flowTag, stepName }) {
157
+ const source = `app/src/generatedCode/FlowSchemas/${flowTag}/source`;
158
+ const handlerRoot = `src/generatedCode/FlowSchemas/${flowTag}/source`;
159
+ const functionName = `${flowTag}${stepName}`;
160
+ const mainFileName = `${functionName}_Main`;
161
+ const queueName = `${functionName}HdrSqs`;
162
+ const startConfig = stepConfig(flow, step);
163
+ return {
164
+ artifacts: [
165
+ { path: `${source}/${mainFileName}.js`, content: await renderStepMain(functionName) },
166
+ { path: `${source}/${functionName}_HdrSqs.js`, content: await render('FlowHandler_HdrSqs.ejs', { flowTag: flow.flowTag, flowStepName: step.stepName, functionName, mainFileName, startConfig, queueName }) }
167
+ ],
168
+ function: renderSqsFunctionYaml({ functionName: queueName, handlerPath: `${handlerRoot}/${functionName}_HdrSqs.main`, roleName: customFlowRoleName(flow.flowTag), queueName })
169
+ };
170
+ }
171
+
172
+ async function emitOwnTopicRoot(flow, objects) {
173
+ const tag = upperFirst(flow.flowTag);
174
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
175
+ const handlerRoot = `src/generatedCode/FlowSchemas/${tag}/source`;
176
+ const mainFileName = `${tag}_Main`;
177
+ const wbsMainFileName = `${tag}_WbsMain`;
178
+ const shared = { flowTag: flow.flowTag, flowStepName: '', upperCaseFlowTag: tag, startConfig: startConfig(flow) };
179
+ return {
180
+ artifacts: [
181
+ { path: `${source}/${mainFileName}.js`, content: await renderEndpointMain(flow, mainFileName, objects) },
182
+ { path: `${source}/${tag}_HdrSqs.js`, content: await render('FlowHandler_HdrSqs.ejs', { ...shared, functionName: mainFileName, mainFileName, queueName: `${tag}HdrSqs` }) },
183
+ { path: `${source}/${wbsMainFileName}.js`, content: await render('FlowMain_Wbs.ejs', { ...shared, functionName: wbsMainFileName }) },
184
+ { path: `${source}/${tag}_HdrWbs.js`, content: await render('FlowEndpoint_HdrWbs.ejs', { ...shared, functionName: tag, mainFileName: wbsMainFileName, route: tag }) }
185
+ ],
186
+ functions: [
187
+ renderWbsFunctionYaml({ functionName: `${tag}HdrWbs`, handlerPath: `${handlerRoot}/${tag}_HdrWbs.main`, roleName: customFlowRoleName(flow.flowTag), routeName: tag }),
188
+ renderSqsFunctionYaml({ functionName: `${tag}HdrSqs`, handlerPath: `${handlerRoot}/${tag}_HdrSqs.main`, roleName: customFlowRoleName(flow.flowTag), queueName: `${tag}HdrSqs` })
189
+ ]
190
+ };
191
+ }
192
+
193
+ function ownTopicRootPaths(flow) {
194
+ const tag = upperFirst(flow.flowTag);
195
+ const source = `app/src/generatedCode/FlowSchemas/${tag}/source`;
196
+ return [`${source}/${tag}_Main.js`, `${source}/${tag}_HdrSqs.js`, `${source}/${tag}_WbsMain.js`, `${source}/${tag}_HdrWbs.js`];
197
+ }
198
+
199
+ function needsProcessMain(flow) {
200
+ return !isS3Only(flow) && flow.event.some(event => event !== 'ownTopic' && event !== 's3');
201
+ }
202
+
203
+ async function emitS3Flow(flow, source, handlerRoot) {
204
+ const tag = upperFirst(flow.flowTag);
205
+ const roleName = customFlowRoleName(flow.flowTag);
206
+ const parts = [
207
+ { action: 'CreateObject', handler: 'HdrWbs', type: 'wbs', mainTemplate: 'CreateObject_Main.ejs', handlerTemplate: 'CreateObject_HdrWbs.ejs' },
208
+ { action: 'ReservedLimit', handler: 'HdrSqs', type: 'sqs', mainTemplate: 'ReservedLimit_Main.ejs', handlerTemplate: 'ReservedLimit_HdrSqs.ejs' },
209
+ { action: 'CreatePreSignUrl', handler: 'HdrSqs', type: 'sqs', mainTemplate: 'CreatePreSignUrl_Main.ejs', handlerTemplate: 'CreatePreSignUrl_HdrSqs.ejs' },
210
+ { action: 'ProcessAfterUpload', handler: 'HdrS3', type: 'inv', mainTemplate: 'ProcessS3File_Main.ejs', handlerTemplate: 'FlowHandler_HdrS3.ejs' },
211
+ { action: 'ConfirmAfterUpload', handler: 'HdrSqs', type: 'sqs', mainTemplate: 'ConfirmReserved_Main.ejs', handlerTemplate: 'ConfirmReserved_HdrSqs.ejs' }
212
+ ];
213
+ const emitted = await Promise.all(parts.map(async ({ action, handler, type, mainTemplate, handlerTemplate }) => {
214
+ const functionName = `${tag}${action}`;
215
+ const mainFileName = `${functionName}_Main`;
216
+ const handlerFileName = `${functionName}_${handler}`;
217
+ const mainContent = await renderCustom(`s3/${mainTemplate}`, s3TemplateData({ action, flow, functionName }));
218
+ const handlerContent = await renderCustom(`s3/${handlerTemplate}`, s3HandlerData({ action, flow, functionName, mainFileName, handler }));
219
+ const descriptor = { functionName: `${functionName}${handler}`, handlerPath: `${handlerRoot}/${handlerFileName}.main`, roleName };
220
+ const functionYaml = type === 'wbs'
221
+ ? renderWbsFunctionYaml({ ...descriptor, routeName: tag })
222
+ : type === 'sqs'
223
+ ? renderSqsFunctionYaml({ ...descriptor, queueName: handlerFileName })
224
+ : renderInvFunctionYaml(descriptor);
225
+ return {
226
+ artifacts: [
227
+ { path: `${source}/${mainFileName}.js`, content: mainContent },
228
+ { path: `${source}/${handlerFileName}.js`, content: handlerContent }
229
+ ],
230
+ functionYaml
231
+ };
232
+ }));
233
+ return { artifacts: emitted.flatMap(item => item.artifacts), functions: emitted.map(item => item.functionYaml) };
234
+ }
235
+
236
+ function s3TemplateData({ action, flow, functionName }) {
237
+ return action === 'CreateObject'
238
+ ? { flowTag: flow.flowTag, objectType: flow.objType?.objectType, functionName }
239
+ : action === 'CreatePreSignUrl'
240
+ ? { flowTag: flow.flowTag }
241
+ : { flowTag: flow.flowTag, functionName };
242
+ }
243
+
244
+ function s3HandlerData({ action, flow, functionName, mainFileName, handler }) {
245
+ if (action === 'CreateObject') return { functionName, handlerType: handler, route: flow.flowTag };
246
+ if (action === 'ProcessAfterUpload') return { flowTag: flow.flowTag, functionName, mainFileName, s3Bucket: flow.bucketName ?? '' };
247
+ return { functionName, handlerType: handler };
248
+ }
249
+
250
+ function startConfig(flow) {
251
+ const start = flow.flowSteps?.find(step => step.stepName?.toLowerCase() === 'start');
252
+ return start ? stepConfig(flow, start) : null;
253
+ }
254
+
255
+ function stepConfig(flow, step) {
256
+ return {
257
+ ...step,
258
+ properties: mapFields(step.properties, flow.stepProperties),
259
+ messageAttributes: mapFields(step.messageAttributes, flow.stepMessageAttributes)
260
+ };
261
+ }
262
+
263
+ function mapFields(names = [], definitions = {}) {
264
+ return names.map(name => ({ propertyName: name, ...(definitions?.[name] ?? {}) }));
265
+ }
266
+
267
+ function isS3Only(flow) {
268
+ return flow.event.length === 1 && flow.event[0] === 's3';
269
+ }
270
+
271
+ async function renderEndpointMain(flow, functionName, objects) {
272
+ return renderCustom('FlowEndpoint_Main.ejs', {
273
+ flow,
274
+ flowTag: flow.flowTag,
275
+ upperCaseFlowTag: upperFirst(flow.flowTag),
276
+ functionName,
277
+ tableName: storedCacheTableName(flow, objects)
278
+ });
279
+ }
280
+
281
+ function storedCacheTableName(flow, objects) {
282
+ if (flow.statusType !== 'storedCache') return null;
283
+ const candidates = objects.filter(object => object.objectType === flow.objType?.objectType);
284
+ const object = flow.objType?.serviceTag
285
+ ? candidates.find(object => object.serviceTag === flow.objType.serviceTag) ?? candidates.find(object => object.serviceTag === undefined)
286
+ : candidates[0];
287
+ return Object.values(object?.storageResources ?? {}).find(resource => resource?.storageType === 'dynamoDB')?.tableName ?? null;
288
+ }
289
+
290
+ async function renderStepMain(functionName) {
291
+ return renderCustom('FlowStep_Main.ejs', { functionName });
292
+ }
293
+
294
+ function renderMain(functionName) {
295
+ return `export default async function ${functionName}(_izContext, requestParams, callingFlowConfig = {}) {\n try {\n _izContext?.logger?.debug('${functionName} requestParams', requestParams);\n //(<endpointHook>)\n //(</endpointHook>)\n } catch (error) {\n _izContext?.logger?.error('${functionName} failed', error);\n throw error;\n }\n}\n`;
296
+ }
297
+
298
+ async function render(templateName, data) {
299
+ return ejs.render(await readFile(new URL(templateName, TEMPLATE_URL), 'utf8'), data);
300
+ }
301
+
302
+ async function renderDsq(templateName, data) {
303
+ return ejs.render(await readFile(new URL(templateName, DSQ_TEMPLATE_URL), 'utf8'), data);
304
+ }
305
+
306
+ async function renderCustom(templateName, data) {
307
+ return ejs.render(await readFile(new URL(templateName, CUSTOM_TEMPLATE_URL), 'utf8'), data).replace(/\n$/, '');
308
+ }
@@ -0,0 +1,22 @@
1
+ import { buildGenerationPlan } from '../../plan/buildGenerationPlan.js';
2
+ import { commitArtifacts } from '../../output/commitArtifacts.js';
3
+ import { compileProject } from '../../compile/compileProject.js';
4
+ import { loadLocalSchemaDirectory } from '../../compile/loadSchemas.js';
5
+ import { customFlowApplicationManagedPaths, emitCustomFlowApplicationArtifacts } from './emitCustomFlowApplicationArtifacts.js';
6
+ import { emitSystemWebSocketArtifacts, hasSystemWebSocket, systemWebSocketManagedPaths } from '../system/emitSystemWebSocketArtifacts.js';
7
+
8
+ export async function generateCustomFlowApplicationArtifacts(rootPath, options = {}) {
9
+ const project = compileProject({ ...options, rootPath });
10
+ const [flows, objects] = await Promise.all([
11
+ loadLocalSchemaDirectory(project, 'FlowSchemas'),
12
+ loadLocalSchemaDirectory(project, 'ObjectSchemas')
13
+ ]);
14
+ const system = await emitSystemWebSocketArtifacts(flows);
15
+ const custom = await emitCustomFlowApplicationArtifacts(flows, { systemFunctions: system.functions, objects });
16
+ const artifacts = [...system.artifacts, ...custom];
17
+ const files = await commitArtifacts(buildGenerationPlan(project, artifacts, {
18
+ managedPaths: [...systemWebSocketManagedPaths(), ...customFlowApplicationManagedPaths(flows, { includeYaml: hasSystemWebSocket(flows) })],
19
+ managedScope: 'custom-flow-application'
20
+ }));
21
+ return { project, files };
22
+ }
@@ -136,4 +136,4 @@ export default async function <%- typeof functionName !== 'undefined' ? function
136
136
  _izContext.logger.error('error WebSocketInvoke: ', err)
137
137
  throw (err)
138
138
  }
139
- }
139
+ }
@@ -57,4 +57,4 @@ export default async function <%= functionName %>(
57
57
  _izContext.logger.error('error <%= functionName %>Main: ', err)
58
58
  throw (err)
59
59
  }
60
- }
60
+ }
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20
20
  import dynamodbSharedLib from '@izara_project/izara-core-library-dynamodb';
21
21
  import snsSharedLib from '@izara_project/izara-core-library-sns';
22
22
  import { sns } from '@izara_project/izara-core-library-external-request';
23
- import { consts as generateCodeConsts } from '@izara_project/izara-core-generate-service-code';
24
- import { getNestObject } from '../../../../libs/source/GenerateCodeLibs.js';
23
+ import { consts as schemaConsts } from '@izara_project/izara-core-library-service-schemas';
24
+ import { getNestObject } from '../../../libs/source/GenerateCodeLibs.js';
25
25
 
26
26
  //(<optionalRequired>)
27
27
  //(</optionalRequired>)
@@ -73,14 +73,14 @@ export default async function confirmNewReserved(
73
73
  let confirmUsageMessage = {
74
74
  userId: userId,
75
75
  //(<optionalLimitTag>)
76
- limitTag: consts.LIMIT_TAG.uploadData,
76
+ limitTag: schemaConsts.LIMIT_TAG.uploadData,
77
77
  //(</optionalLimitTag>)
78
78
  uniqueIdentify: uniqueIdentify,
79
79
  }
80
80
 
81
81
  let sendMessageToConfirmUsage = {
82
82
  Message: JSON.stringify(confirmUsageMessage),
83
- TopicArn: await snsSharedLib.snsTopicArnByFlowSchema(_izContext, 'ConfirmUsage_In', consts.EXTERNAL_SERVICE_NAME.accountLimits)
83
+ TopicArn: await snsSharedLib.snsTopicArnByFlowSchema(_izContext, 'ConfirmUsage_In', schemaConsts.EXTERNAL_SERVICE_NAME.accountLimits)
84
84
  };
85
85
  _izContext.logger.debug("sendMessageToConfirmUsage", sendMessageToConfirmUsage);
86
86
  await sns.publishAsync(_izContext, sendMessageToConfirmUsage);
@@ -126,4 +126,4 @@ export default async function confirmNewReserved(
126
126
  _izContext.logger.debug('error ConfirmNewReservedMain: ', err)
127
127
  throw (err)
128
128
  }
129
- }
129
+ }
@@ -81,4 +81,4 @@ export const main = middleware.wrap(async (event, context) => {
81
81
  await postToConnection({ message: err.message }, connId);
82
82
  return (response.failure(err));
83
83
  }
84
- });
84
+ });
@@ -29,8 +29,8 @@ import lambdaSharedLib from '@izara_project/izara-core-library-lambda';
29
29
  import { sns } from '@izara_project/izara-core-library-external-request';
30
30
 
31
31
  import { NoRetryError } from '@izara_project/izara-core-library-core';
32
- import { consts as generateCodeConsts } from '@izara_project/izara-core-generate-service-code';
33
- const { TOPIC_NAME_GENERATE_CODE } = generateCodeConsts;
32
+ import { consts as schemaConsts } from '@izara_project/izara-core-library-service-schemas';
33
+ const { TOPIC_NAME_GENERATE_CODE } = schemaConsts;
34
34
 
35
35
  //(<optionalRequired>)
36
36
  //(</optionalRequired>)
@@ -128,4 +128,4 @@ export default async function createObject(
128
128
  _izContext.logger.error('error WebSocketInvoke: ', err)
129
129
  throw (err)
130
130
  }
131
- }
131
+ }
@@ -29,11 +29,10 @@ import { createPresignedPost } from '@aws-sdk/s3-presigned-post';
29
29
  const client = new S3Client({ region: process.env.AWS_REGION });
30
30
  import { consts } from '@izara_project/izara-middleware';
31
31
 
32
- import { postToConnection, getNestObject } from '../../../../libs/source/GenerateCodeLibs.js'
32
+ import { postToConnection, getNestObject } from '../../../libs/source/GenerateCodeLibs.js'
33
33
  import { consts as coreConsts } from '@izara_project/izara-core-library-core';
34
- import { consts as generateCodeConsts } from '@izara_project/izara-core-generate-service-code';
35
- const { EXTERNAL_SERVICE_NAME } = generateCodeConsts;
36
- import { utils } from "@izara_project/izara-core-library-service-schemas"
34
+ import { consts as schemaConsts, utils } from "@izara_project/izara-core-library-service-schemas"
35
+ const { EXTERNAL_SERVICE_NAME } = schemaConsts;
37
36
  const { createFlowTypeConcat } = utils
38
37
  //(<optionalRequired>)
39
38
  //(</optionalRequired>)
@@ -259,4 +258,4 @@ export default async function createPreSignUrl (
259
258
  _izContext.logger.error('error createPreSignUrl: ', err)
260
259
  throw (err)
261
260
  }
262
- }
261
+ }
@@ -41,16 +41,10 @@ export const main = middleware.wrap(async (event, context) => {
41
41
 
42
42
  const s3Record = event.Records[0].s3;
43
43
 
44
- // Pack the S3 trigger payload into requestParams so the main function
45
- // can decide what to do (download file, publish to SNS, invoke Lambda, etc.)
46
- const requestParams = {
47
- bucket: s3Record.bucket,
48
- object: s3Record.object,
49
- };
50
-
51
44
  const result = await <%- functionName %>(
52
45
  event._izContext,
53
- requestParams,
46
+ s3Record.bucket,
47
+ s3Record.object,
54
48
  //(<additionalParams>)
55
49
  //(</additionalParams>)
56
50
  );
@@ -63,4 +63,4 @@ export default async function processAfterUpload (
63
63
  _izContext.logger.error('error ProcessImageAfterUploadMain: ', err)
64
64
  throw (err)
65
65
  }
66
- }
66
+ }
@@ -22,12 +22,11 @@ import lambdaSharedLib from '@izara_project/izara-core-library-lambda';
22
22
  import snsSharedLib from '@izara_project/izara-core-library-sns';
23
23
  import asyncFlowSharedLib from "@izara_project/izara-core-library-asynchronous-flow";
24
24
  import { sns, webSocket } from '@izara_project/izara-core-library-external-request';
25
- import { consts as generateCodeConsts } from '@izara_project/izara-core-generate-service-code';
26
25
  import { consts as coreConsts } from '@izara_project/izara-middleware';
27
26
  import { objectHash as hash } from '@izara_project/izara-shared-core';
28
27
  import dynamodbSharedLib from '@izara_project/izara-core-library-dynamodb';
29
- import { processStaticLimit } from '../../../../libs/source/GenerateCodeLibs.js';
30
- import { utils } from "@izara_project/izara-core-library-service-schemas";
28
+ import { processStaticLimit } from '../../../libs/source/GenerateCodeLibs.js';
29
+ import { consts as schemaConsts, utils } from "@izara_project/izara-core-library-service-schemas";
31
30
  const { createFlowTypeConcat } = utils
32
31
  const { postToConnection } = webSocket;
33
32
 
@@ -77,7 +76,7 @@ export default async function reservedLimit(
77
76
  }
78
77
 
79
78
  let res = await processStaticLimit(_izContext,
80
- await lambdaSharedLib.lambdaFunctionName(_izContext, "StaticLimitProcessHdrInv", consts.EXTERNAL_SERVICE_NAME.accountLimits),
79
+ await lambdaSharedLib.lambdaFunctionName(_izContext, "StaticLimitProcessHdrInv", schemaConsts.EXTERNAL_SERVICE_NAME.accountLimits),
81
80
  payloadBeforeInvokeStaticLimit
82
81
  )
83
82
 
@@ -157,7 +156,7 @@ export default async function reservedLimit(
157
156
 
158
157
  let sendMessageToReservedDynamic = {
159
158
  Message: JSON.stringify(sendMsgReservedDynamic),
160
- TopicArn: await snsSharedLib.snsTopicArnByFlowSchema(_izContext, "ReservedDynamicUsage_In", consts.EXTERNAL_SERVICE_NAME.accountLimits)
159
+ TopicArn: await snsSharedLib.snsTopicArnByFlowSchema(_izContext, "ReservedDynamicUsage_In", schemaConsts.EXTERNAL_SERVICE_NAME.accountLimits)
161
160
  };
162
161
  _izContext.logger.debug("sendMessageToReservedDynamic", sendMessageToReservedDynamic);
163
162
  await sns.publishAsync(_izContext, sendMessageToReservedDynamic);
@@ -170,4 +169,4 @@ export default async function reservedLimit(
170
169
  _izContext.logger.error('error GetSignedUrlAccountLimit: ', err);
171
170
  throw (err)
172
171
  }
173
- }
172
+ }
@@ -0,0 +1,32 @@
1
+ import { middlewareHandler as middleware } from '@izara_project/izara-middleware';
2
+ import Logger from '@izara_project/izara-core-library-logger';
3
+ import { recordHandlerSharedLib } from '@izara_project/izara-core-library-record-handler';
4
+ import callingFlowSharedLib from '@izara_project/izara-core-library-calling-flow';
5
+
6
+ import <%- functionName %> from './<%- functionName %>_Main.js';
7
+
8
+ middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
9
+
10
+ export const main = middleware.wrap(async event => {
11
+ try {
12
+ const recordPromises = [];
13
+ await Promise.all(event.Records.map(async record => {
14
+ await recordHandlerSharedLib.validateRecord(record, '<%- queueName %>', {}, null);
15
+ recordPromises.push(recordHandlerSharedLib.recordHandler(
16
+ record,
17
+ <%- functionName %>,
18
+ '<%- queueName %>',
19
+ [
20
+ record.body.Message.identifiers,
21
+ record.body.TopicArn,
22
+ callingFlowSharedLib.addCallingFlowToPassOnProperties(record.body.Message)
23
+ ]
24
+ ));
25
+ }));
26
+ await Promise.all(recordPromises);
27
+ return event.Records;
28
+ } catch (error) {
29
+ Logger.error('Unhandled Error, CheckTriggerCache_HdrSqs: ', error);
30
+ throw error;
31
+ }
32
+ });
@@ -0,0 +1,63 @@
1
+ import { getObjectSchema } from '@izara_project/izara-core-library-service-schemas';
2
+ import { triggeredCacheSharedLibV2 } from '@izara_project/izara-core-library-trigger-cache';
3
+
4
+ export default async function <%- functionName %>(
5
+ _izContext,
6
+ requestParams,
7
+ topicArn,
8
+ callingFlowConfig = {}
9
+ ) {
10
+ try {
11
+ _izContext.logger.debug(
12
+ '<%- functionName %> requestParams',
13
+ requestParams
14
+ );
15
+ _izContext.logger.debug(
16
+ '<%- functionName %> topicArn',
17
+ topicArn
18
+ );
19
+ _izContext.logger.debug(
20
+ '<%- functionName %> callingFlowConfig',
21
+ callingFlowConfig
22
+ );
23
+
24
+ const topicName = topicArn.split(':')[5].split('_');
25
+ const flowSchema = await getObjectSchema.getFlowSchemaS3WithCache(
26
+ _izContext,
27
+ {
28
+ flowTag: topicName[2],
29
+ serviceTag: topicName[0]
30
+ }
31
+ );
32
+
33
+ //(<checkTriggerCacheIdentifiers>)
34
+ let identifiers;
35
+ //(</checkTriggerCacheIdentifiers>)
36
+
37
+ const checkTriggerCache =
38
+ await triggeredCacheSharedLibV2.checkTriggerFlowCompleteAwaitingStepV2(
39
+ _izContext,
40
+ { serviceTag: topicName[0], flowTag: topicName[2] },
41
+ identifiers,
42
+ { flowTag: '<%- flowTag %>', serviceTag: process.env.iz_serviceTag }
43
+ );
44
+
45
+ _izContext.logger.debug(
46
+ '<%- functionName %> flowSchema',
47
+ flowSchema
48
+ );
49
+ _izContext.logger.debug(
50
+ '<%- functionName %> checkTriggerCache',
51
+ checkTriggerCache
52
+ );
53
+
54
+ //(<endpointHook>)
55
+ //(</endpointHook>)
56
+ } catch (error) {
57
+ _izContext.logger.error(
58
+ '<%- functionName %> failed',
59
+ error
60
+ );
61
+ throw error;
62
+ }
63
+ }
@@ -0,0 +1,35 @@
1
+ import { triggeredCacheSharedLibV2 } from '@izara_project/izara-core-library-trigger-cache';
2
+
3
+ export default async function <%- functionName %>(
4
+ _izContext,
5
+ requestParams,
6
+ callingFlowConfig = {}
7
+ ) {
8
+ try {
9
+ _izContext.logger.debug('<%- functionName %> requestParams', requestParams);
10
+ _izContext.logger.debug('<%- functionName %> callingFlowConfig', callingFlowConfig);
11
+
12
+ //(<beforeCheckTriggeredCache>)
13
+ //(</beforeCheckTriggeredCache>)
14
+
15
+ const checkTriggerResetedV2 = await triggeredCacheSharedLibV2.checkTriggerResetedV2(
16
+ _izContext,
17
+ { serviceTag: process.env.iz_serviceTag, flowTag: '<%- flowTag %>' },
18
+ //(<identifiers>)
19
+ {},
20
+ //(</identifiers>)
21
+ //(<uniqueRequestId>)
22
+ //(</uniqueRequestId>)
23
+ //(<settings>)
24
+ //(</settings>)
25
+ );
26
+
27
+ _izContext.logger.debug('<%- functionName %> checkTriggerResetedV2', checkTriggerResetedV2);
28
+
29
+ //(<endpointHook>)
30
+ //(</endpointHook>)
31
+ } catch (error) {
32
+ _izContext.logger.error('<%- functionName %> failed', error);
33
+ throw error;
34
+ }
35
+ }
@@ -0,0 +1,16 @@
1
+ export default async function <%- functionName %>(
2
+ _izContext,
3
+ requestParams,
4
+ callingFlowConfig = {}
5
+ ) {
6
+ try {
7
+ _izContext.logger.debug('<%- functionName %> requestParams', requestParams);
8
+ _izContext.logger.debug('<%- functionName %> callingFlowConfig', callingFlowConfig);
9
+
10
+ //(<endpointHook>)
11
+ //(</endpointHook>)
12
+ } catch (error) {
13
+ _izContext.logger.error('<%- functionName %> failed', error);
14
+ throw error;
15
+ }
16
+ }