nesoi 3.2.9 → 3.3.0

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 (291) hide show
  1. package/README.md +33 -2
  2. package/lib/bundler/browser/browser.app.d.ts +32 -0
  3. package/lib/bundler/browser/browser.app.js +51 -0
  4. package/lib/bundler/browser/browser.bundler.d.ts +5 -0
  5. package/lib/bundler/browser/browser.bundler.js +27 -0
  6. package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.d.ts +13 -0
  7. package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.js +74 -0
  8. package/lib/bundler/distributed/distributed.app.config.d.ts +43 -0
  9. package/lib/{engine/apps → bundler}/distributed/distributed.app.config.js +1 -1
  10. package/lib/{engine/apps → bundler}/distributed/distributed.app.d.ts +14 -14
  11. package/lib/{engine/apps → bundler}/distributed/distributed.app.js +8 -3
  12. package/lib/{compiler/apps/distributed/distributed_compiler.d.ts → bundler/distributed/distributed.bundler.d.ts} +7 -7
  13. package/lib/{compiler/apps/distributed/distributed_compiler.js → bundler/distributed/distributed.bundler.js} +11 -11
  14. package/lib/{engine/apps → bundler}/distributed/distributed_node.app.d.ts +14 -20
  15. package/lib/{engine/apps → bundler}/distributed/distributed_node.app.js +18 -50
  16. package/lib/bundler/distributed/stages/1_mkdir_stage.d.ts +15 -0
  17. package/lib/{compiler/apps → bundler}/distributed/stages/1_mkdir_stage.js +6 -6
  18. package/lib/bundler/distributed/stages/2_build_typescript_stage.d.ts +15 -0
  19. package/lib/{compiler/apps → bundler}/distributed/stages/2_build_typescript_stage.js +7 -7
  20. package/lib/bundler/distributed/stages/3_copy_types_stage.d.ts +15 -0
  21. package/lib/{compiler/apps → bundler}/distributed/stages/3_copy_types_stage.js +7 -7
  22. package/lib/bundler/distributed/stages/4_dump_modules_stage.d.ts +16 -0
  23. package/lib/{compiler/apps → bundler}/distributed/stages/4_dump_modules_stage.js +5 -5
  24. package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.js +3 -3
  25. package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.js +3 -3
  26. package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.js +3 -3
  27. package/lib/{engine/apps → bundler}/monolyth/monolyth.app.d.ts +13 -13
  28. package/lib/{engine/apps → bundler}/monolyth/monolyth.app.js +13 -10
  29. package/lib/{compiler/apps/monolyth/monolyth_compiler.d.ts → bundler/monolyth/monolyth.bundler.d.ts} +9 -7
  30. package/lib/{compiler/apps/monolyth/monolyth_compiler.js → bundler/monolyth/monolyth.bundler.js} +13 -12
  31. package/lib/bundler/monolyth/stages/1_mkdir_stage.d.ts +15 -0
  32. package/lib/{compiler/apps → bundler}/monolyth/stages/1_mkdir_stage.js +6 -6
  33. package/lib/bundler/monolyth/stages/2_build_typescript_stage.d.ts +15 -0
  34. package/lib/{compiler/apps → bundler}/monolyth/stages/2_build_typescript_stage.js +8 -7
  35. package/lib/bundler/monolyth/stages/3_copy_types_stage.d.ts +15 -0
  36. package/lib/{compiler/apps → bundler}/monolyth/stages/3_copy_types_stage.js +7 -7
  37. package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.d.ts +4 -4
  38. package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.js +29 -16
  39. package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.d.ts +4 -4
  40. package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.js +7 -7
  41. package/lib/bundler/monolyth/stages/6_dump_cli_stage.d.ts +15 -0
  42. package/lib/{compiler/apps → bundler}/monolyth/stages/6_dump_cli_stage.js +4 -4
  43. package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.d.ts +4 -4
  44. package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.js +13 -10
  45. package/lib/compiler/compiler.d.ts +1 -6
  46. package/lib/compiler/compiler.js +1 -1
  47. package/lib/compiler/elements/bucket.element.d.ts +2 -1
  48. package/lib/compiler/elements/bucket.element.js +16 -21
  49. package/lib/compiler/elements/cached.element.d.ts +1 -1
  50. package/lib/compiler/elements/cached.element.js +2 -2
  51. package/lib/compiler/elements/constants.element.d.ts +1 -1
  52. package/lib/compiler/elements/constants.element.js +2 -0
  53. package/lib/compiler/elements/controller.element.js +3 -3
  54. package/lib/compiler/elements/element.d.ts +6 -13
  55. package/lib/compiler/elements/element.js +11 -9
  56. package/lib/compiler/elements/externals.element.js +2 -2
  57. package/lib/compiler/elements/job.element.d.ts +1 -1
  58. package/lib/compiler/elements/job.element.js +1 -1
  59. package/lib/compiler/elements/machine.element.d.ts +2 -2
  60. package/lib/compiler/elements/machine.element.js +7 -7
  61. package/lib/compiler/elements/message.element.d.ts +1 -1
  62. package/lib/compiler/elements/message.element.js +26 -26
  63. package/lib/compiler/elements/queue.element.js +1 -1
  64. package/lib/compiler/elements/resource.element.d.ts +1 -1
  65. package/lib/compiler/elements/resource.element.js +9 -9
  66. package/lib/compiler/elements/topic.element.js +1 -1
  67. package/lib/compiler/error.d.ts +1 -5
  68. package/lib/compiler/error.js +3 -15
  69. package/lib/compiler/helpers/dump_helpers.d.ts +1 -1
  70. package/lib/compiler/helpers/dump_helpers.js +1 -1
  71. package/lib/compiler/index.d.ts +1 -3
  72. package/lib/compiler/index.js +15 -7
  73. package/lib/compiler/module.js +12 -12
  74. package/lib/compiler/progressive.d.ts +3 -4
  75. package/lib/compiler/progressive.js +3 -4
  76. package/lib/compiler/stages/2_treeshake_stage.js +4 -0
  77. package/lib/compiler/stages/3_extract_ts_stage.js +7 -7
  78. package/lib/compiler/stages/4_build_schemas_stage.js +3 -16
  79. package/lib/compiler/stages/6_build_elements_stage.js +1 -1
  80. package/lib/compiler/stages/7_dump_stage.js +35 -10
  81. package/lib/compiler/typescript/bridge/extract.js +24 -0
  82. package/lib/compiler/typescript/bridge/inject.js +18 -3
  83. package/lib/compiler/typescript/bridge/organize.d.ts +4 -0
  84. package/lib/compiler/typescript/bridge/organize.js +41 -22
  85. package/lib/compiler/typescript/error.d.ts +2 -83
  86. package/lib/compiler/typescript/error.js +6 -219
  87. package/lib/compiler/typescript/parser.js +3 -3
  88. package/lib/compiler/typescript/source.d.ts +2 -2
  89. package/lib/compiler/typescript/transformers/app_inject.transformer.js +13 -4
  90. package/lib/compiler/typescript/typescript_compiler.d.ts +3 -3
  91. package/lib/compiler/typescript/typescript_compiler.js +2 -2
  92. package/lib/elements/blocks/block.builder.d.ts +7 -4
  93. package/lib/elements/blocks/block.builder.js +24 -13
  94. package/lib/elements/blocks/block.js +2 -2
  95. package/lib/elements/blocks/block.schema.d.ts +12 -9
  96. package/lib/elements/blocks/block.schema.js +2 -2
  97. package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -5
  98. package/lib/elements/blocks/job/internal/machine_job.builder.js +3 -3
  99. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +11 -10
  100. package/lib/elements/blocks/job/internal/resource_job.builder.js +9 -6
  101. package/lib/elements/blocks/job/internal/resource_job.js +3 -6
  102. package/lib/elements/blocks/job/job.builder.d.ts +5 -5
  103. package/lib/elements/blocks/job/job.builder.js +7 -7
  104. package/lib/elements/blocks/job/job.js +1 -1
  105. package/lib/elements/blocks/job/job.schema.d.ts +5 -5
  106. package/lib/elements/blocks/job/job.schema.js +3 -3
  107. package/lib/elements/blocks/machine/machine.builder.d.ts +2 -2
  108. package/lib/elements/blocks/machine/machine.builder.js +12 -9
  109. package/lib/elements/blocks/machine/machine.js +7 -7
  110. package/lib/elements/blocks/machine/machine.schema.d.ts +23 -23
  111. package/lib/elements/blocks/machine/machine.schema.js +9 -9
  112. package/lib/elements/blocks/machine/machine_state.builder.d.ts +1 -0
  113. package/lib/elements/blocks/machine/machine_state.builder.js +31 -29
  114. package/lib/elements/blocks/machine/machine_transition.builder.d.ts +2 -2
  115. package/lib/elements/blocks/machine/machine_transition.builder.js +8 -8
  116. package/lib/elements/blocks/queue/queue.builder.d.ts +3 -3
  117. package/lib/elements/blocks/queue/queue.builder.js +3 -3
  118. package/lib/elements/blocks/queue/queue.schema.d.ts +6 -6
  119. package/lib/elements/blocks/queue/queue.schema.js +3 -3
  120. package/lib/elements/blocks/resource/resource.builder.d.ts +2 -2
  121. package/lib/elements/blocks/resource/resource.builder.js +37 -40
  122. package/lib/elements/blocks/resource/resource.d.ts +2 -2
  123. package/lib/elements/blocks/resource/resource.js +10 -18
  124. package/lib/elements/blocks/resource/resource.schema.d.ts +15 -15
  125. package/lib/elements/blocks/resource/resource.schema.js +8 -8
  126. package/lib/elements/blocks/topic/topic.builder.d.ts +2 -2
  127. package/lib/elements/blocks/topic/topic.builder.js +4 -4
  128. package/lib/elements/blocks/topic/topic.d.ts +2 -2
  129. package/lib/elements/blocks/topic/topic.js +7 -7
  130. package/lib/elements/blocks/topic/topic.schema.d.ts +6 -6
  131. package/lib/elements/blocks/topic/topic.schema.js +3 -3
  132. package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +1 -1
  133. package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -2
  134. package/lib/elements/edge/controller/adapters/controller_adapter.js +2 -2
  135. package/lib/elements/edge/controller/controller.builder.d.ts +14 -13
  136. package/lib/elements/edge/controller/controller.builder.js +52 -42
  137. package/lib/elements/edge/controller/controller.d.ts +3 -3
  138. package/lib/elements/edge/controller/controller.js +12 -12
  139. package/lib/elements/edge/controller/controller.schema.d.ts +17 -16
  140. package/lib/elements/edge/controller/controller.schema.js +11 -11
  141. package/lib/elements/edge/externals/externals.builder.d.ts +8 -13
  142. package/lib/elements/edge/externals/externals.builder.js +43 -11
  143. package/lib/elements/edge/externals/externals.schema.d.ts +8 -7
  144. package/lib/elements/edge/externals/externals.schema.js +5 -3
  145. package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.d.ts +45 -0
  146. package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.js +164 -0
  147. package/lib/elements/entities/bucket/adapters/browserdb.service.d.ts +30 -0
  148. package/lib/elements/entities/bucket/adapters/browserdb.service.js +97 -0
  149. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +6 -1
  150. package/lib/elements/entities/bucket/adapters/bucket_adapter.js +7 -6
  151. package/lib/elements/entities/bucket/adapters/json.bucket_adapter.d.ts +1 -1
  152. package/lib/elements/entities/bucket/adapters/json.bucket_adapter.js +1 -0
  153. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +1 -0
  154. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +14 -13
  155. package/lib/elements/entities/bucket/adapters/memory.nql.js +41 -35
  156. package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -8
  157. package/lib/elements/entities/bucket/bucket.builder.js +19 -34
  158. package/lib/elements/entities/bucket/bucket.d.ts +2 -2
  159. package/lib/elements/entities/bucket/bucket.infer.d.ts +5 -5
  160. package/lib/elements/entities/bucket/bucket.js +19 -17
  161. package/lib/elements/entities/bucket/bucket.schema.d.ts +3 -3
  162. package/lib/elements/entities/bucket/bucket.schema.js +2 -2
  163. package/lib/elements/entities/bucket/cache/bucket_cache.js +14 -2
  164. package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +3 -3
  165. package/lib/elements/entities/bucket/graph/bucket_graph.js +101 -29
  166. package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
  167. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
  168. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
  169. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
  170. package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
  171. package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
  172. package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
  173. package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
  174. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
  175. package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
  176. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
  177. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
  178. package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
  179. package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
  180. package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
  181. package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
  182. package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
  183. package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
  184. package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
  185. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
  186. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
  187. package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
  188. package/lib/elements/entities/constants/constants.builder.js +8 -8
  189. package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
  190. package/lib/elements/entities/constants/constants.schema.js +7 -2
  191. package/lib/elements/entities/message/message.infer.d.ts +1 -5
  192. package/lib/elements/entities/message/message.js +2 -7
  193. package/lib/elements/entities/message/message.schema.js +1 -1
  194. package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
  195. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
  196. package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
  197. package/lib/elements/entities/message/template/message_template_parser.js +2 -2
  198. package/lib/engine/{apps → app}/app.config.d.ts +11 -5
  199. package/lib/engine/{apps → app}/app.config.js +2 -2
  200. package/lib/engine/{apps → app}/app.d.ts +3 -2
  201. package/lib/engine/{apps → app}/app.js +3 -1
  202. package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
  203. package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
  204. package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
  205. package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
  206. package/lib/engine/{apps → app}/inline.app.js +37 -34
  207. package/lib/engine/auth/authn.d.ts +10 -12
  208. package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
  209. package/lib/engine/auth/zero.authn_provider.js +0 -1
  210. package/lib/engine/builder.d.ts +28 -0
  211. package/lib/engine/builder.js +99 -0
  212. package/lib/engine/cli/cli.js +3 -2
  213. package/lib/engine/cli/ui.js +1 -0
  214. package/lib/engine/daemon.d.ts +28 -25
  215. package/lib/engine/daemon.js +37 -8
  216. package/lib/engine/data/error.d.ts +37 -3
  217. package/lib/engine/data/error.js +58 -16
  218. package/lib/engine/data/file.d.ts +1 -0
  219. package/lib/engine/data/file.js +4 -0
  220. package/lib/engine/dependency.d.ts +53 -81
  221. package/lib/engine/dependency.js +246 -120
  222. package/lib/engine/module.d.ts +18 -48
  223. package/lib/engine/module.js +78 -158
  224. package/lib/engine/space.d.ts +2 -2
  225. package/lib/engine/space.js +6 -6
  226. package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
  227. package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
  228. package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
  229. package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
  230. package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
  231. package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
  232. package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
  233. package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
  234. package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
  235. package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
  236. package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
  237. package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
  238. package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
  239. package/lib/engine/transaction/trx.d.ts +15 -12
  240. package/lib/engine/transaction/trx.js +19 -3
  241. package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
  242. package/lib/engine/transaction/trx_engine.d.ts +25 -7
  243. package/lib/engine/transaction/trx_engine.js +67 -16
  244. package/lib/engine/transaction/trx_node.d.ts +25 -21
  245. package/lib/engine/transaction/trx_node.js +99 -57
  246. package/lib/engine/tree.d.ts +4 -16
  247. package/lib/engine/tree.js +87 -57
  248. package/lib/{compiler → engine}/treeshake.d.ts +32 -32
  249. package/lib/{compiler → engine}/treeshake.js +272 -242
  250. package/lib/engine/util/console.js +3 -0
  251. package/lib/engine/util/crypto.d.ts +4 -3
  252. package/lib/engine/util/crypto.js +15 -5
  253. package/lib/engine/util/hash.js +5 -0
  254. package/lib/engine/util/log.d.ts +6 -8
  255. package/lib/engine/util/log.js +1 -1
  256. package/lib/engine/util/name_helpers.d.ts +37 -0
  257. package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
  258. package/lib/engine/util/parse.d.ts +4 -3
  259. package/lib/engine/util/parse.js +13 -28
  260. package/lib/engine/util/path.d.ts +1 -0
  261. package/lib/engine/util/path.js +14 -0
  262. package/lib/engine/util/random.d.ts +4 -0
  263. package/lib/engine/util/random.js +31 -0
  264. package/lib/engine/util/type.d.ts +8 -0
  265. package/lib/schema.d.ts +1 -1
  266. package/package.json +4 -1
  267. package/tools/joaquin/bucket.js +1 -1
  268. package/tools/joaquin/job.js +1 -1
  269. package/tools/joaquin/message.js +1 -1
  270. package/tools/joaquin/mock.js +2 -1
  271. package/tsconfig.build.tsbuildinfo +1 -1
  272. package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
  273. package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
  274. package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
  275. package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
  276. package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
  277. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
  278. package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
  279. package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
  280. package/lib/compiler/helpers/name_helpers.d.ts +0 -20
  281. package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
  282. package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
  283. package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
  284. /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
  285. /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
  286. /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
  287. /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
  288. /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
  289. /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
  290. /package/lib/engine/{apps → app}/service.d.ts +0 -0
  291. /package/lib/engine/{apps → app}/service.js +0 -0
