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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +73 -11
  2. package/docs/TriggeredCache Flow.drawio +193 -0
  3. package/docs/test.mmd +47 -0
  4. package/docs/test.png +0 -0
  5. package/index.js +0 -5
  6. package/package.json +7 -6
  7. package/src/compile/compileProject.js +26 -0
  8. package/src/compile/loadSchemas.js +50 -0
  9. package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
  10. package/src/emit/crud/emitCrudApplicationArtifacts.js +161 -0
  11. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +84 -0
  12. package/src/emit/crud/generateCrudApplicationArtifacts.js +16 -0
  13. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +21 -0
  14. package/src/emit/crud/loadLocalSchemaArrays.js +8 -0
  15. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/CreateEndpoint_Main.ejs +6 -6
  16. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +6 -6
  17. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step → emit/crud/templates}/FlowEndpointBeforeLogical_Main.ejs +2 -2
  18. package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +96 -0
  19. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
  20. package/src/emit/crud/templates/FlowHandler_HdrApi.ejs +69 -0
  21. package/src/{codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_HdrSqs.ejs → emit/crud/templates/FlowHandler_HdrSqs.ejs} +52 -56
  22. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowMain_Wbs.ejs +1 -3
  23. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +2 -2
  24. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +127 -0
  25. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/UpdateEndpoint_Main.ejs +11 -9
  26. package/src/emit/custom/customFlows.js +121 -0
  27. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +325 -0
  28. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +22 -0
  29. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/custom/templates}/FlowEndpoint_Main.ejs +5 -5
  30. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step → emit/custom/templates}/FlowStep_Main.ejs +1 -1
  31. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_Main.ejs +5 -5
  32. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_HdrWbs.ejs +1 -1
  33. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_Main.ejs +3 -3
  34. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_Main.ejs +4 -5
  35. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/FlowHandler_HdrS3.ejs +2 -8
  36. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ProcessS3File_Main.ejs +1 -1
  37. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_Main.ejs +5 -6
  38. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +32 -0
  39. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +63 -0
  40. package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +35 -0
  41. package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +16 -0
  42. package/src/emit/function/functionYamlArtifact.js +125 -0
  43. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
  44. package/src/emit/rbac/emitRbacApplicationArtifacts.js +270 -0
  45. package/src/emit/rbac/generateCreateTargetRoleHandler.js +19 -0
  46. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +21 -0
  47. package/src/emit/rbac/rbacFlowTag.js +7 -0
  48. package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +24 -0
  49. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +25 -0
  50. package/src/emit/rbac/templates/DynamicRbacFlowSchema.ejs +5 -0
  51. package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +17 -0
  52. package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +13 -0
  53. package/src/emit/rbac/templates/ListRbac_Main.ejs +29 -0
  54. package/src/emit/rbac/templates/RbacMutation_Main.ejs +22 -0
  55. package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +10 -0
  56. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +44 -0
  57. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +33 -0
  58. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +11 -0
  59. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +66 -0
  60. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +148 -0
  61. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +23 -0
  62. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +22 -0
  63. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationshipComplete_Main.ejs → emit/relationship/templates/ChangeRelationshipComplete_Main.ejs} +1 -1
  64. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationship_Main.ejs → emit/relationship/templates/ChangeRelationship_Main.ejs} +12 -4
  65. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationshipComplete_Main.ejs → emit/relationship/templates/CreateRelationshipComplete_Main.ejs} +1 -1
  66. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationship_Main.ejs → emit/relationship/templates/CreateRelationship_Main.ejs} +1 -1
  67. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationshipComplete_Main.ejs → emit/relationship/templates/DeleteRelationshipComplete_Main.ejs} +1 -1
  68. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationship_Main.ejs → emit/relationship/templates/DeleteRelationship_Main.ejs} +1 -1
  69. package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrDsq.ejs +1 -1
  70. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +45 -0
  71. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationshipComplete_Main.ejs → emit/relationship/templates/GetRelationshipComplete_Main.ejs} +1 -1
  72. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationship_Main.ejs → emit/relationship/templates/GetRelationship_Main.ejs} +1 -1
  73. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationship_Main.ejs → emit/relationship/templates/MoveRelationship_Main.ejs} +9 -1
  74. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationshipComplete_Main.ejs → emit/relationship/templates/UpdateRelationshipComplete_Main.ejs} +1 -1
  75. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationship_Main.ejs → emit/relationship/templates/UpdateRelationship_Main.ejs} +1 -1
  76. package/src/emit/resource/emitResourceArtifacts.js +595 -0
  77. package/src/emit/resource/generateResourceArtifacts.js +20 -0
  78. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceBeforeLogicalYaml.ejs +1 -1
  79. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceSqsYaml.ejs +6 -6
  80. package/src/{codeGenerators/app/sls_yaml → emit/resource}/templates/SharedResource_Yaml.ejs +8 -8
  81. package/src/emit/system/emitSystemWebSocketArtifacts.js +183 -0
  82. package/src/generate.js +60 -126
  83. package/src/output/commitArtifacts.js +213 -0
  84. package/src/output/mergeHooks.js +55 -0
  85. package/src/output/validateArtifacts.js +62 -0
  86. package/src/plan/buildGenerationPlan.js +50 -0
  87. package/test/core.test.js +159 -0
  88. package/test/createTargetRoleHandler.test.js +68 -0
  89. package/test/crudApplicationArtifacts.test.js +107 -0
  90. package/test/customFlowApplicationArtifacts.test.js +297 -0
  91. package/test/dynamicCrudFlowSchemas.test.js +136 -0
  92. package/test/dynamicRbacFlowSchemas.test.js +101 -0
  93. package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
  94. package/test/functionYamlArtifact.test.js +34 -0
  95. package/test/intTestApi.test.js +29 -0
  96. package/test/publicApi.test.js +209 -0
  97. package/test/relationshipApplicationArtifacts.test.js +68 -0
  98. package/test/resourceArtifacts.test.js +121 -0
  99. package/jsconfig.json +0 -9
  100. package/src/__tests__/getIntTestConfig.test.js +0 -51
  101. package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
  102. package/src/__tests__/pathIntTest.test.js +0 -103
  103. package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
  104. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
  105. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
  106. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
  107. package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
  108. package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -332
  109. package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
  110. package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
  111. package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -503
  112. package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
  113. package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
  114. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
  115. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
  116. package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
  117. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
  118. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
  119. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
  120. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
  121. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
  122. package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
  123. package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
  124. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
  125. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
  126. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
  127. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
  128. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
  129. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
  130. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
  131. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
  132. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
  133. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
  134. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
  135. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
  136. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
  137. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
  138. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
  139. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
  140. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
  141. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
  142. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
  143. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
  144. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
  145. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
  146. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
  147. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
  148. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
  149. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
  150. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
  151. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
  152. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
  153. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
  154. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
  155. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
  156. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
  157. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
  158. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
  159. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
  160. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
  161. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
  162. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
  163. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
  164. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
  165. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
  166. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
  167. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
  168. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
  169. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
  170. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
  171. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
  172. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
  173. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
  174. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
  175. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
  176. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
  177. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
  178. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
  179. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
  180. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
  181. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
  182. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
  183. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
  184. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
  185. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
  186. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
  187. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
  188. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
  189. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
  190. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
  191. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
  192. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
  193. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
  194. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
  195. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
  196. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
  197. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
  198. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
  199. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
  200. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
  201. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
  202. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
  203. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
  204. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
  205. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
  206. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
  207. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
  208. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
  209. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
  210. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
  211. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
  212. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
  213. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
  214. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
  215. package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
  216. package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
  217. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
  218. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
  219. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
  220. package/src/core/renderTemplateFile.js +0 -22
  221. package/src/core/validate.js +0 -165
  222. package/src/generateCode.js +0 -357
  223. package/src/generateSchema.js +0 -123
  224. package/src/parsers/flowSchemaParser.js +0 -112
  225. package/src/parsers/objectSchemaParser.js +0 -39
  226. package/src/parsers/relationshipSchemaParser.js +0 -51
  227. package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
  228. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
  229. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
  230. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
  231. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
  232. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
  233. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
  234. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
  235. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
  236. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
  237. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
  238. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
  239. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
  240. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
  241. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
  242. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
  243. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
  244. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
  245. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
  246. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
  247. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
  248. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
  249. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
  250. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
  251. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrApi.ejs +0 -0
  252. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrSqs.ejs +0 -0
  253. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
  254. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
  255. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
  256. /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
  257. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/SystemDynamoDB_Yaml.ejs +0 -0
