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

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 (128) hide show
  1. package/.prettierrc +11 -0
  2. package/package.json +16 -12
  3. package/scripts/format-ejs.js +104 -0
  4. package/src/compile/compileProject.js +40 -9
  5. package/src/compile/loadSchemas.js +120 -11
  6. package/src/emit/crud/emitCrudApplicationArtifacts.js +188 -41
  7. package/src/emit/crud/emitDynamicCrudFlowSchemas.js +34 -18
  8. package/src/emit/crud/generateCrudApplicationArtifacts.js +14 -6
  9. package/src/emit/crud/generateDynamicCrudFlowSchemas.js +4 -1
  10. package/src/emit/crud/templates/CreateEndpoint_Main.ejs +296 -105
  11. package/src/emit/crud/templates/DeleteEndpoint_Main.ejs +222 -144
  12. package/src/emit/crud/templates/FlowEndpointBeforeLogical_Main.ejs +22 -6
  13. package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +134 -43
  14. package/src/emit/crud/templates/FlowEndpoint_HdrWbs.ejs +51 -31
  15. package/src/emit/crud/templates/FlowHandler_HdrApi.ejs +53 -45
  16. package/src/emit/crud/templates/FlowHandler_HdrInv.ejs +28 -26
  17. package/src/emit/crud/templates/FlowHandler_HdrSqs.ejs +15 -11
  18. package/src/emit/crud/templates/FlowMain_Wbs.ejs +53 -38
  19. package/src/emit/crud/templates/GetEndpoint_Main.ejs +6 -3
  20. package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +2 -2
  21. package/src/emit/crud/templates/UpdateEndpoint_Main.ejs +402 -249
  22. package/src/emit/custom/customFlows.js +68 -28
  23. package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +520 -123
  24. package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +28 -8
  25. package/src/emit/custom/templates/FlowEndpoint_Main.ejs +48 -36
  26. package/src/emit/custom/templates/FlowStep_Main.ejs +7 -9
  27. package/src/emit/custom/templates/s3/ConfirmReserved_HdrSqs.ejs +59 -54
  28. package/src/emit/custom/templates/s3/ConfirmReserved_Main.ejs +33 -23
  29. package/src/emit/custom/templates/s3/CreateObject_HdrWbs.ejs +30 -23
  30. package/src/emit/custom/templates/s3/CreateObject_Main.ejs +56 -39
  31. package/src/emit/custom/templates/s3/CreatePreSignUrl_HdrSqs.ejs +56 -51
  32. package/src/emit/custom/templates/s3/CreatePreSignUrl_Main.ejs +112 -75
  33. package/src/emit/custom/templates/s3/FlowHandler_HdrS3.ejs +14 -9
  34. package/src/emit/custom/templates/s3/ProcessS3File_Main.ejs +11 -8
  35. package/src/emit/custom/templates/s3/ReservedLimit_HdrSqs.ejs +65 -56
  36. package/src/emit/custom/templates/s3/ReservedLimit_Main.ejs +74 -52
  37. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +58 -14
  38. package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +12 -17
  39. package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +20 -13
  40. package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +4 -1
  41. package/src/emit/function/functionYamlArtifact.js +272 -79
  42. package/src/emit/function/templates/ApiFunction_Yaml.ejs +7 -0
  43. package/src/emit/function/templates/EventBridgeFunction_Yaml.ejs +6 -0
  44. package/src/emit/function/templates/InvFunction_Yaml.ejs +5 -0
  45. package/src/emit/function/templates/S3Function_Yaml.ejs +16 -0
  46. package/src/emit/function/templates/SqsFunction_Yaml.ejs +10 -0
  47. package/src/emit/function/templates/WbsFunction_Yaml.ejs +10 -0
  48. package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +40 -29
  49. package/src/emit/rbac/emitRbacApplicationArtifacts.js +171 -72
  50. package/src/emit/rbac/generateCreateTargetRoleHandler.js +6 -4
  51. package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +8 -2
  52. package/src/emit/rbac/rbacFlowTag.js +3 -1
  53. package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +41 -18
  54. package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +23 -3
  55. package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +27 -5
  56. package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +41 -8
  57. package/src/emit/rbac/templates/ListRbac_Main.ejs +26 -6
  58. package/src/emit/rbac/templates/RbacMutation_Main.ejs +23 -3
  59. package/src/emit/rbac/templates/UserRbacFlow_HdrSqs.ejs +46 -0
  60. package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +152 -33
  61. package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +24 -4
  62. package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +26 -11
  63. package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +179 -37
  64. package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +8 -2
  65. package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +15 -6
  66. package/src/emit/relationship/templates/ChangeRelationshipComplete_Main.ejs +64 -37
  67. package/src/emit/relationship/templates/ChangeRelationship_Main.ejs +258 -142
  68. package/src/emit/relationship/templates/CreateRelationshipComplete_Main.ejs +68 -43
  69. package/src/emit/relationship/templates/CreateRelationship_Main.ejs +315 -171
  70. package/src/emit/relationship/templates/DeleteRelationshipComplete_Main.ejs +67 -41
  71. package/src/emit/relationship/templates/DeleteRelationship_Main.ejs +226 -115
  72. package/src/emit/relationship/templates/FlowHandler_HdrApi.ejs +41 -33
  73. package/src/emit/relationship/templates/FlowHandler_HdrDsq.ejs +15 -11
  74. package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +28 -26
  75. package/src/emit/relationship/templates/FlowHandler_HdrSqs.ejs +15 -11
  76. package/src/emit/relationship/templates/GetRelationshipComplete_Main.ejs +46 -26
  77. package/src/emit/relationship/templates/GetRelationship_Main.ejs +233 -126
  78. package/src/emit/relationship/templates/MoveRelationshipComplete_Main.ejs +72 -44
  79. package/src/emit/relationship/templates/MoveRelationship_Main.ejs +266 -150
  80. package/src/emit/relationship/templates/UpdateRelationshipComplete_Main.ejs +74 -45
  81. package/src/emit/relationship/templates/UpdateRelationship_Main.ejs +285 -152
  82. package/src/emit/resource/emitResourceArtifacts.js +274 -105
  83. package/src/emit/resource/generateResourceArtifacts.js +15 -6
  84. package/src/emit/resource/templates/GeneratedLambdaRoleServiceConfig.ejs +139 -0
  85. package/src/emit/resource/templates/S3Bucket_Yaml.ejs +19 -0
  86. package/src/emit/resource/templates/S3Subscription_Yaml.ejs +7 -0
  87. package/src/emit/resource/templates/WebSocketSubscription_Yaml.ejs +7 -0
  88. package/src/emit/system/emitSystemWebSocketArtifacts.js +61 -165
  89. package/src/emit/system/templates/WebSocketComplete_HdrSqs.ejs +32 -0
  90. package/src/emit/system/templates/WebSocketComplete_Main.ejs +46 -0
  91. package/src/emit/system/templates/WebSocketComplete_Yaml.ejs +19 -0
  92. package/src/emit/system/templates/WebSocketConnect.ejs +25 -0
  93. package/src/emit/system/templates/WebSocketConnect_Yaml.ejs +11 -0
  94. package/src/generate.js +141 -34
  95. package/src/generateIntTest.js +76 -28
  96. package/src/generateResourceIntTest.js +35 -12
  97. package/src/generateResources/IntTest/generateResources/generateResources.js +5 -2
  98. package/src/generateResources/IntTest/generateResources/templateResources.ejs +18 -30
  99. package/src/generateResources/IntTest/generateTests/events/events.js +1 -1
  100. package/src/generateResources/IntTest/generateTests/events/templateEvents.ejs +13 -10
  101. package/src/generateResources/IntTest/generateTests/generateTemplate.js +2 -2
  102. package/src/generateResources/IntTest/generateTests/pathIntTest/pathIntTest.js +2 -1
  103. package/src/generateResources/IntTest/generateTests/pathIntTest/template.ejs +1 -3
  104. package/src/generateResources/IntTest/generateTests/tests/templateTests.ejs +1 -1
  105. package/src/generateResources/IntTest/generateTests/tests/tests.js +7 -3
  106. package/src/generateResources/IntTest/libs/{libs.js → IntTestGenerateLib.js} +34 -23
  107. package/src/generateResources/IntTest/upload/uploadIntTest.js +33 -19
  108. package/src/intTestGeneratorShared.js +15 -10
  109. package/src/output/commitArtifacts.js +99 -39
  110. package/src/output/mergeHooks.js +24 -10
  111. package/src/output/validateArtifacts.js +37 -27
  112. package/src/plan/buildGenerationPlan.js +24 -13
  113. package/test/core.test.js +116 -49
  114. package/test/createTargetRoleHandler.test.js +63 -14
  115. package/test/crudApplicationArtifacts.test.js +128 -23
  116. package/test/customFlowApplicationArtifacts.test.js +391 -84
  117. package/test/dynamicCrudFlowSchemas.test.js +74 -26
  118. package/test/dynamicRbacFlowSchemas.test.js +63 -20
  119. package/test/dynamicRelationshipFlowSchemas.test.js +65 -18
  120. package/test/functionYamlArtifact.test.js +67 -10
  121. package/test/intTestApi.test.js +9 -10
  122. package/test/publicApi.test.js +184 -44
  123. package/test/relationshipApplicationArtifacts.test.js +90 -19
  124. package/test/resourceArtifacts.test.js +183 -33
  125. package/docs/test.png +0 -0
  126. package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +0 -10
  127. package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +0 -11
  128. /package/docs/{test.mmd → TriggeredCacheFlow.mmd} +0 -0