@@ -56,7 +56,7 @@ class Bucket {
56
56
  getQueryMeta() {
57
57
  return {
58
58
  ...this.adapter.getQueryMeta(),
59
- bucket: this.schema
59
+ schema: this.schema
60
60
  };
61
61
  }
62
62
  /* CRUD */
@@ -354,12 +354,12 @@ class Bucket {
354
354
  _obj['#composition'] ?? (_obj['#composition'] = {});
355
355
  (_a = _obj['#composition'])[_b = link.name] ?? (_a[_b] = []);
356
356
  for (const linkObjItem of linkObj) {
357
- const child = await trx.bucket(link.bucket.refName).create(linkObjItem);
357
+ const child = await trx.bucket(link.bucket.short).create(linkObjItem);
358
358
  _obj['#composition'][link.name].push(child);
359
359
  }
360
360
  }
361
361
  else {
362
- const child = await trx.bucket(link.bucket.refName).create(linkObj);
362
+ const child = await trx.bucket(link.bucket.short).create(linkObj);
363
363
  _obj['#composition'] ?? (_obj['#composition'] = {});
364
364
  _obj['#composition'][link.name] = child;
365
365
  }
@@ -472,11 +472,11 @@ class Bucket {
472
472
  throw error_1.NesoiError.Bucket.CompositionValueShouldBeArray({ method: 'replace', bucket: this.schema.name, link: link.name });
473
473
  }
474
474
  for (const linkObjItem of linkObj) {
475
- await trx.bucket(link.bucket.refName)[mode](linkObjItem);
475
+ await trx.bucket(link.bucket.short)[mode](linkObjItem);
476
476
  }
477
477
  }
