@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,70 +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
|
-
import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
|
|
7
|
-
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
|
-
|
|
11
|
-
export async function generateFlowOut(allSchemas, options) {
|
|
12
|
-
console.log(' [FlowOutGenerator] Generating Flow Out nodes (SNS Topics)...');
|
|
13
|
-
|
|
14
|
-
const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
15
|
-
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
16
|
-
|
|
17
|
-
const yamlTplPath = path.join(__dirname, 'templates', 'FlowOut_Yaml.ejs');
|
|
18
|
-
const yamlTpl = await fs.readFile(yamlTplPath, 'utf-8');
|
|
19
|
-
|
|
20
|
-
let generatedCount = 0;
|
|
21
|
-
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-out.yml');
|
|
22
|
-
await fs.writeFile(yamlOutputPath, 'Resources:\n', 'utf-8'); // ponytail: simplest one-line fix
|
|
23
|
-
|
|
24
|
-
const generatedTopics = new Set();
|
|
25
|
-
|
|
26
|
-
async function appendTopic(topicName) {
|
|
27
|
-
if (generatedTopics.has(topicName)) return;
|
|
28
|
-
|
|
29
|
-
generatedTopics.add(topicName);
|
|
30
|
-
const yamlContent = ejs.render(yamlTpl, { topicName });
|
|
31
|
-
await fs.appendFile(yamlOutputPath, `${yamlContent}\n`, 'utf-8');
|
|
32
|
-
generatedCount++;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const flows = getFlowsForGeneration(allSchemas);
|
|
36
|
-
for (const flow of flows) {
|
|
37
|
-
if (flow.outputTopic !== true) continue;
|
|
38
|
-
await appendTopic(flow.flowTag.charAt(0).toUpperCase() + flow.flowTag.slice(1));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const systemTopics = [
|
|
42
|
-
'ProcessLogical',
|
|
43
|
-
'FindData',
|
|
44
|
-
'Create',
|
|
45
|
-
'Update',
|
|
46
|
-
'Delete',
|
|
47
|
-
'Get',
|
|
48
|
-
'CreateRelationship',
|
|
49
|
-
'UpdateRelationship',
|
|
50
|
-
'DeleteRelationship',
|
|
51
|
-
'GetRelationship',
|
|
52
|
-
'ChangeRelationship',
|
|
53
|
-
'MoveRelationship',
|
|
54
|
-
'CreateTargetRole',
|
|
55
|
-
'ListTargetRole',
|
|
56
|
-
'DeleteTargetRole',
|
|
57
|
-
'CreateRolePermissions',
|
|
58
|
-
'ListRolePermissions',
|
|
59
|
-
'DeleteRolePermissions',
|
|
60
|
-
'CreateUserRole',
|
|
61
|
-
'ListUserInRoles',
|
|
62
|
-
'DeleteUserFromRole'
|
|
63
|
-
];
|
|
64
|
-
|
|
65
|
-
for (const topic of systemTopics) {
|
|
66
|
-
await appendTopic(topic);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
console.log(` [FlowOutGenerator] Generated ${generatedCount} SNS Topics for Flow Out nodes.`);
|
|
70
|
-
}
|
|
@@ -1,182 +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
|
-
import { getFlowsForGeneration } from '../../app/src/generatedCode/Flow/_shared/shared/flowSelection.js';
|
|
7
|
-
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
|
-
|
|
11
|
-
export async function generateFlowResourceYaml(allSchemas, options) {
|
|
12
|
-
console.log(' [FlowResourceYamlGenerator] Generating SQS/SNS YAML resources for flows...');
|
|
13
|
-
|
|
14
|
-
const resourceYamlDir = path.join(options.outputPath, 'resource', 'sls_yaml', 'generatedCode', 'source');
|
|
15
|
-
await fs.mkdir(resourceYamlDir, { recursive: true });
|
|
16
|
-
|
|
17
|
-
const resourceYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceYaml.ejs');
|
|
18
|
-
const resourceBeforeLogicalYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceBeforeLogicalYaml.ejs');
|
|
19
|
-
const resourceSqsYamlTplPath = path.join(__dirname, 'templates', 'crud', 'ResourceSqsYaml.ejs');
|
|
20
|
-
|
|
21
|
-
const resourceYamlTpl = await fs.readFile(resourceYamlTplPath, 'utf-8');
|
|
22
|
-
const resourceBeforeLogicalYamlTpl = await fs.readFile(resourceBeforeLogicalYamlTplPath, 'utf-8');
|
|
23
|
-
const resourceSqsYamlTpl = await fs.readFile(resourceSqsYamlTplPath, 'utf-8');
|
|
24
|
-
|
|
25
|
-
let generatedCount = 0;
|
|
26
|
-
const yamlOutputPath = path.join(resourceYamlDir, 'generated-sns-in-sqs.yml');
|
|
27
|
-
await fs.writeFile(yamlOutputPath, 'Resources:\n', 'utf-8'); // ponytail: build minimum that works, one-line initialization fix
|
|
28
|
-
|
|
29
|
-
const generatedResources = new Set();
|
|
30
|
-
|
|
31
|
-
async function appendUnique(resourceKey, template, templateData) {
|
|
32
|
-
if (generatedResources.has(resourceKey)) return;
|
|
33
|
-
|
|
34
|
-
generatedResources.add(resourceKey);
|
|
35
|
-
const yamlContent = ejs.render(template, templateData);
|
|
36
|
-
await fs.appendFile(yamlOutputPath, `${yamlContent}\n`, 'utf-8');
|
|
37
|
-
generatedCount++;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const flows = getFlowsForGeneration(allSchemas);
|
|
41
|
-
|
|
42
|
-
for (const flow of flows) {
|
|
43
|
-
const flowTag = flow.flowTag;
|
|
44
|
-
|
|
45
|
-
if (flow.event && flow.event.includes('ownTopic')) {
|
|
46
|
-
await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
|
|
47
|
-
|
|
48
|
-
const generateCodeConfigs = flows
|
|
49
|
-
.filter((candidate) => candidate.generatedCodeConfig
|
|
50
|
-
&& candidate.generatedCodeConfig.generatedCodeTag?.toLowerCase() === flowTag.toLowerCase())
|
|
51
|
-
.map((candidate) => ({
|
|
52
|
-
...candidate.generatedCodeConfig,
|
|
53
|
-
flowTag: candidate.flowTag
|
|
54
|
-
}));
|
|
55
|
-
|
|
56
|
-
const beforeLogicalConfigs = generateCodeConfigs.filter((config) => config.codeHookTag === 'beforeLogical');
|
|
57
|
-
if (beforeLogicalConfigs.length > 0) {
|
|
58
|
-
const uniqueFlowTags = [...new Set(beforeLogicalConfigs.map((config) => config.flowTag))];
|
|
59
|
-
await appendUnique(`${flowTag}BeforeLogical`, resourceBeforeLogicalYamlTpl, {
|
|
60
|
-
queueName: `${flowTag}BeforeLogical`,
|
|
61
|
-
flowTags: uniqueFlowTags
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
} else if (flow.event && flow.event.includes('extTopic')) {
|
|
65
|
-
await appendUnique(`Process${flowTag}HdrSqs`, resourceSqsYamlTpl, {
|
|
66
|
-
queueName: `Process${flowTag}HdrSqs`
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (Array.isArray(flow.flowSteps)) {
|
|
71
|
-
for (const stepConfig of flow.flowSteps) {
|
|
72
|
-
const stepName = stepConfig.stepName;
|
|
73
|
-
if (stepName?.toLowerCase() === 'start') continue;
|
|
74
|
-
|
|
75
|
-
const events = stepConfig.event || ['extTopic'];
|
|
76
|
-
for (const ev of events) {
|
|
77
|
-
let queueName = `${flowTag}${stepName}`;
|
|
78
|
-
if (stepName === 'Complete') {
|
|
79
|
-
queueName = `${flowTag}Complete`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (ev === 'ownTopic') {
|
|
83
|
-
await appendUnique(queueName, resourceYamlTpl, { queueName });
|
|
84
|
-
} else if (ev === 'sqs') {
|
|
85
|
-
// ponytail: purely SQS events don't need SNS topics, use resourceSqsYamlTpl
|
|
86
|
-
await appendUnique(`${queueName}HdrSqs`, resourceSqsYamlTpl, {
|
|
87
|
-
queueName: `${queueName}HdrSqs`
|
|
88
|
-
});
|
|
89
|
-
} else if (ev === 'dsq') {
|
|
90
|
-
await appendUnique(`${queueName}HdrDsq`, resourceSqsYamlTpl, {
|
|
91
|
-
queueName: `${queueName}HdrDsq`
|
|
92
|
-
});
|
|
93
|
-
} else if (ev === 'extTopic') {
|
|
94
|
-
await appendUnique(`${queueName}HdrSqs`, resourceSqsYamlTpl, {
|
|
95
|
-
queueName: `${queueName}HdrSqs`
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (flow.event && flow.event.includes('s3')) {
|
|
103
|
-
const queueNames = [
|
|
104
|
-
`${flowTag}CreatePreSignUrlHdrSqs`,
|
|
105
|
-
`${flowTag}ReservedLimitHdrSqs`
|
|
106
|
-
];
|
|
107
|
-
|
|
108
|
-
for (const queueName of queueNames) {
|
|
109
|
-
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (flow.isDynamicRelationshipType) {
|
|
114
|
-
const queueName = `${flowTag}HdrDsq`;
|
|
115
|
-
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const systemOwnTopicFlows = [
|
|
120
|
-
'ProcessLogical',
|
|
121
|
-
'PaginateProcessLogical',
|
|
122
|
-
'FindData',
|
|
123
|
-
'Create',
|
|
124
|
-
'Update',
|
|
125
|
-
'Delete',
|
|
126
|
-
'CreateRelationship',
|
|
127
|
-
'UpdateRelationship',
|
|
128
|
-
'DeleteRelationship',
|
|
129
|
-
'GetRelationship',
|
|
130
|
-
'ChangeRelationship',
|
|
131
|
-
'MoveRelationship',
|
|
132
|
-
'CreateTargetRole',
|
|
133
|
-
'DeleteTargetRole',
|
|
134
|
-
'CreateRolePermissions',
|
|
135
|
-
'DeleteRolePermissions',
|
|
136
|
-
'CreateUserRole',
|
|
137
|
-
'DeleteUserFromRole'
|
|
138
|
-
];
|
|
139
|
-
|
|
140
|
-
for (const flowTag of systemOwnTopicFlows) {
|
|
141
|
-
await appendUnique(flowTag, resourceYamlTpl, { queueName: flowTag });
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const relationshipActions = [
|
|
145
|
-
'CreateRelationship',
|
|
146
|
-
'UpdateRelationship',
|
|
147
|
-
'DeleteRelationship',
|
|
148
|
-
'GetRelationship',
|
|
149
|
-
'ChangeRelationship',
|
|
150
|
-
'MoveRelationship'
|
|
151
|
-
];
|
|
152
|
-
|
|
153
|
-
for (const action of relationshipActions) {
|
|
154
|
-
const queueName = `${action}HdrDsq`;
|
|
155
|
-
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// ponytail: add Dsq queue for PaginateProcessLogical
|
|
159
|
-
await appendUnique('PaginateProcessLogicalHdrDsq', resourceSqsYamlTpl, { queueName: 'PaginateProcessLogicalHdrDsq' });
|
|
160
|
-
|
|
161
|
-
const systemQueues = [
|
|
162
|
-
'Register',
|
|
163
|
-
'WebSocket',
|
|
164
|
-
'CreateComplete',
|
|
165
|
-
'UpdateComplete',
|
|
166
|
-
'DeleteComplete',
|
|
167
|
-
'GetComplete',
|
|
168
|
-
'CreateRelationshipComplete',
|
|
169
|
-
'UpdateRelationshipComplete',
|
|
170
|
-
'DeleteRelationshipComplete',
|
|
171
|
-
'GetRelationshipComplete',
|
|
172
|
-
'ChangeRelationshipComplete',
|
|
173
|
-
'MoveRelationshipComplete'
|
|
174
|
-
];
|
|
175
|
-
|
|
176
|
-
for (const sysQueue of systemQueues) {
|
|
177
|
-
const queueName = `${sysQueue}HdrSqs`;
|
|
178
|
-
await appendUnique(queueName, resourceSqsYamlTpl, { queueName });
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
console.log(` [FlowResourceYamlGenerator] Appended ${generatedCount} sections to generated-sns-in-sqs.yml.`);
|
|
182
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import ejs from 'ejs';
|
|
4
|
-
|
|
5
|
-
async function renderTemplateFile(templatePath, templateData = {}, { views } = {}) {
|
|
6
|
-
const template = await fs.readFile(templatePath, 'utf8');
|
|
7
|
-
return ejs.render(template, templateData, views ? { views } : undefined);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
async function writeRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
|
|
11
|
-
const content = await renderTemplateFile(templatePath, templateData, options);
|
|
12
|
-
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
13
|
-
await fs.writeFile(outputPath, content, 'utf8');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function appendRenderedTemplate(templatePath, outputPath, templateData = {}, options = {}) {
|
|
17
|
-
const content = await renderTemplateFile(templatePath, templateData, options);
|
|
18
|
-
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
19
|
-
await fs.appendFile(outputPath, `\n${content}`, 'utf8');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { appendRenderedTemplate, renderTemplateFile, writeRenderedTemplate };
|
package/src/core/validate.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { getObjectSchema, utils } from '@izara_project/izara-core-library-service-schemas';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import fs from 'fs/promises';
|
|
4
|
-
import yaml from 'yaml';
|
|
5
|
-
|
|
6
|
-
export async function validateSchemas(rootPath) {
|
|
7
|
-
const schemasPath = path.join(rootPath, 'app', 'src', 'schemas');
|
|
8
|
-
const serviceConfigPath = path.join(rootPath, 'config', 'serverless.config.yml');
|
|
9
|
-
const _izContext = { reqId: 'validate-sandbox', logger: console };
|
|
10
|
-
|
|
11
|
-
console.log(' [Validator] Validating local schemas with Safe Two-Way S3 Validation...');
|
|
12
|
-
|
|
13
|
-
let validateStatus = {
|
|
14
|
-
status: true,
|
|
15
|
-
validateErrors: [],
|
|
16
|
-
referenceErrors: [],
|
|
17
|
-
warning: []
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// 1. Read config for bucket name and service tag
|
|
21
|
-
let configStr = '';
|
|
22
|
-
let iz_serviceTag = '';
|
|
23
|
-
let iz_serviceName = '';
|
|
24
|
-
let iz_serviceSchemaBucketName = '';
|
|
25
|
-
try {
|
|
26
|
-
configStr = await fs.readFile(serviceConfigPath, 'utf8');
|
|
27
|
-
const config = yaml.parse(configStr);
|
|
28
|
-
iz_serviceTag = config?.main_config?.iz_serviceTag;
|
|
29
|
-
iz_serviceName = config?.main_config?.iz_serviceName || iz_serviceTag;
|
|
30
|
-
iz_serviceSchemaBucketName = config?.main_config?.iz_serviceSchemaBucketName || 'unknown-bucket';
|
|
31
|
-
|
|
32
|
-
if (!iz_serviceName) {
|
|
33
|
-
validateStatus.validateErrors.push('Missing iz_serviceName or iz_serviceTag in serverless.config.yml. This is a critical configuration field.');
|
|
34
|
-
} else if (!/^[a-zA-Z0-9]+$/.test(iz_serviceName)) {
|
|
35
|
-
validateStatus.validateErrors.push(`Service Name '${iz_serviceName}' must contain only alphanumeric characters ([a-zA-Z0-9]).`);
|
|
36
|
-
} else {
|
|
37
|
-
console.log(` [Validator] Validating with serviceName: '${iz_serviceName}'`);
|
|
38
|
-
}
|
|
39
|
-
} catch (e) {
|
|
40
|
-
validateStatus.validateErrors.push(`Could not read or parse serverless.config.yml at ${serviceConfigPath}: ${e.message}`);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// 2. Fetch local FlowSchemas (Basic validation)
|
|
44
|
-
try {
|
|
45
|
-
const flowsResponse = await getObjectSchema.getAllLocalFlowSchemas(_izContext, schemasPath);
|
|
46
|
-
const flows = flowsResponse.records || [];
|
|
47
|
-
for (const flow of flows) {
|
|
48
|
-
if (flow && flow.flowTag && !/^[A-Z]/.test(flow.flowTag)) {
|
|
49
|
-
validateStatus.validateErrors.push(`flowTag '${flow.flowTag}' must start with an uppercase letter.`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
} catch (e) {
|
|
53
|
-
validateStatus.warning.push(`Failed to load local flows: ${e.message}`);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 3. Fetch local Reference Object Relationships for Two-Way Validation
|
|
57
|
-
console.log(' [Validator] Checking Cross-Service Reference Relationships...');
|
|
58
|
-
try {
|
|
59
|
-
const allReferenceObjectRelationships = await getObjectSchema.getAllLocalRefObjectRelationshipSchema(_izContext, schemasPath);
|
|
60
|
-
|
|
61
|
-
await Promise.all(
|
|
62
|
-
allReferenceObjectRelationships.map(async refRelSchema => {
|
|
63
|
-
if (!refRelSchema) return;
|
|
64
|
-
try {
|
|
65
|
-
// Try to fetch relationship schema from S3
|
|
66
|
-
const relSchemaFromRef = await getObjectSchema.getRelationshipSchema(
|
|
67
|
-
_izContext,
|
|
68
|
-
{
|
|
69
|
-
serviceTag: refRelSchema.relationshipServiceTag,
|
|
70
|
-
relationshipTag: refRelSchema.relationshipTag
|
|
71
|
-
},
|
|
72
|
-
iz_serviceSchemaBucketName
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
if (!relSchemaFromRef) {
|
|
76
|
-
validateStatus.referenceErrors.push(`[Safe] Invalid reference: '${refRelSchema.objectType}' -> '${refRelSchema.relationshipTag}' not found in service '${refRelSchema.relationshipServiceTag}' on S3.`);
|
|
77
|
-
} else {
|
|
78
|
-
// Two-way validation logic via utils
|
|
79
|
-
const linkRecords = utils.findLinkByObjTypeV2(
|
|
80
|
-
_izContext,
|
|
81
|
-
{ objectType: refRelSchema.objectType, serviceTag: iz_serviceTag },
|
|
82
|
-
{ serviceTag: refRelSchema.relationshipServiceTag, relationshipTag: refRelSchema.relationshipTag },
|
|
83
|
-
relSchemaFromRef
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
if (!linkRecords || !linkRecords.length) {
|
|
87
|
-
validateStatus.referenceErrors.push(`[Safe] Two-way validation failed: '${refRelSchema.relationshipTag}' in service '${refRelSchema.relationshipServiceTag}' does not link back to '${refRelSchema.objectType}'.`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
} catch (s3Error) {
|
|
91
|
-
// ROBUSTNESS: Catch S3 NoSuchKey or any other SDK errors without crashing
|
|
92
|
-
validateStatus.referenceErrors.push(`[Safe] S3 Fetch Error for '${refRelSchema.relationshipServiceTag}': ${s3Error.message || s3Error.Code}`);
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
);
|
|
96
|
-
} catch (e) {
|
|
97
|
-
validateStatus.warning.push(`Failed to check cross-service relationships: ${e.message}`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// 4. Validate FlowSchemas Cache Fields and Custom Events (Developer Explanations)
|
|
101
|
-
try {
|
|
102
|
-
console.log(' [Validator] Checking FlowSchemas for strict compatibility issues (Soft Validation)...');
|
|
103
|
-
const allObjectSchemas = await getObjectSchema.getAllLocalObjectSchemasWithoutHierarchy(_izContext, schemasPath);
|
|
104
|
-
const objectSchemasMap = {};
|
|
105
|
-
if (allObjectSchemas && allObjectSchemas.records) {
|
|
106
|
-
allObjectSchemas.records.forEach(schema => {
|
|
107
|
-
if(schema) objectSchemasMap[schema.objectType] = schema;
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const flowsResponse = await getObjectSchema.getAllLocalFlowSchemas(_izContext, schemasPath);
|
|
112
|
-
const flows = flowsResponse.records || [];
|
|
113
|
-
for (const flow of flows) {
|
|
114
|
-
if (!flow) continue;
|
|
115
|
-
|
|
116
|
-
// Check unsupported Enum (like dsq)
|
|
117
|
-
if (flow.event && Array.isArray(flow.event)) {
|
|
118
|
-
if (flow.event.includes('dsq')) {
|
|
119
|
-
const errMsg = `\n [Developer Error] FlowTag: '${flow.flowTag}' uses Event: 'dsq'\n` +
|
|
120
|
-
` 💡 Detailed Explanation: 'dsq' is a non-standard Event Type not found in the legacy validator enum.\n` +
|
|
121
|
-
` Please change it to a supported event type (e.g., 'sqs') or update the allowed enums to proceed.`;
|
|
122
|
-
validateStatus.validateErrors.push(errMsg);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Check triggerCache expectations
|
|
127
|
-
if (flow.statusType === 'triggerCache' || flow.statusType === 'storedCache' || flow.statusType === 'statusField') {
|
|
128
|
-
if (flow.objType && flow.objType.objectType) {
|
|
129
|
-
const targetObj = objectSchemasMap[flow.objType.objectType];
|
|
130
|
-
if (targetObj) {
|
|
131
|
-
const expectedPrefix = `${iz_serviceName}_${flow.flowTag}`; // Prefix logic based on service name
|
|
132
|
-
const isMissingFields = !targetObj.fieldNames || !targetObj.fieldNames[`${expectedPrefix}Status`];
|
|
133
|
-
|
|
134
|
-
if (isMissingFields) {
|
|
135
|
-
const errMsg = `\n [Developer Error] FlowTag: '${flow.flowTag}' has Cache enabled (statusType: '${flow.statusType}')\n` +
|
|
136
|
-
` 💡 Detailed Explanation: The validator requires Object '${targetObj.objectType}' to define specific cache status fields in DynamoDB when caching is enabled.\n` +
|
|
137
|
-
` (e.g., Fields: ${expectedPrefix}Status, ${expectedPrefix}ErrorsFound, ${expectedPrefix}CacheComplete, etc.)\n` +
|
|
138
|
-
` Please add these fields to ${targetObj.objectType}.js before continuing.`;
|
|
139
|
-
validateStatus.validateErrors.push(errMsg);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
} catch (e) {
|
|
146
|
-
console.warn(` [Validator] Failed to run developer explanations: ${e.message}`);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// 5. Summarize Validation
|
|
150
|
-
if (validateStatus.validateErrors.length > 0) {
|
|
151
|
-
console.error(' [Validator] VALIDATION ERRORS:', validateStatus.validateErrors);
|
|
152
|
-
throw new Error(`Validation failed with ${validateStatus.validateErrors.length} critical errors.`);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (validateStatus.referenceErrors.length > 0) {
|
|
156
|
-
console.warn(' [Validator] REFERENCE WARNINGS (S3/Cross-Service):', validateStatus.referenceErrors);
|
|
157
|
-
console.warn(' [Validator] Continuing generation despite reference warnings (Offline-friendly mode).');
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (validateStatus.warning.length > 0) {
|
|
161
|
-
console.warn(' [Validator] WARNINGS:', validateStatus.warning);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
console.log(' [Validator] All local critical validations passed successfully.');
|
|
165
|
-
}
|