@@ -13,12 +13,12 @@ export function supportedCustomFlows(flows) {
13
13
  throw new TypeError('flows must be an array');
14
14
  }
15
15
  return flows.filter(
16
- flow =>
16
+ (flow) =>
17
17
  typeof flow?.flowTag === 'string' &&
18
18
  flow.flowTag !== '' &&
19
19
  !flow.generatedCodeConfig &&
20
20
  Array.isArray(flow.event) &&
21
- flow.event.some(event => SUPPORTED_EVENTS.has(event))
21
+ flow.event.some((event) => SUPPORTED_EVENTS.has(event))
22
22
  );
23
23
  }
24
24
 
@@ -30,26 +30,54 @@ export function flowExtTopicSteps(flows) {
30
30
  if (!Array.isArray(flows)) {
31
31
  throw new TypeError('flows must be an array');
32
32
  }
33
- return flows.flatMap(flow => {
33
+ return flows.flatMap((flow) => {
34
34
  if (typeof flow?.flowTag !== 'string' || flow.flowTag === '') {
35
35
  return [];
36
36
  }
37
- return (flow.flowSteps ?? []).flatMap(step =>
38
- typeof step?.stepName === 'string' &&
39
- step.stepName !== '' &&
40
- step.stepName.toLowerCase() !== 'start' &&
41
- Array.isArray(step.event) &&
42
- step.event.includes('extTopic')
43
- ? [
44
- {
45
- flow,
46
- step,
47
- flowTag: upperFirst(flow.flowTag),
48
- stepName: upperFirst(step.stepName)
49
- }
50
- ]
51
- : []
37
+ const hasTriggerFlowTypes =
38
+ Array.isArray(flow.triggerFlowTypes) && flow.triggerFlowTypes.length > 0;
39
+ const steps = flow.flowSteps ?? [];
40
+ const hasCheckStep = steps.some(
41
+ (step) =>
42
+ typeof step?.stepName === 'string' &&
43
+ step.stepName.toLowerCase().includes('checktrigger')
52
44
  );
45
+
46
+ const result = steps.flatMap((step) => {
47
+ if (
48
+ typeof step?.stepName !== 'string' ||
49
+ step.stepName === '' ||
50
+ step.stepName.toLowerCase() === 'start' ||
51
+ !Array.isArray(step.event) ||
52
+ !step.event.includes('extTopic')
53
+ ) {
54
+ return [];
55
+ }
56
+ const isCheckStep = step.stepName.toLowerCase().includes('checktrigger');
57
+ if (isCheckStep && !hasTriggerFlowTypes) {
58
+ return [];
59
+ }
60
+ return [
61
+ {
62
+ flow,
63
+ step,
64
+ flowTag: upperFirst(flow.flowTag),
65
+ stepName: upperFirst(step.stepName)
66
+ }
67
+ ];
68
+ });
69
+
70
+ if (hasTriggerFlowTypes && !hasCheckStep) {
71
+ const defaultStepName = 'CheckTriggerFlows';
72
+ result.push({
73
+ flow,
74
+ step: { stepName: defaultStepName, event: ['extTopic'] },
75
+ flowTag: upperFirst(flow.flowTag),
76
+ stepName: defaultStepName
77
+ });
78
+ }
79
+
80
+ return result;
53
81
  });
54
82
  }
55
83
 
@@ -57,11 +85,11 @@ export function flowDsqSteps(flows) {
57
85
  if (!Array.isArray(flows)) {
58
86
  throw new TypeError('flows must be an array');
59
87
  }
60
- return flows.flatMap(flow => {
88
+ return flows.flatMap((flow) => {
61
89
  if (typeof flow?.flowTag !== 'string' || flow.flowTag === '') {
62
90
  return [];
63
91
  }
64
- return (flow.flowSteps ?? []).flatMap(step =>
92
+ return (flow.flowSteps ?? []).flatMap((step) =>
65
93
  typeof step?.stepName === 'string' &&
66
94
  step.stepName !== '' &&
67
95
  step.stepName.toLowerCase() !== 'start' &&
@@ -85,7 +113,7 @@ export function generatedOwnTopicFlows(flows) {
85
113
  throw new TypeError('flows must be an array');
86
114
  }
87
115
  return flows.filter(
88
- flow =>
116
+ (flow) =>
89
117
  typeof flow?.flowTag === 'string' &&
90
118
  flow.flowTag !== '' &&
91
119
  flow.generatedCodeConfig &&
@@ -103,7 +131,7 @@ export function triggerCacheFlows(flows) {
103
131
  throw new TypeError('flows must be an array');
104
132
  }
105
133
  return flows.filter(
106
- flow =>
134
+ (flow) =>
107
135
  typeof flow?.flowTag === 'string' &&
108
136
  flow.flowTag !== '' &&
109
137
  flow.statusType === 'triggerCache'
@@ -112,10 +140,22 @@ export function triggerCacheFlows(flows) {
112
140
 
113
141
  export function triggerCacheQueueNames(flow) {
114
142
  const tag = upperFirst(flow.flowTag);
115
- return [
116
- `TriggerCache${tag}HdrDsq`,
117
- `CheckTriggerCache${tag}CompleteHdrSqs`,
118
- `TriggerCache${tag}CompleteHdrSqs`,
119
- `TriggerCache${tag}CompleteHdrDsq`
120
- ];
143
+ const queues = [`TriggerCache${tag}HdrDsq`];
144
+ if (
145
+ Array.isArray(flow.triggerFlowTypes) &&
146
+ flow.triggerFlowTypes.length > 0
147
+ ) {
148
+ const customCheckStep = (flow.flowSteps ?? []).find(
149
+ (s) =>
150
+ typeof s?.stepName === 'string' &&
151
+ s.stepName.toLowerCase().includes('checktrigger')
152
+ );
153
+ const checkStepName = customCheckStep
154
+ ? upperFirst(customCheckStep.stepName).startsWith(tag)
155
+ ? upperFirst(customCheckStep.stepName)
156
+ : `${tag}${upperFirst(customCheckStep.stepName)}`
157
+ : `${tag}CheckTriggerFlows`;
158
+ queues.push(`${checkStepName}HdrSqs`);
159
+ }
160
+ return queues;
121
161
  }