@izara_project/izara-core-generate-service-code 1.0.96 → 1.0.98

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.
Files changed (219) hide show
  1. package/index.js +2 -2
  2. package/package.json +2 -1
  3. package/src/compile/loadSchemas.js +44 -322
  4. package/src/compile/loadSchemasRemote.js +195 -0
  5. package/src/compile/schemaValidatorSetup.js +143 -0
  6. package/src/emit/{crud → application/crud}/emitCrudApplicationArtifacts.js +2 -2
  7. package/src/emit/{crud → application/crud}/generateCrudApplicationArtifacts.js +2 -2
  8. package/src/emit/{crud → application/crud}/generateDynamicCrudFlowSchemas.js +2 -2
  9. package/src/emit/{crud → application/crud}/templates/FlowEndpoint_HdrWbs.ejs +2 -2
  10. package/src/emit/{crud → application/crud}/templates/FlowMain_Wbs.ejs +2 -2
  11. package/src/emit/{custom → application/custom}/customFlowS3.js +1 -1
  12. package/src/emit/{custom → application/custom}/customFlowSteps.js +1 -1
  13. package/src/emit/{custom → application/custom}/customFlowTemplates.js +1 -1
  14. package/src/emit/{custom → application/custom}/emitCustomFlowApplicationArtifacts.js +1 -1
  15. package/src/emit/{custom → application/custom}/generateCustomFlowApplicationArtifacts.js +2 -2
  16. package/src/emit/{custom → application/custom}/templates/s3/CreateObject_Main.ejs +5 -2
  17. package/src/emit/{custom → application/custom}/templates/triggerCache/CheckTriggerCache_Main.ejs +2 -2
  18. package/src/emit/{rbac → application/rbac}/emitRbacApplicationArtifacts.js +2 -2
  19. package/src/emit/{rbac → application/rbac}/generateCreateTargetRoleHandler.js +2 -2
  20. package/src/emit/{rbac → application/rbac}/generateDynamicRbacFlowSchemas.js +2 -2
  21. package/src/emit/{relationship → application/relationship}/emitRelationshipApplicationArtifacts.js +3 -3
  22. package/src/emit/{relationship → application/relationship}/generateDynamicRelationshipFlowSchemas.js +2 -2
  23. package/src/emit/{relationship → application/relationship}/generateRelationshipApplicationArtifacts.js +2 -2
  24. package/src/emit/{relationship → application/relationship}/templates/ChangeRelationship_Main.ejs +3 -2
  25. package/src/emit/{relationship → application/relationship}/templates/CreateRelationship_Main.ejs +3 -2
  26. package/src/emit/{relationship → application/relationship}/templates/DeleteRelationship_Main.ejs +3 -2
  27. package/src/emit/{relationship → application/relationship}/templates/GetRelationship_Main.ejs +3 -2
  28. package/src/emit/{relationship → application/relationship}/templates/MoveRelationship_Main.ejs +3 -2
  29. package/src/emit/{relationship → application/relationship}/templates/UpdateRelationship_Main.ejs +3 -2
  30. package/src/emit/{system → application/system}/emitSystemFindDataArtifacts.js +1 -1
  31. package/src/emit/{system → application/system}/templates/RegisterComplete_Main.ejs +6 -2
  32. package/src/emit/{system → application/system}/templates/Register_Main.ejs +6 -2
  33. package/src/emit/{system → application/system}/templates/WebSocketComplete_Main.ejs +3 -3
  34. package/src/emit/{resource → infrastructure/resources}/generateResourceArtifacts.js +2 -2
  35. package/src/emit/{resource → infrastructure/resources}/iamResourceArtifacts.js +3 -3
  36. package/src/emit/{resource → infrastructure/resources}/resourceState.js +4 -4
  37. package/src/emit/{attributeTree → schemas/attributeTree}/emitAttributeTreeSchemas.js +14 -22
  38. package/src/emit/schemas/attributeTree/emitAttributeTreeTargetValueStandard.js +132 -0
  39. package/src/emit/schemas/ledger/emitLedgerSchemas.js +392 -0
  40. package/src/emit/schemas/ledger/templates/LedgerObjectSchema.ejs +3 -0
  41. package/src/emit/schemas/ledger/templates/LedgerRelationshipSchema.ejs +1 -0
  42. package/src/emit/schemas/propertyValue/emitPropertyValueSchemas.js +329 -0
  43. package/src/emit/{systemText → schemas/systemText}/emitSystemTextSchemas.js +1 -1
  44. package/src/generate.js +34 -308
  45. package/src/{generateIntTest.js → intTest/generateIntTest.js} +2 -2
  46. package/src/{generateResourceIntTest.js → intTest/generateResourceIntTest.js} +2 -2
  47. package/src/output/mergeHooks.js +69 -15
  48. package/src/plan/domainRegistry.js +307 -0
  49. package/task.md +132 -0
  50. package/test/helpers/testProject.js +127 -0
  51. package/test/helpers/testProject.test.js +57 -0
  52. package/test/{core.test.js → integration/core.test.js} +3 -3
  53. package/test/{graphDrivenFlowSchema.test.js → integration/graphDrivenFlowSchema.test.js} +1 -1
  54. package/test/{intTestApi.test.js → integration/intTestApi.test.js} +1 -1
  55. package/test/{publicApi.test.js → integration/publicApi.test.js} +55 -2
  56. package/test/{createTargetRoleHandler.test.js → unit/application/createTargetRoleHandler.test.js} +1 -1
  57. package/test/{crudApplicationArtifacts.test.js → unit/application/crudApplicationArtifacts.test.js} +1 -1
  58. package/test/{customFlowApplicationArtifacts.test.js → unit/application/customFlowApplicationArtifacts.test.js} +18 -9
  59. package/test/{relationshipApplicationArtifacts.test.js → unit/application/relationshipApplicationArtifacts.test.js} +31 -1
  60. package/test/{systemFindDataArtifacts.test.js → unit/application/systemFindDataArtifacts.test.js} +1 -1
  61. package/test/{functionYamlArtifact.test.js → unit/infrastructure/functionYamlArtifact.test.js} +1 -1
  62. package/test/{resourceArtifacts.test.js → unit/infrastructure/resourceArtifacts.test.js} +2 -1
  63. package/test/unit/output/mergeHooks.test.js +268 -0
  64. package/test/unit/schemas/attributeTreeDirectives.test.js +177 -0
  65. package/test/{attributeTreeSchemas.test.js → unit/schemas/attributeTreeSchemas.test.js} +46 -102
  66. package/test/{dynamicCrudFlowSchemas.test.js → unit/schemas/dynamicCrudFlowSchemas.test.js} +2 -2
  67. package/test/{dynamicRbacFlowSchemas.test.js → unit/schemas/dynamicRbacFlowSchemas.test.js} +1 -1
  68. package/test/{dynamicRelationshipFlowSchemas.test.js → unit/schemas/dynamicRelationshipFlowSchemas.test.js} +11 -1
  69. package/test/{errorSchemas.test.js → unit/schemas/errorSchemas.test.js} +2 -2
  70. package/test/unit/schemas/ledgerSchemas.test.js +289 -0
  71. package/test/unit/schemas/propertyValueSchemas.test.js +265 -0
  72. package/test/{systemTextSchemas.test.js → unit/schemas/systemTextSchemas.test.js} +24 -36
  73. package/src/emit/attributeTree/emitAttributeTreeTargetSchemas.js +0 -153
  74. package/src/emit/attributeTree/resolveTargetServicePath.js +0 -111
  75. package/src/emit/crud/loadLocalSchemaArrays.js +0 -4
  76. /package/src/emit/{coreFunction → application/coreFunction}/emitCoreFunctionArtifacts.js +0 -0
  77. /package/src/emit/{coreFunction → application/coreFunction}/templates/CoreFunction_Yaml.ejs +0 -0
  78. /package/src/emit/{coreFunction → application/coreFunction}/templates/CoreResource_Yaml.ejs +0 -0
  79. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataDynamo_HdrInv.ejs +0 -0
  80. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataDynamo_Main.ejs +0 -0
  81. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataGraphData_HdrInv.ejs +0 -0
  82. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataGraphData_Main.ejs +0 -0
  83. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataGraphSchema_HdrInv.ejs +0 -0
  84. /package/src/emit/{coreFunction → application/coreFunction}/templates/GenerateSeedDataGraphSchema_Main.ejs +0 -0
  85. /package/src/emit/{coreFunction → application/coreFunction}/templates/GeneratedGraphNodeSchemas.ejs +0 -0
  86. /package/src/emit/{coreFunction → application/coreFunction}/templates/GeneratedGraphRelSchemas.ejs +0 -0
  87. /package/src/emit/{coreFunction → application/coreFunction}/templates/GeneratedTableConfigs.ejs +0 -0
  88. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupConfig.ejs +0 -0
  89. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner.ejs +0 -0
  90. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner_initialSetup.ejs +0 -0
  91. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner_seedDynamo.ejs +0 -0
  92. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner_seedGraph.ejs +0 -0
  93. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner_seedRemove.ejs +0 -0
  94. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetupRunner_uploadSchema.ejs +0 -0
  95. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetup_HdrInv.ejs +0 -0
  96. /package/src/emit/{coreFunction → application/coreFunction}/templates/InitialSetup_Main.ejs +0 -0
  97. /package/src/emit/{coreFunction → application/coreFunction}/templates/RemoveSeedDataDynamo_HdrInv.ejs +0 -0
  98. /package/src/emit/{coreFunction → application/coreFunction}/templates/RemoveSeedDataDynamo_Main.ejs +0 -0
  99. /package/src/emit/{coreFunction → application/coreFunction}/templates/UploadSchema_HdrInv.ejs +0 -0
  100. /package/src/emit/{coreFunction → application/coreFunction}/templates/UploadSchema_Main.ejs +0 -0
  101. /package/src/emit/{crud → application/crud}/crudActionPlan.js +0 -0
  102. /package/src/emit/{crud → application/crud}/dynamicCrudFlowSchemaTemplate.js +0 -0
  103. /package/src/emit/{crud → application/crud}/emitDynamicCrudFlowSchemas.js +0 -0
  104. /package/src/emit/{crud → application/crud}/templates/CreateAfterHookCallback_Main.ejs +0 -0
  105. /package/src/emit/{crud → application/crud}/templates/CreateBeforeHookCallback_Main.ejs +0 -0
  106. /package/src/emit/{crud → application/crud}/templates/CreateComplete_Main.ejs +0 -0
  107. /package/src/emit/{crud → application/crud}/templates/CreateConfirmComplete_Main.ejs +0 -0
  108. /package/src/emit/{crud → application/crud}/templates/CreateEndpoint_Main.ejs +0 -0
  109. /package/src/emit/{crud → application/crud}/templates/CreateLogicalLib.ejs +0 -0
  110. /package/src/emit/{crud → application/crud}/templates/CreateNodeCallback_Main.ejs +0 -0
  111. /package/src/emit/{crud → application/crud}/templates/DeleteAfterHookCallback_Main.ejs +0 -0
  112. /package/src/emit/{crud → application/crud}/templates/DeleteBeforeHookCallback_Main.ejs +0 -0
  113. /package/src/emit/{crud → application/crud}/templates/DeleteComplete_Main.ejs +0 -0
  114. /package/src/emit/{crud → application/crud}/templates/DeleteEndpoint_Main.ejs +0 -0
  115. /package/src/emit/{crud → application/crud}/templates/DeleteLogicalLib.ejs +0 -0
  116. /package/src/emit/{crud → application/crud}/templates/FlowEndpointRbacCallback_Main.ejs +0 -0
  117. /package/src/emit/{crud → application/crud}/templates/GetEndpoint_Main.ejs +0 -0
  118. /package/src/emit/{crud → application/crud}/templates/GetRangeEndpoint_Main.ejs +0 -0
  119. /package/src/emit/{crud → application/crud}/templates/UpdateAfterHookCallback_Main.ejs +0 -0
  120. /package/src/emit/{crud → application/crud}/templates/UpdateBeforeHookCallback_Main.ejs +0 -0
  121. /package/src/emit/{crud → application/crud}/templates/UpdateComplete_Main.ejs +0 -0
  122. /package/src/emit/{crud → application/crud}/templates/UpdateEndpoint_Main.ejs +0 -0
  123. /package/src/emit/{crud → application/crud}/templates/UpdateLogicalLib.ejs +0 -0
  124. /package/src/emit/{custom → application/custom}/customFlowPaths.js +0 -0
  125. /package/src/emit/{custom → application/custom}/customFlows.js +0 -0
  126. /package/src/emit/{custom → application/custom}/templates/FlowEndpointRbacCallback_Main.ejs +0 -0
  127. /package/src/emit/{custom → application/custom}/templates/FlowEndpoint_Main.ejs +0 -0
  128. /package/src/emit/{custom → application/custom}/templates/FlowStep_Main.ejs +0 -0
  129. /package/src/emit/{custom → application/custom}/templates/s3/ConfirmReserved_HdrSqs.ejs +0 -0
  130. /package/src/emit/{custom → application/custom}/templates/s3/ConfirmReserved_Main.ejs +0 -0
  131. /package/src/emit/{custom → application/custom}/templates/s3/CreateObject_HdrWbs.ejs +0 -0
  132. /package/src/emit/{custom → application/custom}/templates/s3/CreatePreSignUrl_HdrSqs.ejs +0 -0
  133. /package/src/emit/{custom → application/custom}/templates/s3/CreatePreSignUrl_Main.ejs +0 -0
  134. /package/src/emit/{custom → application/custom}/templates/s3/FlowHandler_HdrS3.ejs +0 -0
  135. /package/src/emit/{custom → application/custom}/templates/s3/ProcessS3File_Main.ejs +0 -0
  136. /package/src/emit/{custom → application/custom}/templates/s3/ReservedLimit_HdrSqs.ejs +0 -0
  137. /package/src/emit/{custom → application/custom}/templates/s3/ReservedLimit_Main.ejs +0 -0
  138. /package/src/emit/{custom → application/custom}/templates/triggerCache/CheckTriggerCache_HdrSqs.ejs +0 -0
  139. /package/src/emit/{custom → application/custom}/templates/triggerCache/TriggerCacheComplete_Main.ejs +0 -0
  140. /package/src/emit/{custom → application/custom}/templates/triggerCache/TriggerCache_Main.ejs +0 -0
  141. /package/src/emit/{rbac → application/rbac}/emitDynamicRbacFlowSchemas.js +0 -0
  142. /package/src/emit/{rbac → application/rbac}/rbacFlowTag.js +0 -0
  143. /package/src/emit/{rbac → application/rbac}/templates/CancelUsage_Main.ejs +0 -0
  144. /package/src/emit/{rbac → application/rbac}/templates/ConfirmUsage_Main.ejs +0 -0
  145. /package/src/emit/{rbac → application/rbac}/templates/CreateTargetRole_HdrSqs.ejs +0 -0
  146. /package/src/emit/{rbac → application/rbac}/templates/CreateTargetRole_Main.ejs +0 -0
  147. /package/src/emit/{rbac → application/rbac}/templates/DeleteTargetRole_Main.ejs +0 -0
  148. /package/src/emit/{rbac → application/rbac}/templates/DynamicRbacFlowSchema.ejs +0 -0
  149. /package/src/emit/{rbac → application/rbac}/templates/GetMyPermissions_Main.ejs +0 -0
  150. /package/src/emit/{rbac → application/rbac}/templates/GetTargetRole_Main.ejs +0 -0
  151. /package/src/emit/{rbac → application/rbac}/templates/ListRbac_HdrApi.ejs +0 -0
  152. /package/src/emit/{rbac → application/rbac}/templates/ListRbac_HdrSqs.ejs +0 -0
  153. /package/src/emit/{rbac → application/rbac}/templates/ListRbac_Main.ejs +0 -0
  154. /package/src/emit/{rbac → application/rbac}/templates/RbacMutation_Main.ejs +0 -0
  155. /package/src/emit/{rbac → application/rbac}/templates/ReservedDynamicUsage_Main.ejs +0 -0
  156. /package/src/emit/{rbac → application/rbac}/templates/UpdateTargetRole_Main.ejs +0 -0
  157. /package/src/emit/{rbac → application/rbac}/templates/UserRbacFlow_HdrSqs.ejs +0 -0
  158. /package/src/emit/{rbac → application/rbac}/templates/UserRbacFlow_Main.ejs +0 -0
  159. /package/src/emit/{rbac → application/rbac}/templates/UserRoleMutation_Main.ejs +0 -0
  160. /package/src/emit/{relationship → application/relationship}/emitDynamicRelationshipFlowSchemas.js +0 -0
  161. /package/src/emit/{relationship → application/relationship}/templates/ChangeRelationshipComplete_HdrSqs.ejs +0 -0
  162. /package/src/emit/{relationship → application/relationship}/templates/ChangeRelationshipComplete_Main.ejs +0 -0
  163. /package/src/emit/{relationship → application/relationship}/templates/CreateRelationshipComplete_HdrSqs.ejs +0 -0
  164. /package/src/emit/{relationship → application/relationship}/templates/CreateRelationshipComplete_Main.ejs +0 -0
  165. /package/src/emit/{relationship → application/relationship}/templates/DeleteRelationshipComplete_HdrSqs.ejs +0 -0
  166. /package/src/emit/{relationship → application/relationship}/templates/DeleteRelationshipComplete_Main.ejs +0 -0
  167. /package/src/emit/{relationship → application/relationship}/templates/GetRelationshipComplete_HdrSqs.ejs +0 -0
  168. /package/src/emit/{relationship → application/relationship}/templates/GetRelationshipComplete_Main.ejs +0 -0
  169. /package/src/emit/{relationship → application/relationship}/templates/MoveRelationshipComplete_HdrSqs.ejs +0 -0
  170. /package/src/emit/{relationship → application/relationship}/templates/MoveRelationshipComplete_Main.ejs +0 -0
  171. /package/src/emit/{relationship → application/relationship}/templates/UpdateRelationshipComplete_HdrSqs.ejs +0 -0
  172. /package/src/emit/{relationship → application/relationship}/templates/UpdateRelationshipComplete_Main.ejs +0 -0
  173. /package/src/emit/{system → application/system}/emitSystemWebSocketArtifacts.js +0 -0
  174. /package/src/emit/{system → application/system}/templates/RegisterComplete_HdrSqs.ejs +0 -0
  175. /package/src/emit/{system → application/system}/templates/RegisterComplete_Yaml.ejs +0 -0
  176. /package/src/emit/{system → application/system}/templates/RegisterWbs_Yaml.ejs +0 -0
  177. /package/src/emit/{system → application/system}/templates/Register_HdrWbs.ejs +0 -0
  178. /package/src/emit/{system → application/system}/templates/WebSocketComplete_HdrSqs.ejs +0 -0
  179. /package/src/emit/{system → application/system}/templates/WebSocketComplete_Yaml.ejs +0 -0
  180. /package/src/emit/{system → application/system}/templates/WebSocketConnect.ejs +0 -0
  181. /package/src/emit/{system → application/system}/templates/WebSocketConnect_Yaml.ejs +0 -0
  182. /package/src/emit/{function → infrastructure/functions}/functionYamlArtifact.js +0 -0
  183. /package/src/emit/{function → infrastructure/functions}/templates/ApiFunction_Yaml.ejs +0 -0
  184. /package/src/emit/{function → infrastructure/functions}/templates/EventBridgeFunction_Yaml.ejs +0 -0
  185. /package/src/emit/{function → infrastructure/functions}/templates/InvFunction_Yaml.ejs +0 -0
  186. /package/src/emit/{function → infrastructure/functions}/templates/S3Function_Yaml.ejs +0 -0
  187. /package/src/emit/{function → infrastructure/functions}/templates/SqsFunction_Yaml.ejs +0 -0
  188. /package/src/emit/{function → infrastructure/functions}/templates/WbsFunction_Yaml.ejs +0 -0
  189. /package/src/emit/{resource → infrastructure/resources}/dynamoResourceArtifacts.js +0 -0
  190. /package/src/emit/{resource → infrastructure/resources}/emitResourceArtifacts.js +0 -0
  191. /package/src/emit/{resource → infrastructure/resources}/resourceTemplate.js +0 -0
  192. /package/src/emit/{resource → infrastructure/resources}/s3ResourceArtifacts.js +0 -0
  193. /package/src/emit/{resource → infrastructure/resources}/sqsResourceArtifacts.js +0 -0
  194. /package/src/emit/{resource → infrastructure/resources}/templates/DynamoDBTable_Yaml.ejs +0 -0
  195. /package/src/emit/{resource → infrastructure/resources}/templates/FlowOut_Yaml.ejs +0 -0
  196. /package/src/emit/{resource → infrastructure/resources}/templates/GeneratedLambdaRoleServiceConfig.ejs +0 -0
  197. /package/src/emit/{resource → infrastructure/resources}/templates/ResourceSqsYaml.ejs +0 -0
  198. /package/src/emit/{resource → infrastructure/resources}/templates/ResourceYaml.ejs +0 -0
  199. /package/src/emit/{resource → infrastructure/resources}/templates/S3Bucket_Yaml.ejs +0 -0
  200. /package/src/emit/{resource → infrastructure/resources}/templates/S3Subscription_Yaml.ejs +0 -0
  201. /package/src/emit/{resource → infrastructure/resources}/templates/SharedResource_Yaml.ejs +0 -0
  202. /package/src/emit/{resource → infrastructure/resources}/templates/SystemDynamoDB_Yaml.ejs +0 -0
  203. /package/src/emit/{resource → infrastructure/resources}/templates/WebSocketSubscription_Yaml.ejs +0 -0
  204. /package/src/emit/{error → schemas/error}/emitErrorSchemas.js +0 -0
  205. /package/src/emit/{error → schemas/error}/templates/errorSchema.ejs +0 -0
  206. /package/src/emit/{systemText → schemas/systemText}/templates/SystemTextSchemas.ejs +0 -0
  207. /package/src/{generateResources/IntTest → intTest/generators}/consts.js +0 -0
  208. /package/src/{generateResources/IntTest → intTest/generators}/generateResources/generateResources.js +0 -0
  209. /package/src/{generateResources/IntTest → intTest/generators}/generateResources/templateResources.ejs +0 -0
  210. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/events/events.js +0 -0
  211. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/events/templateEvents.ejs +0 -0
  212. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/generateTemplate.js +0 -0
  213. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/pathIntTest/pathIntTest.js +0 -0
  214. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/pathIntTest/template.ejs +0 -0
  215. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/tests/templateTests.ejs +0 -0
  216. /package/src/{generateResources/IntTest → intTest/generators}/generateTests/tests/tests.js +0 -0
  217. /package/src/{generateResources/IntTest → intTest/generators}/libs/IntTestGenerateLib.js +0 -0
  218. /package/src/{generateResources/IntTest → intTest/generators}/upload/uploadIntTest.js +0 -0
  219. /package/src/{intTestGeneratorShared.js → intTest/intTestGeneratorShared.js} +0 -0
