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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +73 -11
  2. package/index.js +0 -5
  3. package/package.json +7 -6
  4. package/src/compile/compileProject.js +26 -0
  5. package/src/compile/loadSchemas.js +28 -0
  6. package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
  7. package/src/emit/crud/emitCrudApplicationArtifacts.js +157 -0
  8. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +84 -0
  9. package/src/emit/crud/generateCrudApplicationArtifacts.js +16 -0
  10. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +21 -0
  11. package/src/emit/crud/loadLocalSchemaArrays.js +8 -0
  12. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/CreateEndpoint_Main.ejs +1 -1
  13. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +1 -1
  14. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step → emit/crud/templates}/FlowEndpointBeforeLogical_Main.ejs +2 -2
  15. package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +75 -0
  16. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
  17. package/src/{codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_HdrSqs.ejs → emit/crud/templates/FlowHandler_HdrSqs.ejs} +52 -56
  18. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowMain_Wbs.ejs +1 -3
  19. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +127 -0
  20. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/UpdateEndpoint_Main.ejs +1 -1
  21. package/src/emit/custom/customFlows.js +70 -0
  22. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +308 -0
  23. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +22 -0
  24. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/custom/templates}/FlowEndpoint_Main.ejs +1 -1
  25. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step → emit/custom/templates}/FlowStep_Main.ejs +1 -1
  26. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_Main.ejs +5 -5
  27. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_HdrWbs.ejs +1 -1
  28. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_Main.ejs +3 -3
  29. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_Main.ejs +4 -5
  30. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/FlowHandler_HdrS3.ejs +2 -8
  31. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ProcessS3File_Main.ejs +1 -1
  32. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_Main.ejs +5 -6
  33. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +32 -0
  34. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +63 -0
  35. package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +35 -0
  36. package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +16 -0
  37. package/src/emit/function/functionYamlArtifact.js +111 -0
  38. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
  39. package/src/emit/rbac/emitRbacApplicationArtifacts.js +256 -0
  40. package/src/emit/rbac/generateCreateTargetRoleHandler.js +19 -0
  41. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +21 -0
  42. package/src/emit/rbac/rbacFlowTag.js +7 -0
  43. package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +24 -0
  44. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +25 -0
  45. package/src/emit/rbac/templates/DynamicRbacFlowSchema.ejs +5 -0
  46. package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +17 -0
  47. package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +13 -0
  48. package/src/emit/rbac/templates/ListRbac_Main.ejs +29 -0
  49. package/src/emit/rbac/templates/RbacMutation_Main.ejs +22 -0
  50. package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +10 -0
  51. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +44 -0
  52. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +33 -0
  53. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +11 -0
  54. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +66 -0
  55. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +147 -0
  56. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +23 -0
  57. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +22 -0
  58. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationshipComplete_Main.ejs → emit/relationship/templates/ChangeRelationshipComplete_Main.ejs} +1 -1
  59. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationship_Main.ejs → emit/relationship/templates/ChangeRelationship_Main.ejs} +10 -2
  60. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationshipComplete_Main.ejs → emit/relationship/templates/CreateRelationshipComplete_Main.ejs} +1 -1
  61. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationship_Main.ejs → emit/relationship/templates/CreateRelationship_Main.ejs} +1 -1
  62. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationshipComplete_Main.ejs → emit/relationship/templates/DeleteRelationshipComplete_Main.ejs} +1 -1
  63. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationship_Main.ejs → emit/relationship/templates/DeleteRelationship_Main.ejs} +1 -1
  64. package/src/emit/relationship/templates/FlowHandler_HdrApi.ejs +51 -0
  65. package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrDsq.ejs +1 -1
  66. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +45 -0
  67. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationshipComplete_Main.ejs → emit/relationship/templates/GetRelationshipComplete_Main.ejs} +1 -1
  68. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationship_Main.ejs → emit/relationship/templates/GetRelationship_Main.ejs} +1 -1
  69. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationship_Main.ejs → emit/relationship/templates/MoveRelationship_Main.ejs} +9 -1
  70. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationshipComplete_Main.ejs → emit/relationship/templates/UpdateRelationshipComplete_Main.ejs} +1 -1
  71. package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationship_Main.ejs → emit/relationship/templates/UpdateRelationship_Main.ejs} +1 -1
  72. package/src/emit/resource/emitResourceArtifacts.js +300 -0
  73. package/src/emit/resource/generateResourceArtifacts.js +20 -0
  74. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceBeforeLogicalYaml.ejs +1 -1
  75. package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceSqsYaml.ejs +6 -6
  76. package/src/{codeGenerators/app/sls_yaml → emit/resource}/templates/SharedResource_Yaml.ejs +8 -8
  77. package/src/emit/system/emitSystemWebSocketArtifacts.js +182 -0
  78. package/src/generate.js +60 -126
  79. package/src/output/commitArtifacts.js +213 -0
  80. package/src/output/mergeHooks.js +55 -0
  81. package/src/output/validateArtifacts.js +62 -0
  82. package/src/plan/buildGenerationPlan.js +50 -0
  83. package/test/core.test.js +159 -0
  84. package/test/createTargetRoleHandler.test.js +68 -0
  85. package/test/crudApplicationArtifacts.test.js +107 -0
  86. package/test/customFlowApplicationArtifacts.test.js +294 -0
  87. package/test/dynamicCrudFlowSchemas.test.js +136 -0
  88. package/test/dynamicRbacFlowSchemas.test.js +101 -0
  89. package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
  90. package/test/functionYamlArtifact.test.js +34 -0
  91. package/test/intTestApi.test.js +29 -0
  92. package/test/publicApi.test.js +209 -0
  93. package/test/relationshipApplicationArtifacts.test.js +68 -0
  94. package/test/resourceArtifacts.test.js +121 -0
  95. package/jsconfig.json +0 -9
  96. package/src/__tests__/getIntTestConfig.test.js +0 -51
  97. package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
  98. package/src/__tests__/pathIntTest.test.js +0 -103
  99. package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
  100. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
  101. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
  102. package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
  103. package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
  104. package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -332
  105. package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
  106. package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
  107. package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -503
  108. package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
  109. package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
  110. package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
  111. package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
  112. package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
  113. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
  114. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
  115. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
  116. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
  117. package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
  118. package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
  119. package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
  120. package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
  121. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
  122. package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
  123. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
  124. package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
  125. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
  126. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
  127. package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
  128. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
  129. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
  130. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
  131. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
  132. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
  133. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
  134. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
  135. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
  136. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
  137. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
  138. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
  139. package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
  140. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
  141. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
  142. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
  143. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
  144. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
  145. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
  146. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
  147. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
  148. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
  149. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
  150. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
  151. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
  152. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
  153. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
  154. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
  155. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
  156. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
  157. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
  158. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
  159. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
  160. package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
  161. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
  162. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
  163. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
  164. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
  165. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
  166. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
  167. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
  168. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
  169. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
  170. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
  171. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
  172. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
  173. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
  174. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
  175. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
  176. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
  177. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
  178. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
  179. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
  180. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
  181. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
  182. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
  183. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
  184. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
  185. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
  186. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
  187. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
  188. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
  189. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
  190. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
  191. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
  192. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
  193. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
  194. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
  195. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
  196. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
  197. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
  198. package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
  199. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
  200. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
  201. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
  202. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
  203. package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
  204. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
  205. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
  206. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
  207. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
  208. package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
  209. package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
  210. package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
  211. package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
  212. package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
  213. package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
  214. package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
  215. package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
  216. package/src/core/renderTemplateFile.js +0 -22
  217. package/src/core/validate.js +0 -165
  218. package/src/generateCode.js +0 -357
  219. package/src/generateSchema.js +0 -123
  220. package/src/parsers/flowSchemaParser.js +0 -112
  221. package/src/parsers/objectSchemaParser.js +0 -39
  222. package/src/parsers/relationshipSchemaParser.js +0 -51
  223. package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
  224. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
  225. package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
  226. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
  227. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
  228. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
  229. package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
  230. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
  231. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
  232. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
  233. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
  234. package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
  235. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
  236. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
  237. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
  238. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
  239. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
  240. package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
  241. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
  242. package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
  243. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrApi.ejs +0 -0
  244. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
  245. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +0 -0
  246. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
  247. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
  248. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
  249. /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrSqs.ejs +0 -0
  250. /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
  251. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
  252. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
  253. /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
  254. /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/SystemDynamoDB_Yaml.ejs +0 -0
@@ -1,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
- }