478
478
  else {
479
- await trx.bucket(link.bucket.refName)[mode](linkObj);
479
+ await trx.bucket(link.bucket.short)[mode](linkObj);
480
480
  }
481
481
  }
482
482
  return _obj;
@@ -525,12 +525,12 @@ class Bucket {
525
525
  _obj['#composition'] ?? (_obj['#composition'] = {});
526
526
  (_a = _obj['#composition'])[_b = link.name] ?? (_a[_b] = []);
527
527
  for (const linkObjItem of linkObj) {
528
- const child = await trx.bucket(link.bucket.refName).put(linkObjItem);
528
+ const child = await trx.bucket(link.bucket.short).put(linkObjItem);
529
529
  _obj['#composition'][link.name].push(child);
530
530
  }
531
531
  }
532
532
  else {
533
- const child = await trx.bucket(link.bucket.refName).put(linkObj);
533
+ const child = await trx.bucket(link.bucket.short).put(linkObj);
534
534
  _obj['#composition'] ?? (_obj['#composition'] = {});
535
535
  _obj['#composition'][link.name] = child;
536
536
  }
@@ -608,10 +608,10 @@ class Bucket {
608
608
  if (!linked)
609
609
  continue;
610
610
  if (link.many) {
611
- await trx.bucket(link.bucket.refName).unsafe.deleteMany(linked.map((l) => l.id));
611
+ await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
612
612
  }
613
613
  else {
614
- await trx.bucket(link.bucket.refName).delete(linked.id);
614
+ await trx.bucket(link.bucket.short).delete(linked.id);
615
615
  }
616
616
  }
