@izara_project/izara-core-generate-service-code 1.0.65 → 1.0.67
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/docs/TriggeredCache Flow.drawio +193 -0
- package/docs/test.mmd +47 -0
- package/docs/test.png +0 -0
- package/index.js +0 -5
- package/package.json +7 -6
- package/src/compile/compileProject.js +26 -0
- package/src/compile/loadSchemas.js +50 -0
- package/src/emit/crud/dynamicCrudFlowSchemaTemplate.js +11 -0
- package/src/emit/crud/emitCrudApplicationArtifacts.js +161 -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 +6 -6
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/DeleteEndpoint_Main.ejs +6 -6
- 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 +96 -0
- package/src/{codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint → emit/crud/templates}/FlowEndpoint_HdrWbs.ejs +1 -1
- package/src/emit/crud/templates/FlowHandler_HdrApi.ejs +69 -0
- 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/{codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/crud → emit/crud/templates}/GetEndpoint_Main.ejs +2 -2
- 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 +11 -9
- package/src/emit/custom/customFlows.js +121 -0
- package/src/emit/custom/emitCustomFlowApplicationArtifacts.js +325 -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 +5 -5
- 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 +125 -0
- package/src/emit/rbac/emitDynamicRbacFlowSchemas.js +117 -0
- package/src/emit/rbac/emitRbacApplicationArtifacts.js +270 -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 +148 -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} +12 -4
- 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/{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 +595 -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 +183 -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 +297 -0
- package/test/dynamicCrudFlowSchemas.test.js +136 -0
- package/test/dynamicRbacFlowSchemas.test.js +101 -0
- package/test/dynamicRelationshipFlowSchemas.test.js +99 -0
- package/test/functionYamlArtifact.test.js +34 -0
- package/test/intTestApi.test.js +29 -0
- package/test/publicApi.test.js +209 -0
- package/test/relationshipApplicationArtifacts.test.js +68 -0
- package/test/resourceArtifacts.test.js +121 -0
- package/jsconfig.json +0 -9
- package/src/__tests__/getIntTestConfig.test.js +0 -51
- package/src/__tests__/intTestGeneratorShared.test.cjs +0 -169
- package/src/__tests__/pathIntTest.test.js +0 -103
- package/src/codeGenerators/app/initial_setup/InitialSetupGenerator.js +0 -199
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_LambdaRole.ejs +0 -50
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_SnsService.ejs +0 -15
- package/src/codeGenerators/app/initial_setup/templates/InitialSetup_TableName.ejs +0 -9
- package/src/codeGenerators/app/sls_yaml/FindDataYamlGenerator.js +0 -23
- package/src/codeGenerators/app/sls_yaml/FunctionYamlGenerator.js +0 -332
- package/src/codeGenerators/app/sls_yaml/ProcessLogicalYamlGenerator.js +0 -21
- package/src/codeGenerators/app/sls_yaml/RoleNameConfigGenerator.js +0 -48
- package/src/codeGenerators/app/sls_yaml/SharedResourceYamlGenerator.js +0 -503
- package/src/codeGenerators/app/sls_yaml/__tests__/SharedResourceYamlGenerator.test.js +0 -235
- package/src/codeGenerators/app/sls_yaml/_policy/PolicyRegistry.js +0 -56
- package/src/codeGenerators/app/sls_yaml/_policy/__tests__/PolicyRegistry.test.js +0 -33
- package/src/codeGenerators/app/sls_yaml/renderYamlTemplate.js +0 -13
- package/src/codeGenerators/app/sls_yaml/templates/FindData_Yaml.ejs +0 -10
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Api.ejs +0 -21
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_EventBridge.ejs +0 -14
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Inv.ejs +0 -6
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Sqs.ejs +0 -11
- package/src/codeGenerators/app/sls_yaml/templates/FunctionYaml_Wbs.ejs +0 -11
- package/src/codeGenerators/app/sls_yaml/templates/ProcessLogical_Yaml.ejs +0 -32
- package/src/codeGenerators/app/sls_yaml/templates/RoleNameConfig_Yaml.ejs +0 -5
- package/src/codeGenerators/app/src/generatedCode/FindData/FindDataGenerator.js +0 -238
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_HdrSqs.ejs +0 -87
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/FindData_Main.ejs +0 -108
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs +0 -32
- package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs +0 -87
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/.gitkeep +0 -0
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/EndpointsGenerator.js +0 -120
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowObjects/templates/step/FlowEndpointComplete_Main.ejs +0 -313
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/RbacFlowGenerator.js +0 -116
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateRolePermissions.ejs +0 -135
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateTargetRole.ejs +0 -131
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/CreateUserRole.ejs +0 -150
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteRolePermissions.ejs +0 -132
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteTargetRole.ejs +0 -132
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/DeleteUserFromRole.ejs +0 -150
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/FlowRbac_Main.ejs +0 -252
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListRolePermissions.ejs +0 -120
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListTargetRole.ejs +0 -122
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRbac/templates/rbac/ListUserInRoles.ejs +0 -117
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowRelationships/RelationshipFlowGenerator.js +0 -148
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/.gitkeep +0 -0
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/StatusFieldGenerator.js +0 -109
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/WebSocketGenerator.js +0 -122
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/endpoint/FlowEntryPoint_Main.ejs +0 -38
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusFieldSns_Yaml.ejs +0 -52
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_HdrSqs.ejs +0 -84
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/statusField/CompleteStatusField_Main.ejs +0 -78
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Awaiting_Main.ejs +0 -123
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_ByConfig_Paginated_Main.ejs +0 -59
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_PlugIn_Main.ejs +0 -72
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/FlowStep_RecievePlugIn_Main.ejs +0 -76
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateAwaitingStep.ejs +0 -41
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/step/plugIns/templateSendPlugin.ejs +0 -18
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketFlow_Yaml.ejs +0 -26
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocketSub_Yaml.ejs +0 -7
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_HdrSqs.ejs +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Main.ejs +0 -115
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/ProcessWebSocket_Yaml.ejs +0 -36
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Main.ejs +0 -52
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketConnect_Yaml.ejs +0 -13
- package/src/codeGenerators/app/src/generatedCode/Flow/FlowSchemas/templates/webSocket/WebSocketDynamoDb_Yaml.ejs +0 -28
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseDsqHandler.js +0 -63
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/BaseSqsHandler.js +0 -66
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/__tests__/BaseDsqHandler.test.js +0 -94
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/dsq.js +0 -5
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/eventBridge.js +0 -33
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/extTopic.js +0 -6
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncApi.js +0 -51
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/lambdaSyncInv.js +0 -51
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/ownTopic.js +0 -54
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/registry.js +0 -17
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3.js +0 -56
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ConfirmAfterUploadS3Generator.js +0 -46
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreateObjectGenerator.js +0 -50
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/CreatePreSignUrlGenerator.js +0 -48
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ProcessAfterUploadS3Generator.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/events/s3Components/ReservedLimitGenerator.js +0 -47
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/eventTypes.js +0 -23
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowClassifier.js +0 -50
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowEntryPointBase.js +0 -106
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowMainFunctionBase.js +0 -172
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowNaming.js +0 -37
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowSelection.js +0 -19
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepBase.js +0 -235
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowStepNormalizer.js +0 -75
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/flowValidator.js +0 -267
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/propertyNormalizer.js +0 -18
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/registry.js +0 -7
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/roleNameDetection.js +0 -49
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/shared/triggerCacheBase.js +0 -177
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -89
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/CheckTriggerCache_Main.ejs +0 -83
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_HdrSqs.ejs +0 -103
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/ProcessTriggerCache_Main.ejs +0 -58
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrDsq.ejs +0 -104
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_HdrSqs.ejs +0 -88
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheComplete_Main.ejs +0 -80
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/triggerCache/TriggerCacheQueue_Yaml.ejs +0 -36
- package/src/codeGenerators/app/src/generatedCode/Flow/_shared/yaml/SharedFunctionSqs_Yaml.ejs +0 -13
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/ProcessLogicalGenerator.js +0 -29
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrDsq.ejs +0 -177
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_HdrSqs.ejs +0 -155
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/PaginateProcessLogical_Main.ejs +0 -268
- package/src/codeGenerators/app/src/generatedCode/ProcessLogical/templates/ProcessLogical_Main.ejs +0 -450
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/RegisterGenerator.js +0 -149
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_HdrSqs.ejs +0 -85
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/RegisterComplete_Main.ejs +0 -176
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_HdrWbs.ejs +0 -80
- package/src/codeGenerators/app/src/generatedCode/SystemFlowSchemas/templates/register/Register_Main.ejs +0 -164
- package/src/codeGenerators/app/src/generatedCode/libs/ConstsGenerator.js +0 -28
- package/src/codeGenerators/app/src/generatedCode/libs/GenerateCodeLibsGenerator.js +0 -28
- package/src/codeGenerators/app/src/generatedCode/libs/templates/Consts.ejs +0 -448
- package/src/codeGenerators/app/src/generatedCode/libs/templates/GenerateCodeLibs.ejs +0 -124
- package/src/codeGenerators/resource/sls_yaml/DynamoDBGenerator.js +0 -87
- package/src/codeGenerators/resource/sls_yaml/FlowOutGenerator.js +0 -70
- package/src/codeGenerators/resource/sls_yaml/FlowResourceYamlGenerator.js +0 -182
- package/src/core/renderTemplateFile.js +0 -22
- package/src/core/validate.js +0 -165
- package/src/generateCode.js +0 -357
- package/src/generateSchema.js +0 -123
- package/src/parsers/flowSchemaParser.js +0 -112
- package/src/parsers/objectSchemaParser.js +0 -39
- package/src/parsers/relationshipSchemaParser.js +0 -51
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/FlowSchemaGenerator.js +0 -107
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/RbacFlowSchemaGenerator.js +0 -98
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/RelationshipFlowSchemaGenerator.js +0 -89
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs +0 -41
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs +0 -20
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/RelationshipFlowSchemaTemplate.ejs +0 -33
- package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs +0 -22
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/AttributeTreeSchemaGenerator.js +0 -124
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/PropertyValueSchemaGenerator.js +0 -119
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeManagerSchemaTemplate.ejs +0 -14
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicAttributeTreeStandardSchemaTemplate.ejs +0 -13
- package/src/schemaGenerators/app/src/schemas/ObjectSchemas/templates/DynamicPropertyValueSchemaTemplate.ejs +0 -15
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/AttributeTreeRelationshipSchemaGenerator.js +0 -109
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/PropertyValueRelationshipSchemaGenerator.js +0 -103
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/__tests__/relationshipSchemaHelpers.test.js +0 -38
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/relationshipSchemaHelpers.js +0 -40
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicAttributeTreeRelationshipSchemaTemplate.ejs +0 -7
- package/src/schemaGenerators/app/src/schemas/RelationshipSchemas/templates/DynamicPropertyValueRelationshipSchemaTemplate.ejs +0 -7
- package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/SystemTextGenerator.js +0 -102
- package/src/schemaGenerators/app/src/schemas/SystemTextSchemas/templates/SystemText_Template.ejs +0 -10
- /package/src/{codeGenerators/app/src/generatedCode/Flow/_shared/handlers → emit/crud/templates}/FlowHandler_HdrInv.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_HdrApi.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,107 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Dynamic Flow Schema Generator (Phase 1)
|
|
11
|
-
* Creates Service-Level Dynamic CRUD FlowSchemas that handle ANY userGenerated object.
|
|
12
|
-
*/
|
|
13
|
-
export async function generateDynamicFlowSchemas(
|
|
14
|
-
hydratedObjectData,
|
|
15
|
-
flowData,
|
|
16
|
-
options
|
|
17
|
-
) {
|
|
18
|
-
console.log(
|
|
19
|
-
' [FlowSchemaGenerator] Generating dynamic Service-Level CRUD FlowSchemas...'
|
|
20
|
-
);
|
|
21
|
-
const schemasOutputDir = path.join(
|
|
22
|
-
options.outputPath,
|
|
23
|
-
'app',
|
|
24
|
-
'src',
|
|
25
|
-
'schemas',
|
|
26
|
-
'FlowSchemas',
|
|
27
|
-
'generateCode'
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
// Check if there are any userGenerated or systemGenerated objects
|
|
31
|
-
const hasApplicableObjects = hydratedObjectData.objects.some(
|
|
32
|
-
obj =>
|
|
33
|
-
obj.generatedBy === 'userGenerated' ||
|
|
34
|
-
obj.generatedBy === 'systemGenerated'
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
if (!hasApplicableObjects) {
|
|
38
|
-
console.log(
|
|
39
|
-
' [FlowSchemaGenerator] No applicable objects found. Skipping Dynamic FlowSchemas generation.'
|
|
40
|
-
);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// Ensure directory exists
|
|
47
|
-
await fs.mkdir(schemasOutputDir, { recursive: true });
|
|
48
|
-
|
|
49
|
-
let generatedCount = 0;
|
|
50
|
-
const actions = ['Create', 'Update', 'Delete', 'Get'];
|
|
51
|
-
|
|
52
|
-
// Read the EJS template
|
|
53
|
-
const templatePath = path.join(
|
|
54
|
-
__dirname,
|
|
55
|
-
'templates',
|
|
56
|
-
'DynamicFlowSchemaTemplate.ejs'
|
|
57
|
-
);
|
|
58
|
-
const templateString = await fs.readFile(templatePath, 'utf-8');
|
|
59
|
-
|
|
60
|
-
for (const action of actions) {
|
|
61
|
-
const flowTag = action;
|
|
62
|
-
const filePath = path.join(schemasOutputDir, `${flowTag}.js`);
|
|
63
|
-
|
|
64
|
-
let events = "['ownTopic']";
|
|
65
|
-
let outputTopic = true;
|
|
66
|
-
if (action === 'Get') {
|
|
67
|
-
events = "['lambdaSyncInv', 'lambdaSyncApi']";
|
|
68
|
-
outputTopic = false;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Check custom flows for generatedCodeConfig hooks
|
|
72
|
-
let hasBeforeLogicalStep = false;
|
|
73
|
-
if (flowData && flowData.flows) {
|
|
74
|
-
for (const flow of flowData.flows) {
|
|
75
|
-
if (flow.generatedCodeConfig) {
|
|
76
|
-
const config = flow.generatedCodeConfig;
|
|
77
|
-
if (
|
|
78
|
-
config.generatedCodeTag === action.toLowerCase() &&
|
|
79
|
-
config.codeHookTag === 'beforeLogical'
|
|
80
|
-
) {
|
|
81
|
-
// Check if invocationType is present in the custom flow's own event array
|
|
82
|
-
if (flow.event && flow.event.includes(config.invocationType)) {
|
|
83
|
-
hasBeforeLogicalStep = true;
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Render template with EJS
|
|
92
|
-
const fileContent = ejs.render(templateString, {
|
|
93
|
-
action: action,
|
|
94
|
-
flowTag: flowTag,
|
|
95
|
-
events: events,
|
|
96
|
-
outputTopic: outputTopic,
|
|
97
|
-
hasBeforeLogicalStep: hasBeforeLogicalStep
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
await fs.writeFile(filePath, fileContent, 'utf-8');
|
|
101
|
-
generatedCount++;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
console.log(
|
|
105
|
-
` [FlowSchemaGenerator] Wrote ${generatedCount} dynamic FlowSchemas to ${schemasOutputDir}`
|
|
106
|
-
);
|
|
107
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import ejs from 'ejs';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Creates Service-Level Dynamic RBAC FlowSchemas.
|
|
11
|
-
*/
|
|
12
|
-
export async function generateRbacFlowSchemas(hydratedObjectData, options) {
|
|
13
|
-
console.log(
|
|
14
|
-
' [RbacFlowSchemaGenerator] Generating dynamic Service-Level RBAC FlowSchemas...'
|
|
15
|
-
);
|
|
16
|
-
const schemasOutputDir = path.join(
|
|
17
|
-
options.outputPath,
|
|
18
|
-
'app',
|
|
19
|
-
'src',
|
|
20
|
-
'schemas',
|
|
21
|
-
'FlowSchemas',
|
|
22
|
-
'generateCode'
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
// Check if there are any objects with 'rbac' addOnDataStructure
|
|
26
|
-
const rbacObjects = hydratedObjectData.objects.filter(obj => {
|
|
27
|
-
if (obj.addOnDataStructure && Array.isArray(obj.addOnDataStructure)) {
|
|
28
|
-
return obj.addOnDataStructure.some(addOn => addOn.type === 'rbac');
|
|
29
|
-
}
|
|
30
|
-
return false;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
if (rbacObjects.length === 0) {
|
|
34
|
-
console.log(' [RbacFlowSchemaGenerator] No RBAC objects found. Skipping RBAC FlowSchemas generation.');
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Ensure directory exists
|
|
39
|
-
await fs.mkdir(schemasOutputDir, { recursive: true });
|
|
40
|
-
|
|
41
|
-
let generatedCount = 0;
|
|
42
|
-
|
|
43
|
-
const rbacFlowDefinitions = [
|
|
44
|
-
{ flowTag: 'CreateTargetRole', eventNames: ['ownTopic'] },
|
|
45
|
-
{ flowTag: 'ListTargetRole', eventNames: ['lambdaSyncApi'] },
|
|
46
|
-
{ flowTag: 'DeleteTargetRole', eventNames: ['ownTopic'] },
|
|
47
|
-
{ flowTag: 'CreateRolePermissions', eventNames: ['ownTopic'] },
|
|
48
|
-
{ flowTag: 'ListRolePermissions', eventNames: ['lambdaSyncApi'] },
|
|
49
|
-
{ flowTag: 'DeleteRolePermissions', eventNames: ['ownTopic'] },
|
|
50
|
-
{ flowTag: 'CreateUserRole', eventNames: ['ownTopic'] },
|
|
51
|
-
{ flowTag: 'ListUserInRoles', eventNames: ['lambdaSyncApi'] },
|
|
52
|
-
{ flowTag: 'DeleteUserFromRole', eventNames: ['ownTopic'] }
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
// Read the EJS template
|
|
56
|
-
const templatePath = path.join(__dirname, 'templates', 'DynamicRbacFlowSchemaTemplate.ejs');
|
|
57
|
-
const templateString = await fs.readFile(templatePath, 'utf-8');
|
|
58
|
-
|
|
59
|
-
for (const obj of rbacObjects) {
|
|
60
|
-
const objectType = obj.objectType;
|
|
61
|
-
|
|
62
|
-
for (const def of rbacFlowDefinitions) {
|
|
63
|
-
const flowTag = def.flowTag;
|
|
64
|
-
// Use flowTag as filename directly
|
|
65
|
-
const filePath = path.join(schemasOutputDir, `${flowTag}.js`);
|
|
66
|
-
|
|
67
|
-
const eventsArrayStr = JSON.stringify(def.eventNames).replace(/"/g, "'");
|
|
68
|
-
|
|
69
|
-
// Render template with EJS
|
|
70
|
-
const fileContent = ejs.render(templateString, {
|
|
71
|
-
flowTag: flowTag,
|
|
72
|
-
objectType: objectType,
|
|
73
|
-
events: eventsArrayStr
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
await fs.writeFile(filePath, fileContent, 'utf-8');
|
|
77
|
-
generatedCount++;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Generate specific UserRbacFlow
|
|
81
|
-
const userRbacFlowTag = `${objectType.charAt(0).toUpperCase() + objectType.slice(1)}RbacFlow`;
|
|
82
|
-
const userRbacFilePath = path.join(schemasOutputDir, `${userRbacFlowTag}.js`);
|
|
83
|
-
const userRbacTemplatePath = path.join(__dirname, 'templates', 'UserRbacFlowSchemaTemplate.ejs');
|
|
84
|
-
const userRbacTemplateString = await fs.readFile(userRbacTemplatePath, 'utf-8');
|
|
85
|
-
const userRbacContent = ejs.render(userRbacTemplateString, {
|
|
86
|
-
flowTag: userRbacFlowTag,
|
|
87
|
-
serviceTag: options.serviceTag,
|
|
88
|
-
objectType: objectType
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
await fs.writeFile(userRbacFilePath, userRbacContent, 'utf-8');
|
|
92
|
-
generatedCount++;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
console.log(
|
|
96
|
-
` [RbacFlowSchemaGenerator] Wrote ${generatedCount} dynamic RBAC FlowSchemas to ${schemasOutputDir}`
|
|
97
|
-
);
|
|
98
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = path.dirname(__filename);
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Dynamic Relationship Flow Schema Generator
|
|
11
|
-
* Creates Service-Level Dynamic CRUD FlowSchemas that handle ANY relationship.
|
|
12
|
-
*/
|
|
13
|
-
export async function generateRelationshipFlowSchemas(
|
|
14
|
-
relationshipData,
|
|
15
|
-
options
|
|
16
|
-
) {
|
|
17
|
-
console.log(
|
|
18
|
-
' [RelationshipFlowSchemaGenerator] Generating dynamic Service-Level Relationship FlowSchemas...'
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
// If there are no relationships defined, skip generation
|
|
22
|
-
if (
|
|
23
|
-
!relationshipData ||
|
|
24
|
-
!relationshipData.relationships ||
|
|
25
|
-
relationshipData.relationships.length === 0
|
|
26
|
-
) {
|
|
27
|
-
console.log(
|
|
28
|
-
' [RelationshipFlowSchemaGenerator] No Relationship objects found. Forcing generation for testing.'
|
|
29
|
-
);
|
|
30
|
-
// return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const schemasOutputDir = path.join(
|
|
34
|
-
options.outputPath,
|
|
35
|
-
'app',
|
|
36
|
-
'src',
|
|
37
|
-
'schemas',
|
|
38
|
-
'FlowSchemas',
|
|
39
|
-
'generateCode'
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
await fs.mkdir(schemasOutputDir, { recursive: true });
|
|
43
|
-
|
|
44
|
-
let generatedCount = 0;
|
|
45
|
-
const actions = [
|
|
46
|
-
'CreateRelationship',
|
|
47
|
-
'UpdateRelationship',
|
|
48
|
-
'DeleteRelationship',
|
|
49
|
-
'GetRelationship',
|
|
50
|
-
'ChangeRelationship',
|
|
51
|
-
'MoveRelationship'
|
|
52
|
-
];
|
|
53
|
-
|
|
54
|
-
const templatePath = path.join(
|
|
55
|
-
__dirname,
|
|
56
|
-
'templates',
|
|
57
|
-
'RelationshipFlowSchemaTemplate.ejs'
|
|
58
|
-
);
|
|
59
|
-
const templateString = await fs.readFile(templatePath, 'utf-8');
|
|
60
|
-
|
|
61
|
-
for (const action of actions) {
|
|
62
|
-
const filePath = path.join(schemasOutputDir, `${action}.js`);
|
|
63
|
-
|
|
64
|
-
let events = "['ownTopic']";
|
|
65
|
-
let outputTopic = true;
|
|
66
|
-
let hasCompleteStep = true;
|
|
67
|
-
|
|
68
|
-
if (action === 'GetRelationship') {
|
|
69
|
-
events = "['lambdaSyncInv', 'lambdaSyncApi', 'dsq', 'ownTopic']";
|
|
70
|
-
outputTopic = false;
|
|
71
|
-
hasCompleteStep = false;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const fileContent = ejs.render(templateString, {
|
|
75
|
-
action: action,
|
|
76
|
-
flowTag: action,
|
|
77
|
-
events: events,
|
|
78
|
-
outputTopic: outputTopic,
|
|
79
|
-
hasCompleteStep: hasCompleteStep
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
await fs.writeFile(filePath, fileContent, 'utf-8');
|
|
83
|
-
generatedCount++;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
console.log(
|
|
87
|
-
` [RelationshipFlowSchemaGenerator] Wrote ${generatedCount} dynamic Relationship FlowSchemas to ${schemasOutputDir}`
|
|
88
|
-
);
|
|
89
|
-
}
|
package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicFlowSchemaTemplate.ejs
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED DYNAMIC FLOW SCHEMA
|
|
3
|
-
* Action: <%= action %>
|
|
4
|
-
* Description: Handles dynamic CRUD for all allowed ObjectTypes via SQS/DSQ
|
|
5
|
-
*/
|
|
6
|
-
export default {
|
|
7
|
-
flowTag: '<%= flowTag %>',
|
|
8
|
-
isDynamicObjectType: true,
|
|
9
|
-
initiateBy: 'system',
|
|
10
|
-
handleObj: 'one',
|
|
11
|
-
statusType: 'none',
|
|
12
|
-
event: <%- events %>,
|
|
13
|
-
outputTopic: <%= outputTopic %>,
|
|
14
|
-
stepMessageAttributes: {
|
|
15
|
-
userId: { propertyName: 'x-correlation-base-user-id', type: 'string' },
|
|
16
|
-
correlationId: { propertyName: 'x-correlation-id', type: 'string' }
|
|
17
|
-
},
|
|
18
|
-
flowSteps: [
|
|
19
|
-
{
|
|
20
|
-
stepName: 'start',
|
|
21
|
-
properties: [],
|
|
22
|
-
messageAttributes: ['userId', 'correlationId']
|
|
23
|
-
},
|
|
24
|
-
<% if (hasBeforeLogicalStep) { %>
|
|
25
|
-
{
|
|
26
|
-
stepName: 'BeforeLogical',
|
|
27
|
-
event: ['extTopic'],
|
|
28
|
-
properties: [],
|
|
29
|
-
messageAttributes: ['userId', 'correlationId']
|
|
30
|
-
},
|
|
31
|
-
<% } %>
|
|
32
|
-
<% if (['Create', 'Update', 'Delete'].includes(action)) { %>
|
|
33
|
-
{
|
|
34
|
-
stepName: 'Complete',
|
|
35
|
-
event: ['extTopic'],
|
|
36
|
-
properties: [],
|
|
37
|
-
messageAttributes: ['userId', 'correlationId']
|
|
38
|
-
}
|
|
39
|
-
<% } %>
|
|
40
|
-
]
|
|
41
|
-
};
|
package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/DynamicRbacFlowSchemaTemplate.ejs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED RBAC FLOW SCHEMA
|
|
3
|
-
* ObjectType: <%= objectType %>
|
|
4
|
-
* Action: <%= flowTag %>
|
|
5
|
-
*/
|
|
6
|
-
export default {
|
|
7
|
-
flowTag: '<%= flowTag %>',
|
|
8
|
-
fileName: 'flow-rbac',
|
|
9
|
-
initiateBy: 'system',
|
|
10
|
-
statusType: 'none',
|
|
11
|
-
event: <%- events %>,
|
|
12
|
-
outputTopic: true,
|
|
13
|
-
flowSteps: [
|
|
14
|
-
{
|
|
15
|
-
stepName: 'start',
|
|
16
|
-
properties: [],
|
|
17
|
-
messageAttributes: []
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED DYNAMIC RELATIONSHIP FLOW SCHEMA
|
|
3
|
-
* Action: <%= action %>
|
|
4
|
-
* Description: Handles dynamic relationship actions for all allowed RelationshipTypes via SQS/DSQ
|
|
5
|
-
*/
|
|
6
|
-
export default {
|
|
7
|
-
flowTag: '<%= flowTag %>',
|
|
8
|
-
isDynamicRelationshipType: true,
|
|
9
|
-
initiateBy: 'system',
|
|
10
|
-
handleObj: 'one',
|
|
11
|
-
statusType: 'none',
|
|
12
|
-
event: <%- events %>,
|
|
13
|
-
outputTopic: <%= outputTopic %>,
|
|
14
|
-
stepMessageAttributes: {
|
|
15
|
-
userId: { propertyName: 'x-correlation-base-user-id', type: 'string' },
|
|
16
|
-
correlationId: { propertyName: 'x-correlation-id', type: 'string' }
|
|
17
|
-
},
|
|
18
|
-
flowSteps: [
|
|
19
|
-
{
|
|
20
|
-
stepName: 'start',
|
|
21
|
-
properties: [],
|
|
22
|
-
messageAttributes: ['userId', 'correlationId']
|
|
23
|
-
}
|
|
24
|
-
<% if (hasCompleteStep) { %>,
|
|
25
|
-
{
|
|
26
|
-
stepName: 'Complete',
|
|
27
|
-
event: ['extTopic'],
|
|
28
|
-
properties: [],
|
|
29
|
-
messageAttributes: ['userId', 'correlationId']
|
|
30
|
-
}
|
|
31
|
-
<% } %>
|
|
32
|
-
]
|
|
33
|
-
};
|
package/src/schemaGenerators/app/src/schemas/FlowSchemas/templates/UserRbacFlowSchemaTemplate.ejs
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
flowTag: '<%= flowTag %>',
|
|
3
|
-
fileName: 'flow-rbac',
|
|
4
|
-
objType: {
|
|
5
|
-
serviceTag: '<%= serviceTag %>',
|
|
6
|
-
objectType: '<%= objectType %>'
|
|
7
|
-
},
|
|
8
|
-
event: ['lambdaSyncInv'],
|
|
9
|
-
initiateBy: 'system',
|
|
10
|
-
handleObj: 'one',
|
|
11
|
-
statusType: 'none',
|
|
12
|
-
stepMessageAttributes: {
|
|
13
|
-
userId: { propertyName: 'x-correlation-base-user-id', type: 'string' },
|
|
14
|
-
correlationId: { propertyName: 'x-correlation-id', type: 'string' }
|
|
15
|
-
},
|
|
16
|
-
steps: [
|
|
17
|
-
{
|
|
18
|
-
stepName: 'start',
|
|
19
|
-
messageAttributes: ['userId', 'correlationId']
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
};
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import ejs from 'ejs';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import { attributeTreeLib } from '@izara_project/izara-attribute-tree';
|
|
6
|
-
|
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
const __dirname = path.dirname(__filename);
|
|
9
|
-
|
|
10
|
-
function fieldNameSetting(type) {
|
|
11
|
-
const stringValidation = '^[a-zA-Z0-9-_]+$';
|
|
12
|
-
if (type === 'randomOnCreateFieldName') {
|
|
13
|
-
return {
|
|
14
|
-
type: 'string',
|
|
15
|
-
requiredOnCreate: false,
|
|
16
|
-
optionalOnCreate: false,
|
|
17
|
-
canUpdate: false,
|
|
18
|
-
randomOnCreate: true,
|
|
19
|
-
validation: { pattern: stringValidation }
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
return {};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export async function generateAttributeTreeObjectSchemas(hydratedObjectData, options) {
|
|
26
|
-
console.log(' [AttributeTreeSchemaGenerator] Generating dynamic AttributeTree ObjectSchemas...');
|
|
27
|
-
const schemasOutputDir = path.join(
|
|
28
|
-
options.outputPath,
|
|
29
|
-
'app',
|
|
30
|
-
'src',
|
|
31
|
-
'schemas',
|
|
32
|
-
'ObjectSchemas',
|
|
33
|
-
'generatedAttributeTree'
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
let generatedCount = 0;
|
|
37
|
-
|
|
38
|
-
const managerTemplatePath = path.join(__dirname, 'templates', 'DynamicAttributeTreeManagerSchemaTemplate.ejs');
|
|
39
|
-
const standardTemplatePath = path.join(__dirname, 'templates', 'DynamicAttributeTreeStandardSchemaTemplate.ejs');
|
|
40
|
-
const managerTemplateStr = await fs.readFile(managerTemplatePath, 'utf-8');
|
|
41
|
-
const standardTemplateStr = await fs.readFile(standardTemplatePath, 'utf-8');
|
|
42
|
-
|
|
43
|
-
for (const obj of hydratedObjectData.objects) {
|
|
44
|
-
if (obj.addOnDataStructure && Array.isArray(obj.addOnDataStructure)) {
|
|
45
|
-
const attrTreeSchema = obj.addOnDataStructure.find(addOn => addOn.type === 'attributeTree');
|
|
46
|
-
|
|
47
|
-
if (attrTreeSchema) {
|
|
48
|
-
const attributeTreeTag = attrTreeSchema.attributeTreeTag;
|
|
49
|
-
|
|
50
|
-
let cloneDeepStorageResources = JSON.parse(JSON.stringify(obj.storageResources || {}));
|
|
51
|
-
for (const [tag, res] of Object.entries(cloneDeepStorageResources)) {
|
|
52
|
-
if (res.storageType === 'dynamoDB') {
|
|
53
|
-
delete cloneDeepStorageResources[tag];
|
|
54
|
-
} else if (res.storageType === 'graph') {
|
|
55
|
-
delete cloneDeepStorageResources[tag].additionalGraphIndexes;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const storageResourceTags = Object.keys(cloneDeepStorageResources);
|
|
60
|
-
|
|
61
|
-
// 1. Manager schemas
|
|
62
|
-
const managerSchemasToGenerate = [
|
|
63
|
-
{
|
|
64
|
-
objectType: attributeTreeLib.createAttributeLinkNodeLabel(attributeTreeTag),
|
|
65
|
-
fieldNames: {
|
|
66
|
-
[attributeTreeLib.createAttributeLinkIdentifierPropertyName(attributeTreeTag)]: Object.assign(fieldNameSetting('randomOnCreateFieldName'), { storageResourceTags })
|
|
67
|
-
},
|
|
68
|
-
identifiers: [{ type: 'identifier', fieldName: attributeTreeLib.createAttributeLinkIdentifierPropertyName(attributeTreeTag) }]
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
objectType: attributeTreeLib.createAttributeValue(attributeTreeTag),
|
|
72
|
-
fieldNames: {
|
|
73
|
-
[attributeTreeLib.createAttributeValueIdentifierPropertyName(attributeTreeTag)]: Object.assign(fieldNameSetting('randomOnCreateFieldName'), { storageResourceTags })
|
|
74
|
-
},
|
|
75
|
-
identifiers: [{ type: 'identifier', fieldName: attributeTreeLib.createAttributeValueIdentifierPropertyName(attributeTreeTag) }]
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
objectType: attributeTreeLib.createAttributeLabelNodeLabel(attributeTreeTag),
|
|
79
|
-
fieldNames: {
|
|
80
|
-
[attributeTreeLib.createAttributeLabelIdentifierPropertyName(attributeTreeTag)]: Object.assign(fieldNameSetting('randomOnCreateFieldName'), { storageResourceTags })
|
|
81
|
-
},
|
|
82
|
-
identifiers: [{ type: 'identifier', fieldName: attributeTreeLib.createAttributeLabelIdentifierPropertyName(attributeTreeTag) }]
|
|
83
|
-
}
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
await fs.mkdir(schemasOutputDir, { recursive: true });
|
|
87
|
-
|
|
88
|
-
for (const schemaDef of managerSchemasToGenerate) {
|
|
89
|
-
const filePath = path.join(schemasOutputDir, `${schemaDef.objectType}.js`);
|
|
90
|
-
const fileContent = ejs.render(managerTemplateStr, {
|
|
91
|
-
objectType: schemaDef.objectType,
|
|
92
|
-
storageResources: JSON.stringify(cloneDeepStorageResources, null, 4),
|
|
93
|
-
fieldNames: JSON.stringify(schemaDef.fieldNames, null, 4),
|
|
94
|
-
identifiers: JSON.stringify(schemaDef.identifiers, null, 4)
|
|
95
|
-
});
|
|
96
|
-
await fs.writeFile(filePath, fileContent, 'utf-8');
|
|
97
|
-
generatedCount++;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// 2. Standard schema
|
|
101
|
-
const standardObjectType = attributeTreeLib.createAttributeValueStandard(attributeTreeTag);
|
|
102
|
-
const extendObjType = {
|
|
103
|
-
objectType: attributeTreeLib.createAttributeValue(attributeTreeTag),
|
|
104
|
-
serviceTag: options.serviceTag // Uses local service tag for simplicity
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
const standardFilePath = path.join(schemasOutputDir, `${standardObjectType}.js`);
|
|
108
|
-
const standardFileContent = ejs.render(standardTemplateStr, {
|
|
109
|
-
objectType: standardObjectType,
|
|
110
|
-
storageResources: JSON.stringify(cloneDeepStorageResources, null, 4),
|
|
111
|
-
extendObjType: JSON.stringify(extendObjType, null, 4)
|
|
112
|
-
});
|
|
113
|
-
await fs.writeFile(standardFilePath, standardFileContent, 'utf-8');
|
|
114
|
-
generatedCount++;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (generatedCount > 0) {
|
|
120
|
-
console.log(` [AttributeTreeSchemaGenerator] Wrote ${generatedCount} dynamic AttributeTree ObjectSchemas to ${schemasOutputDir}`);
|
|
121
|
-
} else {
|
|
122
|
-
console.log(' [AttributeTreeSchemaGenerator] No AttributeTree objects found.');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import ejs from 'ejs';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import propertyNode from '@izara_project/izara-property-nodes';
|
|
6
|
-
|
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
const __dirname = path.dirname(__filename);
|
|
9
|
-
|
|
10
|
-
// Helper function equivalent to fieldNameSetting
|
|
11
|
-
function fieldNameSetting(type) {
|
|
12
|
-
const stringValidation = '^[a-zA-Z0-9-_]+$';
|
|
13
|
-
if (type === 'randomOnCreateFieldName') {
|
|
14
|
-
return {
|
|
15
|
-
type: 'string',
|
|
16
|
-
requiredOnCreate: false,
|
|
17
|
-
optionalOnCreate: false,
|
|
18
|
-
canUpdate: false,
|
|
19
|
-
randomOnCreate: true,
|
|
20
|
-
validation: { pattern: stringValidation }
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
return {};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function upperCase(str) {
|
|
27
|
-
if (!str) return str;
|
|
28
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export async function generatePropertyValueObjectSchemas(hydratedObjectData, options) {
|
|
32
|
-
console.log(' [PropertyValueSchemaGenerator] Generating dynamic PropertyValue ObjectSchemas...');
|
|
33
|
-
const schemasOutputDir = path.join(
|
|
34
|
-
options.outputPath,
|
|
35
|
-
'app',
|
|
36
|
-
'src',
|
|
37
|
-
'schemas',
|
|
38
|
-
'ObjectSchemas',
|
|
39
|
-
'generatedPropertyValue'
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
let generatedCount = 0;
|
|
43
|
-
|
|
44
|
-
// Read the EJS template
|
|
45
|
-
const templatePath = path.join(__dirname, 'templates', 'DynamicPropertyValueSchemaTemplate.ejs');
|
|
46
|
-
const templateString = await fs.readFile(templatePath, 'utf-8');
|
|
47
|
-
|
|
48
|
-
for (const obj of hydratedObjectData.objects) {
|
|
49
|
-
if (obj.addOnDataStructure && Array.isArray(obj.addOnDataStructure)) {
|
|
50
|
-
const pvSchema = obj.addOnDataStructure.find(addOn => addOn.type === 'propertyValue');
|
|
51
|
-
|
|
52
|
-
if (pvSchema) {
|
|
53
|
-
const propertyValueTag = pvSchema.propertyValuePrefix;
|
|
54
|
-
|
|
55
|
-
// Clone and filter storageResources (remove dynamoDB, keep graph)
|
|
56
|
-
let cloneDeepStorageResources = JSON.parse(JSON.stringify(obj.storageResources || {}));
|
|
57
|
-
for (const [tag, res] of Object.entries(cloneDeepStorageResources)) {
|
|
58
|
-
if (res.storageType === 'dynamoDB') {
|
|
59
|
-
delete cloneDeepStorageResources[tag];
|
|
60
|
-
} else if (res.storageType === 'graph') {
|
|
61
|
-
delete cloneDeepStorageResources[tag].additionalGraphIndexes;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const storageResourceTags = Object.keys(cloneDeepStorageResources);
|
|
66
|
-
const compositeKeyDeliminator = obj.compositeKeyDeliminator ? `"${obj.compositeKeyDeliminator}"` : 'undefined';
|
|
67
|
-
|
|
68
|
-
// 1. {subject}property
|
|
69
|
-
const propertyObjectType = propertyNode.createPropertyLabelGraphNodeLabel(propertyValueTag);
|
|
70
|
-
const propertyIdField = propertyValueTag + upperCase(propertyNode.consts.PROPERTY_LABEL_GRAPH_IDENTIFIER_ID);
|
|
71
|
-
|
|
72
|
-
// 2. {subject}propertyLabel
|
|
73
|
-
const propertyLabelObjectType = propertyNode.createPropertyValueGraphNodeLabel(propertyValueTag);
|
|
74
|
-
const propertyLabelIdField = propertyValueTag + upperCase(propertyNode.consts.PROPERTY_VALUE_GRAPH_IDENTIFIERS_ID);
|
|
75
|
-
|
|
76
|
-
const schemasToGenerate = [
|
|
77
|
-
{
|
|
78
|
-
objectType: propertyObjectType,
|
|
79
|
-
fieldNames: {
|
|
80
|
-
[propertyIdField]: Object.assign(fieldNameSetting('randomOnCreateFieldName'), { storageResourceTags })
|
|
81
|
-
},
|
|
82
|
-
identifiers: [{ type: 'identifier', fieldName: propertyIdField }]
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
objectType: propertyLabelObjectType,
|
|
86
|
-
fieldNames: {
|
|
87
|
-
[propertyLabelIdField]: Object.assign(fieldNameSetting('randomOnCreateFieldName'), { storageResourceTags })
|
|
88
|
-
},
|
|
89
|
-
identifiers: [{ type: 'identifier', fieldName: propertyLabelIdField }]
|
|
90
|
-
}
|
|
91
|
-
];
|
|
92
|
-
|
|
93
|
-
// Ensure directory exists for this specific object
|
|
94
|
-
await fs.mkdir(schemasOutputDir, { recursive: true });
|
|
95
|
-
|
|
96
|
-
for (const schemaDef of schemasToGenerate) {
|
|
97
|
-
const filePath = path.join(schemasOutputDir, `${schemaDef.objectType}.js`);
|
|
98
|
-
|
|
99
|
-
const fileContent = ejs.render(templateString, {
|
|
100
|
-
objectType: schemaDef.objectType,
|
|
101
|
-
storageResources: JSON.stringify(cloneDeepStorageResources, null, 4),
|
|
102
|
-
fieldNames: JSON.stringify(schemaDef.fieldNames, null, 4),
|
|
103
|
-
identifiers: JSON.stringify(schemaDef.identifiers, null, 4),
|
|
104
|
-
compositeKeyDeliminator: compositeKeyDeliminator
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
await fs.writeFile(filePath, fileContent, 'utf-8');
|
|
108
|
-
generatedCount++;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (generatedCount > 0) {
|
|
115
|
-
console.log(` [PropertyValueSchemaGenerator] Wrote ${generatedCount} dynamic PropertyValue ObjectSchemas to ${schemasOutputDir}`);
|
|
116
|
-
} else {
|
|
117
|
-
console.log(' [PropertyValueSchemaGenerator] No PropertyValue objects found.');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED ATTRIBUTE TREE MANAGER OBJECT SCHEMA
|
|
3
|
-
* ObjectType: <%= objectType %>
|
|
4
|
-
*/
|
|
5
|
-
export default [
|
|
6
|
-
{
|
|
7
|
-
objectType: '<%= objectType %>',
|
|
8
|
-
addOnDataStructure: [],
|
|
9
|
-
canDelete: true,
|
|
10
|
-
storageResources: <%- storageResources %>,
|
|
11
|
-
fieldNames: <%- fieldNames %>,
|
|
12
|
-
identifiers: <%- identifiers %>
|
|
13
|
-
}
|
|
14
|
-
];
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED ATTRIBUTE TREE STANDARD OBJECT SCHEMA
|
|
3
|
-
* ObjectType: <%= objectType %>
|
|
4
|
-
*/
|
|
5
|
-
export default [
|
|
6
|
-
{
|
|
7
|
-
objectType: '<%= objectType %>',
|
|
8
|
-
addOnDataStructure: [],
|
|
9
|
-
storageResources: <%- storageResources %>,
|
|
10
|
-
fieldNames: {},
|
|
11
|
-
extendObjType: <%- extendObjType %>
|
|
12
|
-
}
|
|
13
|
-
];
|