@izara_project/izara-core-generate-service-code 1.0.53 → 1.0.55
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.
- package/package.json +1 -2
- package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +1 -1
- package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +23 -0
- package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +16 -16
- package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +11 -25
- package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +1 -1
- package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +3 -3
- package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +13 -0
- package/src/codeGenerators/app/sls_yaml/templates/SharedResource_Yaml.ejs +6 -2
- package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +10 -44
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowEndpoints/EndpointsGenerator.js +119 -0
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +91 -52
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationshipEndpoints/RelationshipFlowGenerator.js +20 -16
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +2 -9
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +1 -7
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/BaseSqsHandler.js +3 -3
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ConfirmAfterUploadS3Generator.js +2 -4
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/CreateObjectGenerator.js +2 -4
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/CreatePreSignUrlGenerator.js +2 -4
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ProcessAfterUploadS3Generator.js +5 -5
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3Components/ReservedLimitGenerator.js +2 -4
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowEntryPointBase.js +6 -6
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowMainFunctionBase.js +3 -3
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowStepBase.js +11 -11
- package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/triggerCacheBase.js +1 -7
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +18 -15
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_HdrDsq.js → PaginateProcessLogical_HdrDsq.ejs} +1 -1
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +127 -149
- package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +16 -8
- package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +17 -9
- package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +8 -8
- package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +60 -43
- package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +151 -151
- package/src/codeGenerators/resource/sls_yaml/templates/crud/ResourceYaml.ejs +10 -10
- package/src/core/renderTemplateFile.js +22 -0
- package/src/generateCode.js +146 -81
- package/src/generateIntTest.js +45 -69
- package/src/generateResourceIntTest.js +22 -47
- package/src/intTestGeneratorShared.js +36 -0
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +12 -10
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +6 -5
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/data.js +0 -119
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/template.ejs +0 -89
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/statusFieldTemplate.ejs +0 -30
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/storedCacheTemplate.ejs +0 -26
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/flowSchemaMainFunction/templateByStatusType/triggerCacheTemplate.ejs +0 -44
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/index.js +0 -80
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/functionYaml/data.js +0 -129
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/functionYaml/template.ejs +0 -17
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/handler/data.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/mainFunction/data.js +0 -54
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/mainFunction/template.ejs +0 -129
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/queue/data.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/confirmReserved/queue/template.ejs +0 -45
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/functionYaml/data.js +0 -117
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/functionYaml/template.ejs +0 -20
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/handler/data.js +0 -64
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/mainFunction/data.js +0 -64
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObject/mainFunction/template.ejs +0 -131
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/functionYaml/data.js +0 -122
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/functionYaml/template.ejs +0 -17
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/handler/data.js +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/handler/template.ejs +0 -99
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/mainFunction/data.js +0 -64
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/mainFunction/template.ejs +0 -82
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/sns-sqs/data.js +0 -70
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/createObjectComplete/sns-sqs/template.ejs +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/functionYaml/data.js +0 -139
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/functionYaml/template.ejs +0 -18
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/handler/data.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/mainFunction/data.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/mainFunction/template.ejs +0 -262
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/queue/data.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/createPreSignUrl/queue/template.ejs +0 -45
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/functionYaml/data.js +0 -146
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/functionYaml/template.ejs +0 -14
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/handler/data.js +0 -64
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/mainFunction/data.js +0 -59
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/mainFunction/template.ejs +0 -173
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/sqs/data.js +0 -67
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/preSignUrl/reservedLimit/sqs/template.ejs +0 -53
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/functionYml/HdrS3/data.js +0 -140
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/functionYml/HdrS3/template.ejs +0 -25
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/handler/handlerS3/data.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/handler/handlerS3/template.ejs +0 -50
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/ProcessCsvtemplate.ejs +0 -182
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/data.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/mainFunction/template.ejs +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/data.js +0 -77
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/dsqTemplatePath.ejs +0 -32
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/processFile/queue/s3Template.ejs +0 -59
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/S3/data.js +0 -61
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/S3/template.ejs +0 -13
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/upload/relate/sns-out/data.js +0 -70
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/s3Legacy/websocket/dynamoDb/ReservedTableData.js +0 -69
- package/src/codeGenerators/app/src/generatedCode/Flow/SystemFlowDescriptorBuilder.js +0 -151
- /package/src/codeGenerators/app/{src/generatedCode/FindData → sls_yaml}/templates/FindData_Yaml.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared/endpoint → FlowEndpoints/templates}/FlowEndpointBeforeLogical_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEndpoint_HdrWbs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEndpoint_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowEntryPoint_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/endpoint/FlowMain_Wbs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/confirmReserved/handler/template.ejs → s3/ConfirmReserved_HdrSqs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/createObject/handler/template.ejs → s3/CreateObject_HdrWbs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/preSignUrl/createPreSignUrl/handler/template.ejs → s3/CreatePreSignUrl_HdrSqs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/{s3Legacy/upload/preSignUrl/reservedLimit/handler/template.ejs → s3/ReservedLimit_HdrSqs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/FlowEndpointComplete_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/FlowStep_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/templateAwaitingStep.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → FlowSchemas/templates}/step/plugIns/templateSendPlugin.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/eventBridge.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/extTopic.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/lambdaSyncApi.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/lambdaSyncInv.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/ownTopic.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/registry.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/events/s3.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrApi.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrInv.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/handlers/FlowHandler_HdrSqs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/eventTypes.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowClassifier.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowNaming.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowSelection.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowStepNormalizer.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/flowValidator.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal → _shared}/shared/registry.js +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/CheckTriggerCache_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/ProcessTriggerCache_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheComplete_Main.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/Flow/{_internal/_shared → _shared}/yaml/SharedFunctionSqs_Yaml.ejs +0 -0
- /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_HdrSqs.js → PaginateProcessLogical_HdrSqs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{PaginateProcessLogical_Main.js → PaginateProcessLogical_Main.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{ProcessLogical_HdrSqs.js → ProcessLogical_HdrSqs.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/{ProcessLogical_Main.js → ProcessLogical_Main.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/libs/templates/{Consts.js → Consts.ejs} +0 -0
- /package/src/codeGenerators/app/src/generatedCode/libs/templates/{GenerateCodeLibs.js → GenerateCodeLibs.ejs} +0 -0
|
@@ -2,171 +2,171 @@ import path from 'path';
|
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import ejs from 'ejs';
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
|
|
6
7
|
|
|
7
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
9
|
const __dirname = path.dirname(__filename);
|
|
9
10
|
|
|
10
11
|
async function appendToFile(filePath, content) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
try {
|
|
13
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
14
|
+
await fs.appendFile(filePath, `${content}\n`, 'utf-8');
|
|
15
|
+
} catch (error) {
|
|
16
|
+
console.error(`[Error] Failed to append file: ${filePath}`, error);
|
|
17
|
+
}
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
export async function generateFlowResourceYaml(allSchemas, options) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
23
|
-
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
24
|
-
|
|
25
|
-
const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
|
|
26
|
-
const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
|
|
27
|
-
|
|
28
|
-
const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
|
|
29
|
-
const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
|
|
30
|
-
|
|
31
|
-
let generatedCount = 0;
|
|
32
|
-
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
|
|
33
|
-
|
|
34
|
-
const flows = getFlowsForGeneration(allSchemas);
|
|
35
|
-
for (const flow of flows) {
|
|
36
|
-
const flowTag = flow.flowTag;
|
|
37
|
-
|
|
38
|
-
// Generate In-Queue resources for any flow that listens on its own topic
|
|
39
|
-
if (flow.event && flow.event.includes('ownTopic')) {
|
|
40
|
-
// Render main ResourceYaml.ejs (e.g., InCreate, CreateHdrSqs)
|
|
41
|
-
const yamlContent = ejs.render(resourceYamlTpl, {
|
|
42
|
-
queueName: flowTag
|
|
43
|
-
});
|
|
44
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
45
|
-
generatedCount++;
|
|
46
|
-
|
|
47
|
-
// Check if there are beforeLogical configs for this flow
|
|
48
|
-
const generateCodeConfigs = flows
|
|
49
|
-
.filter(f => f.generatedCodeConfig && f.generatedCodeConfig.generatedCodeTag.toLowerCase() === flowTag.toLowerCase())
|
|
50
|
-
.map(f => ({
|
|
51
|
-
...f.generatedCodeConfig,
|
|
52
|
-
flowTag: f.flowTag
|
|
53
|
-
}));
|
|
54
|
-
|
|
55
|
-
const beforeLogicalConfigs = generateCodeConfigs.filter(c => c.codeHookTag === 'beforeLogical');
|
|
56
|
-
|
|
57
|
-
if (beforeLogicalConfigs.length > 0) {
|
|
58
|
-
// Collect unique flowTags (like ValidateUnitTrackedProperty) from the beforeLogical configs
|
|
59
|
-
const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map(c => c.flowTag))];
|
|
60
|
-
|
|
61
|
-
const beforeLogicalYamlContent = ejs.render(resourceBeforeLogicalYamlTpl, {
|
|
62
|
-
queueName: `${flowTag}BeforeLogical`,
|
|
63
|
-
flowTags: uniqueFlowTags
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
await appendToFile(yamlOutputPath, beforeLogicalYamlContent);
|
|
67
|
-
generatedCount++;
|
|
68
|
-
}
|
|
69
|
-
} else if (flow.event && flow.event.includes('extTopic')) {
|
|
70
|
-
// Custom flows using extTopic do not have ownTopic, but need an entry queue
|
|
71
|
-
const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
|
|
72
|
-
const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
|
|
73
|
-
const yamlContent = ejs.render(resourceSqsYamlTpl, {
|
|
74
|
-
queueName: `Process${flowTag}Sqs`
|
|
75
|
-
});
|
|
76
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
77
|
-
generatedCount++;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Generate Complete queues for custom FlowSchema
|
|
81
|
-
// Also generate queues for any flowStep that uses sqs, dsq, or extTopic
|
|
82
|
-
if (flow.flowSteps && Array.isArray(flow.flowSteps)) {
|
|
83
|
-
for (const stepConfig of flow.flowSteps) {
|
|
84
|
-
const stepName = stepConfig.stepName;
|
|
85
|
-
if (stepName === 'InTag') continue;
|
|
86
|
-
|
|
87
|
-
const events = stepConfig.event || ['sqs'];
|
|
88
|
-
for (const ev of events) {
|
|
89
|
-
let queueName = flowTag + stepName;
|
|
90
|
-
if (stepName === 'Complete') {
|
|
91
|
-
queueName = flowTag + 'Complete';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (ev === 'sqs' || ev === 'ownTopic') {
|
|
95
|
-
// sqs and ownTopic create SNS Topic + Subscription + SQS Queue
|
|
96
|
-
const yamlContent = ejs.render(resourceYamlTpl, {
|
|
97
|
-
queueName: queueName
|
|
98
|
-
});
|
|
99
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
100
|
-
generatedCount++;
|
|
101
|
-
} else if (ev === 'dsq' || ev === 'extTopic') {
|
|
102
|
-
// extTopic and dsq create ONLY SQS Queue
|
|
103
|
-
const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
|
|
104
|
-
const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
|
|
105
|
-
const yamlContent = ejs.render(resourceSqsYamlTpl, {
|
|
106
|
-
queueName: queueName
|
|
107
|
-
});
|
|
108
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
109
|
-
generatedCount++;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
21
|
+
console.log(' [FlowResourceYamlGenerator] Generating SQS/SNS YAML resources for flows...');
|
|
114
22
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
23
|
+
const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
24
|
+
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
25
|
+
|
|
26
|
+
const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
|
|
27
|
+
const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
|
|
28
|
+
const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
|
|
29
|
+
|
|
30
|
+
const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
|
|
31
|
+
const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
|
|
32
|
+
const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
|
|
33
|
+
|
|
34
|
+
let generatedCount = 0;
|
|
35
|
+
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
|
|
36
|
+
await fs.writeFile(yamlOutputPath, '', 'utf-8');
|
|
37
|
+
|
|
38
|
+
const generatedResources = new Set();
|
|
39
|
+
|
|
40
|
+
async function appendUnique(resourceKey, template, templateData) {
|
|
41
|
+
if (generatedResources.has(resourceKey)) return;
|
|
132
42
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
43
|
+
generatedResources.add(resourceKey);
|
|
44
|
+
const yamlContent = ejs.render(template, templateData);
|
|
45
|
+
await appendToFile(yamlOutputPath, yamlContent);
|
|
46
|
+
generatedCount++;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const flows = getFlowsForGeneration(allSchemas);
|
|
50
|
+
|
|
51
|
+
for (const flow of flows) {
|
|
52
|
+
const flowTag = flow.flowTag;
|
|
53
|
+
|
|
54
|
+
if (flow.event && flow.event.includes('ownTopic')) {
|
|
55
|
+
await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
|
|
56
|
+
|
|
57
|
+
const generateCodeConfigs = flows
|
|
58
|
+
.filter((candidate) => candidate.generatedCodeConfig
|
|
59
|
+
&& candidate.generatedCodeConfig.generatedCodeTag?.toLowerCase() === flowTag.toLowerCase())
|
|
60
|
+
.map((candidate) => ({
|
|
61
|
+
...candidate.generatedCodeConfig,
|
|
62
|
+
flowTag: candidate.flowTag
|
|
63
|
+
}));
|
|
64
|
+
|
|
65
|
+
const beforeLogicalConfigs = generateCodeConfigs.filter((config) => config.codeHookTag === 'beforeLogical');
|
|
66
|
+
if (beforeLogicalConfigs.length > 0) {
|
|
67
|
+
const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map((config) => config.flowTag))];
|
|
68
|
+
await appendUnique(`${flowTag}BeforeLogical`, resourceBeforeLogicalYamlTpl, {
|
|
69
|
+
queueName: `${flowTag}BeforeLogical`,
|
|
70
|
+
flowTags: uniqueFlowTags
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
} else if (flow.event && flow.event.includes('extTopic')) {
|
|
74
|
+
await appendUnique(`Process${flowTag}HdrSqs`, resourceSqsYamlTpl, {
|
|
75
|
+
queueName: `Process${flowTag}HdrSqs`
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (Array.isArray(flow.flowSteps)) {
|
|
80
|
+
for (const stepConfig of flow.flowSteps) {
|
|
81
|
+
const stepName = stepConfig.stepName;
|
|
82
|
+
if (stepName === 'InTag') continue;
|
|
83
|
+
|
|
84
|
+
const events = stepConfig.event || ['sqs'];
|
|
85
|
+
for (const ev of events) {
|
|
86
|
+
let queueName = `${flowTag}${stepName}`;
|
|
87
|
+
if (stepName === 'Complete') {
|
|
88
|
+
queueName = `${flowTag}Complete`;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (ev === 'sqs' || ev === 'ownTopic') {
|
|
92
|
+
await appendUnique(queueName, resourceYamlTpl, { queueName });
|
|
93
|
+
} else if (ev === 'dsq' || ev === 'extTopic') {
|
|
94
|
+
await appendUnique(`${queueName}HdrDsq`, resourceSqsYamlTpl, {
|
|
95
|
+
queueName: `${queueName}HdrDsq`
|
|
141
96
|
});
|
|
142
|
-
|
|
143
|
-
generatedCount++;
|
|
97
|
+
}
|
|
144
98
|
}
|
|
99
|
+
}
|
|
145
100
|
}
|
|
146
101
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
'DeleteNodeComplete',
|
|
157
|
-
'GetNodeComplete'
|
|
158
|
-
];
|
|
159
|
-
|
|
160
|
-
const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
|
|
161
|
-
const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
|
|
162
|
-
|
|
163
|
-
for (const sysQueue of systemQueues) {
|
|
164
|
-
const yamlContent = ejs.render(resourceSqsYamlTpl, {
|
|
165
|
-
queueName: sysQueue
|
|
166
|
-
});
|
|
167
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
168
|
-
generatedCount++;
|
|
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
|
+
}
|
|
169
111
|
}
|
|
170
112
|
|
|
171
|
-
|
|
113
|
+
if (flow.isDynamicRelationshipType) {
|
|
114
|
+
const queueName = `${flowTag}HdrDsq`;
|
|
115
|
+
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const systemOwnTopicFlows = [
|
|
120
|
+
'Create',
|
|
121
|
+
'Update',
|
|
122
|
+
'Delete',
|
|
123
|
+
'CreateRelationship',
|
|
124
|
+
'UpdateRelationship',
|
|
125
|
+
'DeleteRelationship',
|
|
126
|
+
'ChangeRelationship',
|
|
127
|
+
'MoveRelationship',
|
|
128
|
+
'CreateTargetRole',
|
|
129
|
+
'DeleteTargetRole',
|
|
130
|
+
'CreateRolePermissions',
|
|
131
|
+
'DeleteRolePermissions',
|
|
132
|
+
'CreateUserRole',
|
|
133
|
+
'DeleteUserFromRole'
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
for (const flowTag of systemOwnTopicFlows) {
|
|
137
|
+
await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const relationshipActions = [
|
|
141
|
+
'CreateRelationship',
|
|
142
|
+
'UpdateRelationship',
|
|
143
|
+
'DeleteRelationship',
|
|
144
|
+
'GetRelationship',
|
|
145
|
+
'ChangeRelationship',
|
|
146
|
+
'MoveRelationship'
|
|
147
|
+
];
|
|
148
|
+
|
|
149
|
+
for (const action of relationshipActions) {
|
|
150
|
+
const queueName = `${action}HdrDsq`;
|
|
151
|
+
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const systemQueues = [
|
|
155
|
+
'ProcessLogical',
|
|
156
|
+
'PaginateProcessLogical',
|
|
157
|
+
'FindData',
|
|
158
|
+
'Register',
|
|
159
|
+
'WebSocket',
|
|
160
|
+
'CreateObjectComplete',
|
|
161
|
+
'UpdateNodeComplete',
|
|
162
|
+
'DeleteNodeComplete',
|
|
163
|
+
'GetNodeComplete'
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
for (const sysQueue of systemQueues) {
|
|
167
|
+
const queueName = `${sysQueue}HdrSqs`;
|
|
168
|
+
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
console.log(` [FlowResourceYamlGenerator] Appended ${generatedCount} sections to generated-sns-in-sqs.yml.`);
|
|
172
172
|
}
|
|
@@ -10,30 +10,30 @@
|
|
|
10
10
|
Type: AWS::SNS::Subscription
|
|
11
11
|
Properties:
|
|
12
12
|
TopicArn: !Ref In<%- queueName %>
|
|
13
|
-
Endpoint: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- queueName %>
|
|
13
|
+
Endpoint: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs"
|
|
14
14
|
Protocol: "sqs"
|
|
15
15
|
|
|
16
16
|
##===== [Queue]
|
|
17
|
-
<%- queueName %>
|
|
17
|
+
<%- queueName %>HdrSqs:
|
|
18
18
|
Type: "AWS::SQS::Queue"
|
|
19
19
|
Properties:
|
|
20
|
-
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>
|
|
20
|
+
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs
|
|
21
21
|
RedrivePolicy:
|
|
22
22
|
deadLetterTargetArn:
|
|
23
23
|
Fn::GetAtt:
|
|
24
|
-
- <%- queueName %>
|
|
24
|
+
- <%- queueName %>HdrSqsDLQ
|
|
25
25
|
- Arn
|
|
26
26
|
maxReceiveCount: 3
|
|
27
27
|
VisibilityTimeout: 120
|
|
28
28
|
|
|
29
29
|
##===== [Queue DLQ]
|
|
30
|
-
<%- queueName %>
|
|
30
|
+
<%- queueName %>HdrSqsDLQ:
|
|
31
31
|
Type: AWS::SQS::Queue
|
|
32
32
|
Properties:
|
|
33
|
-
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>
|
|
33
|
+
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqsDLQ
|
|
34
34
|
|
|
35
35
|
##===== [Queue Policy]
|
|
36
|
-
<%- queueName %>
|
|
36
|
+
<%- queueName %>HdrSqsPolicy:
|
|
37
37
|
Type: AWS::SQS::QueuePolicy
|
|
38
38
|
Properties:
|
|
39
39
|
PolicyDocument:
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
Principal: "*"
|
|
45
45
|
Resource:
|
|
46
46
|
Fn::GetAtt:
|
|
47
|
-
- <%- queueName %>
|
|
47
|
+
- <%- queueName %>HdrSqs
|
|
48
48
|
- Arn
|
|
49
49
|
Action: "SQS:SendMessage"
|
|
50
50
|
Queues:
|
|
51
|
-
- Ref: <%- queueName %>
|
|
51
|
+
- Ref: <%- queueName %>HdrSqs
|
|
52
52
|
|
|
53
53
|
#<#<%- queueName %>QueueSetting#>
|
|
54
|
-
#<#/<%- queueName %>QueueSetting#>
|
|
54
|
+
#<#/<%- queueName %>QueueSetting#>
|
|
@@ -0,0 +1,22 @@
|
|
|
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 };
|