@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
|
@@ -1,166 +1,144 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
2
|
import { fileURLToPath } from 'url';
|
|
4
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
appendRenderedTemplate,
|
|
5
|
+
writeRenderedTemplate
|
|
6
|
+
} from '../../../../../core/renderTemplateFile.js';
|
|
5
7
|
|
|
6
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
9
|
const __dirname = path.dirname(__filename);
|
|
8
10
|
|
|
9
11
|
function upperCase(str) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
if (!str) return str;
|
|
13
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
function shortNameHandler(handlerType) {
|
|
15
|
-
|
|
16
|
-
'HdrSqs': 'Sqs',
|
|
17
|
-
'HdrApi': 'Api',
|
|
18
|
-
'HdrWbs': 'Wbs',
|
|
19
|
-
'HdrDsq': 'Dsq'
|
|
20
|
-
};
|
|
21
|
-
return map[handlerType] || handlerType;
|
|
17
|
+
return handlerType;
|
|
22
18
|
}
|
|
23
19
|
|
|
24
|
-
export async function generateRegisterFlow(allLocalFlowSchemas,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
export async function generateRegisterFlow(allLocalFlowSchemas, _appPath, outputBaseDir) {
|
|
21
|
+
if (!allLocalFlowSchemas.some((flow) => flow.flowTag === 'Register')) {
|
|
22
|
+
console.log(' [RegisterGenerator] No Register flow descriptor found. Skipping.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
console.log(' [RegisterGenerator] Generating Register flow files...');
|
|
27
|
+
|
|
28
|
+
const templatesDir = path.join(__dirname, 'templates', 'register');
|
|
29
|
+
const wsTemplatesDir = path.join(__dirname, '..', 'Flow', 'FlowSchemas', 'templates', 'webSocket');
|
|
30
|
+
const registerDir = path.join(
|
|
31
|
+
outputBaseDir,
|
|
32
|
+
'app',
|
|
33
|
+
'src',
|
|
34
|
+
'generatedCode',
|
|
35
|
+
'SystemFlowSchemas',
|
|
36
|
+
'Register',
|
|
37
|
+
'source'
|
|
38
|
+
);
|
|
39
|
+
const flowSchemaPath = path.join(
|
|
40
|
+
outputBaseDir,
|
|
41
|
+
'app',
|
|
42
|
+
'sls_yaml',
|
|
43
|
+
'generatedCode',
|
|
44
|
+
'source',
|
|
45
|
+
'flow-schema.yml'
|
|
46
|
+
);
|
|
47
|
+
const resourceYamlPath = path.join(
|
|
48
|
+
outputBaseDir,
|
|
49
|
+
'resource',
|
|
50
|
+
'sls_yaml',
|
|
51
|
+
'generatedCode',
|
|
52
|
+
'source',
|
|
53
|
+
'generated-sns-in-sqs.yml'
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const wbsFunctionName = 'Register';
|
|
57
|
+
await writeRenderedTemplate(
|
|
58
|
+
path.join(templatesDir, 'Register_Main.ejs'),
|
|
59
|
+
path.join(registerDir, `${wbsFunctionName}_Main.js`),
|
|
60
|
+
{ functionMain: `${wbsFunctionName}_Main` }
|
|
61
|
+
);
|
|
62
|
+
await writeRenderedTemplate(
|
|
63
|
+
path.join(templatesDir, 'Register_HdrWbs.ejs'),
|
|
64
|
+
path.join(registerDir, `${wbsFunctionName}_HdrWbs.js`),
|
|
65
|
+
{ routeName: 'register' }
|
|
66
|
+
);
|
|
67
|
+
await appendRenderedTemplate(
|
|
68
|
+
path.join(__dirname, '..', '..', '..', 'sls_yaml', 'templates', 'FunctionYaml_Wbs.ejs'),
|
|
69
|
+
flowSchemaPath,
|
|
70
|
+
{
|
|
71
|
+
functionNameConfig: `${wbsFunctionName}Wbs`,
|
|
72
|
+
handlerPath: `src/generatedCode/SystemFlowSchemas/Register/source/${wbsFunctionName}_HdrWbs.main`,
|
|
73
|
+
roleName: 'RegisterRole',
|
|
74
|
+
routeName: 'register'
|
|
29
75
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const completeFunctionName = 'RegisterComplete';
|
|
79
|
+
const completeData = {
|
|
80
|
+
functionName: completeFunctionName,
|
|
81
|
+
handlerType: 'HdrSqs',
|
|
82
|
+
queueName: completeFunctionName,
|
|
83
|
+
handlerFilePath: `src/generatedCode/SystemFlowSchemas/Register/source/${completeFunctionName}_HdrSqs`,
|
|
84
|
+
roleName: 'RegisterComplete',
|
|
85
|
+
upperFunctionName: upperCase(completeFunctionName),
|
|
86
|
+
upperHandlerType: 'HDRSQS',
|
|
87
|
+
upperQueueName: upperCase(completeFunctionName),
|
|
88
|
+
functionNameConfig: `${upperCase(completeFunctionName)}${upperCase(shortNameHandler('HdrSqs'))}`
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
await writeRenderedTemplate(
|
|
92
|
+
path.join(templatesDir, 'RegisterComplete_Main.ejs'),
|
|
93
|
+
path.join(registerDir, `${completeFunctionName}_Main.js`),
|
|
94
|
+
completeData
|
|
95
|
+
);
|
|
96
|
+
await writeRenderedTemplate(
|
|
97
|
+
path.join(templatesDir, 'RegisterComplete_HdrSqs.ejs'),
|
|
98
|
+
path.join(registerDir, `${completeFunctionName}_HdrSqs.js`),
|
|
99
|
+
completeData
|
|
100
|
+
);
|
|
101
|
+
await writeRenderedTemplate(
|
|
102
|
+
path.join(templatesDir, 'RegisterComplete_HdrSqs.ejs'),
|
|
103
|
+
path.join(registerDir, `${completeFunctionName}_HdrDsq.js`),
|
|
104
|
+
{ ...completeData, handlerType: 'HdrDsq' }
|
|
105
|
+
);
|
|
106
|
+
await appendRenderedTemplate(
|
|
107
|
+
path.join(wsTemplatesDir, 'ProcessWebSocketFlow_Yaml.ejs'),
|
|
108
|
+
flowSchemaPath,
|
|
109
|
+
completeData
|
|
110
|
+
);
|
|
111
|
+
await appendRenderedTemplate(
|
|
112
|
+
path.join(wsTemplatesDir, 'ProcessWebSocketFlow_Yaml.ejs'),
|
|
113
|
+
flowSchemaPath,
|
|
114
|
+
{
|
|
115
|
+
...completeData,
|
|
116
|
+
handlerType: 'HdrDsq',
|
|
117
|
+
upperHandlerType: 'HDRDSQ',
|
|
118
|
+
functionNameConfig: `${upperCase(completeFunctionName)}Dsq`,
|
|
119
|
+
handlerFilePath: `src/generatedCode/SystemFlowSchemas/Register/source/${completeFunctionName}_HdrDsq`
|
|
50
120
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
await appendRenderedTemplate(
|
|
124
|
+
path.join(wsTemplatesDir, 'ProcessWebSocket_Yaml.ejs'),
|
|
125
|
+
resourceYamlPath,
|
|
126
|
+
completeData
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
for (const flowSchema of allLocalFlowSchemas) {
|
|
130
|
+
if (!flowSchema.outputTopic) continue;
|
|
131
|
+
|
|
132
|
+
await appendRenderedTemplate(
|
|
133
|
+
path.join(wsTemplatesDir, 'ProcessWebSocketSub_Yaml.ejs'),
|
|
134
|
+
resourceYamlPath,
|
|
135
|
+
{
|
|
136
|
+
subscribeTo: upperCase(flowSchema.flowTag),
|
|
137
|
+
queueName: completeFunctionName,
|
|
138
|
+
upperQueueName: upperCase(completeFunctionName)
|
|
139
|
+
}
|
|
64
140
|
);
|
|
65
|
-
|
|
66
|
-
await renderAndWrite(
|
|
67
|
-
path.join(templatesDir, 'Register_HdrWbs.ejs'),
|
|
68
|
-
path.join(registerDir, `${wbsFunctionName}_HdrWbs.js`),
|
|
69
|
-
{ routeName: 'register' }
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
const wbsYamlTemplatePath = path.join(__dirname, '..', '..', '..', 'sls_yaml', 'templates', 'FunctionYaml_Wbs.ejs');
|
|
73
|
-
await renderAndAppend(
|
|
74
|
-
wbsYamlTemplatePath,
|
|
75
|
-
path.join(slsYamlDir, 'flow-schema.yml'),
|
|
76
|
-
{
|
|
77
|
-
functionNameConfig: wbsFunctionName + 'Wbs',
|
|
78
|
-
handlerPath: `src/generatedCode/SystemFlowSchemas/Register/source/${wbsFunctionName}_HdrWbs.main`,
|
|
79
|
-
roleName: 'RegisterRole',
|
|
80
|
-
routeName: 'register'
|
|
81
|
-
}
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
// 2. Complete Handler and Main
|
|
85
|
-
const completeFunctionName = 'RegisterComplete';
|
|
86
|
-
const processHandlerType = 'HdrSqs';
|
|
87
|
-
const queueName = completeFunctionName;
|
|
88
|
-
|
|
89
|
-
const completeData = {
|
|
90
|
-
functionName: completeFunctionName,
|
|
91
|
-
handlerType: processHandlerType,
|
|
92
|
-
queueName: queueName,
|
|
93
|
-
handlerFilePath: `src/generatedCode/SystemFlowSchemas/Register/source/${completeFunctionName}_${processHandlerType}`,
|
|
94
|
-
roleName: 'RegisterComplete',
|
|
95
|
-
upperFunctionName: upperCase(completeFunctionName),
|
|
96
|
-
upperHandlerType: upperCase(processHandlerType),
|
|
97
|
-
upperQueueName: upperCase(queueName),
|
|
98
|
-
functionNameConfig: upperCase(completeFunctionName) + upperCase(shortNameHandler(processHandlerType))
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
await renderAndWrite(
|
|
102
|
-
path.join(templatesDir, 'RegisterComplete_Main.ejs'),
|
|
103
|
-
path.join(registerDir, `${completeFunctionName}_Main.js`),
|
|
104
|
-
completeData
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
await renderAndWrite(
|
|
108
|
-
path.join(templatesDir, 'RegisterComplete_HdrSqs.ejs'),
|
|
109
|
-
path.join(registerDir, `${completeFunctionName}_${processHandlerType}.js`),
|
|
110
|
-
completeData
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
// Also generate Dsq if needed, or legacy only had Sqs?
|
|
114
|
-
// Legacy RegisterComplete_HdrSqs template does both Sqs and Dsq based on yaml, but here we just write HdrSqs and HdrDsq.
|
|
115
|
-
await renderAndWrite(
|
|
116
|
-
path.join(templatesDir, 'RegisterComplete_HdrSqs.ejs'),
|
|
117
|
-
path.join(registerDir, `${completeFunctionName}_HdrDsq.js`),
|
|
118
|
-
{ ...completeData, handlerType: 'HdrDsq' }
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
// Append to flow-schema.yml
|
|
122
|
-
await renderAndAppend(
|
|
123
|
-
path.join(wsTemplatesDir, 'ProcessWebSocketFlow_Yaml.ejs'),
|
|
124
|
-
path.join(slsYamlDir, 'flow-schema.yml'),
|
|
125
|
-
completeData
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
// Append Dsq to flow-schema
|
|
129
|
-
await renderAndAppend(
|
|
130
|
-
path.join(wsTemplatesDir, 'ProcessWebSocketFlow_Yaml.ejs'),
|
|
131
|
-
path.join(slsYamlDir, 'flow-schema.yml'),
|
|
132
|
-
{
|
|
133
|
-
...completeData,
|
|
134
|
-
handlerType: 'HdrDsq',
|
|
135
|
-
upperHandlerType: 'HDRDSQ',
|
|
136
|
-
functionNameConfig: upperCase(completeFunctionName) + 'Dsq',
|
|
137
|
-
handlerFilePath: `src/generatedCode/SystemFlowSchemas/Register/source/${completeFunctionName}_HdrDsq`,
|
|
138
|
-
}
|
|
139
|
-
);
|
|
140
|
-
|
|
141
|
-
// 3. SQS and SNS Subscriptions
|
|
142
|
-
// We reuse ProcessWebSocket_Yaml.ejs which creates SQS queue
|
|
143
|
-
await renderAndAppend(
|
|
144
|
-
path.join(wsTemplatesDir, 'ProcessWebSocket_Yaml.ejs'),
|
|
145
|
-
path.join(resourceYamlDir, 'generated-sns-in-sqs.yml'),
|
|
146
|
-
completeData
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
// RegisterComplete subscribes to ALL output topics
|
|
150
|
-
for (const flowSchema of allLocalFlowSchemas) {
|
|
151
|
-
if (flowSchema.outputTopic) {
|
|
152
|
-
const topicOut = upperCase(flowSchema.flowTag);
|
|
153
|
-
await renderAndAppend(
|
|
154
|
-
path.join(wsTemplatesDir, 'ProcessWebSocketSub_Yaml.ejs'),
|
|
155
|
-
path.join(resourceYamlDir, 'generated-sns-in-sqs.yml'),
|
|
156
|
-
{
|
|
157
|
-
subscribeTo: topicOut,
|
|
158
|
-
queueName: queueName,
|
|
159
|
-
upperQueueName: upperCase(queueName)
|
|
160
|
-
}
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
141
|
+
}
|
|
164
142
|
|
|
165
|
-
|
|
143
|
+
console.log(' [RegisterGenerator] Finished generating Register flow files.');
|
|
166
144
|
}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
+
import ejs from 'ejs';
|
|
4
5
|
|
|
5
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const __dirname = path.dirname(__filename);
|
|
7
8
|
|
|
8
9
|
export async function generateConsts(options) {
|
|
9
|
-
|
|
10
|
+
console.log(' [ConstsGenerator] Generating Consts...');
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const outputDir = path.join(
|
|
13
|
+
options.outputPath,
|
|
14
|
+
'app',
|
|
15
|
+
'src',
|
|
16
|
+
'generatedCode',
|
|
17
|
+
'libs',
|
|
18
|
+
'source'
|
|
19
|
+
);
|
|
20
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
const sourceFile = path.join(__dirname, 'templates', 'Consts.ejs');
|
|
23
|
+
const destFile = path.join(outputDir, 'Consts.js');
|
|
24
|
+
const template = await fs.readFile(sourceFile, 'utf8');
|
|
16
25
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.log(` [ConstsGenerator] Wrote Consts.js`);
|
|
26
|
+
await fs.writeFile(destFile, ejs.render(template, {}));
|
|
27
|
+
console.log(' [ConstsGenerator] Wrote Consts.js');
|
|
20
28
|
}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
+
import ejs from 'ejs';
|
|
4
5
|
|
|
5
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const __dirname = path.dirname(__filename);
|
|
7
8
|
|
|
8
9
|
export async function generateCodeLibs(options) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const outputDir = path.join(options.outputPath, 'app', 'src', 'generatedCode', 'libs', 'source');
|
|
12
|
-
await fs.mkdir(outputDir, { recursive: true });
|
|
10
|
+
console.log(' [GenerateCodeLibsGenerator] Generating Code Libs...');
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const outputDir = path.join(
|
|
13
|
+
options.outputPath,
|
|
14
|
+
'app',
|
|
15
|
+
'src',
|
|
16
|
+
'generatedCode',
|
|
17
|
+
'libs',
|
|
18
|
+
'source'
|
|
19
|
+
);
|
|
20
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
const sourceFile = path.join(__dirname, 'templates', 'GenerateCodeLibs.ejs');
|
|
23
|
+
const destFile = path.join(outputDir, 'GenerateCodeLibs.js');
|
|
24
|
+
const template = await fs.readFile(sourceFile, 'utf8');
|
|
25
|
+
|
|
26
|
+
await fs.writeFile(destFile, ejs.render(template, {}));
|
|
27
|
+
console.log(' [GenerateCodeLibsGenerator] Wrote GenerateCodeLibs.js');
|
|
20
28
|
}
|
|
@@ -72,15 +72,15 @@ export async function generateDynamoDBTables(allSchemas, options) {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
let generatedCount = 0;
|
|
76
|
+
const yamlOutputPath = path.join(resourceYamlDir, 'generated-dynamoDB-table.yml');
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
// Generate system tables first
|
|
79
|
+
const systemYamlTplPath = path.join(__dirname, 'templates', 'SystemDynamoDB_Yaml.ejs');
|
|
80
|
+
const systemYamlTpl = await fs.readFile(systemYamlTplPath, 'utf-8');
|
|
81
|
+
const systemYamlContent = ejs.render(systemYamlTpl, {});
|
|
82
|
+
await fs.writeFile(yamlOutputPath, `${systemYamlContent}\n`, 'utf-8');
|
|
83
|
+
generatedCount += 8; // 8 system tables
|
|
84
84
|
|
|
85
85
|
for (const [tableName, keys] of tables.entries()) {
|
|
86
86
|
const yamlContent = ejs.render(yamlTpl, {
|
|
@@ -2,63 +2,80 @@ 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 generateFlowOut(allSchemas, options) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
console.log(' [FlowOutGenerator] Generating Flow Out nodes (SNS Topics)...');
|
|
22
|
+
|
|
23
|
+
const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
24
|
+
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
25
|
+
|
|
26
|
+
const yamlTplPath = path.join(__dirname, 'templates', 'FlowOut_Yaml.ejs');
|
|
27
|
+
const yamlTpl = await fs.readFile(yamlTplPath, 'utf-8');
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
let generatedCount = 0;
|
|
30
|
+
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-out.yml');
|
|
31
|
+
await fs.writeFile(yamlOutputPath, '', 'utf-8');
|
|
27
32
|
|
|
28
|
-
|
|
29
|
-
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-out.yml');
|
|
33
|
+
const generatedTopics = new Set();
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (flow.outputTopic === true) {
|
|
34
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
35
|
-
const topicName = upperCase(flow.flowTag);
|
|
35
|
+
async function appendTopic(topicName) {
|
|
36
|
+
if (generatedTopics.has(topicName)) return;
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
generatedTopics.add(topicName);
|
|
39
|
+
const yamlContent = ejs.render(yamlTpl, { topicName });
|
|
40
|
+
await appendToFile(yamlOutputPath, yamlContent);
|
|
41
|
+
generatedCount++;
|
|
42
|
+
}
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const flows = getFlowsForGeneration(allSchemas);
|
|
45
|
+
for (const flow of flows) {
|
|
46
|
+
if (flow.outputTopic !== true) continue;
|
|
47
|
+
await appendTopic(flow.flowTag.charAt(0).toUpperCase() + flow.flowTag.slice(1));
|
|
48
|
+
}
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const systemTopics = [
|
|
51
|
+
'CreateObjectComplete',
|
|
52
|
+
'DeleteNodeComplete',
|
|
53
|
+
'UpdateNodeComplete',
|
|
54
|
+
'ProcessLogicalComplete',
|
|
55
|
+
'FindDataComplete',
|
|
56
|
+
'Create',
|
|
57
|
+
'Update',
|
|
58
|
+
'Delete',
|
|
59
|
+
'CreateRelationship',
|
|
60
|
+
'UpdateRelationship',
|
|
61
|
+
'DeleteRelationship',
|
|
62
|
+
'GetRelationship',
|
|
63
|
+
'ChangeRelationship',
|
|
64
|
+
'MoveRelationship',
|
|
65
|
+
'CreateTargetRole',
|
|
66
|
+
'ListTargetRole',
|
|
67
|
+
'DeleteTargetRole',
|
|
68
|
+
'CreateRolePermissions',
|
|
69
|
+
'ListRolePermissions',
|
|
70
|
+
'DeleteRolePermissions',
|
|
71
|
+
'CreateUserRole',
|
|
72
|
+
'ListUserInRoles',
|
|
73
|
+
'DeleteUserFromRole'
|
|
74
|
+
];
|
|
54
75
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
59
|
-
await appendToFile(yamlOutputPath, yamlContent);
|
|
60
|
-
generatedCount++;
|
|
61
|
-
}
|
|
76
|
+
for (const topic of systemTopics) {
|
|
77
|
+
await appendTopic(topic);
|
|
78
|
+
}
|
|
62
79
|
|
|
63
|
-
|
|
80
|
+
console.log(` [FlowOutGenerator] Generated ${generatedCount} SNS Topics for Flow Out nodes.`);
|
|
64
81
|
}
|