@@ -1,70 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs/promises';
3
- import { fileURLToPath } from 'url';
4
- import ejs from 'ejs';
5
-
6
- import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
7
-
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
-
11
- export async function generateFlowOut(allSchemas, options) {
12
- console.log(' [FlowOutGenerator] Generating Flow Out nodes (SNS Topics)...');
13
-
14
- const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
15
- await fs.mkdir(resourceYamlDir, { recursive: true });
16
-
17
- const yamlTplPath = path.join(__dirname, 'templates', 'FlowOut_Yaml.ejs');
18
- const yamlTpl = await fs.readFile(yamlTplPath, 'utf-8');
19
-
20
- let generatedCount = 0;
21
- const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-out.yml');
22
- await fs.writeFile(yamlOutputPath, 'Resources:\n', 'utf-8'); // ponytail: simplest one-line fix
23
-
24
- const generatedTopics = new Set();
25
-
26
- async function appendTopic(topicName) {
27
- if (generatedTopics.has(topicName)) return;
28
-
29
- generatedTopics.add(topicName);
30
- const yamlContent = ejs.render(yamlTpl, { topicName });
31
- await fs.appendFile(yamlOutputPath, `${yamlContent}\n`, 'utf-8');
32
- generatedCount++;
33
- }
34
-
35
- const flows = getFlowsForGeneration(allSchemas);
36
- for (const flow of flows) {
37
- if (flow.outputTopic !== true) continue;
38
- await appendTopic(flow.flowTag.charAt(0).toUpperCase() + flow.flowTag.slice(1));
39
- }
40
-
41
- const systemTopics = [
42
- 'ProcessLogical',
43
- 'FindData',
44
- 'Create',
45
- 'Update',
46
- 'Delete',
47
- 'Get',
48
- 'CreateRelationship',
49
- 'UpdateRelationship',
50
- 'DeleteRelationship',
51
- 'GetRelationship',
52
- 'ChangeRelationship',
53
- 'MoveRelationship',
54
- 'CreateTargetRole',
55
- 'ListTargetRole',
56
- 'DeleteTargetRole',
57
- 'CreateRolePermissions',
58
- 'ListRolePermissions',
59
- 'DeleteRolePermissions',
60
- 'CreateUserRole',
61
- 'ListUserInRoles',
62
- 'DeleteUserFromRole'
63
- ];
64
-
65
- for (const topic of systemTopics) {
66
- await appendTopic(topic);
67
- }
68
-
69
- console.log(` [FlowOutGenerator] Generated ${generatedCount} SNS Topics for Flow Out nodes.`);
70
- }
@@ -1,182 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs/promises';
3
- import { fileURLToPath } from 'url';
4
- import ejs from 'ejs';
5
-
6
- import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
7
-
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
-
11
- export async function generateFlowResourceYaml(allSchemas, options) {
12
- console.log(' [FlowResourceYamlGenerator] Generating SQS/SNS YAML resources for flows...');
13
-
14
- const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
15
- await fs.mkdir(resourceYamlDir, { recursive: true });
16
-
17
- const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
18
- const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
19
- const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
20
-
21
- const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
22
- const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
23
- const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
24
-
25
- let generatedCount = 0;
26
- const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
27
- await fs.writeFile(yamlOutputPath, 'Resources:\n', 'utf-8'); // ponytail: build minimum that works, one-line initialization fix
28
-
29
- const generatedResources = new Set();
30
-
31
- async function appendUnique(resourceKey, template, templateData) {
32
- if (generatedResources.has(resourceKey)) return;
33
-
34
- generatedResources.add(resourceKey);
35
- const yamlContent = ejs.render(template, templateData);
36
- await fs.appendFile(yamlOutputPath, `${yamlContent}\n`, 'utf-8');
37
- generatedCount++;
38
- }
39
-
40
- const flows = getFlowsForGeneration(allSchemas);
41
-
42
- for (const flow of flows) {
43
- const flowTag = flow.flowTag;
44
-
45
- if (flow.event && flow.event.includes('ownTopic')) {
46
- await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
47
-
48
- const generateCodeConfigs = flows
49
- .filter((candidate) => candidate.generatedCodeConfig
50
- && candidate.generatedCodeConfig.generatedCodeTag?.toLowerCase() === flowTag.toLowerCase())
51
- .map((candidate) => ({
52
- ...candidate.generatedCodeConfig,
53
- flowTag: candidate.flowTag
54
- }));
55
-
56
- const beforeLogicalConfigs = generateCodeConfigs.filter((config) => config.codeHookTag === 'beforeLogical');
57
- if (beforeLogicalConfigs.length > 0) {
58
- const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map((config) => config.flowTag))];
59
- await appendUnique(`${flowTag}BeforeLogical`, resourceBeforeLogicalYamlTpl, {
60
- queueName: `${flowTag}BeforeLogical`,
61
- flowTags: uniqueFlowTags
62
- });
63
- }
64
- } else if (flow.event && flow.event.includes('extTopic')) {
65
- await appendUnique(`Process${flowTag}HdrSqs`, resourceSqsYamlTpl, {
66
- queueName: `Process${flowTag}HdrSqs`
67
- });
68
- }
69
-
70
- if (Array.isArray(flow.flowSteps)) {
71
- for (const stepConfig of flow.flowSteps) {
72
- const stepName = stepConfig.stepName;
73
- if (stepName?.toLowerCase() === 'start') continue;
74
-
75
- const events = stepConfig.event || ['extTopic'];
76
- for (const ev of events) {
77
- let queueName = `${flowTag}${stepName}`;
78
- if (stepName === 'Complete') {
79
- queueName = `${flowTag}Complete`;
80
- }
81
-
82
- if (ev === 'ownTopic') {
83
- await appendUnique(queueName, resourceYamlTpl, { queueName });
84
- } else if (ev === 'sqs') {
85
- // ponytail: purely SQS events don't need SNS topics, use resourceSqsYamlTpl
86
- await appendUnique(`${queueName}HdrSqs`, resourceSqsYamlTpl, {
87
- queueName: `${queueName}HdrSqs`
88
- });
89
- } else if (ev === 'dsq') {
90
- await appendUnique(`${queueName}HdrDsq`, resourceSqsYamlTpl, {
91
- queueName: `${queueName}HdrDsq`
92
- });
93
- } else if (ev === 'extTopic') {
94
- await appendUnique(`${queueName}HdrSqs`, resourceSqsYamlTpl, {
95
- queueName: `${queueName}HdrSqs`
96
- });
97
- }
98
- }
99
- }
100
- }
101
-
102
- if (flow.event && flow.event.includes('s3')) {
103
- const queueNames = [
104
- `${flowTag}CreatePreSignUrlHdrSqs`,
105
- `${flowTag}ReservedLimitHdrSqs`
106
- ];
107
-
108
- for (const queueName of queueNames) {
109
- await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
110
- }
111
- }
112
-
113
- if (flow.isDynamicRelationshipType) {
114
- const queueName = `${flowTag}HdrDsq`;
115
- await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
116
- }
117
- }
118
-
119
- const systemOwnTopicFlows = [
120
- 'ProcessLogical',
121
- 'PaginateProcessLogical',
122
- 'FindData',
123
- 'Create',
124
- 'Update',
125
- 'Delete',
126
- 'CreateRelationship',
127
- 'UpdateRelationship',
128
- 'DeleteRelationship',
129
- 'GetRelationship',
130
- 'ChangeRelationship',
131
- 'MoveRelationship',
132
- 'CreateTargetRole',
133
- 'DeleteTargetRole',
134
- 'CreateRolePermissions',
135
- 'DeleteRolePermissions',
136
- 'CreateUserRole',
137
- 'DeleteUserFromRole'
138
- ];
139
-
140
- for (const flowTag of systemOwnTopicFlows) {
141
- await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
142
- }
143
-
144
- const relationshipActions = [
145
- 'CreateRelationship',
146
- 'UpdateRelationship',
147
- 'DeleteRelationship',
148
- 'GetRelationship',
149
- 'ChangeRelationship',
150
- 'MoveRelationship'
151
- ];
152
-
153
- for (const action of relationshipActions) {
154
- const queueName = `${action}HdrDsq`;
155
- await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
156
- }
157
-
158
- // ponytail: add Dsq queue for PaginateProcessLogical
159
- await appendUnique('PaginateProcessLogicalHdrDsq', resourceSqsYamlTpl, { queueName: 'PaginateProcessLogicalHdrDsq' });
160
-
161
- const systemQueues = [
162
- 'Register',
163
- 'WebSocket',
164
- 'CreateComplete',
165
- 'UpdateComplete',
166
- 'DeleteComplete',
167
- 'GetComplete',
168
- 'CreateRelationshipComplete',
169
- 'UpdateRelationshipComplete',
170
- 'DeleteRelationshipComplete',
171
- 'GetRelationshipComplete',
172
- 'ChangeRelationshipComplete',
173
- 'MoveRelationshipComplete'
174
- ];
175
-
176
- for (const sysQueue of systemQueues) {
177
- const queueName = `${sysQueue}HdrSqs`;
178
- await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
179
- }
180
-
181
- console.log(` [FlowResourceYamlGenerator] Appended ${generatedCount} sections to generated-sns-in-sqs.yml.`);
182
- }
@@ -1,22 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import ejs from 'ejs';
4
-
5
- async function renderTemplateFile(templatePath, templateData = {}, { views } = {}) {
6
- const template = await fs.readFile(templatePath, 'utf8');
7
- return ejs.render(template, templateData, views ? { views } : undefined);
8
- }
9
-
10
- async function writeRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
11
- const content = await renderTemplateFile(templatePath, templateData, options);
12
- await fs.mkdir(path.dirname(outputPath), { recursive: true });
13
- await fs.writeFile(outputPath, content, 'utf8');
14
- }
15
-
16
- async function appendRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
17
- const content = await renderTemplateFile(templatePath, templateData, options);
18
- await fs.mkdir(path.dirname(outputPath), { recursive: true });
19
- await fs.appendFile(outputPath, `\n${content}`, 'utf8');
20
- }
21
-
22
- export { appendRenderedTemplate, renderTemplateFile, writeRenderedTemplate };
@@ -1,165 +0,0 @@
1
- import { getObjectSchema, utils } from '@izara_project/izara-core-library-service-schemas';
2
- import path from 'path';
3
- import fs from 'fs/promises';
4
- import yaml from 'yaml';
5
-
6
- export async function validateSchemas(rootPath) {
7
- const schemasPath = path.join(rootPath, 'app', 'src', 'schemas');
8
- const serviceConfigPath = path.join(rootPath, 'config', 'serverless.config.yml');
9
- const _izContext = { reqId: 'validate-sandbox', logger: console };
10
-
11
- console.log(' [Validator] Validating local schemas with Safe Two-Way S3 Validation...');
12
-
13
- let validateStatus = {
14
- status: true,
15
- validateErrors: [],
16
- referenceErrors: [],
17
- warning: []
18
- };
19
-
20
- // 1. Read config for bucket name and service tag
21
- let configStr = '';
22
- let iz_serviceTag = '';
23
- let iz_serviceName = '';
24
- let iz_serviceSchemaBucketName = '';
25
- try {
26
- configStr = await fs.readFile(serviceConfigPath, 'utf8');
27
- const config = yaml.parse(configStr);
28
- iz_serviceTag = config?.main_config?.iz_serviceTag;
29
- iz_serviceName = config?.main_config?.iz_serviceName || iz_serviceTag;
30
- iz_serviceSchemaBucketName = config?.main_config?.iz_serviceSchemaBucketName || 'unknown-bucket';
31
-
32
- if (!iz_serviceName) {
33
- validateStatus.validateErrors.push('Missing iz_serviceName or iz_serviceTag in serverless.config.yml. This is a critical configuration field.');
34
- } else if (!/^[a-zA-Z0-9]+$/.test(iz_serviceName)) {
35
- validateStatus.validateErrors.push(`Service Name '${iz_serviceName}' must contain only alphanumeric characters ([a-zA-Z0-9]).`);
36
- } else {
37
- console.log(` [Validator] Validating with serviceName: '${iz_serviceName}'`);
38
- }
39
- } catch (e) {
40
- validateStatus.validateErrors.push(`Could not read or parse serverless.config.yml at ${serviceConfigPath}: ${e.message}`);
41
- }
42
-
43
- // 2. Fetch local FlowSchemas (Basic validation)
44
- try {
45
- const flowsResponse = await getObjectSchema.getAllLocalFlowSchemas(_izContext, schemasPath);
46
- const flows = flowsResponse.records || [];
47
- for (const flow of flows) {
48
- if (flow && flow.flowTag && !/^[A-Z]/.test(flow.flowTag)) {
49
- validateStatus.validateErrors.push(`flowTag '${flow.flowTag}' must start with an uppercase letter.`);
50
- }
51
- }
52
- } catch (e) {
53
- validateStatus.warning.push(`Failed to load local flows: ${e.message}`);
54
- }
55
-
56
- // 3. Fetch local Reference Object Relationships for Two-Way Validation
57
- console.log(' [Validator] Checking Cross-Service Reference Relationships...');
58
- try {
59
- const allReferenceObjectRelationships = await getObjectSchema.getAllLocalRefObjectRelationshipSchema(_izContext, schemasPath);
60
-
61
- await Promise.all(
62
- allReferenceObjectRelationships.map(async refRelSchema => {
63
- if (!refRelSchema) return;
64
- try {
65
- // Try to fetch relationship schema from S3
66
- const relSchemaFromRef = await getObjectSchema.getRelationshipSchema(
67
- _izContext,
68
- {
69
- serviceTag: refRelSchema.relationshipServiceTag,
70
- relationshipTag: refRelSchema.relationshipTag
71
- },
72
- iz_serviceSchemaBucketName
73
- );
74
-
75
- if (!relSchemaFromRef) {
76
- validateStatus.referenceErrors.push(`[Safe] Invalid reference: '${refRelSchema.objectType}' -> '${refRelSchema.relationshipTag}' not found in service '${refRelSchema.relationshipServiceTag}' on S3.`);
77
- } else {
78
- // Two-way validation logic via utils
79
- const linkRecords = utils.findLinkByObjTypeV2(
80
- _izContext,
81
- { objectType: refRelSchema.objectType, serviceTag: iz_serviceTag },
82
- { serviceTag: refRelSchema.relationshipServiceTag, relationshipTag: refRelSchema.relationshipTag },
83
- relSchemaFromRef
84
- );
85
-
86
- if (!linkRecords || !linkRecords.length) {
87
- validateStatus.referenceErrors.push(`[Safe] Two-way validation failed: '${refRelSchema.relationshipTag}' in service '${refRelSchema.relationshipServiceTag}' does not link back to '${refRelSchema.objectType}'.`);
88
- }
89
- }
90
- } catch (s3Error) {
91
- // ROBUSTNESS: Catch S3 NoSuchKey or any other SDK errors without crashing
92
- validateStatus.referenceErrors.push(`[Safe] S3 Fetch Error for '${refRelSchema.relationshipServiceTag}': ${s3Error.message || s3Error.Code}`);
93
- }
94
- })
95
- );
96
- } catch (e) {
97
- validateStatus.warning.push(`Failed to check cross-service relationships: ${e.message}`);
98
- }
99
-
100
- // 4. Validate FlowSchemas Cache Fields and Custom Events (Developer Explanations)
101
- try {
102
- console.log(' [Validator] Checking FlowSchemas for strict compatibility issues (Soft Validation)...');
103
- const allObjectSchemas = await getObjectSchema.getAllLocalObjectSchemasWithoutHierarchy(_izContext, schemasPath);
104
- const objectSchemasMap = {};
105
- if (allObjectSchemas && allObjectSchemas.records) {
106
- allObjectSchemas.records.forEach(schema => {
107
- if(schema) objectSchemasMap[schema.objectType] = schema;
108
- });
109
- }
110
-
111
- const flowsResponse = await getObjectSchema.getAllLocalFlowSchemas(_izContext, schemasPath);
112
- const flows = flowsResponse.records || [];
113
- for (const flow of flows) {
114
- if (!flow) continue;
115
-
116
- // Check unsupported Enum (like dsq)
117
- if (flow.event && Array.isArray(flow.event)) {
118
- if (flow.event.includes('dsq')) {
119
- const errMsg = `\n [Developer Error] FlowTag: '${flow.flowTag}' uses Event: 'dsq'\n` +
120
- ` 💡 Detailed Explanation: 'dsq' is a non-standard Event Type not found in the legacy validator enum.\n` +
121
- ` Please change it to a supported event type (e.g., 'sqs') or update the allowed enums to proceed.`;
122
- validateStatus.validateErrors.push(errMsg);
123
- }
124
- }
125
-
126
- // Check triggerCache expectations
127
- if (flow.statusType === 'triggerCache' || flow.statusType === 'storedCache' || flow.statusType === 'statusField') {
128
- if (flow.objType && flow.objType.objectType) {
129
- const targetObj = objectSchemasMap[flow.objType.objectType];
130
- if (targetObj) {
131
- const expectedPrefix = `${iz_serviceName}_${flow.flowTag}`; // Prefix logic based on service name
132
- const isMissingFields = !targetObj.fieldNames || !targetObj.fieldNames[`${expectedPrefix}Status`];
133
-
134
- if (isMissingFields) {
135
- const errMsg = `\n [Developer Error] FlowTag: '${flow.flowTag}' has Cache enabled (statusType: '${flow.statusType}')\n` +
136
- ` 💡 Detailed Explanation: The validator requires Object '${targetObj.objectType}' to define specific cache status fields in DynamoDB when caching is enabled.\n` +
137
- ` (e.g., Fields: ${expectedPrefix}Status, ${expectedPrefix}ErrorsFound, ${expectedPrefix}CacheComplete, etc.)\n` +
138
- ` Please add these fields to ${targetObj.objectType}.js before continuing.`;
139
- validateStatus.validateErrors.push(errMsg);
140
- }
141
- }
142
- }
143
- }
144
- }
145
- } catch (e) {
146
- console.warn(` [Validator] Failed to run developer explanations: ${e.message}`);
147
- }
148
-
149
- // 5. Summarize Validation
150
- if (validateStatus.validateErrors.length > 0) {
151
- console.error(' [Validator] VALIDATION ERRORS:', validateStatus.validateErrors);
152
- throw new Error(`Validation failed with ${validateStatus.validateErrors.length} critical errors.`);
153
- }
154
-
155
- if (validateStatus.referenceErrors.length > 0) {
156
- console.warn(' [Validator] REFERENCE WARNINGS (S3/Cross-Service):', validateStatus.referenceErrors);
157
- console.warn(' [Validator] Continuing generation despite reference warnings (Offline-friendly mode).');
158
- }
159
-
160
- if (validateStatus.warning.length > 0) {
161
- console.warn(' [Validator] WARNINGS:', validateStatus.warning);
162
- }
163
-
164
- console.log(' [Validator] All local critical validations passed successfully.');
165
- }