@@ -0,0 +1,329 @@
1
+ import propertyNode from '@izara_project/izara-property-nodes';
2
+
3
+ /**
4
+ * Emits dynamic ObjectSchemas and RelationshipSchemas for propertyValue add-ons
5
+ */
6
+
7
+ function _capitalize(str) {
8
+ if (!str) {
9
+ return '';
10
+ }
11
+ if (typeof str !== 'string') {
12
+ return '';
13
+ }
14
+ return str.charAt(0).toUpperCase() + str.slice(1);
15
+ }
16
+
17
+ function _extractPropertyValues(objects = []) {
18
+ if (!Array.isArray(objects)) {
19
+ return [];
20
+ }
21
+ const results = [];
22
+ const seenTags = new Set();
23
+
24
+ for (const object of objects) {
25
+ if (!Array.isArray(object?.addOnDataStructure)) {
26
+ continue;
27
+ }
28
+ for (const addOn of object.addOnDataStructure) {
29
+ if (addOn?.type === 'propertyValue') {
30
+ let tag = object.objectType;
31
+ if (addOn.propertyValuePrefix) {
32
+ tag = addOn.propertyValuePrefix;
33
+ }
34
+ if (!tag) {
35
+ continue;
36
+ }
37
+ if (seenTags.has(tag)) {
38
+ continue;
39
+ }
40
+ seenTags.add(tag);
41
+ results.push({
42
+ parentObject: object,
43
+ addOn,
44
+ tag
45
+ });
46
+ }
47
+ }
48
+ }
49
+
50
+ return results;
51
+ }
52
+
53
+ function _extractGraphStorageResources(object) {
54
+ const result = {};
55
+ if (object?.storageResources) {
56
+ for (const [tag, res] of Object.entries(object.storageResources)) {
57
+ if (res?.storageType === 'graph') {
58
+ let graphServerTag = 'GraphHandler';
59
+ if (res.graphServerTag) {
60
+ graphServerTag = res.graphServerTag;
61
+ }
62
+ result[tag] = {
63
+ storageType: 'graph',
64
+ graphServerTag
65
+ };
66
+ }
67
+ }
68
+ }
69
+ if (Object.keys(result).length === 0) {
70
+ result.myGraph = {
71
+ storageType: 'graph',
72
+ graphServerTag: 'GraphHandler'
73
+ };
74
+ }
75
+ return result;
76
+ }
77
+
78
+ function _renderObjectSchema(schema) {
79
+ const json = JSON.stringify(schema, null, 2).replace(/\n/g, '\n ');
80
+ return `export default [\n ${json}\n];\n`;
81
+ }
82
+
83
+ function _renderRelationshipSchema(relationshipTag, content) {
84
+ const wrapper = [{ [relationshipTag]: content }];
85
+ return `export default ${JSON.stringify(wrapper, null, 2)};\n`;
86
+ }
87
+
88
+ export function propertyValueObjectSchemaManagedPaths(objects = []) {
89
+ const items = _extractPropertyValues(objects);
90
+ const paths = [];
91
+
92
+ for (const { tag } of items) {
93
+ const labelType = propertyNode.createPropertyLabelGraphNodeLabel(tag);
94
+ const valueType = propertyNode.createPropertyValueGraphNodeLabel(tag);
95
+ paths.push(
96
+ `app/src/schemas/ObjectSchemas/generatedCode/propertyValue/${labelType}.js`,
97
+ `app/src/schemas/ObjectSchemas/generatedCode/propertyValue/${valueType}.js`
98
+ );
99
+ }
100
+
101
+ return paths;
102
+ }
103
+
104
+ export function propertyValueRelationshipSchemaManagedPaths(objects = []) {
105
+ const items = _extractPropertyValues(objects);
106
+ const paths = [];
107
+
108
+ for (const { tag } of items) {
109
+ const tagCap = _capitalize(tag);
110
+ const hasRel = propertyNode.createHasPropertyGraphRelationshipType(tagCap);
111
+ const disabledRel =
112
+ propertyNode.createDisabledPropertyGraphRelationshipType(tagCap);
113
+ const isRel =
114
+ propertyNode.createIsPropertyLabelGraphRelationshipType(tagCap);
115
+ paths.push(
116
+ `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${hasRel}.js`,
117
+ `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${disabledRel}.js`,
118
+ `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${isRel}.js`
119
+ );
120
+ }
121
+
122
+ return paths;
123
+ }
124
+
125
+ export function emitPropertyValueObjectSchemas({ objects = [] } = {}) {
126
+ const items = _extractPropertyValues(objects);
127
+ if (items.length === 0) {
128
+ return [];
129
+ }
130
+
131
+ const artifacts = [];
132
+
133
+ for (const { parentObject, tag } of items) {
134
+ const graphStorageResources = _extractGraphStorageResources(parentObject);
135
+ const storageResourceTags = Object.keys(graphStorageResources);
136
+
137
+ const labelIdSuffix = _capitalize(
138
+ propertyNode.consts.PROPERTY_LABEL_GRAPH_IDENTIFIER_ID
139
+ );
140
+ const labelType = propertyNode.createPropertyLabelGraphNodeLabel(tag);
141
+ const labelIdField = `${tag}${labelIdSuffix}`;
142
+
143
+ const labelSchema = {
144
+ objectType: labelType,
145
+ canDelete: true,
146
+ generatedBy: 'user',
147
+ storageResources: graphStorageResources,
148
+ fieldNames: {
149
+ [labelIdField]: {
150
+ type: 'string',
151
+ randomOnCreate: true,
152
+ canUpdate: false,
153
+ storageResourceTags
154
+ }
155
+ },
156
+ identifiers: [
157
+ {
158
+ type: 'identifier',
159
+ fieldName: labelIdField
160
+ }
161
+ ]
162
+ };
163
+
164
+ artifacts.push({
165
+ path: `app/src/schemas/ObjectSchemas/generatedCode/propertyValue/${labelType}.js`,
166
+ content: _renderObjectSchema(labelSchema)
167
+ });
168
+
169
+ const valueIdSuffix = _capitalize(
170
+ propertyNode.consts.PROPERTY_VALUE_GRAPH_IDENTIFIERS_ID
171
+ );
172
+ const valueType = propertyNode.createPropertyValueGraphNodeLabel(tag);
173
+ const valueIdField = `${tag}${valueIdSuffix}`;
174
+
175
+ const valueSchema = {
176
+ objectType: valueType,
177
+ canDelete: true,
178
+ generatedBy: 'user',
179
+ storageResources: graphStorageResources,
180
+ fieldNames: {
181
+ [valueIdField]: {
182
+ type: 'string',
183
+ randomOnCreate: true,
184
+ canUpdate: false,
185
+ storageResourceTags
186
+ }
187
+ },
188
+ identifiers: [
189
+ {
190
+ type: 'identifier',
191
+ fieldName: valueIdField
192
+ }
193
+ ]
194
+ };
195
+
196
+ artifacts.push({
197
+ path: `app/src/schemas/ObjectSchemas/generatedCode/propertyValue/${valueType}.js`,
198
+ content: _renderObjectSchema(valueSchema)
199
+ });
200
+ }
201
+
202
+ return artifacts;
203
+ }
204
+
205
+ export function emitPropertyValueRelationshipSchemas({
206
+ objects = [],
207
+ serviceTag = ''
208
+ } = {}) {
209
+ const items = _extractPropertyValues(objects);
210
+ if (items.length === 0) {
211
+ return [];
212
+ }
213
+
214
+ const artifacts = [];
215
+
216
+ for (const { parentObject, tag } of items) {
217
+ const tagCap = _capitalize(tag);
218
+ const parentObjectType = parentObject.objectType;
219
+ let effectiveServiceTag = 'CurrentService';
220
+ if (parentObject?.serviceTag) {
221
+ effectiveServiceTag = parentObject.serviceTag;
222
+ } else if (serviceTag) {
223
+ effectiveServiceTag = serviceTag;
224
+ }
225
+
226
+ const graphStorageResources = _extractGraphStorageResources(parentObject);
227
+ const storageResourceTags = Object.keys(graphStorageResources);
228
+
229
+ const labelType = propertyNode.createPropertyLabelGraphNodeLabel(tag);
230
+ const valueType = propertyNode.createPropertyValueGraphNodeLabel(tag);
231
+
232
+ const hasRelTag =
233
+ propertyNode.createHasPropertyGraphRelationshipType(tagCap);
234
+ const hasRel = {
235
+ fieldNames: {},
236
+ storageResources: graphStorageResources,
237
+ generatedBy: 'user',
238
+ links: [
239
+ {
240
+ storageResourceTags,
241
+ from: {
242
+ objType: {
243
+ serviceTag: effectiveServiceTag,
244
+ objectType: parentObjectType
245
+ },
246
+ linkType: 'one'
247
+ },
248
+ to: {
249
+ objType: {
250
+ serviceTag: effectiveServiceTag,
251
+ objectType: valueType
252
+ },
253
+ linkType: 'many',
254
+ requiredOnCreate: true
255
+ }
256
+ }
257
+ ]
258
+ };
259
+ artifacts.push({
260
+ path: `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${hasRelTag}.js`,
261
+ content: _renderRelationshipSchema(hasRelTag, hasRel)
262
+ });
263
+
264
+ const disabledRelTag =
265
+ propertyNode.createDisabledPropertyGraphRelationshipType(tagCap);
266
+ const disabledRel = {
267
+ fieldNames: {},
268
+ storageResources: graphStorageResources,
269
+ generatedBy: 'user',
270
+ links: [
271
+ {
272
+ storageResourceTags,
273
+ from: {
274
+ objType: {
275
+ serviceTag: effectiveServiceTag,
276
+ objectType: parentObjectType
277
+ },
278
+ linkType: 'one'
279
+ },
280
+ to: {
281
+ objType: {
282
+ serviceTag: effectiveServiceTag,
283
+ objectType: valueType
284
+ },
285
+ linkType: 'many'
286
+ }
287
+ }
288
+ ]
289
+ };
290
+ artifacts.push({
291
+ path: `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${disabledRelTag}.js`,
292
+ content: _renderRelationshipSchema(disabledRelTag, disabledRel)
293
+ });
294
+
295
+ const isRelTag =
296
+ propertyNode.createIsPropertyLabelGraphRelationshipType(tagCap);
297
+ const isRel = {
298
+ fieldNames: {},
299
+ storageResources: graphStorageResources,
300
+ generatedBy: 'systemNoUser',
301
+ links: [
302
+ {
303
+ storageResourceTags,
304
+ from: {
305
+ objType: {
306
+ serviceTag: effectiveServiceTag,
307
+ objectType: valueType
308
+ },
309
+ linkType: 'many',
310
+ requiredOnCreate: true
311
+ },
312
+ to: {
313
+ objType: {
314
+ serviceTag: effectiveServiceTag,
315
+ objectType: labelType
316
+ },
317
+ linkType: 'one'
318
+ }
319
+ }
320
+ ]
321
+ };
322
+ artifacts.push({
323
+ path: `app/src/schemas/RelationshipSchemas/generatedCode/propertyValue/${isRelTag}.js`,
324
+ content: _renderRelationshipSchema(isRelTag, isRel)
325
+ });
326
+ }
327
+
328
+ return artifacts;
329
+ }
@@ -1,6 +1,6 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import ejsLib from 'ejs';
3
- import { rbacFlowTag } from '../rbac/rbacFlowTag.js';
3
+ import { rbacFlowTag } from '../../application/rbac/rbacFlowTag.js';
4
4
 
5
5
  const TEMPLATE_URL = new URL('./templates/', import.meta.url);
6
6
  const SYSTEM_TEXT_SCHEMA_PATH =