@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,332 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import ejs from 'ejs';
4
- import { fileURLToPath } from 'url';
5
- import { getFlowsForGeneration } from '../src/generatedCode/Flow/_shared/shared/flowSelection.js';
6
- import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../src/generatedCode/Flow/_shared/shared/flowClassifier.js';
7
-
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
-
11
- export async function generateFunctionYaml(allSchemas, options) {
12
- console.log(' [FunctionYamlGenerator] Generating Function YAMLs...');
13
- const serviceName = options.serviceName;
14
- if (!serviceName) {
15
- throw new Error('[Developer Error] serviceName is missing in FunctionYamlGenerator. Ensure serverless.config.yml has main_config.iz_serviceName.');
16
- }
17
-
18
- const slsYamlDir = path.join(
19
- options.outputPath,
20
- 'app',
21
- 'sls_yaml',
22
- 'generatedCode',
23
- 'source'
24
- );
25
- await fs.mkdir(slsYamlDir, { recursive: true });
26
-
27
- const templates = {
28
- sqs: await fs.readFile(
29
- path.join(__dirname, 'templates', 'FunctionYaml_Sqs.ejs'),
30
- 'utf-8'
31
- ),
32
- inv: await fs.readFile(
33
- path.join(__dirname, 'templates', 'FunctionYaml_Inv.ejs'),
34
- 'utf-8'
35
- ),
36
- api: await fs.readFile(
37
- path.join(__dirname, 'templates', 'FunctionYaml_Api.ejs'),
38
- 'utf-8'
39
- ),
40
- wbs: await fs.readFile(
41
- path.join(__dirname, 'templates', 'FunctionYaml_Wbs.ejs'),
42
- 'utf-8'
43
- ),
44
- eventBridge: await fs.readFile(
45
- path.join(__dirname, 'templates', 'FunctionYaml_EventBridge.ejs'),
46
- 'utf-8'
47
- )
48
- };
49
- const flows = getFlowsForGeneration(allSchemas);
50
-
51
-
52
- let perActionYaml = '';
53
- let relActionYaml = '';
54
- let rbacYaml = '';
55
- let flowSchemaYaml = '';
56
- const customYmls = {};
57
-
58
- const upperCase = str => str.charAt(0).toUpperCase() + str.slice(1);
59
-
60
- // 1. Find all generated Handlers
61
- const generatedCodeDir = path.join(
62
- options.outputPath,
63
- 'app',
64
- 'src',
65
- 'generatedCode'
66
- );
67
- const handlerFiles = [];
68
- async function getHandlerFiles(dir) {
69
- try {
70
- const dirents = await fs.readdir(dir, { withFileTypes: true });
71
- for (const dirent of dirents) {
72
- const res = path.resolve(dir, dirent.name);
73
- if (dirent.isDirectory()) {
74
- await getHandlerFiles(res);
75
- } else if (
76
- dirent.name.includes('_Hdr') &&
77
- dirent.name.endsWith('.js')
78
- ) {
79
- // Extract relative path from generatedCodeDir
80
- const relativePath = path.relative(generatedCodeDir, res);
81
- // normalize to forward slashes
82
- handlerFiles.push(relativePath.replace(/\\/g, '/'));
83
- }
84
- }
85
- } catch (e) {
86
- // directory might not exist if no flows generated
87
- }
88
- }
89
- await getHandlerFiles(generatedCodeDir);
90
-
91
- // Prepare API routes
92
- const crudApiRoutes = allSchemas.objects.map(obj => ({
93
- objectName: obj.objectType,
94
- upperName: upperCase(obj.objectType)
95
- }));
96
- const relApiRoutes = allSchemas.relationships.map(rel => {
97
- const relName = Object.keys(rel)[0];
98
- return {
99
- objectName: relName,
100
- upperName: upperCase(relName)
101
- };
102
- });
103
-
104
- for (const handlerFile of handlerFiles) {
105
- // e.g. "Endpoints/Create/source/ProcessCreate_HdrSqs.js"
106
- const parts = handlerFile.split('/');
107
- if (parts.length < 4) continue;
108
-
109
- const subDir = parts[0]; // e.g. FlowObjects, FlowSchemas, SystemFlowSchemas
110
- if (subDir === 'SystemFlowSchemas') continue;
111
-
112
- const flowTag = parts[1];
113
- const fileName = parts[3]; // e.g. ProcessCreate_HdrSqs.js
114
-
115
- const fileNameWithoutExt = fileName.replace('.js', '');
116
- // e.g. ProcessCreate_HdrSqs
117
- const splitFileName = fileNameWithoutExt.split('_');
118
- const handlerBaseName = splitFileName[0]; // e.g. ProcessCreate or CreateComplete
119
- const handlerSuffix = splitFileName[1]; // e.g. HdrSqs, HdrApi, HdrInv
120
-
121
- // Skip custom handlers that self-register their own YAML to prevent duplicates
122
- if (
123
- handlerBaseName.startsWith('ProcessTriggerCache') ||
124
- handlerBaseName.startsWith('CheckTriggerCache') ||
125
- handlerBaseName.startsWith('TriggerCache') ||
126
- handlerBaseName.startsWith('CompleteStatusField')
127
- ) {
128
- continue;
129
- }
130
-
131
- const isCrud = isCrudFlow(flowTag);
132
- const isRel = isRelationshipFlow(flowTag);
133
- const isRbac =
134
- isRbacFlow(flowTag) ||
135
- String(flowTag || '')
136
- .toLowerCase()
137
- .endsWith('rbacflow');
138
- const isCustom = !isCrud && !isRel && !isRbac;
139
-
140
- // Role mapping
141
- let roleName = '';
142
- if (isCrud) {
143
- roleName = 'FlowObjectsRole';
144
- } else if (isRbac) {
145
- roleName = 'FlowRbacRole';
146
- } else if (isRel) {
147
- roleName = 'FlowRelationshipRole';
148
- } else {
149
- roleName = `${upperCase(flowTag)}Role`;
150
- }
151
-
152
- // Function Name Config
153
- // e.g. ProcessCreateSqs or CreateCompleteSqs or GetApi
154
- let suffixType = handlerSuffix.startsWith('Hdr')
155
- ? handlerSuffix
156
- : handlerSuffix.replace('Hdr', '');
157
- let functionNameConfig = `${handlerBaseName}${suffixType}`;
158
- if (isCrud && handlerBaseName === `Process${upperCase(flowTag)}`) {
159
- // Legacy matches: CreateSqs, GetApi instead of ProcessCreateSqs
160
- functionNameConfig = `${upperCase(flowTag)}${suffixType}`;
161
- }
162
- if (isRel && handlerBaseName === `Process${upperCase(flowTag)}`) {
163
- // Legacy matches: CreateRelSqs
164
- functionNameConfig = `${upperCase(flowTag).replace('Relationship', 'Rel')}${suffixType}`;
165
- }
166
- if (handlerBaseName.endsWith('Complete')) {
167
- // e.g. CreateCompleteHdrSqs or CreateCompleteSqs
168
- if (isCrud) {
169
- // Legacy: DeleteCompleteHdrSqs, UpdateCompleteHdrSqs, CreateCompleteHdrSqs
170
- const crudType = upperCase(flowTag);
171
- functionNameConfig = `${crudType}CompleteHdrSqs`;
172
- } else if (isRel) {
173
- // Legacy: UpdateRelComp
174
- functionNameConfig = `${upperCase(flowTag)}CompleteHdrSqs`;
175
- } else {
176
- functionNameConfig = `${handlerBaseName}${suffixType}`;
177
- }
178
- }
179
-
180
- let queueName = '';
181
- const flowDefForQueue = flows.find(f => f.flowTag === flowTag);
182
-
183
- if (isCrud || isRel) {
184
- queueName = handlerBaseName.replace('Process', '');
185
- if (handlerSuffix === 'HdrSqs' || handlerSuffix === 'HdrDsq') {
186
- queueName += handlerSuffix;
187
- }
188
- } else {
189
- // For Custom Flows (e.g. OwnTopicFlowProcess, ProcessExtTopicFlow)
190
- // The queue name exactly matches the handler name without the underscore.
191
- if (handlerSuffix === 'HdrSqs' || handlerSuffix === 'HdrDsq') {
192
- if (
193
- handlerBaseName === `Process${upperCase(flowTag)}` &&
194
- flowDefForQueue &&
195
- flowDefForQueue.event &&
196
- flowDefForQueue.event.includes('ownTopic')
197
- ) {
198
- // ownTopic flows in FlowResourceYamlGenerator omit 'Process' for the queue
199
- queueName = flowTag + handlerSuffix;
200
- } else {
201
- queueName = handlerBaseName + handlerSuffix;
202
- }
203
- } else {
204
- queueName = handlerBaseName;
205
- }
206
- }
207
-
208
- // Api routes
209
- let apiRoutes = [];
210
- if (suffixType === 'HdrApi' || suffixType === 'Api') {
211
- const routesList = isCrud ? crudApiRoutes : isRel ? relApiRoutes : [];
212
- const actionPath = flowTag.toLowerCase().replace('relationship', '');
213
- apiRoutes = routesList.map(r => ({
214
- path: `/${serviceName}/${r.objectName}/${actionPath}`,
215
- upperName: r.upperName
216
- }));
217
- }
218
-
219
- // Handler Path
220
- const handlerPath = `src/generatedCode/${subDir}/${flowTag}/source/${fileNameWithoutExt}.main`;
221
-
222
- let filterPatterns = '';
223
- if (
224
- handlerBaseName.endsWith('Complete') &&
225
- (suffixType === 'HdrSqs' ||
226
- suffixType === 'HdrDsq' ||
227
- suffixType === 'Sqs' ||
228
- suffixType === 'Dsq')
229
- ) {
230
- filterPatterns = ` filterPatterns: #**** need to update serverless framework upper v.2.69.1
231
- - body: {"MessageAttributes":{"callingFlow":{"Value":["\${self:custom.iz_resourcePrefix}${functionNameConfig}"]}}} # functionName of callingFlow
232
- - body: {"MessageAttributes":{"callingFlow":{"Value":[{"exists":false}]}}}`;
233
- }
234
-
235
- const flowDef = flows.find(f => f.flowTag === flowTag);
236
- let schedules = [];
237
- if (flowDef && flowDef.schedules) {
238
- schedules = flowDef.schedules;
239
- }
240
-
241
- const renderVars = {
242
- functionNameConfig,
243
- handlerPath,
244
- roleName,
245
- queueName,
246
- apiRoutes,
247
- filterPatterns,
248
- schedules,
249
- flowTag
250
- };
251
-
252
- let yamlBlock = '';
253
- if (
254
- schedules.length > 0 &&
255
- (suffixType === 'HdrInv' || suffixType === 'Inv')
256
- ) {
257
- yamlBlock = ejs.render(templates.eventBridge, renderVars);
258
- } else if (
259
- suffixType === 'HdrSqs' ||
260
- suffixType === 'HdrDsq' ||
261
- suffixType === 'Sqs' ||
262
- suffixType === 'Dsq'
263
- ) {
264
- yamlBlock = ejs.render(templates.sqs, renderVars);
265
- } else if (suffixType === 'HdrInv' || suffixType === 'Inv') {
266
- yamlBlock = ejs.render(templates.inv, renderVars);
267
- } else if (suffixType === 'HdrApi' || suffixType === 'Api') {
268
- yamlBlock = ejs.render(templates.api, renderVars);
269
- } else if (suffixType === 'HdrWbs' || suffixType === 'Wbs') {
270
- renderVars.routeName = flowTag;
271
- yamlBlock = ejs.render(templates.wbs, renderVars);
272
- } else {
273
- // Fallback for others
274
- yamlBlock = ejs.render(templates.inv, renderVars); // Simple no-events template
275
- }
276
-
277
- const customYamlFile =
278
- flowDef && flowDef.fileName ? flowDef.fileName : null;
279
-
280
- if (customYamlFile) {
281
- if (!customYmls[customYamlFile]) customYmls[customYamlFile] = '';
282
- customYmls[customYamlFile] += yamlBlock + '\n\n';
283
- } else if (isCrud) {
284
- perActionYaml += yamlBlock + '\n\n';
285
- } else if (isRel) {
286
- relActionYaml += yamlBlock + '\n\n';
287
- } else if (isRbac) {
288
- rbacYaml += yamlBlock + '\n\n';
289
- } else {
290
- flowSchemaYaml += yamlBlock + '\n\n';
291
- }
292
- }
293
-
294
- if (perActionYaml) {
295
- await fs.writeFile(
296
- path.join(slsYamlDir, 'flow-objects.yml'),
297
- perActionYaml,
298
- 'utf-8'
299
- );
300
- }
301
- if (relActionYaml) {
302
- await fs.writeFile(
303
- path.join(slsYamlDir, 'flow-relationships.yml'),
304
- relActionYaml,
305
- 'utf-8'
306
- );
307
- }
308
- if (rbacYaml) {
309
- await fs.writeFile(
310
- path.join(slsYamlDir, 'flow-rbac.yml'),
311
- rbacYaml,
312
- 'utf-8'
313
- );
314
- }
315
- if (flowSchemaYaml) {
316
- // Append to flow-schema.yml just in case WebSocket/TriggerCache already created it, or create new.
317
- await fs.appendFile(
318
- path.join(slsYamlDir, 'flow-schema.yml'),
319
- flowSchemaYaml,
320
- 'utf-8'
321
- );
322
- }
323
-
324
- for (const [fName, content] of Object.entries(customYmls)) {
325
- const fullFileName = fName.endsWith('.yml') ? fName : `${fName}.yml`;
326
- await fs.writeFile(path.join(slsYamlDir, fullFileName), content, 'utf-8');
327
- }
328
-
329
- console.log(
330
- ` [FunctionYamlGenerator] Wrote YAML functions for CRUD, Relationships, and Custom Flows.`
331
- );
332
- }
@@ -1,21 +0,0 @@
1
- import path from 'path';
2
- import { fileURLToPath } from 'url';
3
- import { renderYamlTemplate } from './renderYamlTemplate.js';
4
-
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
-
8
- export async function generateProcessLogicalYaml(allSchemas, options) {
9
- console.log(' [ProcessLogicalYamlGenerator] Generating ProcessLogical YAML...');
10
-
11
- if (!allSchemas.objects || allSchemas.objects.length === 0) {
12
- return;
13
- }
14
-
15
- await renderYamlTemplate(
16
- path.join(__dirname, 'templates', 'ProcessLogical_Yaml.ejs'),
17
- path.join(options.outputPath, 'app', 'sls_yaml', 'generatedCode', 'source', 'process-logical.yml'),
18
- {},
19
- 'ProcessLogicalYamlGenerator'
20
- );
21
- }
@@ -1,48 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import ejs from 'ejs';
4
- import { fileURLToPath } from 'url';
5
- import { detectRoleNames } from '../src/generatedCode/Flow/_shared/shared/roleNameDetection.js';
6
-
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
-
10
- const FALLBACK_TEMPLATE = `# createIamRole
11
- <% roleNameConfigs.forEach(function(roleNameConfig){ _%>
12
- - arn:aws:iam::\${self:custom.iz_accountId}:role/\${self:custom.iz_resourcePrefix}<%- roleNameConfig %>
13
- <% }) _%>
14
- `;
15
-
16
- export async function generateRoleNameConfig(allSchemas, options) {
17
- console.log(' [RoleNameConfigGenerator] Generating IAM Role Configurations...');
18
-
19
- const resourceYamlDir = path.join(
20
- options.outputPath,
21
- 'app',
22
- 'sls_yaml',
23
- 'generatedCode',
24
- 'source'
25
- );
26
- await fs.mkdir(resourceYamlDir, { recursive: true });
27
-
28
- const { roleNames } = detectRoleNames(allSchemas);
29
- const roleNameConfigs = Array.from(roleNames);
30
- const templatePath = path.join(__dirname, 'templates', 'RoleNameConfig_Yaml.ejs');
31
-
32
- let templateString;
33
- try {
34
- templateString = await fs.readFile(templatePath, 'utf-8');
35
- } catch {
36
- templateString = FALLBACK_TEMPLATE;
37
- await fs.mkdir(path.dirname(templatePath), { recursive: true });
38
- await fs.writeFile(templatePath, templateString, 'utf-8');
39
- }
40
-
41
- const fileContent = ejs.render(templateString, { roleNameConfigs });
42
- const outputPath = path.join(resourceYamlDir, 'role-name-config.yml');
43
- await fs.writeFile(outputPath, fileContent, 'utf-8');
44
-
45
- console.log(
46
- ` [RoleNameConfigGenerator] Wrote ${roleNameConfigs.length} role configs to ${outputPath}`
47
- );
48
- }