617
617
  // Delete the object itself
@@ -659,10 +659,10 @@ class Bucket {
659
659
  if (!linked)
660
660
  continue;
661
661
  if (link.many) {
662
- await trx.bucket(link.bucket.refName).unsafe.deleteMany(linked.map((l) => l.id));
662
+ await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
663
663
  }
664
664
  else {
665
- await trx.bucket(link.bucket.refName).unsafe.delete(linked.id);
665
+ await trx.bucket(link.bucket.short).unsafe.delete(linked.id);
666
666
  }
667
667
  }
668
668
  }
@@ -682,10 +682,10 @@ class Bucket {
682
682
  if (!linked)
683
683
  continue;
684
684
  if (link.many) {
685
- await trx.bucket(link.bucket.refName).unsafe.deleteMany(linked.map((l) => l.id));
685
+ await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
686
686
  }
687
687
  else {
688
- await trx.bucket(link.bucket.refName).unsafe.delete(linked.id);
688
+ await trx.bucket(link.bucket.short).unsafe.delete(linked.id);
689
689
  }
690
690
  }
691
691
  }
@@ -738,12 +738,12 @@ class Bucket {
738
738
  if (operation === 'create') {
739
739
  obj[this.adapter.config.meta.created_at] = datetime_1.NesoiDatetime.now();
740
740
  if (match) {
741
- obj[this.adapter.config.meta.created_by] = match.user.id;
741
+ obj[this.adapter.config.meta.created_by] = match.provider + '.' + match.user.id;
742
742
  }
743
743
  }
744
744
  obj[this.adapter.config.meta.updated_at] = datetime_1.NesoiDatetime.now();
745
745
  if (match) {
746
- obj[this.adapter.config.meta.updated_by] = match.user.id;
746
+ obj[this.adapter.config.meta.updated_by] = match.provider + '.' + match.user.id;
747
747
  }
748
748
  }
749
749
  // Tenancy
@@ -751,6 +751,8 @@ class Bucket {
751
751
  if (!this.schema.tenancy)
752
752
  return;
753
753
  const match = trx_node_1.TrxNode.getFirstUserMatch(trx, this.schema.tenancy);
754
+ if (!match)
755
+ return;
754
756
  return this.schema.tenancy[match.provider]?.(match.user);
755
757
  }
756
758
  // Encryption
