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

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