@izara_project/izara-core-generate-service-code 1.0.65 → 1.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -11
- package/index.js +0 -5
- package/package.json +7 -6
- package/src/compile/compileProject.js +26 -0
- package/src/compile/loadSchemas.js +28 -0
- package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
- package/src/emit/crud/emitCrudApplicationArtifacts.js +157 -0
- package/src/emit/crud/emitDynamicCrudFlowSchemas.js +84 -0
- package/src/emit/crud/generateCrudApplicationArtifacts.js +16 -0
- package/src/emit/crud/generateDynamicCrudFlowSchemas.js +21 -0
- package/src/emit/crud/loadLocalSchemaArrays.js +8 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/CreateEndpoint_Main.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step → emit/crud/templates}/FlowEndpointBeforeLogical_Main.ejs +2 -2
- package/src/emit/crud/templates/FlowEndpointComplete_Main.ejs +75 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_HdrSqs.ejs → emit/crud/templates/FlowHandler_HdrSqs.ejs} +52 -56
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowMain_Wbs.ejs +1 -3
- package/src/emit/crud/templates/GetRangeEndpoint_Main.ejs +127 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/UpdateEndpoint_Main.ejs +1 -1
- package/src/emit/custom/customFlows.js +70 -0
- package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +308 -0
- package/src/emit/custom/generateCustomFlowApplicationArtifacts.js +22 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/custom/templates}/FlowEndpoint_Main.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step → emit/custom/templates}/FlowStep_Main.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_Main.ejs +5 -5
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_HdrWbs.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreateObject_Main.ejs +3 -3
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_Main.ejs +4 -5
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/FlowHandler_HdrS3.ejs +2 -8
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ProcessS3File_Main.ejs +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_Main.ejs +5 -6
- package/src/emit/custom/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +32 -0
- package/src/emit/custom/templates/triggerCache/CheckTriggerCache_Main.ejs +63 -0
- package/src/emit/custom/templates/triggerCache/TriggerCacheComplete_Main.ejs +35 -0
- package/src/emit/custom/templates/triggerCache/TriggerCache_Main.ejs +16 -0
- package/src/emit/function/functionYamlArtifact.js +111 -0
- package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
- package/src/emit/rbac/emitRbacApplicationArtifacts.js +256 -0
- package/src/emit/rbac/generateCreateTargetRoleHandler.js +19 -0
- package/src/emit/rbac/generateDynamicRbacFlowSchemas.js +21 -0
- package/src/emit/rbac/rbacFlowTag.js +7 -0
- package/src/emit/rbac/templates/CreateTargetRole_HdrSqs.ejs +24 -0
- package/src/emit/rbac/templates/CreateTargetRole_Main.ejs +25 -0
- package/src/emit/rbac/templates/DynamicRbacFlowSchema.ejs +5 -0
- package/src/emit/rbac/templates/ListRbac_HdrApi.ejs +17 -0
- package/src/emit/rbac/templates/ListRbac_HdrSqs.ejs +13 -0
- package/src/emit/rbac/templates/ListRbac_Main.ejs +29 -0
- package/src/emit/rbac/templates/RbacMutation_Main.ejs +22 -0
- package/src/emit/rbac/templates/UserRbacFlow_HdrInv.ejs +10 -0
- package/src/emit/rbac/templates/UserRbacFlow_Main.ejs +44 -0
- package/src/emit/rbac/templates/UserRoleMutation_Main.ejs +33 -0
- package/src/emit/relationship/dynamicRelationshipFlowSchemaTemplate.js +11 -0
- package/src/emit/relationship/emitDynamicRelationshipFlowSchemas.js +66 -0
- package/src/emit/relationship/emitRelationshipApplicationArtifacts.js +147 -0
- package/src/emit/relationship/generateDynamicRelationshipFlowSchemas.js +23 -0
- package/src/emit/relationship/generateRelationshipApplicationArtifacts.js +22 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationshipComplete_Main.ejs → emit/relationship/templates/ChangeRelationshipComplete_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessChangeRelationship_Main.ejs → emit/relationship/templates/ChangeRelationship_Main.ejs} +10 -2
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationshipComplete_Main.ejs → emit/relationship/templates/CreateRelationshipComplete_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessCreateRelationship_Main.ejs → emit/relationship/templates/CreateRelationship_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationshipComplete_Main.ejs → emit/relationship/templates/DeleteRelationshipComplete_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessDeleteRelationship_Main.ejs → emit/relationship/templates/DeleteRelationship_Main.ejs} +1 -1
- package/src/emit/relationship/templates/FlowHandler_HdrApi.ejs +51 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrDsq.ejs +1 -1
- package/src/emit/relationship/templates/FlowHandler_HdrInv.ejs +45 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationshipComplete_Main.ejs → emit/relationship/templates/GetRelationshipComplete_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessGetRelationship_Main.ejs → emit/relationship/templates/GetRelationship_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationship_Main.ejs → emit/relationship/templates/MoveRelationship_Main.ejs} +9 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationshipComplete_Main.ejs → emit/relationship/templates/UpdateRelationshipComplete_Main.ejs} +1 -1
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessUpdateRelationship_Main.ejs → emit/relationship/templates/UpdateRelationship_Main.ejs} +1 -1
- package/src/emit/resource/emitResourceArtifacts.js +300 -0
- package/src/emit/resource/generateResourceArtifacts.js +20 -0
- package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceBeforeLogicalYaml.ejs +1 -1
- package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceSqsYaml.ejs +6 -6
- package/src/{codeGenerators/app/sls_yaml → emit/resource}/templates/SharedResource_Yaml.ejs +8 -8
- package/src/emit/system/emitSystemWebSocketArtifacts.js +182 -0
- package/src/generate.js +60 -126
- package/src/output/commitArtifacts.js +213 -0
- package/src/output/mergeHooks.js +55 -0
- package/src/output/validateArtifacts.js +62 -0
- package/src/plan/buildGenerationPlan.js +50 -0
- package/test/core.test.js +159 -0
- package/test/createTargetRoleHandler.test.js +68 -0
- package/test/crudApplicationArtifacts.test.js +107 -0
- package/test/customFlowApplicationArtifacts.test.js +294 -0
- package/test/dynamicCrudFlowSchemas.test.js +136 -0
- package/test/dynamicRbacFlowSchemas.test.js +101 -0
- package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
- package/test/functionYamlArtifact.test.js +34 -0
- package/test/intTestApi.test.js +29 -0
- package/test/publicApi.test.js +209 -0
- package/test/relationshipApplicationArtifacts.test.js +68 -0
- package/test/resourceArtifacts.test.js +121 -0
- package/jsconfig.json +0 -9
- package/src/__tests__/getIntTestConfig.test.js +0 -51
- package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
- package/src/__tests__/pathIntTest.test.js +0 -103
- package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
- package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
- package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -332
- package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
- package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
- package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -503
- package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
- package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
- package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
- package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
- package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
- package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
- package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
- package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
- package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
- package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
- package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
- package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
- package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
- package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
- package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
- package/src/core/renderTemplateFile.js +0 -22
- package/src/core/validate.js +0 -165
- package/src/generateCode.js +0 -357
- package/src/generateSchema.js +0 -123
- package/src/parsers/flowSchemaParser.js +0 -112
- package/src/parsers/objectSchemaParser.js +0 -39
- package/src/parsers/relationshipSchemaParser.js +0 -51
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
- package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
- package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
- /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrApi.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas → emit/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/relationship/templates}/FlowHandler_HdrSqs.ejs +0 -0
- /package/src/{codeGenerators/app/src/generatedCode/Flow/FlowRelationships/templates/relationship/ProcessMoveRelationshipComplete_Main.ejs → emit/relationship/templates/MoveRelationshipComplete_Main.ejs} +0 -0
- /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/DynamoDBTable_Yaml.ejs +0 -0
- /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/FlowOut_Yaml.ejs +0 -0
- /package/src/{codeGenerators/resource/sls_yaml/templates/crud → emit/resource/templates}/ResourceYaml.ejs +0 -0
- /package/src/{codeGenerators/resource/sls_yaml → emit/resource}/templates/SystemDynamoDB_Yaml.ejs +0 -0
package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
import { processFunctionName, processMainFileName, upperFirst } from '../_shared/shared/flowNaming.js';
|
|
6
|
-
|
|
7
|
-
const RELATIONSHIP_ACTIONS = [
|
|
8
|
-
'CreateRelationship',
|
|
9
|
-
'UpdateRelationship',
|
|
10
|
-
'DeleteRelationship',
|
|
11
|
-
'GetRelationship',
|
|
12
|
-
'ChangeRelationship',
|
|
13
|
-
'MoveRelationship'
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = path.dirname(__filename);
|
|
18
|
-
|
|
19
|
-
export async function generateRelationshipFlows(allSchemas, options) {
|
|
20
|
-
console.log(' [RelationshipFlowGenerator] Generating Custom Relationship Flows...');
|
|
21
|
-
const baseOutputDir = path.join(options.outputPath, 'app', 'src', 'generatedCode');
|
|
22
|
-
// Local templates/ folder (4-way shared handlers via symlink + relationship/ specific templates)
|
|
23
|
-
const templateDir = path.join(__dirname, 'templates');
|
|
24
|
-
|
|
25
|
-
// Read standard handler templates for reuse
|
|
26
|
-
const templates = {
|
|
27
|
-
sqs: await fs.readFile(path.join(templateDir, '..', '..', '_shared', 'handlers', 'FlowHandler_HdrSqs.ejs'), 'utf-8'),
|
|
28
|
-
dsq: await fs.readFile(path.join(templateDir, '..', '..', '_shared', 'handlers', 'FlowHandler_HdrDsq.ejs'), 'utf-8'),
|
|
29
|
-
api: await fs.readFile(path.join(templateDir, '..', '..', '_shared', 'handlers', 'FlowHandler_HdrApi.ejs'), 'utf-8'),
|
|
30
|
-
inv: await fs.readFile(path.join(templateDir, '..', '..', '_shared', 'handlers', 'FlowHandler_HdrInv.ejs'), 'utf-8')
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
let generatedCount = 0;
|
|
34
|
-
|
|
35
|
-
if (!allSchemas.relationships || allSchemas.relationships.length === 0) return;
|
|
36
|
-
|
|
37
|
-
for (const flowTag of RELATIONSHIP_ACTIONS) {
|
|
38
|
-
const upperFlowTag = upperFirst(flowTag);
|
|
39
|
-
const processFunction = processFunctionName(flowTag);
|
|
40
|
-
|
|
41
|
-
const flowOutputDir = path.join(baseOutputDir, 'FlowRelationships', upperFlowTag, 'source');
|
|
42
|
-
await fs.mkdir(flowOutputDir, { recursive: true });
|
|
43
|
-
|
|
44
|
-
// 1. Generate Action Step (In) Main Function
|
|
45
|
-
const actionFileName = processMainFileName(flowTag);
|
|
46
|
-
const actionTemplatePath = path.join(templateDir, 'relationship', `${actionFileName}.ejs`);
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
const actionTemplateStr = await fs.readFile(actionTemplatePath, 'utf-8');
|
|
50
|
-
const actionContent = ejs.render(actionTemplateStr, {
|
|
51
|
-
functionName: processFunction,
|
|
52
|
-
upperFunctionName: processFunction
|
|
53
|
-
});
|
|
54
|
-
await fs.writeFile(path.join(flowOutputDir, `${actionFileName}.js`), actionContent, 'utf-8');
|
|
55
|
-
generatedCount++;
|
|
56
|
-
} catch (err) {
|
|
57
|
-
console.warn(` [RelationshipFlowGenerator] Warning: Action template not found for ${flowTag}. Skipping.`);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// 2. Generate Action Step Handlers
|
|
61
|
-
const flowSchema = allSchemas.flows?.find(f => f.flowTag === flowTag);
|
|
62
|
-
let events = ['ownTopic'];
|
|
63
|
-
if (flowSchema && flowSchema.event) {
|
|
64
|
-
events = Array.isArray(flowSchema.event) ? flowSchema.event : [flowSchema.event];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
for (const event of events) {
|
|
68
|
-
let handlerFileName, handlerContent, handlerFunctionName;
|
|
69
|
-
if (event === 'ownTopic' || event === 'extTopic') {
|
|
70
|
-
handlerFunctionName = `${processFunction}_HdrSqs`;
|
|
71
|
-
handlerContent = ejs.render(templates.sqs, {
|
|
72
|
-
flowTag: flowTag,
|
|
73
|
-
flowStepName: '',
|
|
74
|
-
mainFileName: actionFileName,
|
|
75
|
-
functionName: processFunction,
|
|
76
|
-
queueName: `${processFunction}HdrSqs`
|
|
77
|
-
});
|
|
78
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFunctionName}.js`), handlerContent, 'utf-8');
|
|
79
|
-
generatedCount++;
|
|
80
|
-
} else if (event === 'lambdaSyncApi') {
|
|
81
|
-
handlerFunctionName = `${processFunction}_HdrApi`;
|
|
82
|
-
handlerContent = ejs.render(templates.api, {
|
|
83
|
-
flowTag: flowTag,
|
|
84
|
-
flowStepName: '',
|
|
85
|
-
mainFileName: actionFileName,
|
|
86
|
-
functionName: processFunction
|
|
87
|
-
});
|
|
88
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFunctionName}.js`), handlerContent, 'utf-8');
|
|
89
|
-
generatedCount++;
|
|
90
|
-
} else if (event === 'lambdaSyncInv') {
|
|
91
|
-
handlerFunctionName = `${processFunction}_HdrInv`;
|
|
92
|
-
handlerContent = ejs.render(templates.inv, {
|
|
93
|
-
flowTag: flowTag,
|
|
94
|
-
flowStepName: '',
|
|
95
|
-
mainFileName: actionFileName,
|
|
96
|
-
functionName: processFunction
|
|
97
|
-
});
|
|
98
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFunctionName}.js`), handlerContent, 'utf-8');
|
|
99
|
-
generatedCount++;
|
|
100
|
-
} else if (event === 'dsq') {
|
|
101
|
-
handlerFunctionName = `${processFunction}_HdrDsq`;
|
|
102
|
-
handlerContent = ejs.render(templates.dsq || templates.sqs, {
|
|
103
|
-
flowTag: flowTag,
|
|
104
|
-
flowStepName: '',
|
|
105
|
-
mainFileName: actionFileName,
|
|
106
|
-
functionName: processFunction,
|
|
107
|
-
queueName: `${processFunction}HdrDsq`
|
|
108
|
-
});
|
|
109
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFunctionName}.js`), handlerContent, 'utf-8');
|
|
110
|
-
generatedCount++;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// 3. Generate Complete Step (Always generated for Relationship flows)
|
|
115
|
-
if (true) {
|
|
116
|
-
const completeFunction = `${processFunction}Complete`;
|
|
117
|
-
const completeFileName = `${completeFunction}_Main`;
|
|
118
|
-
const completeTemplatePath = path.join(templateDir, 'relationship', `${completeFileName}.ejs`);
|
|
119
|
-
|
|
120
|
-
try {
|
|
121
|
-
const completeTemplateStr = await fs.readFile(completeTemplatePath, 'utf-8');
|
|
122
|
-
const completeContent = ejs.render(completeTemplateStr, {
|
|
123
|
-
functionName: completeFunction,
|
|
124
|
-
upperFunctionName: completeFunction
|
|
125
|
-
});
|
|
126
|
-
await fs.writeFile(path.join(flowOutputDir, `${completeFileName}.js`), completeContent, 'utf-8');
|
|
127
|
-
generatedCount++;
|
|
128
|
-
|
|
129
|
-
// Complete Handler is always SQS typically in Izara
|
|
130
|
-
const completeHandlerName = `${completeFunction}_HdrSqs`;
|
|
131
|
-
const completeHandlerContent = ejs.render(templates.sqs, {
|
|
132
|
-
flowTag: flowTag,
|
|
133
|
-
flowStepName: 'Complete',
|
|
134
|
-
mainFileName: completeFileName,
|
|
135
|
-
functionName: completeFunction,
|
|
136
|
-
queueName: `${completeFunction}HdrSqs`
|
|
137
|
-
});
|
|
138
|
-
await fs.writeFile(path.join(flowOutputDir, `${completeHandlerName}.js`), completeHandlerContent, 'utf-8');
|
|
139
|
-
generatedCount++;
|
|
140
|
-
|
|
141
|
-
} catch (err) {
|
|
142
|
-
console.warn(` [RelationshipFlowGenerator] Warning: Complete template not found for ${flowTag}. Skipping.`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
console.log(` [RelationshipFlowGenerator] Generated ${generatedCount} files for Relationship Flows.`);
|
|
148
|
-
}
|
|
File without changes
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
function upperCase(str) {
|
|
10
|
-
if (!str) return str;
|
|
11
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function lowerCase(str) {
|
|
15
|
-
if (!str) return str;
|
|
16
|
-
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function shortNameHandler(handlerType) {
|
|
20
|
-
return handlerType;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export async function generateStatusField(flowSchema, appPath, outputBaseDir) {
|
|
24
|
-
const flowTag = flowSchema.flowTag;
|
|
25
|
-
const upperFlowTag = upperCase(flowTag);
|
|
26
|
-
const functionName = 'CompleteStatusField' + upperFlowTag;
|
|
27
|
-
const handlerType = upperCase('hdrSqs'); // default in old system
|
|
28
|
-
const queueName = functionName + handlerType;
|
|
29
|
-
|
|
30
|
-
// Load templates
|
|
31
|
-
const templatesDir = path.join(__dirname, 'templates', 'statusField');
|
|
32
|
-
const mainTpl = await fs.readFile(path.join(templatesDir, 'CompleteStatusField_Main.ejs'), 'utf-8');
|
|
33
|
-
const handlerTpl = await fs.readFile(path.join(templatesDir, 'CompleteStatusField_HdrSqs.ejs'), 'utf-8');
|
|
34
|
-
const yamlTpl = await fs.readFile(path.join(__dirname, '..', '_shared', 'yaml', 'SharedFunctionSqs_Yaml.ejs'), 'utf-8');
|
|
35
|
-
const snsTpl = await fs.readFile(path.join(templatesDir, 'CompleteStatusFieldSns_Yaml.ejs'), 'utf-8');
|
|
36
|
-
|
|
37
|
-
// Shared variables
|
|
38
|
-
const upperFunctionName = upperCase(functionName);
|
|
39
|
-
const upperHandlerType = upperCase(handlerType);
|
|
40
|
-
const upperQueueName = upperCase(queueName);
|
|
41
|
-
const roleName = upperFlowTag;
|
|
42
|
-
const upperRoleName = upperCase(roleName);
|
|
43
|
-
const functionNameConfig = upperFunctionName + upperCase(shortNameHandler(handlerType));
|
|
44
|
-
const upperFunctionNameConfig = upperCase(functionNameConfig);
|
|
45
|
-
const resourceLocation = `src/generatedCode/FlowSchemas/${upperFlowTag}/source/`;
|
|
46
|
-
const handlerPath = path.join(resourceLocation, `${functionName}_${upperHandlerType}.main`);
|
|
47
|
-
const handlerPathUpperFunctionName = path.join(resourceLocation, `${upperFunctionName}_${upperHandlerType}.main`);
|
|
48
|
-
|
|
49
|
-
// Placeholder for IAM permissions (simulating old defaultIamRolePerAction)
|
|
50
|
-
const additionalResourcePermission = [];
|
|
51
|
-
|
|
52
|
-
// 1. Output Main
|
|
53
|
-
const flowOutputDir = path.join(outputBaseDir, 'app', 'src', 'generatedCode', 'FlowSchemas', upperFlowTag, 'source');
|
|
54
|
-
await fs.mkdir(flowOutputDir, { recursive: true });
|
|
55
|
-
|
|
56
|
-
const mainContent = ejs.render(mainTpl, {
|
|
57
|
-
functionName,
|
|
58
|
-
flowType: flowTag,
|
|
59
|
-
upperFunctionName
|
|
60
|
-
});
|
|
61
|
-
await fs.writeFile(path.join(flowOutputDir, `${functionName}_Main.js`), mainContent, 'utf-8');
|
|
62
|
-
|
|
63
|
-
// 2. Output Handler
|
|
64
|
-
const handlerContent = ejs.render(handlerTpl, {
|
|
65
|
-
functionName,
|
|
66
|
-
handlerType,
|
|
67
|
-
queueName,
|
|
68
|
-
upperFunctionName,
|
|
69
|
-
upperHandlerType,
|
|
70
|
-
upperQueueName
|
|
71
|
-
});
|
|
72
|
-
await fs.writeFile(path.join(flowOutputDir, `${functionName}_${handlerType}.js`), handlerContent, 'utf-8');
|
|
73
|
-
|
|
74
|
-
// 3. Output Yaml
|
|
75
|
-
const slsYamlDir = path.join(outputBaseDir, 'app', 'sls_yaml', 'generatedCode', 'source');
|
|
76
|
-
await fs.mkdir(slsYamlDir, { recursive: true });
|
|
77
|
-
|
|
78
|
-
const yamlContent = ejs.render(yamlTpl, {
|
|
79
|
-
resourceLocation,
|
|
80
|
-
functionName,
|
|
81
|
-
handlerType,
|
|
82
|
-
additionalResourcePermission,
|
|
83
|
-
functionNameConfig,
|
|
84
|
-
roleName,
|
|
85
|
-
queueName,
|
|
86
|
-
upperFunctionName,
|
|
87
|
-
upperHandlerType,
|
|
88
|
-
upperFunctionNameConfig,
|
|
89
|
-
upperRoleName,
|
|
90
|
-
upperQueueName,
|
|
91
|
-
handlerPath,
|
|
92
|
-
handlerPathUpperFunctionName
|
|
93
|
-
});
|
|
94
|
-
// Append to flow-schema.yml (creating if not exist)
|
|
95
|
-
const flowSchemaYamlPath = path.join(slsYamlDir, 'flow-schema.yml');
|
|
96
|
-
await fs.appendFile(flowSchemaYamlPath, '\n' + yamlContent, 'utf-8');
|
|
97
|
-
|
|
98
|
-
// 4. Output SNS
|
|
99
|
-
const snsResourceDir = path.join(outputBaseDir, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
100
|
-
await fs.mkdir(snsResourceDir, { recursive: true });
|
|
101
|
-
|
|
102
|
-
const snsContent = ejs.render(snsTpl, {
|
|
103
|
-
queueName: 'CompleteStatusField' + upperFlowTag
|
|
104
|
-
});
|
|
105
|
-
const snsYamlPath = path.join(snsResourceDir, 'generated-sns-in-sqs.yml');
|
|
106
|
-
await fs.appendFile(snsYamlPath, '\n' + snsContent, 'utf-8');
|
|
107
|
-
|
|
108
|
-
console.log(` [StatusFieldGenerator] Generated statusField files for flow: ${flowTag}`);
|
|
109
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
function upperCase(str) {
|
|
10
|
-
if (!str) return str;
|
|
11
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function shortNameHandler(handlerType) {
|
|
15
|
-
return handlerType;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export async function generateWebSocket(allLocalFlowSchemas, appPath, outputBaseDir) {
|
|
19
|
-
const hasOwnTopic = allLocalFlowSchemas.some(flow => flow.event && flow.event.includes('ownTopic'));
|
|
20
|
-
if (!hasOwnTopic) {
|
|
21
|
-
console.log(' [WebSocketGenerator] No flows use ownTopic. Skipping WebSocket generation.');
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
console.log(' [WebSocketGenerator] Generated WebSocket files with WebSocketComplete_Main convention.');
|
|
26
|
-
const templatesDir = path.join(__dirname, 'templates', 'webSocket');
|
|
27
|
-
const wsDir = path.join(outputBaseDir, 'app', 'src', 'generatedCode', 'SystemFlowSchemas', 'WebSocketMain', 'source');
|
|
28
|
-
await fs.mkdir(wsDir, { recursive: true });
|
|
29
|
-
|
|
30
|
-
const slsYamlDir = path.join(outputBaseDir, 'app', 'sls_yaml', 'generatedCode', 'source');
|
|
31
|
-
await fs.mkdir(slsYamlDir, { recursive: true });
|
|
32
|
-
|
|
33
|
-
const resourceYamlDir = path.join(outputBaseDir, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
34
|
-
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
35
|
-
|
|
36
|
-
// Helper to render and write
|
|
37
|
-
async function renderAndWrite(tplName, outPath, data) {
|
|
38
|
-
const tpl = await fs.readFile(path.join(templatesDir, tplName), 'utf-8');
|
|
39
|
-
const content = ejs.render(tpl, data);
|
|
40
|
-
await fs.writeFile(outPath, content, 'utf-8');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async function renderAndAppend(tplName, outPath, data) {
|
|
44
|
-
const tpl = await fs.readFile(path.join(templatesDir, tplName), 'utf-8');
|
|
45
|
-
const content = ejs.render(tpl, data);
|
|
46
|
-
await fs.appendFile(outPath, '\n' + content, 'utf-8');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// 1. DynamoDB Tables
|
|
50
|
-
const webSocketTaskTable = {
|
|
51
|
-
tableName: 'WebSocketTask',
|
|
52
|
-
resourceName: 'WebSocketTask',
|
|
53
|
-
ttl: true,
|
|
54
|
-
ttlAttributeName: 'expirationTime',
|
|
55
|
-
attributes: [
|
|
56
|
-
{ keyType: 'partitionKey', AttributeName: 'taskKey', AttributeType: 'S' },
|
|
57
|
-
{ keyType: 'sortKey', AttributeName: 'connectionId', AttributeType: 'S' }
|
|
58
|
-
]
|
|
59
|
-
};
|
|
60
|
-
const userUploadRecordsTable = {
|
|
61
|
-
tableName: 'UserUploadRecords',
|
|
62
|
-
resourceName: 'UserUploadRecords',
|
|
63
|
-
attributes: [
|
|
64
|
-
{ keyType: 'partitionKey', AttributeName: 'connectionId', AttributeType: 'S' }
|
|
65
|
-
]
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
await renderAndAppend('WebSocketDynamoDb_Yaml.ejs', path.join(resourceYamlDir, 'generated-dynamoDB-table.yml'), webSocketTaskTable);
|
|
69
|
-
await renderAndAppend('WebSocketDynamoDb_Yaml.ejs', path.join(resourceYamlDir, 'generated-dynamoDB-table.yml'), userUploadRecordsTable);
|
|
70
|
-
|
|
71
|
-
// 2. WebSocketConnect
|
|
72
|
-
const wsConnectName = 'WebSocketConnect';
|
|
73
|
-
await renderAndWrite('WebSocketConnect_Main.ejs', path.join(wsDir, `${wsConnectName}.js`), {});
|
|
74
|
-
|
|
75
|
-
await renderAndAppend('WebSocketConnect_Yaml.ejs', path.join(slsYamlDir, 'flow-schema.yml'), {
|
|
76
|
-
functionName: wsConnectName,
|
|
77
|
-
handlerFilePath: `src/generatedCode/SystemFlowSchemas/WebSocketMain/source/${wsConnectName}`,
|
|
78
|
-
roleName: 'WebSocketMain',
|
|
79
|
-
upperFunctionName: upperCase(wsConnectName)
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// 3. WebSocketComplete
|
|
83
|
-
const processFunctionName = 'WebSocketComplete';
|
|
84
|
-
const processHandlerType = 'HdrSqs';
|
|
85
|
-
const queueName = processFunctionName + shortNameHandler(processHandlerType);
|
|
86
|
-
|
|
87
|
-
const processData = {
|
|
88
|
-
functionName: processFunctionName,
|
|
89
|
-
handlerType: processHandlerType,
|
|
90
|
-
queueName: queueName,
|
|
91
|
-
handlerFilePath: `src/generatedCode/SystemFlowSchemas/WebSocketMain/source/${upperCase(processFunctionName)}_${upperCase(processHandlerType)}`,
|
|
92
|
-
roleName: 'WebSocketMain',
|
|
93
|
-
upperFunctionName: upperCase(processFunctionName),
|
|
94
|
-
upperHandlerType: upperCase(processHandlerType),
|
|
95
|
-
upperQueueName: upperCase(queueName),
|
|
96
|
-
functionNameConfig: upperCase(processFunctionName) + upperCase(shortNameHandler(processHandlerType))
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
await renderAndWrite('ProcessWebSocket_Main.ejs', path.join(wsDir, `${processFunctionName}_Main.js`), processData);
|
|
100
|
-
await renderAndWrite('ProcessWebSocket_HdrSqs.ejs', path.join(wsDir, `${processFunctionName}_${processHandlerType}.js`), processData);
|
|
101
|
-
await renderAndAppend('ProcessWebSocketFlow_Yaml.ejs', path.join(slsYamlDir, 'flow-schema.yml'), processData);
|
|
102
|
-
|
|
103
|
-
// 4. SQS and SNS Subscriptions
|
|
104
|
-
await renderAndAppend('ProcessWebSocket_Yaml.ejs', path.join(resourceYamlDir, 'generated-sns-in-sqs.yml'), processData);
|
|
105
|
-
|
|
106
|
-
const processedTopics = new Set();
|
|
107
|
-
for (const flowSchema of allLocalFlowSchemas) {
|
|
108
|
-
if (flowSchema.outputTopic) {
|
|
109
|
-
const topicOut = upperCase(flowSchema.flowTag);
|
|
110
|
-
if (processedTopics.has(topicOut)) continue;
|
|
111
|
-
processedTopics.add(topicOut);
|
|
112
|
-
|
|
113
|
-
await renderAndAppend('ProcessWebSocketSub_Yaml.ejs', path.join(resourceYamlDir, 'generated-sns-in-sqs.yml'), {
|
|
114
|
-
subscribeTo: topicOut,
|
|
115
|
-
queueName: queueName,
|
|
116
|
-
upperQueueName: upperCase(queueName)
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
console.log(` [WebSocketGenerator] Generated WebSocket files with WebSocketComplete_Main convention.`);
|
|
122
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
//(<optionalRequire>)
|
|
2
|
-
//(</optionalRequire>)
|
|
3
|
-
|
|
4
|
-
//(<helperFunctions>)
|
|
5
|
-
//(</helperFunctions>)
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* GENERATED MAIN LOGIC: <%= flowTag %> (Entry Point / In Step)
|
|
9
|
-
*/
|
|
10
|
-
export default async function <%= flowTag %>(
|
|
11
|
-
_izContext,
|
|
12
|
-
requestParams,
|
|
13
|
-
//(<additionalParams>)
|
|
14
|
-
//(</additionalParams>)
|
|
15
|
-
callingFlowConfig = {}
|
|
16
|
-
) {
|
|
17
|
-
_izContext?.logger?.debug("[<%= flowTag %>] _izContext", _izContext);
|
|
18
|
-
_izContext?.logger?.debug("[<%= flowTag %>] requestParams", requestParams);
|
|
19
|
-
_izContext?.logger?.debug("[<%= flowTag %>] callingFlowConfig", callingFlowConfig);
|
|
20
|
-
|
|
21
|
-
try {
|
|
22
|
-
//(<hookCode>)
|
|
23
|
-
// TODO: Implement the initial validation, parsing, or preparation for this Flow
|
|
24
|
-
//(</hookCode>)
|
|
25
|
-
|
|
26
|
-
return {
|
|
27
|
-
success: true,
|
|
28
|
-
processedData: requestParams
|
|
29
|
-
};
|
|
30
|
-
} catch (err) {
|
|
31
|
-
_izContext?.logger?.error('error <%= flowTag %> ActionEndpoint:', err);
|
|
32
|
-
|
|
33
|
-
//(<errorHandling>)
|
|
34
|
-
//(</errorHandling>)
|
|
35
|
-
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
##===== [Create topic in]
|
|
2
|
-
In<%- queueName %>:
|
|
3
|
-
Type: AWS::SNS::Topic
|
|
4
|
-
Properties:
|
|
5
|
-
DisplayName: "SNS Message in"
|
|
6
|
-
TopicName: ${self:custom.iz_serviceTag}_${self:custom.iz_stage}_<%- queueName %>_In
|
|
7
|
-
##===== SNS Subscription
|
|
8
|
-
##===== [Topic In]
|
|
9
|
-
SubscriptionIn<%- queueName %>:
|
|
10
|
-
Type: AWS::SNS::Subscription
|
|
11
|
-
Properties:
|
|
12
|
-
TopicArn: !Ref In<%- queueName %>
|
|
13
|
-
Endpoint: "arn:aws:sqs:${self:custom.iz_region}:${self:custom.iz_accountId}:${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs"
|
|
14
|
-
Protocol: "sqs"
|
|
15
|
-
##===== [Queue]
|
|
16
|
-
<%- queueName %>HdrSqs:
|
|
17
|
-
Type: "AWS::SQS::Queue"
|
|
18
|
-
Properties:
|
|
19
|
-
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqs
|
|
20
|
-
RedrivePolicy:
|
|
21
|
-
deadLetterTargetArn:
|
|
22
|
-
# !GetAtt
|
|
23
|
-
Fn::GetAtt:
|
|
24
|
-
- <%- queueName %>HdrSqsDLQ
|
|
25
|
-
- Arn
|
|
26
|
-
maxReceiveCount: 3
|
|
27
|
-
VisibilityTimeout: 120
|
|
28
|
-
##==== [QueueDLQ]
|
|
29
|
-
<%- queueName %>HdrSqsDLQ:
|
|
30
|
-
Type: AWS::SQS::Queue
|
|
31
|
-
Properties:
|
|
32
|
-
QueueName: ${self:custom.iz_resourcePrefix}<%- queueName %>HdrSqsDLQ
|
|
33
|
-
##==== [QueuePolicy]
|
|
34
|
-
<%- queueName %>HdrSqsPolicy:
|
|
35
|
-
Type: AWS::SQS::QueuePolicy
|
|
36
|
-
Properties:
|
|
37
|
-
PolicyDocument:
|
|
38
|
-
Version: "2012-10-17"
|
|
39
|
-
Statement:
|
|
40
|
-
- Sid: "allow-sns-messages"
|
|
41
|
-
Effect: Allow
|
|
42
|
-
Principal: "*"
|
|
43
|
-
Resource:
|
|
44
|
-
# !GetAtt
|
|
45
|
-
Fn::GetAtt:
|
|
46
|
-
- <%- queueName %>HdrSqs
|
|
47
|
-
- Arn
|
|
48
|
-
Action: "SQS:SendMessage"
|
|
49
|
-
Queues:
|
|
50
|
-
- Ref: <%- queueName %>HdrSqs
|
|
51
|
-
#<#<%- queueName %>QueueSetting#>
|
|
52
|
-
#<#/<%- queueName %>QueueSetting#>
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright (C) 2020 Sven Mason <http://izara.io>
|
|
3
|
-
|
|
4
|
-
This program is free software: you can redistribute it and/or modify
|
|
5
|
-
it under the terms of the GNU Affero General Public License as
|
|
6
|
-
published by the Free Software Foundation, either version 3 of the
|
|
7
|
-
License, or (at your option) any later version.
|
|
8
|
-
|
|
9
|
-
This program is distributed in the hope that it will be useful,
|
|
10
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
-
GNU Affero General Public License for more details.
|
|
13
|
-
|
|
14
|
-
You should have received a copy of the GNU Affero General Public License
|
|
15
|
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import { middlewareHandler as middleware } from "@izara_project/izara-middleware";
|
|
19
|
-
import Logger from '@izara_project/izara-core-library-logger';
|
|
20
|
-
import { recordHandlerSharedLib } from "@izara_project/izara-core-library-record-handler";
|
|
21
|
-
|
|
22
|
-
import <%- functionName %> from './<%- functionName %>_Main.js';
|
|
23
|
-
|
|
24
|
-
// validate event properties in body.Message of sqs event
|
|
25
|
-
let perRecordsValidatorSchema = {
|
|
26
|
-
//(<validatorSchema>)
|
|
27
|
-
//(</validatorSchema>)
|
|
28
|
-
}
|
|
29
|
-
middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
|
|
30
|
-
|
|
31
|
-
module.exports.main = middleware.wrap(async (event, context, callback) => {
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
|
|
35
|
-
let recordPromises = [];
|
|
36
|
-
|
|
37
|
-
// loop each record and send to mainFunction
|
|
38
|
-
await Promise.all(event.Records.map(async record => { // promise.all for map() function
|
|
39
|
-
|
|
40
|
-
let passOnProperties = []
|
|
41
|
-
record._izContext.logger.debug('record ReceiveMsgOutHdrSqs', record);
|
|
42
|
-
|
|
43
|
-
//validate message (and MessageAttributes)
|
|
44
|
-
await recordHandlerSharedLib.validateRecord(
|
|
45
|
-
record, // one record will send to mainFunction
|
|
46
|
-
"<%- queueName %>", // queue name that need to retry or send to dlq
|
|
47
|
-
perRecordsValidatorSchema, // schema for record.Message
|
|
48
|
-
// messageAttributeValidatorSchema // ----- for msgAttr default is null -> do not send this parameter if not want to validate msgAtt
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
// add argument (to invoke lambda) to passOnProperties[]
|
|
52
|
-
passOnProperties.push(record.body.Message)
|
|
53
|
-
//(<additionalParams>)
|
|
54
|
-
//(</additionalParams>)
|
|
55
|
-
record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
|
|
56
|
-
|
|
57
|
-
// call recordHandlerSharedLib.recordHandler with 3 parameters and return promise(resolve)
|
|
58
|
-
let recordPromise = recordHandlerSharedLib.recordHandler(
|
|
59
|
-
record, // one record will send to mainFunction
|
|
60
|
-
<%- functionName %>, // mainFunction that need to invoke.
|
|
61
|
-
"<%- queueName %>", // queue name that need to retry or send to dlq
|
|
62
|
-
passOnProperties, // all parameters that mainFunction needed.
|
|
63
|
-
);
|
|
64
|
-
record._izContext.logger.debug('after recordPromise in handler');
|
|
65
|
-
recordPromises.push(recordPromise); // push promise to recordPromises
|
|
66
|
-
}))
|
|
67
|
-
|
|
68
|
-
Logger.debug('before Promise.all(recordPromises) in handler');
|
|
69
|
-
try {
|
|
70
|
-
// --- main await all promises
|
|
71
|
-
await Promise.all(recordPromises); // await all promises
|
|
72
|
-
|
|
73
|
-
return event.Records // return all for local testing
|
|
74
|
-
|
|
75
|
-
} catch {
|
|
76
|
-
Logger.debug('Promise.all(recordPromises) in handler threw error (at least one record did no resolve)');
|
|
77
|
-
}
|
|
78
|
-
Logger.debug('after Promise.all(recordPromises) in handler');
|
|
79
|
-
|
|
80
|
-
} catch (err) {
|
|
81
|
-
Logger.error('Unhandled Error, <%- functionName %>: ', err);
|
|
82
|
-
throw (err);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright (C) 2020 Sven Mason <http: //izara.io>
|
|
3
|
-
|
|
4
|
-
This program is free software: you can redistribute it and/or modify
|
|
5
|
-
it under the terms of the GNU Affero General Public License as
|
|
6
|
-
published by the Free Software Foundation, either version 3 of the
|
|
7
|
-
License, or (at your option) any later version.
|
|
8
|
-
|
|
9
|
-
This program is distributed in the hope that it will be useful,
|
|
10
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
-
GNU Affero General Public License for more details.
|
|
13
|
-
|
|
14
|
-
You should have received a copy of the GNU Affero General Public License
|
|
15
|
-
along with this program. If not, see
|
|
16
|
-
<http: //www.gnu.org/licenses />.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import statusFieldSharedLib from '@izara_project/izara-core-library-status-field';
|
|
20
|
-
|
|
21
|
-
//(<optionalRequire>)
|
|
22
|
-
//(</optionalRequire>)
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* description of function.
|
|
27
|
-
* @param {Object} _izContext
|
|
28
|
-
* @param {CorrelationIds} _izContext.correlationIds - property of _izContext
|
|
29
|
-
* @param {Logger} _izContext.logger - property of _izContext
|
|
30
|
-
* @param {Object} requestParams - request params
|
|
31
|
-
* @param {Object} requestParams.identifiers - identifiers for get data
|
|
32
|
-
* @param {Object} requestParams.additionalRequest - additionalRequest
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @returns {object} description of return value
|
|
36
|
-
*/
|
|
37
|
-
export default async function <%- functionName %> (
|
|
38
|
-
_izContext,
|
|
39
|
-
identifiers,
|
|
40
|
-
statusField,
|
|
41
|
-
errorsFound,
|
|
42
|
-
//(<additionalParams>)
|
|
43
|
-
//(</additionalParams>)
|
|
44
|
-
callingFlowConfig = {},
|
|
45
|
-
) {
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
_izContext.logger.debug("<%- functionName %> _izContext", _izContext)
|
|
49
|
-
_izContext.logger.debug("<%- functionName %> requestParams", requestParams)
|
|
50
|
-
_izContext.logger.debug("<%- functionName %> callingFlowConfig", callingFlowConfig)
|
|
51
|
-
|
|
52
|
-
//(<beforeCompleteStatusField>)
|
|
53
|
-
//(</beforeCompleteStatusField>)
|
|
54
|
-
|
|
55
|
-
await statusFieldSharedLib.completeStatusField(
|
|
56
|
-
_izContext,
|
|
57
|
-
{
|
|
58
|
-
flowTag: "<%- flowType %>",
|
|
59
|
-
serviceTag: process.env.iz_serviceTag
|
|
60
|
-
},
|
|
61
|
-
identifiers,
|
|
62
|
-
statusField,
|
|
63
|
-
errorsFound
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
//(<endpointHook>)
|
|
67
|
-
//(</endpointHook>)
|
|
68
|
-
|
|
69
|
-
} catch (err) {
|
|
70
|
-
_izContext.logger.error('error <%- functionName %>: ', err)
|
|
71
|
-
throw (err)
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
module.exports.CompleteStatusFieldCreateOrder = async (
|
|
75
|
-
|
|
76
|
-
) => {
|
|
77
|
-
|
|
78
|
-
}
|