@@ -758,7 +760,7 @@ class Bucket {
758
760
  for (const key in fields) {
759
761
  const field = fields[key];
760
762
  if (field.crypto) {
761
- const key = trx.value(field.crypto.key);
763
+ const key = trx.value(field.crypto.value.short);
762
764
  const val = tree_1.Tree.get(obj, field.path);
763
765
  if (val !== undefined) {
764
766
  const encrypted = await crypto_1.NesoiCrypto.encrypt(val, key);
@@ -774,7 +776,7 @@ class Bucket {
774
776
  for (const key in fields) {
775
777
  const field = fields[key];
776
778
  if (field.crypto) {
777
- const key = trx.value(field.crypto.key);
779
+ const key = trx.value(field.crypto.value.short);
778
780
  const val = tree_1.Tree.get(obj, field.path);
779
781
  if (val !== undefined) {
780
782
  const encrypted = await crypto_1.NesoiCrypto.decrypt(val, key);
@@ -2,7 +2,7 @@ import { $BucketGraph } from './graph/bucket_graph.schema';
2
2
  import { $BucketViews } from './view/bucket_view.schema';
3
3
  import { $BucketModel } from './model/bucket_model.schema';
4
4
  import { NesoiObj } from "../../../engine/data/obj";
5
- import { $Dependency } from "../../../engine/dependency";
5
+ import { Tag } from "../../../engine/dependency";
6
6
  import { $Module } from "../..";
7
7
  import { NQL_Query } from './query/nql.schema';
8
8
  export type $BucketTenancy<M extends $Module, B extends $Bucket> = {
@@ -20,7 +20,7 @@ export declare class $Bucket {
20
20
  graph: $BucketGraph;
21
21
  views: $BucketViews;
22
22
  tenancy?: $BucketTenancy<any, any> | undefined;
23
- extended?: $Dependency | undefined;
23
+ extendsFrom?: Tag | undefined;
24
24
  $t: "bucket";
25
25
  '#data': NesoiObj;
26
26
  '#composition': Record<string, {
@@ -31,5 +31,5 @@ export declare class $Bucket {
31
31
  '#modelpath': {};
32
32
  '#querypath': {};
33
33
  '#defaults': Record<string, any>;
34
- constructor(module: string, name: string, alias: string, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, tenancy?: $BucketTenancy<any, any> | undefined, extended?: $Dependency | undefined);
34
+ constructor(module: string, name: string, alias: string, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, tenancy?: $BucketTenancy<any, any> | undefined, extendsFrom?: Tag | undefined);
35
35
  }
@@ -6,7 +6,7 @@ exports.$Bucket = void 0;
6
6
  * @subcategory Entity
7
7
  * */
8
8
  class $Bucket {
9
- constructor(module, name, alias, model, graph, views, tenancy, extended) {
9
+ constructor(module, name, alias, model, graph, views, tenancy, extendsFrom) {
10
10
  this.module = module;
11
11
  this.name = name;
12
12
  this.alias = alias;
@@ -14,7 +14,7 @@ class $Bucket {
14
14
  this.graph = graph;
15
15
  this.views = views;
16
16
  this.tenancy = tenancy;
17
- this.extended = extended;
17
+ this.extendsFrom = extendsFrom;
18
18
  this.$t = 'bucket';
19
19
  }
20
20
  }
@@ -89,7 +89,13 @@ class BucketCache {
89
89
  else if (mode === 'all') {
90
90
  const { action, sync } = await this.syncAll(trx);
91
91
  log_1.Log.debug('bucket', this.bucket.schema.name, `CACHE query.all, ${action}`);
92
- const entries = (await this.innerAdapter.query(trx, query, pagination, params, undefined, this.innerAdapter.nql)).data;
92
+ const meta = this.innerAdapter.getQueryMeta();
93
+ const entries = (await this.innerAdapter.query(trx, query, pagination, params, undefined, {
94
+ module: this.bucket.schema.module,
95
+ runners: {
96
+ [meta.scope]: this.innerAdapter.nql
97
+ }
98
+ })).data;
93
99
  data = [];
94
100
  for (const e of entries) {
95
101
  const { __update_epoch, __sync_epoch, ...obj } = e;
@@ -181,9 +187,15 @@ class BucketCache {
181
187
  return { action: 'none', sync: [] };
182
188
  }
183
189
  // 2. Read ids from the inner adapter
190
+ const meta = this.innerAdapter.getQueryMeta();
184
191
  const innerData = await this.innerAdapter.query(trx, {
185
192
  'id in': outerMetadata.data.map(obj => obj.id)
186
- }, undefined, undefined, undefined, this.innerAdapter.nql);
193
+ }, undefined, undefined, undefined, {
194
+ module: this.bucket.schema.module,
195
+ runners: {
196
+ [meta.scope]: this.innerAdapter.nql
197
+ }
198
+ });
187
199
  // 3. Filter modified query results
188
200
  const outerEpoch = {};
189
201
  for (const i in outerMetadata.data) {
@@ -18,7 +18,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
18
18
  * - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
19
19
  * - `no_tenancy`: Don't apply tenancy rules (default: `false`)
20
20
  */
21
- readLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['refName'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, options?: {
21
+ readLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, options?: {
22
22
  silent?: boolean;
23
23
  no_tenancy?: boolean;
24
24
  }): Promise<Obj | Obj[] | undefined>;
@@ -29,7 +29,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
29
29
  * - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
30
30
  * - `no_tenancy`: Don't apply tenancy rules (default: `false`)
31
31
  */
32
- readManyLinks<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['refName'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, objs: $['#data'][], link: LinkName, options?: {
32
+ readManyLinks<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, objs: $['#data'][], link: LinkName, options?: {
33
33
  silent?: boolean;
34
34
  no_tenancy?: boolean;
35
35
  }): Promise<Obj[] | Obj[][]>;
@@ -40,7 +40,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
40
40
  * - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
41
41
  * - `no_tenancy`: Don't apply tenancy rules (default: `false`)
42
42
  */
43
- viewLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['refName'], LinkBucket extends M['buckets'][LinkBucketName], V extends ViewName<LinkBucket>, Obj extends ViewObj<LinkBucket, V>>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, view: V, options?: {
43
+ viewLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], V extends ViewName<LinkBucket>, Obj extends ViewObj<LinkBucket, V>>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, view: V, options?: {
44
44
  silent?: boolean;
45
45
  no_tenancy?: boolean;
46
46
  }): Promise<Obj | Obj[] | undefined>;
@@ -6,6 +6,8 @@ const log_1 = require("../../../../engine/util/log");
6
6
  const error_1 = require("../../../../engine/data/error");
7
7
  const memory_bucket_adapter_1 = require("../adapters/memory.bucket_adapter");
8
8
  const bucket_cache_1 = require("../cache/bucket_cache");
9
+ const daemon_1 = require("../../../../engine/daemon");
10
+ const dependency_1 = require("../../../../engine/dependency");
9
11
  /**
10
12
  * @category Elements
11
13
  * @subcategory Entity
@@ -31,14 +33,29 @@ class BucketGraph {
31
33
  ? undefined
32
34
  : this.bucket.getTenancyQuery(trx);
33
35
  // Query
34
- const otherBucket = trx_node_1.TrxNode.getModule(trx).buckets[schema.bucket.refName];
35
- const adapter = otherBucket.cache || otherBucket.adapter;
36
- const links = await adapter.query(trx, {
36
+ const module = trx_node_1.TrxNode.getModule(trx);
37
+ const query = {
37
38
  ...schema.query,
38
39
  '#and __tenancy__': tenancy
39
- }, {
40
+ };
41
+ const params = [{ ...obj }];
42
+ const page = {
40
43
  perPage: schema.many ? undefined : 1,
41
- }, [{ ...obj }]);
44
+ };
45
+ // External
46
+ let links;
47
+ if (schema.bucket.module !== module.name) {
48
+ links = await trx.bucket(schema.bucket.short)
49
+ .query(query)
50
+ .params(params)
51
+ .page(page);
52
+ }
53
+ // Internal
54
+ else {
55
+ const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
56
+ const adapter = otherBucket.cache || otherBucket.adapter;
57
+ links = await adapter.query(trx, query, page, params);
58
+ }
42
59
  // Empty response
43
60
  if (!schema.many && !schema.optional && !links.data.length) {
44
61
  // silent = undefined
@@ -75,23 +92,41 @@ class BucketGraph {
75
92
  ? undefined
76
93
  : this.bucket.getTenancyQuery(trx);
77
94
  // Query
78
- const otherBucket = trx_node_1.TrxNode.getModule(trx).buckets[schema.bucket.refName];
79
- // let tempData: Record<string, any> = {};
95
+ const module = trx_node_1.TrxNode.getModule(trx);
96
+ const query = {
97
+ ...schema.query,
98
+ '#and __tenancy__': tenancy
99
+ };
100
+ const params = objs.map(obj => ({ ...obj }));
80
101
  let tempAdapter;
81
- if (otherBucket.adapter instanceof memory_bucket_adapter_1.MemoryBucketAdapter) {
82
- tempAdapter = otherBucket.cache || otherBucket.adapter;
83
- }
84
- else {
85
- const adapter = otherBucket.cache || otherBucket.adapter;
86
- const allLinks = await adapter.query(trx, {
87
- ...schema.query,
88
- '#and __tenancy__': tenancy
89
- }, undefined, objs.map(obj => ({ ...obj })));
102
+ // External
103
+ if (schema.bucket.module !== module.name) {
104
+ const allLinks = await trx.bucket(schema.bucket.short)
105
+ .query(query)
106
+ .params(params)
107
+ .all();
90
108
  const tempData = {};
91
- for (const obj of allLinks.data)
109
+ for (const obj of allLinks)
92
110
  tempData[obj.id] = obj;
111
+ const otherBucket = await daemon_1.Daemon.getBucketMetadata(module.daemon, schema.bucket);
93
112
  tempAdapter = new memory_bucket_adapter_1.MemoryBucketAdapter(otherBucket.schema, tempData);
94
113
  }
114
+ // Internal
115
+ else {
116
+ const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
117
+ if (otherBucket.adapter instanceof memory_bucket_adapter_1.MemoryBucketAdapter) {
118
+ tempAdapter = otherBucket.cache || otherBucket.adapter;
119
+ }
120
+ else {
121
+ const adapter = otherBucket.cache || otherBucket.adapter;
122
+ const allLinks = await adapter.query(trx, query, undefined, params);
123
+ const tempData = {};
124
+ for (const obj of allLinks.data)
125
+ tempData[obj.id] = obj;
126
+ tempAdapter = new memory_bucket_adapter_1.MemoryBucketAdapter(otherBucket.schema, tempData);
127
+ }
128
+ }
129
+ // Query
95
130
  const links = [];
96
131
  for (const obj of objs) {
97
132
  const result = tempAdapter instanceof bucket_cache_1.BucketCache
@@ -100,7 +135,18 @@ class BucketGraph {
100
135
  }, [{ ...obj }], undefined)
101
136
  : await tempAdapter.query(trx, schema.query, {
102
137
  perPage: schema.many ? undefined : 1,
103
- }, [{ ...obj }], undefined, tempAdapter.nql);
138
+ }, [{ ...obj }], undefined, {
139
+ module: schema.bucket.module,
140
+ runners: {
141
+ [tempAdapter.getQueryMeta().scope]: tempAdapter.nql
142
+ },
143
+ metadata: {
144
+ ...tempAdapter.getQueryMeta(),
145
+ schema: tempAdapter.schema,
146
+ tag: schema.bucket,
147
+ meta: tempAdapter.config.meta
148
+ }
149
+ });
104
150
  if (schema.many) {
105
151
  links.push(result.data);
106
152
  }
@@ -121,19 +167,28 @@ class BucketGraph {
121
167
  async viewLink(trx, obj, link, view, options) {
122
168
  log_1.Log.trace('bucket', this.bucketName, `Read link ${link}`);
123
169
  const schema = this.schema.links[link];
124
- const otherBucket = trx_node_1.TrxNode.getModule(trx).buckets[schema.bucket.refName];
125
170
  const links = await this.readLink(trx, obj, link, options);
126
171
  if (!links)
127
172
  return undefined;
128
- if (Array.isArray(links)) {
129
- const output = [];
130
- for (const link of links) {
131
- output.push(await otherBucket.buildOne(trx, link, view));
173
+ const module = trx_node_1.TrxNode.getModule(trx);
174
+ // External
175
+ if (schema.bucket.module !== module.name) {
176
+ if (Array.isArray(links)) {
177
+ return trx.bucket(schema.bucket.short).buildMany(links, view);
178
+ }
179
+ else {
180
+ return await trx.bucket(schema.bucket.short).buildOne(links, view);
132
181
  }
133
- return output;
134
182
  }
183
+ // Internal
135
184
  else {
136
- return await otherBucket.buildOne(trx, links, view);
185
+ const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
186
+ if (Array.isArray(links)) {
187
+ return await otherBucket.buildMany(trx, links, view);
188
+ }
189
+ else {
190
+ return await otherBucket.buildOne(trx, links, view);
191
+ }
137
192
  }
138
193
  }
139
194
  /**
@@ -151,12 +206,29 @@ class BucketGraph {
151
206
  ? undefined
152
207
  : this.bucket.getTenancyQuery(trx);
153
208
  // Query
154
- const links = await this.bucket.adapter.query(trx, {
209
+ const module = trx_node_1.TrxNode.getModule(trx);
210
+ const query = {
155
211
  ...schema.query,
156
- '#and __tenancy__': tenancy
157
- }, {
212
+ '#and__tenancy__': tenancy
213
+ };
214
+ const params = [{ ...obj }];
215
+ const page = {
158
216
  perPage: 1,
159
- }, [{ ...obj }]);
217
+ };
218
+ // External
219
+ let links;
220
+ if (schema.bucket.module !== module.name) {
221
+ links = await trx.bucket(schema.bucket.short)
222
+ .query(query)
223
+ .params(params)
224
+ .page(page);
225
+ }
226
+ // Internal
227
+ else {
228
+ const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
229
+ const adapter = otherBucket.cache || otherBucket.adapter;
230
+ links = await adapter.query(trx, query, page, params);
231
+ }
160
232
  return !!links.data.length;
161
233
  }
162
234
  }
@@ -1,4 +1,4 @@
1
- import { $Dependency } from "../../../../engine/dependency";
1
+ import { Tag } from "../../../../engine/dependency";
2
2
  import { $Bucket } from '../bucket.schema';
3
3
  import { NQL_AnyQuery } from '../query/nql.schema';
4
4
  /**
@@ -8,7 +8,7 @@ import { NQL_AnyQuery } from '../query/nql.schema';
8
8
  export declare class $BucketGraphLink {
9
9
  name: string;
10
10
  alias: string;
11
- bucket: $Dependency;
11
+ bucket: Tag;
12
12
  rel: 'aggregation' | 'composition';
13
13
  many: boolean;
14
14
  optional: boolean;
@@ -17,7 +17,7 @@ export declare class $BucketGraphLink {
17
17
  $t: string;
18
18
  '#bucket': $Bucket;
19
19
  '#many': boolean;
20
- constructor(name: string, alias: string, bucket: $Dependency, rel: 'aggregation' | 'composition', many: boolean, optional: boolean, keyOwner: 'self' | 'other' | 'pivot', query: NQL_AnyQuery);
20
+ constructor(name: string, alias: string, bucket: Tag, rel: 'aggregation' | 'composition', many: boolean, optional: boolean, keyOwner: 'self' | 'other' | 'pivot', query: NQL_AnyQuery);
21
21
  }
22
22
  export type $BucketGraphLinks = {
23
23
  [x: string]: $BucketGraphLink;
@@ -1,7 +1,7 @@
1
1
  import { $Module } from "../../../../schema";
2
2
  import { $BucketGraphLink } from './bucket_graph.schema';
3
3
  import { BucketBuilderNode } from '../bucket.builder';
4
- import { $Dependency } from "../../../../engine/dependency";
4
+ import { Dependency } from "../../../../engine/dependency";
5
5
  import { $Bucket } from '../bucket.schema';
6
6
  import { NQL_AnyQuery, NQL_Query } from '../query/nql.schema';
7
7
  /**
@@ -30,7 +30,7 @@ export declare class BucketGraphLinkBuilder<Module extends $Module, SelfBucket e
30
30
  private alias?;
31
31
  '#other': OtherBucket;
32
32
  private _optional;
33
- constructor(bucket: $Dependency, rel: 'aggregation' | 'composition', query: NQL_AnyQuery, many: boolean, alias?: string | undefined);
33
+ constructor(bucket: Dependency, rel: 'aggregation' | 'composition', query: NQL_AnyQuery, many: boolean, alias?: string | undefined);
34
34
  as(alias: string): this;
35
35
  get optional(): this;
36
36
  static build(node: BucketBuilderNode, builder: BucketGraphLinkBuilder<any, any, any>, name: string): $BucketGraphLink;
@@ -25,10 +25,12 @@ class BucketGraphLinkFactory {
25
25
  return self;
26
26
  }
27
27
  one(bucket, query) {
28
- return new BucketGraphLinkBuilder(new dependency_1.$Dependency(this.module, 'bucket', bucket, true), this.type, query, false, this.alias);
28
+ const tag = dependency_1.Tag.fromNameOrShort(this.module, 'bucket', bucket);
29
+ return new BucketGraphLinkBuilder(new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true }), this.type, query, false, this.alias);
29
30
  }
30
31
  many(bucket, query) {
31
- return new BucketGraphLinkBuilder(new dependency_1.$Dependency(this.module, 'bucket', bucket, true), this.type, query, true, this.alias);
32
+ const tag = dependency_1.Tag.fromNameOrShort(this.module, 'bucket', bucket);
33
+ return new BucketGraphLinkBuilder(new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true }), this.type, query, true, this.alias);
32
34
  }
33
35
  }
34
36
  exports.BucketGraphLinkFactory = BucketGraphLinkFactory;
@@ -57,7 +59,7 @@ class BucketGraphLinkBuilder {
57
59
  return this;
58
60
  }
59
61
  static build(node, builder, name) {
60
- return new bucket_graph_schema_1.$BucketGraphLink(name, builder.alias || name, builder.bucket, builder.rel, builder.many, builder._optional, this.inferKeyOwner(builder.query), builder.query);
62
+ return new bucket_graph_schema_1.$BucketGraphLink(name, builder.alias || name, builder.bucket.tag, builder.rel, builder.many, builder._optional, this.inferKeyOwner(builder.query), builder.query);
61
63
  }
62
64
  static inferKeyOwner(query) {
63
65
  const keyOwner = 'self';
@@ -1,6 +1,7 @@
1
1
  import { $Module, $Space } from "../../../../schema";
2
2
  import { $BucketModel } from './bucket_model.schema';
3
3
  import { BucketModelFieldBuilder, BucketModelFieldBuilders, BucketModelFieldFactory } from './bucket_model_field.builder';
4
+ import { ModuleTree } from "../../../../engine/tree";
4
5
  /**
5
6
  * @category Builders
6
7
  * @subcategory Entity
@@ -10,7 +11,7 @@ export declare class BucketModelBuilder<Module extends $Module> {
10
11
  constructor(module: string);
11
12
  private builders;
12
13
  fields(builders: BucketModelFieldBuilders<Module>): this;
13
- static build(builder: BucketModelBuilder<any>): $BucketModel;
14
+ static build(builder: BucketModelBuilder<any>, tree: ModuleTree): $BucketModel;
14
15
  }
15
16
  export type BucketModelDef<Space extends $Space, Module extends $Module> = ($: BucketModelFieldFactory<Space, Module>) => {
16
17
  id: BucketModelFieldBuilder<Module, any, any, any, any, any>;
@@ -20,8 +20,8 @@ class BucketModelBuilder {
20
20
  return this;
21
21
  }
22
22
  // Build
23
- static build(builder) {
24
- const fields = bucket_model_field_builder_1.BucketModelFieldBuilder.buildChildren(builder.module, builder.builders);
23
+ static build(builder, tree) {
24
+ const fields = bucket_model_field_builder_1.BucketModelFieldBuilder.buildChildren(tree, builder.module, builder.builders);
25
25
  return new bucket_model_schema_1.$BucketModel(fields.schema, fields.defaults, fields.hasFileField, fields.hasEncryptedField);
26
26
  }
27
27
  }
@@ -8,7 +8,6 @@ const message_template_schema_1 = require("../../message/template/message_templa
8
8
  const bucket_graph_schema_1 = require("../graph/bucket_graph.schema");
9
9
  const bucket_view_field_builder_1 = require("../view/bucket_view_field.builder");
10
10
  const message_schema_1 = require("../../message/message.schema");
11
- const dependency_1 = require("../../../../engine/dependency");
12
11
  /**
13
12
  * @category Elements
14
13
  * @subcategory Entity
@@ -28,7 +27,8 @@ function convertToView(model, name, fields = model.fields, path, depth = 0) {
28
27
  }
29
28
  return viewFields;
30
29
  };
31
- return new bucket_view_schema_1.$BucketView(name, convertFields(fields));
30
+ const v = new bucket_view_schema_1.$BucketView(name, convertFields(fields));
31
+ return v;
32
32
  }
33
33
  /**
34
34
  * @category Elements
@@ -37,10 +37,7 @@ function convertToView(model, name, fields = model.fields, path, depth = 0) {
37
37
  function convertToMessage(module, model, name, alias, include = [], exclude = [], optional = []) {
38
38
  const convertField = (field) => {
39
39
  return new message_template_schema_1.$MessageTemplateField(field.type, field.name, field.alias, field.path, field.path, optional.includes(field.path) ? false : field.required, undefined, false, [], {
40
- enum: field.meta?.enum ? {
41
- options: field.meta.enum.options,
42
- dep: field.meta.enum.dep ? new dependency_1.$Dependency(module, 'constants', `${field.meta.enum.dep.module}::${field.meta.enum.dep.name}`) : undefined
43
- } : undefined
40
+ enum: field.meta?.enum
44
41
  }, field.children ? convertFields(field.children, include, exclude, optional) : undefined);
45
42
  };
46
43
  const convertFields = (fields, include = [], exclude = [], optional = [], root = '') => {
@@ -0,0 +1,13 @@
1
+ import { $Module, $Bucket } from "../../..";
2
+ import { BucketAdapterConfig } from '../adapters/bucket_adapter';
3
+ /**
4
+ * @category Elements
5
+ * @subcategory Entity
6
+ * */
7
+ export declare class BucketModel<M extends $Module, $ extends $Bucket> {
8
+ private config?;
9
+ private alias;
10
+ private schema;
11
+ constructor(bucket: $Bucket, config?: BucketAdapterConfig | undefined);
12
+ copy<T extends Record<string, any>>(obj: T): T;
13
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BucketModel = void 0;
4
+ const error_1 = require("../../../../engine/data/error");
5
+ /**
6
+ * @category Elements
7
+ * @subcategory Entity
8
+ * */
9
+ class BucketModel {
10
+ constructor(bucket, config) {
11
+ this.config = config;
12
+ this.alias = bucket.alias;
13
+ this.schema = bucket.model;
14
+ }
15
+ copy(obj) {
16
+ const meta = this.config?.meta || {
17
+ created_at: 'created_at',
18
+ created_by: 'created_by',
19
+ updated_at: 'updated_at',
20
+ updated_by: 'updated_by',
21
+ };
22
+ const copy = {};
23
+ let poll = Object.entries(this.schema.fields).map(([path, field]) => ({ path, obj, copy, field }));
24
+ while (poll.length) {
25
+ const next = [];
26
+ for (const entry of poll) {
27
+ const val = entry.obj[entry.path];
28
+ if (val === undefined) {
29
+ continue;
30
+ }
31
+ if (val === null) {
32
+ entry.copy[entry.path] = null;
33
+ continue;
34
+ }
35
+ if (entry.field.type === 'list') {
36
+ if (!Array.isArray(val))
37
+ continue;
38
+ entry.copy[entry.path] = [];
39
+ next.push(...val.map((_, i) => ({
40
+ path: i.toString(),
41
+ obj: val,
42
+ copy: entry.copy[entry.path],
43
+ field: entry.field.children['#']
44
+ })));
45
+ }
46
+ else if (entry.field.type === 'dict') {
47
+ if (typeof val !== 'object' || Array.isArray(val))
48
+ continue;
49
+ entry.copy[entry.path] = {};
50
+ next.push(...Object.keys(val).map((path) => ({
51
+ path,
52
+ obj: val,
53
+ copy: entry.copy[entry.path],
54
+ field: entry.field.children['#']
55
+ })));
56
+ }
57
+ else if (entry.field.type === 'obj') {
58
+ if (typeof val !== 'object' || Array.isArray(val))
59
+ continue;
60
+ entry.copy[entry.path] = {};
61
+ next.push(...Object.keys(entry.field.children).map(path => ({
62
+ path: path,
63
+ obj: val,
64
+ copy: entry.copy[entry.path],
65
+ field: entry.field.children[path]
66
+ })));
67
+ }
68
+ else if (entry.field.type === 'union') {
69
+ // TODO: ??????????
70
+ entry.copy[entry.path] = entry.obj[entry.path];
71
+ }
72
+ else if (entry.field.type === 'enum') {
73
+ const v = entry.obj[entry.path];
74
+ const options = entry.field.meta.enum.options;
75
+ if (!(v in options)) {
76
+ throw error_1.NesoiError.Bucket.Model.InvalidEnum({ bucket: this.alias, value: v, options: Object.keys(options) });
77
+ }
78
+ entry.copy[entry.path] = entry.obj[entry.path];
79
+ }
80
+ else {
81
+ entry.copy[entry.path] = entry.obj[entry.path];
82
+ }
83
+ }
84
+ poll = next;
85
+ }
86
+ copy[meta.created_at] = obj[meta.created_at];
87
+ copy[meta.created_by] = obj[meta.created_by];
88
+ copy[meta.updated_at] = obj[meta.updated_at];
89
+ copy[meta.updated_by] = obj[meta.updated_by];
90
+ return copy;
91
+ }
92
+ }
93
+ exports.BucketModel = BucketModel;