@izara_project/izara-core-generate-service-code 1.0.64 → 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 -322
- 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 -504
- package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
- package/src/codeGenerators/app/sls_yaml/_policy/PolicyEmitter.js +0 -46
- package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -94
- package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyEmitter.test.js +0 -55
- package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -48
- package/src/codeGenerators/app/sls_yaml/_policy/templates/ManagedPolicy_Yaml.ejs +0 -22
- 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 -55
- 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 -93
- 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 -25
- 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 -43
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -43
- 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 -236
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -15
- 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 -358
- 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 -149
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -143
- 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/test_schema.js +0 -2
- /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
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import dynamodbSharedLib from '@izara_project/izara-core-library-dynamodb';
|
|
2
|
-
import { middlewareHandler as middleware, response } from "@izara_project/izara-middleware";
|
|
3
|
-
|
|
4
|
-
export const main = middleware.wrap(async (event, context) => {
|
|
5
|
-
|
|
6
|
-
event._izContext.logger.debug('Event:', event);
|
|
7
|
-
const { eventType, connectionId } = event.requestContext
|
|
8
|
-
try {
|
|
9
|
-
|
|
10
|
-
if (event.requestContext) {
|
|
11
|
-
switch (eventType) {
|
|
12
|
-
case 'CONNECT':
|
|
13
|
-
console.log('Connect websocket')
|
|
14
|
-
|
|
15
|
-
let { userId, submittedByUserId } = event.queryStringParameters;
|
|
16
|
-
|
|
17
|
-
await dynamodbSharedLib.putItem(event._izContext,
|
|
18
|
-
await dynamodbSharedLib.tableName(event._izContext, "UserUploadRecords"),
|
|
19
|
-
{
|
|
20
|
-
connectionId: connectionId,
|
|
21
|
-
userId: userId,
|
|
22
|
-
submittedByUserId: submittedByUserId,
|
|
23
|
-
expirationTime: Math.floor(Date.now() / 1000) + 7200 // ttl time milliSecond to second + 2 hour
|
|
24
|
-
}
|
|
25
|
-
)
|
|
26
|
-
//(<webSocketConnect>)
|
|
27
|
-
//(</webSocketConnect>)
|
|
28
|
-
break
|
|
29
|
-
case 'DISCONNECT':
|
|
30
|
-
console.log('Websocket are Disconnection')
|
|
31
|
-
await dynamodbSharedLib.deleteItem(event._izContext,
|
|
32
|
-
await dynamodbSharedLib.tableName(event._izContext, "UserUploadRecords"),
|
|
33
|
-
{
|
|
34
|
-
connectionId: connectionId,
|
|
35
|
-
}
|
|
36
|
-
)
|
|
37
|
-
//(<webSocketDisconnect>)
|
|
38
|
-
//(</webSocketDisconnect>)
|
|
39
|
-
break
|
|
40
|
-
case '$default':
|
|
41
|
-
console.log('Received unknown route:', route)
|
|
42
|
-
break
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return (response.webSocketSuccess());
|
|
47
|
-
|
|
48
|
-
} catch (err) {
|
|
49
|
-
event._izContext.logger.error('Error, WebSocketConnect: ', err);
|
|
50
|
-
return (response.failure(err));
|
|
51
|
-
}
|
|
52
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<%- functionName -%>:
|
|
2
|
-
handler: <%- handlerFilePath %>.main
|
|
3
|
-
name: ${self:custom.iz_resourcePrefix}<%- functionName %>
|
|
4
|
-
role: <%- roleName %>Role
|
|
5
|
-
#<#<WebSocketConnectSetting#>
|
|
6
|
-
#<#/<WebSocketConnectSetting#>
|
|
7
|
-
events:
|
|
8
|
-
- websocket:
|
|
9
|
-
route: $connect
|
|
10
|
-
- websocket:
|
|
11
|
-
route: $disconnect
|
|
12
|
-
- websocket:
|
|
13
|
-
route: $default
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<%- resourceName %>Table:
|
|
2
|
-
Type: "AWS::DynamoDB::Table"
|
|
3
|
-
Properties:
|
|
4
|
-
TableName: ${self:custom.iz_resourcePrefix}<%- tableName %>
|
|
5
|
-
BillingMode: PAY_PER_REQUEST
|
|
6
|
-
AttributeDefinitions:
|
|
7
|
-
<%_ attributes.forEach(attribute => { -%>
|
|
8
|
-
- AttributeName: <%- attribute['AttributeName'] %>
|
|
9
|
-
AttributeType: <%- attribute['AttributeType'] %>
|
|
10
|
-
<%_ }) _%>
|
|
11
|
-
KeySchema:
|
|
12
|
-
<%_ attributes.forEach(attribute => { -%>
|
|
13
|
-
<%_ if (attribute.keyType === 'partitionKey' || attribute.keyType === "identifier") { -%>
|
|
14
|
-
- AttributeName: <%- attribute["AttributeName"] %>
|
|
15
|
-
KeyType: HASH
|
|
16
|
-
<%_ } -%>
|
|
17
|
-
<%_ if(attribute.keyType === "sortKey") { -%>
|
|
18
|
-
- AttributeName: <%- attribute["AttributeName"] %>
|
|
19
|
-
KeyType: RANGE
|
|
20
|
-
<%_ } -%>
|
|
21
|
-
<%_ }) _%>
|
|
22
|
-
<%_ if (typeof ttl !== 'undefined' && ttl && typeof ttlAttributeName !== 'undefined' && ttlAttributeName) { _%>
|
|
23
|
-
TimeToLiveSpecification:
|
|
24
|
-
AttributeName: <%- ttlAttributeName %>
|
|
25
|
-
Enabled: true
|
|
26
|
-
<%_ } _%>
|
|
27
|
-
#<#<%- tableName %>DynamoDbSetting#>
|
|
28
|
-
#<#/<%- tableName %>DynamoDbSetting#>
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { normalizePropertyType } from '../shared/propertyNormalizer.js';
|
|
5
|
-
|
|
6
|
-
export async function generateDsqHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates) {
|
|
7
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
8
|
-
const flowTag = flow.flowTag;
|
|
9
|
-
|
|
10
|
-
// For entry point stepName is empty
|
|
11
|
-
const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
|
|
12
|
-
|
|
13
|
-
// Function name: matches default export in the referenced _Main.js
|
|
14
|
-
const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
|
|
15
|
-
|
|
16
|
-
// Queue name: keep the full handler suffix so handler code matches
|
|
17
|
-
const queueNameSuffix = suffix;
|
|
18
|
-
let queueName = '';
|
|
19
|
-
if (stepName) {
|
|
20
|
-
queueName = `${flowTag}${stepName}${queueNameSuffix}`;
|
|
21
|
-
} else {
|
|
22
|
-
if (flow.event && flow.event.includes('ownTopic')) {
|
|
23
|
-
queueName = `${flowTag}${queueNameSuffix}`;
|
|
24
|
-
} else {
|
|
25
|
-
queueName = `${functionName}${queueNameSuffix}`;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
let startConfig = null;
|
|
30
|
-
if (!stepName && flow.flowSteps) {
|
|
31
|
-
const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
|
|
32
|
-
if (startStep) {
|
|
33
|
-
startConfig = { ...startStep };
|
|
34
|
-
// Map properties
|
|
35
|
-
if (startConfig.properties && Array.isArray(startConfig.properties)) {
|
|
36
|
-
startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
|
|
37
|
-
}
|
|
38
|
-
// Map messageAttributes
|
|
39
|
-
if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
|
|
40
|
-
startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const handlerContent = ejs.render(templates.dsq || templates.sqs, {
|
|
46
|
-
flowTag: flowTag,
|
|
47
|
-
flowStepName: stepName || '',
|
|
48
|
-
mainFileName: mainFileName,
|
|
49
|
-
functionName: functionName,
|
|
50
|
-
queueName: queueName,
|
|
51
|
-
startConfig: startConfig
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
55
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
|
|
2
|
-
import { ownTopicFunctionName, processFunctionName } from '../shared/flowNaming.js';
|
|
3
|
-
import ejs from 'ejs';
|
|
4
|
-
import fs from 'fs/promises';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import { normalizePropertyType } from '../shared/propertyNormalizer.js';
|
|
7
|
-
|
|
8
|
-
export async function generateSqsHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates) {
|
|
9
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
10
|
-
const flowTag = flow.flowTag;
|
|
11
|
-
|
|
12
|
-
const isOwnTopic = !stepName && !isCrudFlow(flowTag) && !isRbacFlow(flowTag) && !isRelationshipFlow(flowTag) && flow.event && flow.event.includes('ownTopic');
|
|
13
|
-
|
|
14
|
-
// For entry point stepName is empty
|
|
15
|
-
const handlerFileName = stepName
|
|
16
|
-
? `${flowTag}${stepName}_${suffix}`
|
|
17
|
-
: (isOwnTopic ? `${upperCase(flowTag)}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`);
|
|
18
|
-
|
|
19
|
-
// Function name: matches default export in the referenced _Main.js
|
|
20
|
-
// For entry point: Process${upperCase(flowTag)} (e.g. ProcessOwnTopicFlow)
|
|
21
|
-
// For steps: ${flowTag}${flowStepName} (e.g. OwnTopicFlowProcess)
|
|
22
|
-
const functionName = stepName
|
|
23
|
-
? `${flowTag}${stepName}`
|
|
24
|
-
: (isOwnTopic ? ownTopicFunctionName(flowTag) : processFunctionName(flowTag));
|
|
25
|
-
|
|
26
|
-
// Queue name: keep the full handler suffix so handler code matches
|
|
27
|
-
// the generated queue/resource names.
|
|
28
|
-
const queueNameSuffix = suffix;
|
|
29
|
-
let queueName = '';
|
|
30
|
-
if (stepName) {
|
|
31
|
-
queueName = `${flowTag}${stepName}${queueNameSuffix}`;
|
|
32
|
-
} else {
|
|
33
|
-
if (flow.event && flow.event.includes('ownTopic')) {
|
|
34
|
-
queueName = `${flowTag}${queueNameSuffix}`;
|
|
35
|
-
} else {
|
|
36
|
-
queueName = `${functionName}${queueNameSuffix}`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
let startConfig = null;
|
|
41
|
-
if (!stepName && flow.flowSteps) {
|
|
42
|
-
const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
|
|
43
|
-
if (startStep) {
|
|
44
|
-
startConfig = { ...startStep };
|
|
45
|
-
// Map properties
|
|
46
|
-
if (startConfig.properties && Array.isArray(startConfig.properties)) {
|
|
47
|
-
startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
|
|
48
|
-
}
|
|
49
|
-
// Map messageAttributes
|
|
50
|
-
if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
|
|
51
|
-
startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const handlerContent = ejs.render(templates.sqs, {
|
|
57
|
-
flowTag: flowTag,
|
|
58
|
-
flowStepName: stepName || '',
|
|
59
|
-
mainFileName: mainFileName,
|
|
60
|
-
functionName: functionName,
|
|
61
|
-
queueName: queueName,
|
|
62
|
-
startConfig: startConfig
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
66
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import os from 'os';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import { generateDsqHandler } from '../BaseDsqHandler.js';
|
|
7
|
-
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
|
-
|
|
11
|
-
describe('generateDsqHandler', () => {
|
|
12
|
-
let tmpDir;
|
|
13
|
-
beforeEach(async () => {
|
|
14
|
-
tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'iz-dsq-handler-'));
|
|
15
|
-
});
|
|
16
|
-
afterEach(async () => {
|
|
17
|
-
await fs.rm(tmpDir, { recursive: true, force: true });
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('generates a DSQ handler file containing reformatDsqMessage and setValidatorSchema', async () => {
|
|
21
|
-
// Read the template
|
|
22
|
-
const templatePath = path.join(__dirname, '..', '..', 'handlers', 'FlowHandler_HdrDsq.ejs');
|
|
23
|
-
const dsqTemplate = await fs.readFile(templatePath, 'utf-8');
|
|
24
|
-
const templates = { dsq: dsqTemplate };
|
|
25
|
-
|
|
26
|
-
const mockFlow = {
|
|
27
|
-
flowTag: 'createOrder',
|
|
28
|
-
event: ['dsq']
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
await generateDsqHandler(
|
|
32
|
-
mockFlow,
|
|
33
|
-
'', // entry point
|
|
34
|
-
'HdrDsq', // suffix
|
|
35
|
-
tmpDir, // flowOutputDir
|
|
36
|
-
'ProcessCreateOrder_Main', // mainFileName
|
|
37
|
-
templates
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
const generatedFilePath = path.join(tmpDir, 'ProcessCreateOrder_HdrDsq.js');
|
|
41
|
-
const generatedContent = await fs.readFile(generatedFilePath, 'utf-8');
|
|
42
|
-
|
|
43
|
-
// Verify it contains setValidatorSchema on line 39 (approx or exactly depending on formatting, let's verify substring)
|
|
44
|
-
expect(generatedContent).toContain('middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema(');
|
|
45
|
-
expect(generatedContent).toContain('type: "object"');
|
|
46
|
-
expect(generatedContent).toContain('required: [\'body\', \'messageAttributes\']');
|
|
47
|
-
|
|
48
|
-
// Verify it contains reformatDsqMessage
|
|
49
|
-
expect(generatedContent).toContain('record = recordHandlerSharedLib.reformatDsqMessage(record._izContext, record);');
|
|
50
|
-
expect(generatedContent).toContain('record._izContext.logger.debug(\'record ReceiveMsgOutHdrSqs\', record);');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('generates a DSQ handler for step containing step properties mapping', async () => {
|
|
54
|
-
const templatePath = path.join(__dirname, '..', '..', 'handlers', 'FlowHandler_HdrDsq.ejs');
|
|
55
|
-
const dsqTemplate = await fs.readFile(templatePath, 'utf-8');
|
|
56
|
-
const templates = { dsq: dsqTemplate };
|
|
57
|
-
|
|
58
|
-
const mockFlow = {
|
|
59
|
-
flowTag: 'createOrder',
|
|
60
|
-
event: ['dsq'],
|
|
61
|
-
flowSteps: [
|
|
62
|
-
{
|
|
63
|
-
stepName: 'Start',
|
|
64
|
-
properties: ['orderId'],
|
|
65
|
-
messageAttributes: ['userId']
|
|
66
|
-
}
|
|
67
|
-
],
|
|
68
|
-
stepProperties: {
|
|
69
|
-
orderId: { propertyName: 'orderId', type: 'string', required: true }
|
|
70
|
-
},
|
|
71
|
-
stepMessageAttributes: {
|
|
72
|
-
userId: { propertyName: 'userId', type: 'string', required: true }
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
await generateDsqHandler(
|
|
77
|
-
mockFlow,
|
|
78
|
-
'StepOne', // step name
|
|
79
|
-
'HdrDsq', // suffix
|
|
80
|
-
tmpDir, // flowOutputDir
|
|
81
|
-
'CreateOrderStepOne_Main', // mainFileName
|
|
82
|
-
templates
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
const generatedFilePath = path.join(tmpDir, 'createOrderStepOne_HdrDsq.js');
|
|
86
|
-
const generatedContent = await fs.readFile(generatedFilePath, 'utf-8');
|
|
87
|
-
|
|
88
|
-
// Verify template rendering and function names
|
|
89
|
-
expect(generatedContent).toContain('import createOrderStepOne from \'./CreateOrderStepOne_Main.js\';');
|
|
90
|
-
expect(generatedContent).toContain('createOrderStepOne');
|
|
91
|
-
expect(generatedContent).toContain('"createOrderStepOneHdrDsq"');
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
|
|
5
|
-
export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
|
|
6
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
7
|
-
const flowTag = flow.flowTag;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const suffix = 'HdrInv';
|
|
12
|
-
const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
|
|
13
|
-
const queueName = stepName ? `${upperCase(flowTag)}${upperCase(stepName)}${upperCase(suffix)}` : `Process${upperCase(flowTag)}${upperCase(suffix)}`;
|
|
14
|
-
const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
|
|
15
|
-
|
|
16
|
-
const handlerContent = ejs.render(templates.inv, {
|
|
17
|
-
flowTag: flowTag,
|
|
18
|
-
flowStepName: stepName,
|
|
19
|
-
mainFileName: mainFileName,
|
|
20
|
-
functionName: functionName,
|
|
21
|
-
queueName: queueName
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
25
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { generateSqsHandler } from './BaseSqsHandler.js';
|
|
2
|
-
|
|
3
|
-
export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
|
|
4
|
-
const suffix = flow.initiateBy === 'user' && !stepName ? 'HdrWbs' : 'HdrSqs';
|
|
5
|
-
await generateSqsHandler(flow, stepName, suffix, flowOutputDir, mainFileName, templates);
|
|
6
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { normalizePropertyType } from '../shared/propertyNormalizer.js';
|
|
5
|
-
|
|
6
|
-
export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
|
|
7
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
8
|
-
const flowTag = flow.flowTag;
|
|
9
|
-
|
|
10
|
-
const suffix = 'HdrApi';
|
|
11
|
-
const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
|
|
12
|
-
// Queue name: ${flowTag}${flowStepName}${HandlerType}
|
|
13
|
-
const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
|
|
14
|
-
// Function name matches default export of the referenced _Main.js
|
|
15
|
-
const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
|
|
16
|
-
|
|
17
|
-
let startConfig = null;
|
|
18
|
-
if (!stepName && flow.flowSteps) {
|
|
19
|
-
const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
|
|
20
|
-
if (startStep) {
|
|
21
|
-
startConfig = { ...startStep };
|
|
22
|
-
// Map properties
|
|
23
|
-
if (startConfig.properties && Array.isArray(startConfig.properties)) {
|
|
24
|
-
startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
|
|
25
|
-
}
|
|
26
|
-
// Map messageAttributes
|
|
27
|
-
if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
|
|
28
|
-
startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const handlerContent = ejs.render(templates.api, {
|
|
34
|
-
flowTag: flowTag,
|
|
35
|
-
flowStepName: stepName || '',
|
|
36
|
-
mainFileName: mainFileName,
|
|
37
|
-
functionName: functionName,
|
|
38
|
-
queueName: queueName,
|
|
39
|
-
startConfig: startConfig
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
43
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { normalizePropertyType } from '../shared/propertyNormalizer.js';
|
|
5
|
-
|
|
6
|
-
export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates) {
|
|
7
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
8
|
-
const flowTag = flow.flowTag;
|
|
9
|
-
|
|
10
|
-
const suffix = 'HdrInv';
|
|
11
|
-
const handlerFileName = stepName ? `${flowTag}${stepName}_${suffix}` : `Process${upperCase(flowTag)}_${suffix}`;
|
|
12
|
-
// Queue name: ${flowTag}${flowStepName}${HandlerType}
|
|
13
|
-
const queueName = stepName ? `${flowTag}${stepName}${suffix}` : `${flowTag}${suffix}`;
|
|
14
|
-
// Function name matches default export of the referenced _Main.js
|
|
15
|
-
const functionName = stepName ? `${flowTag}${stepName}` : `Process${upperCase(flowTag)}`;
|
|
16
|
-
|
|
17
|
-
let startConfig = null;
|
|
18
|
-
if (!stepName && flow.flowSteps) {
|
|
19
|
-
const startStep = flow.flowSteps && flow.flowSteps.length > 0 ? flow.flowSteps[0] : null;
|
|
20
|
-
if (startStep) {
|
|
21
|
-
startConfig = { ...startStep };
|
|
22
|
-
// Map properties
|
|
23
|
-
if (startConfig.properties && Array.isArray(startConfig.properties)) {
|
|
24
|
-
startConfig.properties = startConfig.properties.map(p => normalizePropertyType(p, flow.stepProperties));
|
|
25
|
-
}
|
|
26
|
-
// Map messageAttributes
|
|
27
|
-
if (startConfig.messageAttributes && Array.isArray(startConfig.messageAttributes)) {
|
|
28
|
-
startConfig.messageAttributes = startConfig.messageAttributes.map(p => normalizePropertyType(p, flow.stepMessageAttributes));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const handlerContent = ejs.render(templates.inv, {
|
|
34
|
-
flowTag: flowTag,
|
|
35
|
-
flowStepName: stepName || '',
|
|
36
|
-
mainFileName: mainFileName,
|
|
37
|
-
functionName: functionName,
|
|
38
|
-
queueName: queueName,
|
|
39
|
-
startConfig: startConfig
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
43
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { generateSqsHandler } from './BaseSqsHandler.js';
|
|
2
|
-
import { isCrudFlow, isRbacFlow, isRelationshipFlow } from '../shared/flowClassifier.js';
|
|
3
|
-
import { ownTopicWebSocketMainFileName, ownTopicWebSocketFunctionName } from '../shared/flowNaming.js';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
import fs from 'fs/promises';
|
|
6
|
-
import path from 'path';
|
|
7
|
-
|
|
8
|
-
export default async function generate(flow, stepName, flowOutputDir, mainFileName, templates, generateCode = []) {
|
|
9
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
10
|
-
|
|
11
|
-
// --- PROCESS ONLY (1-Step Architecture) ---
|
|
12
|
-
// The Process Main Logic File is already generated by FlowMainFunctionGenerator (Process{FlowTag}_Main.js)
|
|
13
|
-
|
|
14
|
-
// Generate Process Handler File (HdrSqs)
|
|
15
|
-
await generateSqsHandler(flow, stepName, 'HdrSqs', flowOutputDir, mainFileName, templates);
|
|
16
|
-
|
|
17
|
-
// ownTopic flows ALWAYS generate the WebSocket entry + SNS-publish main file,
|
|
18
|
-
// regardless of initiateBy (legacy behavior: WebSocket is the universal entry point).
|
|
19
|
-
if (!stepName) {
|
|
20
|
-
const isOwnTopicConvention = !isCrudFlow(flow.flowTag) && !isRbacFlow(flow.flowTag) && !isRelationshipFlow(flow.flowTag);
|
|
21
|
-
let entryPointFileName;
|
|
22
|
-
let wbsFunctionName;
|
|
23
|
-
|
|
24
|
-
if (isOwnTopicConvention) {
|
|
25
|
-
entryPointFileName = ownTopicWebSocketMainFileName(flow.flowTag);
|
|
26
|
-
wbsFunctionName = ownTopicWebSocketFunctionName(flow.flowTag);
|
|
27
|
-
} else {
|
|
28
|
-
entryPointFileName = `${upperCase(flow.flowTag)}_Main`;
|
|
29
|
-
wbsFunctionName = upperCase(flow.flowTag);
|
|
30
|
-
}
|
|
31
|
-
const handlerFileName = `${upperCase(flow.flowTag)}_HdrWbs`;
|
|
32
|
-
|
|
33
|
-
// 1. Render HdrWbs.js
|
|
34
|
-
const handlerContent = ejs.render(templates.endpointHdrWbs, {
|
|
35
|
-
flowTag: flow.flowTag,
|
|
36
|
-
upperCaseFlowTag: upperCase(flow.flowTag),
|
|
37
|
-
flowStepName: '',
|
|
38
|
-
mainFileName: entryPointFileName,
|
|
39
|
-
functionName: wbsFunctionName,
|
|
40
|
-
route: flow.flowTag
|
|
41
|
-
});
|
|
42
|
-
await fs.writeFile(path.join(flowOutputDir, `${handlerFileName}.js`), handlerContent, 'utf-8');
|
|
43
|
-
|
|
44
|
-
// 2. Render _Main.js (SNS publish version for ownTopic flows)
|
|
45
|
-
const mainContent = ejs.render(templates.wbsMain, {
|
|
46
|
-
flowTag: flow.flowTag,
|
|
47
|
-
upperCaseFlowTag: upperCase(flow.flowTag),
|
|
48
|
-
topicArn: `${upperCase(flow.flowTag)}_In`,
|
|
49
|
-
generateCode: generateCode,
|
|
50
|
-
functionName: wbsFunctionName
|
|
51
|
-
});
|
|
52
|
-
await fs.writeFile(path.join(flowOutputDir, `${entryPointFileName}.js`), mainContent, 'utf-8');
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import ownTopic from './ownTopic.js';
|
|
2
|
-
import extTopic from './extTopic.js';
|
|
3
|
-
import lambdaSyncInv from './lambdaSyncInv.js';
|
|
4
|
-
import lambdaSyncApi from './lambdaSyncApi.js';
|
|
5
|
-
import eventBridge from './eventBridge.js';
|
|
6
|
-
import s3 from './s3.js';
|
|
7
|
-
import dsq from './dsq.js';
|
|
8
|
-
|
|
9
|
-
export const EVENT_HANDLERS = {
|
|
10
|
-
ownTopic,
|
|
11
|
-
extTopic,
|
|
12
|
-
lambdaSyncInv,
|
|
13
|
-
lambdaSyncApi,
|
|
14
|
-
eventBridge,
|
|
15
|
-
s3,
|
|
16
|
-
dsq
|
|
17
|
-
};
|
|
@@ -1,56 +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 ejs from 'ejs';
|
|
19
|
-
import fs from 'fs/promises';
|
|
20
|
-
import path from 'path';
|
|
21
|
-
import { fileURLToPath } from 'url';
|
|
22
|
-
|
|
23
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
24
|
-
const __dirname = path.dirname(__filename);
|
|
25
|
-
|
|
26
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
27
|
-
|
|
28
|
-
import generateCreateObject from './s3Components/CreateObjectGenerator.js';
|
|
29
|
-
import generateReservedLimit from './s3Components/ReservedLimitGenerator.js';
|
|
30
|
-
import generateCreatePreSignUrl from './s3Components/CreatePreSignUrlGenerator.js';
|
|
31
|
-
import generateProcessAfterUploadS3 from './s3Components/ProcessAfterUploadS3Generator.js';
|
|
32
|
-
import generateConfirmAfterUploadS3 from './s3Components/ConfirmAfterUploadS3Generator.js';
|
|
33
|
-
|
|
34
|
-
export default async function generate(
|
|
35
|
-
flow,
|
|
36
|
-
stepName,
|
|
37
|
-
flowOutputDir,
|
|
38
|
-
mainFileName,
|
|
39
|
-
templates,
|
|
40
|
-
generateCode = []
|
|
41
|
-
) {
|
|
42
|
-
if (stepName) return;
|
|
43
|
-
|
|
44
|
-
const flowTag = flow.flowTag;
|
|
45
|
-
if (!flowTag) {
|
|
46
|
-
console.warn(' [s3.js] flow is missing flowTag — skipping');
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Call the ported legacy subgenerators to reconstruct the fully separated S3 event flow
|
|
51
|
-
await generateCreateObject(flow, flowOutputDir);
|
|
52
|
-
await generateReservedLimit(flow, flowOutputDir);
|
|
53
|
-
await generateCreatePreSignUrl(flow, flowOutputDir);
|
|
54
|
-
await generateProcessAfterUploadS3(flow, flowOutputDir);
|
|
55
|
-
await generateConfirmAfterUploadS3(flow, flowOutputDir);
|
|
56
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
9
|
-
|
|
10
|
-
export default async function generateConfirmAfterUploadS3(flow, flowOutputDir) {
|
|
11
|
-
const functionName = `${flow.flowTag}ConfirmAfterUpload`;
|
|
12
|
-
const handlerType = `HdrSqs`;
|
|
13
|
-
|
|
14
|
-
const mainFileName = `${functionName}_Main`;
|
|
15
|
-
const handlerFileName = `${functionName}_${handlerType}`;
|
|
16
|
-
|
|
17
|
-
const mainTemplatePath = path.join(
|
|
18
|
-
__dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'ConfirmReserved_Main.ejs'
|
|
19
|
-
);
|
|
20
|
-
const handlerTemplatePath = path.join(
|
|
21
|
-
__dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'ConfirmReserved_HdrSqs.ejs'
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
let mainTemplateStr, handlerTemplateStr;
|
|
25
|
-
try {
|
|
26
|
-
mainTemplateStr = await fs.readFile(mainTemplatePath, 'utf-8');
|
|
27
|
-
handlerTemplateStr = await fs.readFile(handlerTemplatePath, 'utf-8');
|
|
28
|
-
} catch (err) {
|
|
29
|
-
throw new Error(`[ConfirmAfterUploadS3Generator] Failed to load template: ${err.message}`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const mainContent = ejs.render(mainTemplateStr, {
|
|
33
|
-
functionName: functionName
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const handlerContent = ejs.render(handlerTemplateStr, {
|
|
37
|
-
functionName,
|
|
38
|
-
handlerType
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
const targetMainPath = path.join(flowOutputDir, `${mainFileName}.js`);
|
|
42
|
-
await fs.writeFile(targetMainPath, mainContent, 'utf-8');
|
|
43
|
-
|
|
44
|
-
const targetHandlerPath = path.join(flowOutputDir, `${handlerFileName}.js`);
|
|
45
|
-
await fs.writeFile(targetHandlerPath, handlerContent, 'utf-8');
|
|
46
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import ejs from 'ejs';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
const upperCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
9
|
-
|
|
10
|
-
export default async function generateCreateObject(flow, flowOutputDir) {
|
|
11
|
-
const upperCaseFlowTag = upperCase(flow.flowTag);
|
|
12
|
-
const functionName = `${flow.flowTag}CreateObject`;
|
|
13
|
-
const handlerType = `HdrWbs`;
|
|
14
|
-
|
|
15
|
-
const mainFileName = `${functionName}_Main`;
|
|
16
|
-
const handlerFileName = `${functionName}_${handlerType}`;
|
|
17
|
-
|
|
18
|
-
const mainTemplatePath = path.join(
|
|
19
|
-
__dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'CreateObject_Main.ejs'
|
|
20
|
-
);
|
|
21
|
-
const handlerTemplatePath = path.join(
|
|
22
|
-
__dirname, '..', '..', '..', 'FlowSchemas', 'templates', 's3', 'CreateObject_HdrWbs.ejs'
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
let mainTemplateStr, handlerTemplateStr;
|
|
26
|
-
try {
|
|
27
|
-
mainTemplateStr = await fs.readFile(mainTemplatePath, 'utf-8');
|
|
28
|
-
handlerTemplateStr = await fs.readFile(handlerTemplatePath, 'utf-8');
|
|
29
|
-
} catch (err) {
|
|
30
|
-
throw new Error(`[CreateObjectGenerator] Failed to load template: ${err.message}`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const mainContent = ejs.render(mainTemplateStr, {
|
|
34
|
-
flowTag: flow.flowTag,
|
|
35
|
-
objectType: flow.objType.objectType,
|
|
36
|
-
functionName: functionName
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
const handlerContent = ejs.render(handlerTemplateStr, {
|
|
40
|
-
functionName,
|
|
41
|
-
handlerType,
|
|
42
|
-
route: flow.flowTag
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
const targetMainPath = path.join(flowOutputDir, `${mainFileName}.js`);
|
|
46
|
-
await fs.writeFile(targetMainPath, mainContent, 'utf-8');
|
|
47
|
-
|
|
48
|
-
const targetHandlerPath = path.join(flowOutputDir, `${handlerFileName}.js`);
|
|
49
|
-
await fs.writeFile(targetHandlerPath, handlerContent, 'utf-8');
|
|
50
|
-
}
|