@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,238 +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 { writeRenderedTemplate } from '../../../../../core/renderTemplateFile.js';
|
|
6
|
-
|
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
const __dirname = path.dirname(__filename);
|
|
9
|
-
|
|
10
|
-
const STORAGE_TYPES = {
|
|
11
|
-
dynamoDB: 'dynamoDB',
|
|
12
|
-
graph: 'graph'
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export async function generateFindData(allSchemas, generatorOptions) {
|
|
16
|
-
console.log(' [FindDataGenerator] Generating FindData logic...');
|
|
17
|
-
|
|
18
|
-
const outputPath = path.join(
|
|
19
|
-
generatorOptions.outputPath,
|
|
20
|
-
'app',
|
|
21
|
-
'src',
|
|
22
|
-
'generatedCode',
|
|
23
|
-
'FindData',
|
|
24
|
-
'source'
|
|
25
|
-
);
|
|
26
|
-
await fs.mkdir(outputPath, { recursive: true });
|
|
27
|
-
|
|
28
|
-
const datas = [];
|
|
29
|
-
|
|
30
|
-
// Parse allSchemas.objects to extract fields for FindData
|
|
31
|
-
if (allSchemas && allSchemas.objects) {
|
|
32
|
-
allSchemas.objects.forEach(obj => {
|
|
33
|
-
const objectType = obj.objectType;
|
|
34
|
-
let fieldNameDatas = [];
|
|
35
|
-
|
|
36
|
-
// Identify identifiers for checking 'getInIdentifiers'
|
|
37
|
-
const identifierFields = [];
|
|
38
|
-
if (obj.identifiers) {
|
|
39
|
-
obj.identifiers.forEach(id => {
|
|
40
|
-
if (id.fieldName) identifierFields.push(id.fieldName);
|
|
41
|
-
if (id.fieldNames) identifierFields.push(...id.fieldNames);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (obj.fieldNames) {
|
|
46
|
-
Object.entries(obj.fieldNames).forEach(([field, schemas]) => {
|
|
47
|
-
if (schemas.type === 'string' || schemas.type === 'number') {
|
|
48
|
-
let collectStorageDetail = {};
|
|
49
|
-
let storageResourceTags = schemas.storageResourceTags || [];
|
|
50
|
-
|
|
51
|
-
storageResourceTags.forEach(tag => {
|
|
52
|
-
if (obj.storageResources && obj.storageResources[tag]) {
|
|
53
|
-
let storageDetail = obj.storageResources[tag];
|
|
54
|
-
|
|
55
|
-
if (storageDetail.storageType === STORAGE_TYPES.graph) {
|
|
56
|
-
if (!collectStorageDetail[STORAGE_TYPES.graph]) {
|
|
57
|
-
collectStorageDetail[STORAGE_TYPES.graph] = {
|
|
58
|
-
graphServerTag: storageDetail.graphServerTag,
|
|
59
|
-
getInIdentifiers: identifierFields.includes(field)
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
} else if (
|
|
63
|
-
storageDetail.storageType === STORAGE_TYPES.dynamoDB
|
|
64
|
-
) {
|
|
65
|
-
if (!collectStorageDetail[STORAGE_TYPES.dynamoDB]) {
|
|
66
|
-
collectStorageDetail[STORAGE_TYPES.dynamoDB] = {
|
|
67
|
-
tableName: storageDetail.tableName
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
// Priority: DynamoDB over Graph
|
|
75
|
-
if (
|
|
76
|
-
collectStorageDetail[STORAGE_TYPES.graph] &&
|
|
77
|
-
collectStorageDetail[STORAGE_TYPES.dynamoDB]
|
|
78
|
-
) {
|
|
79
|
-
delete collectStorageDetail[STORAGE_TYPES.graph];
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (Object.keys(collectStorageDetail).length > 0) {
|
|
83
|
-
fieldNameDatas.push({ [field]: collectStorageDetail });
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Parse addOnDataStructure for versionedData
|
|
90
|
-
if (obj.addOnDataStructure) {
|
|
91
|
-
obj.addOnDataStructure.forEach(versionedData => {
|
|
92
|
-
if (
|
|
93
|
-
versionedData.type === 'versionedData' &&
|
|
94
|
-
versionedData.fieldNames
|
|
95
|
-
) {
|
|
96
|
-
let versionedStorageDetail = {};
|
|
97
|
-
let storageTag = versionedData.storageResourceTag;
|
|
98
|
-
|
|
99
|
-
if (obj.storageResources && obj.storageResources[storageTag]) {
|
|
100
|
-
let storageDetail = obj.storageResources[storageTag];
|
|
101
|
-
if (storageDetail.storageType === STORAGE_TYPES.graph) {
|
|
102
|
-
versionedStorageDetail = {
|
|
103
|
-
[STORAGE_TYPES.graph]: {
|
|
104
|
-
graphServerTag: storageDetail.graphServerTag,
|
|
105
|
-
versionedDataLabel: versionedData.versionedDataLabel
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
Object.entries(versionedData.fieldNames).forEach(
|
|
112
|
-
([key, schema]) => {
|
|
113
|
-
if (schema.type === 'string' || schema.type === 'number') {
|
|
114
|
-
if (Object.keys(versionedStorageDetail).length > 0) {
|
|
115
|
-
fieldNameDatas.push({ [key]: versionedStorageDetail });
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (fieldNameDatas.length > 0) {
|
|
125
|
-
datas.push({
|
|
126
|
-
objectType: objectType,
|
|
127
|
-
fieldNames: fieldNameDatas
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Pre-build the if-else-if blocks as a string, then pass to template
|
|
134
|
-
const getByDynamoTemplate = await fs.readFile(
|
|
135
|
-
path.join(__dirname, 'templates', 'GetByStorage', 'getByDynamo.ejs'),
|
|
136
|
-
'utf8'
|
|
137
|
-
);
|
|
138
|
-
const getByGraphTemplate = await fs.readFile(
|
|
139
|
-
path.join(__dirname, 'templates', 'GetByStorage', 'getByGraph.ejs'),
|
|
140
|
-
'utf8'
|
|
141
|
-
);
|
|
142
|
-
const templateViews = [path.join(__dirname, 'templates')];
|
|
143
|
-
|
|
144
|
-
// Helper: prefix every line of a block with `spaces`
|
|
145
|
-
const indent = (str, spaces) => {
|
|
146
|
-
const pad = ' '.repeat(spaces);
|
|
147
|
-
return str
|
|
148
|
-
.split('\n')
|
|
149
|
-
.map(line => (line.trim() === '' ? '' : pad + line))
|
|
150
|
-
.join('\n');
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
let objectTypeBlocks = '';
|
|
154
|
-
if (datas.length === 0) {
|
|
155
|
-
objectTypeBlocks = [
|
|
156
|
-
' //(<additionalObjectType>)',
|
|
157
|
-
' //(</additionalObjectType>)',
|
|
158
|
-
" errorsFound.push('unrecognized objectType');",
|
|
159
|
-
' standardErrorParams.push(errorsFound);',
|
|
160
|
-
' await findDataSharedLib.completeFindDataMain(...standardErrorParams);',
|
|
161
|
-
" return { returnResponse: 'Function FindData Error' };"
|
|
162
|
-
].join('\n');
|
|
163
|
-
} else {
|
|
164
|
-
const objBlocks = datas.map((data, idx) => {
|
|
165
|
-
const objectType = data.objectType;
|
|
166
|
-
const fieldNames = data.fieldNames;
|
|
167
|
-
const keyword = idx === 0 ? 'if' : '} else if';
|
|
168
|
-
|
|
169
|
-
let fieldBlocks = '';
|
|
170
|
-
if (fieldNames && fieldNames.length > 0) {
|
|
171
|
-
const fBlocks = fieldNames.map((fieldEntry, fIdx) => {
|
|
172
|
-
const fieldObj = Object.keys(fieldEntry)[0];
|
|
173
|
-
const storageDetails = Object.values(fieldEntry)[0];
|
|
174
|
-
const fKeyword = fIdx === 0 ? 'if' : '} else if';
|
|
175
|
-
|
|
176
|
-
let storageCode = '';
|
|
177
|
-
for (const [storage, details] of Object.entries(storageDetails)) {
|
|
178
|
-
const versionedDataLabel =
|
|
179
|
-
storage === STORAGE_TYPES.graph && details.versionedDataLabel
|
|
180
|
-
? [details.versionedDataLabel]
|
|
181
|
-
: [];
|
|
182
|
-
if (storage === STORAGE_TYPES.dynamoDB) {
|
|
183
|
-
const raw = ejs.render(
|
|
184
|
-
getByDynamoTemplate,
|
|
185
|
-
{
|
|
186
|
-
tableName: details.tableName,
|
|
187
|
-
fieldName: { fieldName: fieldObj },
|
|
188
|
-
objectType
|
|
189
|
-
},
|
|
190
|
-
{ views: templateViews }
|
|
191
|
-
);
|
|
192
|
-
storageCode += indent(raw.trimStart(), 8);
|
|
193
|
-
}
|
|
194
|
-
if (storage === STORAGE_TYPES.graph) {
|
|
195
|
-
const raw = ejs.render(
|
|
196
|
-
getByGraphTemplate,
|
|
197
|
-
{
|
|
198
|
-
graphServerTag: details.graphServerTag,
|
|
199
|
-
versionedDataLabel,
|
|
200
|
-
fieldName: { fieldName: fieldObj },
|
|
201
|
-
objectType,
|
|
202
|
-
getInIdentifiers: details.getInIdentifiers
|
|
203
|
-
},
|
|
204
|
-
{ views: templateViews }
|
|
205
|
-
);
|
|
206
|
-
storageCode += indent(raw.trimStart(), 8);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return ` ${fKeyword} (fieldName.fieldName == ${JSON.stringify(fieldObj)}) {\n _izContext.logger.debug('fieldName: ', fieldName.fieldName);\n${storageCode}`;
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
fieldBlocks = fBlocks.join('\n');
|
|
214
|
-
fieldBlocks += `\n }\n //(<additional${objectType}FieldNames>)\n //(</additional${objectType}FieldNames>)\n else {\n errorsFound.push('unrecognized fieldName');\n standardErrorParams.push(errorsFound);\n await findDataSharedLib.completeFindDataMain(...standardErrorParams);\n return;\n }`;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
return ` ${keyword} (objType.objectType === ${JSON.stringify(objectType)}) {\n _izContext.logger.debug('objectType: ', objType.objectType);\n\n${fieldBlocks}`;
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
objectTypeBlocks = objBlocks.join('\n');
|
|
221
|
-
objectTypeBlocks += `\n }\n //(<additionalObjectType>)\n //(</additionalObjectType>)\n else {\n errorsFound.push('unrecognized objectType');\n standardErrorParams.push(errorsFound);\n await findDataSharedLib.completeFindDataMain(...standardErrorParams);\n return { returnResponse: 'Function FindData Error' };\n }`;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
await writeRenderedTemplate(
|
|
225
|
-
path.join(__dirname, 'templates', 'FindData_Main.ejs'),
|
|
226
|
-
path.join(outputPath, 'FindData_Main.js'),
|
|
227
|
-
{ objectTypeBlocks }
|
|
228
|
-
);
|
|
229
|
-
await writeRenderedTemplate(
|
|
230
|
-
path.join(__dirname, 'templates', 'FindData_HdrSqs.ejs'),
|
|
231
|
-
path.join(outputPath, 'FindData_HdrSqs.js'),
|
|
232
|
-
{}
|
|
233
|
-
);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
console.log(' [FindDataGenerator] Finished generating FindData logic.');
|
|
238
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { middlewareHandler as middleware, validatorSchema } from '@izara_project/izara-middleware';
|
|
2
|
-
import { recordHandlerSharedLib } from '@izara_project/izara-core-library-record-handler';
|
|
3
|
-
import Logger from '@izara_project/izara-core-library-logger';
|
|
4
|
-
|
|
5
|
-
import findData from './FindData_Main.js';
|
|
6
|
-
|
|
7
|
-
// validate event properties in body.Message of sqs event
|
|
8
|
-
middleware.setValidatorSchema(recordHandlerSharedLib.baseValidatorSchema());
|
|
9
|
-
|
|
10
|
-
// set schema for record.body.Message
|
|
11
|
-
const perRecordsValidatorSchema = {
|
|
12
|
-
type: 'object',
|
|
13
|
-
required: ['fieldName', 'objType', 'identifiers', 'overWriteCache'],
|
|
14
|
-
properties: {
|
|
15
|
-
fieldName: {
|
|
16
|
-
type: 'object'
|
|
17
|
-
},
|
|
18
|
-
objType: {
|
|
19
|
-
type: 'object',
|
|
20
|
-
required: ['serviceTag', 'objectType'],
|
|
21
|
-
properties: {
|
|
22
|
-
serviceTag: {
|
|
23
|
-
type: 'string',
|
|
24
|
-
enum: [process.env.iz_serviceTag]
|
|
25
|
-
},
|
|
26
|
-
objectType: validatorSchema.stringNotEmpty()
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
identifiers: {
|
|
30
|
-
type: 'object'
|
|
31
|
-
},
|
|
32
|
-
overWriteCache: {
|
|
33
|
-
type: 'boolean'
|
|
34
|
-
},
|
|
35
|
-
callingFlow: {
|
|
36
|
-
type: 'string',
|
|
37
|
-
default: ''
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const main = middleware.wrap(async (event, context) => {
|
|
43
|
-
try {
|
|
44
|
-
let recordPromises = [];
|
|
45
|
-
|
|
46
|
-
await Promise.all(
|
|
47
|
-
event.Records.map(async record => {
|
|
48
|
-
let passOnProperties = [];
|
|
49
|
-
record._izContext.logger.debug('record ReceiveMsgOutHdrSqs', record);
|
|
50
|
-
|
|
51
|
-
await recordHandlerSharedLib.validateRecord(
|
|
52
|
-
record,
|
|
53
|
-
'FindDataHdrSqs',
|
|
54
|
-
perRecordsValidatorSchema
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
passOnProperties.push(record.body.Message.fieldName);
|
|
58
|
-
passOnProperties.push(record.body.Message.objType);
|
|
59
|
-
passOnProperties.push(record.body.Message.identifiers);
|
|
60
|
-
passOnProperties.push(record.body.Message.overWriteCache);
|
|
61
|
-
passOnProperties.push(record.body.Message.callingFlow);
|
|
62
|
-
record._izContext.logger.debug('passOnProperties in handler', passOnProperties);
|
|
63
|
-
|
|
64
|
-
let recordPromise = recordHandlerSharedLib.recordHandler(
|
|
65
|
-
record,
|
|
66
|
-
findData,
|
|
67
|
-
'FindDataHdrSqs',
|
|
68
|
-
passOnProperties
|
|
69
|
-
);
|
|
70
|
-
record._izContext.logger.debug('after recordPromise in handler');
|
|
71
|
-
recordPromises.push(recordPromise);
|
|
72
|
-
})
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
Logger.debug('before Promise.all(recordPromises) in handler');
|
|
76
|
-
try {
|
|
77
|
-
await Promise.all(recordPromises);
|
|
78
|
-
return event.Records;
|
|
79
|
-
} catch {
|
|
80
|
-
Logger.debug('Promise.all(recordPromises) in handler threw error');
|
|
81
|
-
}
|
|
82
|
-
Logger.debug('after Promise.all(recordPromises) in handler');
|
|
83
|
-
} catch (err) {
|
|
84
|
-
Logger.error('Unhandled Error, FindDataHdrSqs: ', err);
|
|
85
|
-
throw err;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import findDataSharedLib from '@izara_project/izara-core-library-find-data';
|
|
2
|
-
import graphSharedLib from '@izara_project/izara-core-library-graph-service';
|
|
3
|
-
import dynamodbSharedLib from '@izara_project/izara-core-library-dynamodb';
|
|
4
|
-
|
|
5
|
-
import { serviceConfig, identifiersObject as identifierObj } from '@izara_project/izara-core-library-service-schemas';
|
|
6
|
-
|
|
7
|
-
//(<additionalModule>)
|
|
8
|
-
//(</additionalModule>)
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* triggered from searchResult for each requiredData field per one identifiers
|
|
12
|
-
*/
|
|
13
|
-
async function _getValueFromDynamo(_izContext, fieldName, objType, identifiers, tableName, errorsFound, standardErrorParams, findDataSharedLib, dynamodbSharedLib, identifierObj) {
|
|
14
|
-
const identifiersBase = await identifierObj.identifiersBaseFromIdentifiers(_izContext, objType, identifiers);
|
|
15
|
-
_izContext.logger.debug('create identifiersBase from identifiers: ', identifiersBase);
|
|
16
|
-
|
|
17
|
-
const objInstanceBase = await dynamodbSharedLib.getItem(
|
|
18
|
-
_izContext,
|
|
19
|
-
await dynamodbSharedLib.tableName(_izContext, tableName),
|
|
20
|
-
identifiersBase
|
|
21
|
-
);
|
|
22
|
-
_izContext.logger.debug('objInstanceBase: ', objInstanceBase);
|
|
23
|
-
|
|
24
|
-
if (!objInstanceBase) {
|
|
25
|
-
errorsFound.push(`can't get data in dynamo by ${identifiersBase}`);
|
|
26
|
-
standardErrorParams.push(errorsFound);
|
|
27
|
-
await findDataSharedLib.completeFindDataMain(...standardErrorParams);
|
|
28
|
-
return { _error: 'FindData cannot get data in dynamo' };
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!objInstanceBase.hasOwnProperty(fieldName)) {
|
|
32
|
-
errorsFound.push(`data in dynamoDB have no ${fieldName}`);
|
|
33
|
-
standardErrorParams.push(errorsFound);
|
|
34
|
-
await findDataSharedLib.completeFindDataMain(...standardErrorParams);
|
|
35
|
-
return { _error: 'Data have no fieldName' };
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return { _value: objInstanceBase[fieldName] };
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export default async function findData(
|
|
42
|
-
_izContext,
|
|
43
|
-
fieldName,
|
|
44
|
-
objType,
|
|
45
|
-
identifiers,
|
|
46
|
-
overWriteCache,
|
|
47
|
-
callingFlow,
|
|
48
|
-
|
|
49
|
-
//(<additionalParams>)
|
|
50
|
-
//(</additionalParams>)
|
|
51
|
-
) {
|
|
52
|
-
try {
|
|
53
|
-
_izContext.logger.debug('----- findData event params -----', {
|
|
54
|
-
fieldName: fieldName,
|
|
55
|
-
objType: objType,
|
|
56
|
-
identifiers: identifiers,
|
|
57
|
-
overWriteCache: overWriteCache,
|
|
58
|
-
callingFlow: callingFlow
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
let removeAttributes = [];
|
|
62
|
-
//(<removeAttributes>)
|
|
63
|
-
//(</removeAttributes>)
|
|
64
|
-
|
|
65
|
-
let deleteDataTableOnExpired = [];
|
|
66
|
-
|
|
67
|
-
let [findDataMainStatus, findDataId, findDataMain] = await findDataSharedLib.checkFindDataMainStatus(
|
|
68
|
-
_izContext,
|
|
69
|
-
fieldName,
|
|
70
|
-
objType,
|
|
71
|
-
identifiers,
|
|
72
|
-
callingFlow,
|
|
73
|
-
removeAttributes,
|
|
74
|
-
overWriteCache
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
_izContext.logger.debug('result after checkFindDataMainStatus is', {
|
|
78
|
-
findDataMainStatus: findDataMainStatus,
|
|
79
|
-
findDataId: findDataId,
|
|
80
|
-
findDataMain: findDataMain
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
if (findDataMainStatus != 'process') {
|
|
84
|
-
_izContext.logger.debug(`findDataMainStatus status isn't process :${findDataMainStatus}`);
|
|
85
|
-
return { returnResponse: 'Function FindData not process' };
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
let errorsFound = [];
|
|
89
|
-
let standardErrorParams = [
|
|
90
|
-
_izContext,
|
|
91
|
-
fieldName,
|
|
92
|
-
objType,
|
|
93
|
-
identifiers,
|
|
94
|
-
null,
|
|
95
|
-
overWriteCache,
|
|
96
|
-
callingFlow,
|
|
97
|
-
'error'
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
<%- objectTypeBlocks %>
|
|
101
|
-
|
|
102
|
-
return { returnResponse: 'Function FindData Finish' };
|
|
103
|
-
|
|
104
|
-
} catch (err) {
|
|
105
|
-
_izContext.logger.error('error FindDataMain: ', err);
|
|
106
|
-
throw err;
|
|
107
|
-
}
|
|
108
|
-
}
|
package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByDynamo.ejs
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
//(<beforeGetItem<%- objectType %><%- fieldName.fieldName %>>)
|
|
2
|
-
//(</beforeGetItem<%- objectType %><%- fieldName.fieldName %>>)
|
|
3
|
-
|
|
4
|
-
const _dynamo_<%- fieldName.fieldName %> = await _getValueFromDynamo(
|
|
5
|
-
_izContext,
|
|
6
|
-
'<%- fieldName.fieldName %>',
|
|
7
|
-
objType,
|
|
8
|
-
identifiers,
|
|
9
|
-
'<%- tableName %>',
|
|
10
|
-
errorsFound,
|
|
11
|
-
standardErrorParams,
|
|
12
|
-
findDataSharedLib,
|
|
13
|
-
dynamodbSharedLib,
|
|
14
|
-
identifierObj
|
|
15
|
-
);
|
|
16
|
-
if (_dynamo_<%- fieldName.fieldName %>._error) return { returnResponse: _dynamo_<%- fieldName.fieldName %>._error };
|
|
17
|
-
const dataValue = _dynamo_<%- fieldName.fieldName %>._value;
|
|
18
|
-
_izContext.logger.debug('dataValue: ', dataValue);
|
|
19
|
-
|
|
20
|
-
//(<afterGetItem<%- objectType %><%- fieldName.fieldName %>>)
|
|
21
|
-
//(</afterGetItem<%- objectType %><%- fieldName.fieldName %>>)
|
|
22
|
-
|
|
23
|
-
await findDataSharedLib.completeFindDataMain(
|
|
24
|
-
_izContext,
|
|
25
|
-
findDataMain.fieldName,
|
|
26
|
-
findDataMain.objType,
|
|
27
|
-
findDataMain.identifiers,
|
|
28
|
-
dataValue,
|
|
29
|
-
overWriteCache,
|
|
30
|
-
callingFlow,
|
|
31
|
-
'complete'
|
|
32
|
-
);
|
package/src/codeGenerators/app/src/generatedCode/FindData/templates/GetByStorage/getByGraph.ejs
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
<%- createNameTagBefore(objectType, fieldName) %>
|
|
2
|
-
|
|
3
|
-
const graphHandlerServiceTag = await serviceConfig.getGraphServiceTagWithCache(
|
|
4
|
-
_izContext,
|
|
5
|
-
<%- JSON.stringify(graphServerTag) %>,
|
|
6
|
-
);
|
|
7
|
-
_izContext.logger.debug('graphHandlerServiceTag: ', graphHandlerServiceTag)
|
|
8
|
-
|
|
9
|
-
let getDataByGraph = await graphSharedLib.getNode(
|
|
10
|
-
_izContext,
|
|
11
|
-
graphHandlerServiceTag,
|
|
12
|
-
objType,
|
|
13
|
-
{
|
|
14
|
-
identifiers:identifiers
|
|
15
|
-
},
|
|
16
|
-
<%- JSON.stringify(versionedDataLabel) %>
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
_izContext.logger.debug('getDataByGraph: ', getDataByGraph)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (!getDataByGraph) {
|
|
23
|
-
errorsFound.push(`can't get data of ${objType.objectType} in graph`)
|
|
24
|
-
standardErrorParams.push(errorsFound)
|
|
25
|
-
await findDataSharedLib.completeFindDataMain(...standardErrorParams);
|
|
26
|
-
return {
|
|
27
|
-
returnResponse: 'FindData cannot get data in graph'
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
<%- createNameTagAfter(objectType, fieldName) %>
|
|
32
|
-
|
|
33
|
-
let objInstanceFull = getDataByGraph.returnValue.queryResults.refactoredNodes.objInstanceFull;
|
|
34
|
-
_izContext.logger.debug('objInstanceFull: ', objInstanceFull)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<% if (getInIdentifiers) { _%>
|
|
38
|
-
|
|
39
|
-
// objInstanceFull.identifiers // Object
|
|
40
|
-
if (!objInstanceFull.identifiers.hasOwnProperty(fieldName.fieldName)) {
|
|
41
|
-
errorsFound.push(`nodeProperties have no this ${fieldName.fieldName}`)
|
|
42
|
-
standardErrorParams.push(errorsFound)
|
|
43
|
-
await findDataSharedLib.completeFindDataMain(...standardErrorParams);
|
|
44
|
-
return {
|
|
45
|
-
returnResponse: 'Data have no fieldName'
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
let dataValue = objInstanceFull.identifiers[fieldName.fieldName];
|
|
50
|
-
_izContext.logger.debug('this fieldName is identifier, get dataValue in identifiers: ', dataValue)
|
|
51
|
-
|
|
52
|
-
<% } else { _%>
|
|
53
|
-
|
|
54
|
-
// objInstanceFull.fields // Object
|
|
55
|
-
if (!objInstanceFull.fields.hasOwnProperty(fieldName.fieldName)) {
|
|
56
|
-
errorsFound.push(`nodeProperties have no this ${fieldName.fieldName}`)
|
|
57
|
-
standardErrorParams.push(errorsFound)
|
|
58
|
-
await findDataSharedLib.completeFindDataMain(...standardErrorParams);
|
|
59
|
-
return {
|
|
60
|
-
returnResponse: 'Data have no fieldName'
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
let dataValue = objInstanceFull.fields[fieldName.fieldName];
|
|
65
|
-
_izContext.logger.debug('this fieldName is not identifier, get dataValue in fields: ', dataValue)
|
|
66
|
-
|
|
67
|
-
<% }_%>
|
|
68
|
-
|
|
69
|
-
await findDataSharedLib.completeFindDataMain(
|
|
70
|
-
_izContext,
|
|
71
|
-
findDataMain.fieldName,
|
|
72
|
-
findDataMain.objType,
|
|
73
|
-
findDataMain.identifiers,
|
|
74
|
-
dataValue,
|
|
75
|
-
overWriteCache,
|
|
76
|
-
callingFlow,
|
|
77
|
-
'complete'
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
<%_ function createNameTagBefore(objectType, fieldName){
|
|
81
|
-
return `//(<beforeGetNode${objectType}${fieldName.fieldName}>)
|
|
82
|
-
//(</beforeGetNode${objectType}${fieldName.fieldName}>)`
|
|
83
|
-
} _%>
|
|
84
|
-
<%_ function createNameTagAfter(objectType, fieldName){
|
|
85
|
-
return `//(<afterGetNode${objectType}${fieldName.fieldName}>)
|
|
86
|
-
//(</afterGetNode${objectType}${fieldName.fieldName}>)`
|
|
87
|
-
} _%>
|
|
File without changes
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import ejs from 'ejs';
|
|
5
|
-
import { processFunctionName, processMainFileName, upperFirst } from '../_shared/shared/flowNaming.js';
|
|
6
|
-
import { EVENT_HANDLERS } from '../_shared/events/registry.js';
|
|
7
|
-
import { getGeneratedCodeConfigs } from '../_shared/shared/flowSelection.js';
|
|
8
|
-
|
|
9
|
-
const CRUD_ACTIONS = ['Create', 'Update', 'Delete', 'Get'];
|
|
10
|
-
const CRUD_ASYNC_ACTIONS = ['Create', 'Update', 'Delete'];
|
|
11
|
-
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
|
|
15
|
-
export async function generateEndpointsFlow(allSchemas, options) {
|
|
16
|
-
console.log(' [EndpointsGenerator] Generating CRUD Endpoint Flows...');
|
|
17
|
-
const baseOutputDir = path.join(options.outputPath, 'app', 'src', 'generatedCode');
|
|
18
|
-
const templateDir = path.join(__dirname, 'templates');
|
|
19
|
-
|
|
20
|
-
let generatedCount = 0;
|
|
21
|
-
|
|
22
|
-
// We only generate CRUD if there's at least one applicable object
|
|
23
|
-
const hasApplicableObject = (allSchemas.objects || []).some(
|
|
24
|
-
obj => obj.generatedBy === 'userGenerated' || obj.generatedBy === 'systemGenerated'
|
|
25
|
-
);
|
|
26
|
-
if (!hasApplicableObject) return;
|
|
27
|
-
|
|
28
|
-
const sharedTemplates = {
|
|
29
|
-
sqs: await fs.readFile(path.join(__dirname, '..', '_shared', 'handlers', 'FlowHandler_HdrSqs.ejs'), 'utf-8'),
|
|
30
|
-
dsq: await fs.readFile(path.join(__dirname, '..', '_shared', 'handlers', 'FlowHandler_HdrDsq.ejs'), 'utf-8'),
|
|
31
|
-
api: await fs.readFile(path.join(__dirname, '..', '_shared', 'handlers', 'FlowHandler_HdrApi.ejs'), 'utf-8'),
|
|
32
|
-
inv: await fs.readFile(path.join(__dirname, '..', '_shared', 'handlers', 'FlowHandler_HdrInv.ejs'), 'utf-8'),
|
|
33
|
-
wbsMain: await fs.readFile(path.join(__dirname, '..', 'FlowSchemas', 'templates', 'endpoint', 'FlowMain_Wbs.ejs'), 'utf-8').catch(() => ''),
|
|
34
|
-
endpointHdrWbs: await fs.readFile(path.join(__dirname, '..', 'FlowSchemas', 'templates', 'endpoint', 'FlowEndpoint_HdrWbs.ejs'), 'utf-8').catch(() => '')
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
// We need to pass a mock flows array to getGeneratedCodeConfigs if it expects it
|
|
38
|
-
// Since we are decoupling, we will just use allSchemas.flows for custom logic filtering
|
|
39
|
-
const customFlows = allSchemas.flows || [];
|
|
40
|
-
|
|
41
|
-
for (const action of CRUD_ACTIONS) {
|
|
42
|
-
const isAsync = CRUD_ASYNC_ACTIONS.includes(action);
|
|
43
|
-
const upperAction = upperFirst(action);
|
|
44
|
-
const flowOutputDir = path.join(baseOutputDir, 'FlowObjects', upperAction, 'source');
|
|
45
|
-
await fs.mkdir(flowOutputDir, { recursive: true });
|
|
46
|
-
|
|
47
|
-
const mainFileName = processMainFileName(action);
|
|
48
|
-
const processFunction = processFunctionName(action);
|
|
49
|
-
|
|
50
|
-
// Mock flow object for registry handlers if needed
|
|
51
|
-
const mockFlow = {
|
|
52
|
-
flowTag: action,
|
|
53
|
-
event: isAsync ? ['ownTopic'] : ['lambdaSyncInv', 'lambdaSyncApi']
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const generateCode = getGeneratedCodeConfigs(customFlows, action, { includeFlowTag: true });
|
|
57
|
-
|
|
58
|
-
// 1. Generate Main Logic File
|
|
59
|
-
const mainTemplatePath = path.join(templateDir, 'crud', `${action}Endpoint_Main.ejs`);
|
|
60
|
-
let mainTemplateStr;
|
|
61
|
-
try {
|
|
62
|
-
mainTemplateStr = await fs.readFile(mainTemplatePath, 'utf-8');
|
|
63
|
-
} catch (err) {
|
|
64
|
-
console.warn(` [EndpointsGenerator] Warning: Main template not found for ${action}.`);
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const mainContent = ejs.render(mainTemplateStr, {
|
|
69
|
-
flowTag: action,
|
|
70
|
-
upperCaseFlowTag: upperAction,
|
|
71
|
-
topicArn: `${upperAction}_In`,
|
|
72
|
-
generateCode: generateCode,
|
|
73
|
-
flow: mockFlow,
|
|
74
|
-
startConfig: null
|
|
75
|
-
});
|
|
76
|
-
await fs.writeFile(path.join(flowOutputDir, `${mainFileName}.js`), mainContent, 'utf-8');
|
|
77
|
-
generatedCount++;
|
|
78
|
-
|
|
79
|
-
// 2. Generate BeforeLogical Main Logic File if needed
|
|
80
|
-
const beforeLogicalConfigs = generateCode.filter(c => c.codeHookTag === 'beforeLogical');
|
|
81
|
-
if (beforeLogicalConfigs.length > 0) {
|
|
82
|
-
const beforeLogicalTemplateStr = await fs.readFile(
|
|
83
|
-
path.join(templateDir, 'step', 'FlowEndpointBeforeLogical_Main.ejs'),
|
|
84
|
-
'utf-8'
|
|
85
|
-
);
|
|
86
|
-
const beforeLogicalFileName = `${upperAction}BeforeLogical_Main`;
|
|
87
|
-
const beforeLogicalContent = ejs.render(beforeLogicalTemplateStr, {
|
|
88
|
-
flowTag: action,
|
|
89
|
-
upperCaseFlowTag: upperAction,
|
|
90
|
-
generateCode: generateCode,
|
|
91
|
-
flow: mockFlow,
|
|
92
|
-
startConfig: null
|
|
93
|
-
});
|
|
94
|
-
await fs.writeFile(path.join(flowOutputDir, `${beforeLogicalFileName}.js`), beforeLogicalContent, 'utf-8');
|
|
95
|
-
generatedCount++;
|
|
96
|
-
|
|
97
|
-
// BeforeLogical SQS Handler
|
|
98
|
-
const sqsContent = ejs.render(sharedTemplates.sqs, {
|
|
99
|
-
flowTag: action,
|
|
100
|
-
flowStepName: '',
|
|
101
|
-
mainFileName: beforeLogicalFileName,
|
|
102
|
-
functionName: `${action}BeforeLogicalMain`,
|
|
103
|
-
queueName: `${action}BeforeLogicalHdrSqs`
|
|
104
|
-
});
|
|
105
|
-
await fs.writeFile(path.join(flowOutputDir, `${upperAction}BeforeLogical_HdrSqs.js`), sqsContent, 'utf-8');
|
|
106
|
-
generatedCount++;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// 3. Generate Handlers based on event array using Registry
|
|
110
|
-
for (const ev of mockFlow.event) {
|
|
111
|
-
const handlerGenerator = EVENT_HANDLERS[ev];
|
|
112
|
-
if (handlerGenerator) {
|
|
113
|
-
await handlerGenerator(mockFlow, '', flowOutputDir, mainFileName, sharedTemplates, generateCode);
|
|
114
|
-
generatedCount++;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
console.log(` [EndpointsGenerator] Generated ${generatedCount} files for CRUD Endpoints.`);
|
|
120
|
-
}
|