nesoi 3.2.8 → 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 +24 -22
  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 +102 -30
  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
@@ -4,15 +4,25 @@ exports.BucketDriveTrxNode = exports.BucketUnsafeTrxNode = exports.BucketTrxNode
4
4
  const trx_node_1 = require("../trx_node");
5
5
  const bucket_query_trx_node_1 = require("./bucket_query.trx_node");
6
6
  const error_1 = require("../../data/error");
7
+ const dependency_1 = require("../../dependency");
8
+ const external_trx_node_1 = require("./external.trx_node");
7
9
  /**
8
10
  * @category Engine
9
11
  * @subcategory Transaction
10
12
  */
11
13
  class BucketTrxNode {
12
- constructor(parentTrx, bucket) {
13
- this.parentTrx = parentTrx;
14
- this.bucket = bucket;
14
+ constructor(trx, tag) {
15
+ this.trx = trx;
16
+ this.tag = tag;
15
17
  this.enableTenancy = true;
18
+ const module = trx_node_1.TrxNode.getModule(trx);
19
+ this.external = tag.module !== module.name;
20
+ if (!this.external) {
21
+ this.bucket = dependency_1.Tag.element(tag, trx);
22
+ if (!this.bucket) {
23
+ throw error_1.NesoiError.Trx.NodeNotFound(this.tag.full, trx.globalId);
24
+ }
25
+ }
16
26
  }
17
27
  /*
18
28
  Modifiers
@@ -25,17 +35,26 @@ class BucketTrxNode {
25
35
  Wrap
26
36
  */
27
37
  async wrap(action, input, fn, fmtTrxOut) {
28
- const trx = trx_node_1.TrxNode.makeChildNode(this.parentTrx, this.bucket.schema.module, 'bucket', this.bucket.schema.name);
29
- await trx_node_1.TrxNode.open(trx, action, input);
30
- let out;
31
- try {
32
- out = await fn(trx);
38
+ const wrapped = async (parentTrx, bucket) => {
39
+ const trx = trx_node_1.TrxNode.makeChildNode(parentTrx, bucket.schema.module, 'bucket', bucket.schema.name);
40
+ trx_node_1.TrxNode.open(trx, action, input);
41
+ let out;
42
+ try {
43
+ out = await fn(trx, bucket);
44
+ }
45
+ catch (e) {
46
+ throw trx_node_1.TrxNode.error(trx, e);
47
+ }
48
+ trx_node_1.TrxNode.ok(trx, fmtTrxOut ? fmtTrxOut(out) : out);
49
+ return out;
50
+ };
51
+ if (this.external) {
52
+ const ext = new external_trx_node_1.ExternalTrxNode(this.trx, this.tag);
53
+ return ext.run(trx => dependency_1.Tag.element(this.tag, trx), wrapped);
33
54
  }
34
- catch (e) {
35
- throw await trx_node_1.TrxNode.error(trx, e);
55
+ else {
56
+ return wrapped(this.trx, this.bucket);
36
57
  }
37
- await trx_node_1.TrxNode.ok(trx, fmtTrxOut ? fmtTrxOut(out) : out);
38
- return out;
39
58
  }
40
59
  /*
41
60
  Read/View One
@@ -45,7 +64,7 @@ class BucketTrxNode {
45
64
  * or `undefined` if the object was not found.
46
65
  */
47
66
  async readOne(id) {
48
- return this.wrap('readOne', { id }, trx => this.bucket.readOne(trx, id, {
67
+ return this.wrap('readOne', { id }, (trx, bucket) => bucket.readOne(trx, id, {
49
68
  silent: true,
50
69
  no_tenancy: !this.enableTenancy
51
70
  }));
@@ -57,7 +76,7 @@ class BucketTrxNode {
57
76
  * the raw obj, it's recommended to use `readOne` instead.
58
77
  */
59
78
  async viewOne(id, view = 'default') {
60
- return this.wrap('viewOne', { id }, trx => this.bucket.viewOne(trx, id, view, {
79
+ return this.wrap('viewOne', { id }, (trx, bucket) => bucket.viewOne(trx, id, view, {
61
80
  silent: true,
62
81
  no_tenancy: !this.enableTenancy
63
82
  }));
@@ -67,7 +86,7 @@ class BucketTrxNode {
67
86
  * or **throws an exception** if the object was not found.
68
87
  */
69
88
  async readOneOrFail(id) {
70
- return this.wrap('readOneOrFail', { id }, trx => this.bucket.readOne(trx, id, {
89
+ return this.wrap('readOneOrFail', { id }, (trx, bucket) => bucket.readOne(trx, id, {
71
90
  no_tenancy: !this.enableTenancy
72
91
  }));
73
92
  }
@@ -78,7 +97,7 @@ class BucketTrxNode {
78
97
  * the raw obj, it's recommended to use `readOneOrFail` instead.
79
98
  */
80
99
  async viewOneOrFail(id, view = 'default') {
81
- return this.wrap('viewOneOrFail', { id }, trx => this.bucket.viewOne(trx, id, view, {
100
+ return this.wrap('viewOneOrFail', { id }, (trx, bucket) => bucket.viewOne(trx, id, view, {
82
101
  no_tenancy: !this.enableTenancy
83
102
  }));
84
103
  }
@@ -89,7 +108,7 @@ class BucketTrxNode {
89
108
  * Returns a list of all objects, without pre-formatting.
90
109
  */
91
110
  async readAll() {
92
- return this.wrap('readAll', {}, trx => this.bucket.readAll(trx, {
111
+ return this.wrap('readAll', {}, (trx, bucket) => bucket.readAll(trx, {
93
112
  no_tenancy: !this.enableTenancy
94
113
  }), objs => ({ length: objs.length }));
95
114
  }
@@ -99,7 +118,7 @@ class BucketTrxNode {
99
118
  * the raw obj, it's recommended to use `readAll` instead.
100
119
  */
101
120
  async viewAll(view = 'default') {
102
- return this.wrap('viewAll', {}, trx => this.bucket.viewAll(trx, view, {
121
+ return this.wrap('viewAll', {}, (trx, bucket) => bucket.viewAll(trx, view, {
103
122
  no_tenancy: !this.enableTenancy
104
123
  }), objs => ({ length: objs.length }));
105
124
  }
@@ -110,15 +129,13 @@ class BucketTrxNode {
110
129
  * Returns a list containing the results of the query.
111
130
  */
112
131
  query(query) {
113
- const trx = trx_node_1.TrxNode.makeChildNode(this.parentTrx, this.bucket.schema.module, 'bucket', this.bucket.schema.name);
114
- return new bucket_query_trx_node_1.BucketQueryTrxNode(trx, this.bucket, query, this.enableTenancy);
132
+ return new bucket_query_trx_node_1.BucketQueryTrxNode(this.trx, this.tag, query, this.enableTenancy);
115
133
  }
116
134
  /**
117
135
  * Returns a list containing the results of the query built with a view.
118
136
  */
119
137
  viewQuery(query, view = 'default') {
120
- const trx = trx_node_1.TrxNode.makeChildNode(this.parentTrx, this.bucket.schema.module, 'bucket', this.bucket.schema.name);
121
- return new bucket_query_trx_node_1.BucketQueryTrxNode(trx, this.bucket, query, this.enableTenancy, view);
138
+ return new bucket_query_trx_node_1.BucketQueryTrxNode(this.trx, this.tag, query, this.enableTenancy, view);
122
139
  }
123
140
  /*
124
141
  Graph
@@ -128,7 +145,7 @@ class BucketTrxNode {
128
145
  * or `undefined` if the graph link doesn't resolve.
129
146
  */
130
147
  async readLink(id, link) {
131
- return this.wrap('readLink', { id, link }, trx => this.bucket.readLink(trx, id, link, {
148
+ return this.wrap('readLink', { id, link }, (trx, bucket) => bucket.readLink(trx, id, link, {
132
149
  silent: true,
133
150
  no_tenancy: !this.enableTenancy
134
151
  }));
@@ -138,7 +155,7 @@ class BucketTrxNode {
138
155
  * or `undefined` if the graph link doesn't resolve.
139
156
  */
140
157
  async readManyLinks(ids, link) {
141
- return this.wrap('readLinks', { ids, link }, trx => this.bucket.readManyLinks(trx, ids, link, {
158
+ return this.wrap('readLinks', { ids, link }, (trx, bucket) => bucket.readManyLinks(trx, ids, link, {
142
159
  silent: true,
143
160
  no_tenancy: !this.enableTenancy
144
161
  }));
@@ -148,7 +165,7 @@ class BucketTrxNode {
148
165
  * or `undefined` if the graph link doesn't resolve.
149
166
  */
150
167
  async viewLink(id, link, view = 'default') {
151
- return this.wrap('viewLink', { id, link, view }, trx => this.bucket.viewLink(trx, id, link, view, {
168
+ return this.wrap('viewLink', { id, link, view }, (trx, bucket) => bucket.viewLink(trx, id, link, view, {
152
169
  silent: true,
153
170
  no_tenancy: !this.enableTenancy
154
171
  }));
@@ -158,7 +175,7 @@ class BucketTrxNode {
158
175
  * or **throws an exception** if the graph link doesn't resolve.
159
176
  */
160
177
  async readLinkOrFail(id, link) {
161
- return this.wrap('readLinkOrFail', { id, link }, trx => this.bucket.readLink(trx, id, link, {
178
+ return this.wrap('readLinkOrFail', { id, link }, (trx, bucket) => bucket.readLink(trx, id, link, {
162
179
  no_tenancy: !this.enableTenancy
163
180
  }));
164
181
  }
@@ -167,7 +184,7 @@ class BucketTrxNode {
167
184
  * or **throws an exception** if the graph link doesn't resolve.
168
185
  */
169
186
  async viewLinkOrFail(id, link, view = 'default') {
170
- return this.wrap('viewLinkOrFail', { id, link, view }, trx => this.bucket.viewLink(trx, id, link, view, {
187
+ return this.wrap('viewLinkOrFail', { id, link, view }, (trx, bucket) => bucket.viewLink(trx, id, link, view, {
171
188
  no_tenancy: !this.enableTenancy
172
189
  }));
173
190
  }
@@ -175,7 +192,7 @@ class BucketTrxNode {
175
192
  * Returns `true` if the graph link resolves to at least 1 object.
176
193
  */
177
194
  async hasLink(id, link) {
178
- return this.wrap('hasLink', { id, link }, trx => this.bucket.hasLink(trx, id, link, {
195
+ return this.wrap('hasLink', { id, link }, (trx, bucket) => bucket.hasLink(trx, id, link, {
179
196
  no_tenancy: !this.enableTenancy
180
197
  }));
181
198
  }
@@ -190,7 +207,7 @@ class BucketTrxNode {
190
207
  * - If `#composition` is wrong, this will throw an exception
191
208
  */
192
209
  async create(obj) {
193
- return this.wrap('create', { obj }, trx => this.bucket.create(trx, obj), () => undefined);
210
+ return this.wrap('create', { obj }, (trx, bucket) => bucket.create(trx, obj), () => undefined);
194
211
  }
195
212
  /*
196
213
  Update (Patch, Replace)
@@ -207,7 +224,7 @@ class BucketTrxNode {
207
224
  * you can use `unsafe.patch`, which doesn't read prior to writing.
208
225
  */
209
226
  async patch(obj) {
210
- return this.wrap('patch', { obj }, trx => this.bucket.update(trx, obj, {
227
+ return this.wrap('patch', { obj }, (trx, bucket) => bucket.update(trx, obj, {
211
228
  mode: 'patch',
212
229
  no_tenancy: !this.enableTenancy
213
230
  }), () => undefined);
@@ -224,7 +241,7 @@ class BucketTrxNode {
224
241
  * you can use `unsafe.replace`, which doesn't read prior to writing.
225
242
  */
226
243
  async replace(obj) {
227
- return this.wrap('replace', { obj }, trx => this.bucket.update(trx, obj, {
244
+ return this.wrap('replace', { obj }, (trx, bucket) => bucket.update(trx, obj, {
228
245
  mode: 'replace',
229
246
  no_tenancy: !this.enableTenancy
230
247
  }), () => undefined);
@@ -244,7 +261,7 @@ class BucketTrxNode {
244
261
  * **WARNING** Tenancy currently not implemented for put.
245
262
  */
246
263
  async put(obj) {
247
- return this.wrap('put', { obj }, trx => this.bucket.put(trx, obj), () => undefined);
264
+ return this.wrap('put', { obj }, (trx, bucket) => bucket.put(trx, obj), () => undefined);
248
265
  }
249
266
  /**
250
267
  * Create, replace or delete all the objects passed as an argument.
@@ -259,13 +276,13 @@ class BucketTrxNode {
259
276
  * **WARNING** Tenancy currently not implemented for put.
260
277
  */
261
278
  async sync(objs) {
262
- return this.wrap('put', { objs }, async (trx) => {
279
+ return this.wrap('put', { objs }, async (trx, bucket) => {
263
280
  for (const obj of objs) {
264
281
  if (obj.id && obj.__delete) {
265
- await this.bucket.delete(trx, obj.id);
282
+ await bucket.delete(trx, obj.id);
266
283
  }
267
284
  else {
268
- await this.bucket.put(trx, obj);
285
+ await bucket.put(trx, obj);
269
286
  }
270
287
  }
271
288
  }, () => undefined);
@@ -280,7 +297,7 @@ class BucketTrxNode {
280
297
  * so the behavior depends on the bucket used.
281
298
  */
282
299
  async delete(id) {
283
- return this.wrap('delete', { id }, trx => this.bucket.delete(trx, id, {
300
+ return this.wrap('delete', { id }, (trx, bucket) => bucket.delete(trx, id, {
284
301
  no_tenancy: !this.enableTenancy
285
302
  }), () => undefined);
286
303
  }
@@ -291,7 +308,7 @@ class BucketTrxNode {
291
308
  * so the behavior depends on the bucket used.
292
309
  */
293
310
  async deleteMany(ids) {
294
- return this.wrap('deleteMany', { ids }, trx => this.bucket.deleteMany(trx, ids, {
311
+ return this.wrap('deleteMany', { ids }, (trx, bucket) => bucket.deleteMany(trx, ids, {
295
312
  no_tenancy: !this.enableTenancy
296
313
  }), () => undefined);
297
314
  }
@@ -299,10 +316,10 @@ class BucketTrxNode {
299
316
  Build
300
317
  */
301
318
  async buildOne(obj, view) {
302
- return this.wrap('buildOne', { obj }, trx => this.bucket.buildOne(trx, obj, view), () => undefined);
319
+ return this.wrap('buildOne', { obj }, (trx, bucket) => bucket.buildOne(trx, obj, view), () => undefined);
303
320
  }
304
321
  async buildMany(objs, view) {
305
- return this.wrap('buildMany', { objs }, trx => this.bucket.buildMany(trx, objs, view), () => undefined);
322
+ return this.wrap('buildMany', { objs }, (trx, bucket) => bucket.buildMany(trx, objs, view), () => undefined);
306
323
  }
307
324
  /*
308
325
  Drive
@@ -311,6 +328,9 @@ class BucketTrxNode {
311
328
  * Methods to use the Bucket's drive (file storage).
312
329
  */
313
330
  get drive() {
331
+ if (!this.bucket) {
332
+ throw new Error('Drive not supported for external buckets');
333
+ }
314
334
  return new BucketDriveTrxNode(this, this.bucket);
315
335
  }
316
336
  /*
@@ -323,6 +343,9 @@ class BucketTrxNode {
323
343
  * **Use it carefully.**
324
344
  */
325
345
  get unsafe() {
346
+ if (!this.bucket) {
347
+ throw new Error('Unsafe mode not allowed for external buckets');
348
+ }
326
349
  return new BucketUnsafeTrxNode(this, this.bucket, this.enableTenancy);
327
350
  }
328
351
  }
@@ -358,7 +381,7 @@ class BucketUnsafeTrxNode {
358
381
  * - If `#composition` is wrong, this will throw an exception
359
382
  */
360
383
  async patch(obj) {
361
- return this.bucketTrx.wrap('patch', { obj }, trx => this.bucket.update(trx, obj, {
384
+ return this.bucketTrx.wrap('patch', { obj }, (trx, bucket) => bucket.update(trx, obj, {
362
385
  mode: 'patch',
363
386
  unsafe: true,
364
387
  no_tenancy: !this.enableTenancy
@@ -375,7 +398,7 @@ class BucketUnsafeTrxNode {
375
398
  * - If `#composition` is wrong, this will throw an exception
376
399
  */
377
400
  async replace(obj) {
378
- return this.bucketTrx.wrap('replace', { obj }, trx => this.bucket.update(trx, obj, {
401
+ return this.bucketTrx.wrap('replace', { obj }, (trx, bucket) => bucket.update(trx, obj, {
379
402
  mode: 'replace',
380
403
  unsafe: true,
381
404
  no_tenancy: !this.enableTenancy
@@ -390,7 +413,7 @@ class BucketUnsafeTrxNode {
390
413
  * > This unsafe version does not check if the object exists prior to deleting.
391
414
  */
392
415
  async delete(id) {
393
- return this.bucketTrx.wrap('delete', { id }, trx => this.bucket.delete(trx, id, {
416
+ return this.bucketTrx.wrap('delete', { id }, (trx, bucket) => bucket.delete(trx, id, {
394
417
  unsafe: true,
395
418
  no_tenancy: !this.enableTenancy
396
419
  }), () => undefined);
@@ -401,7 +424,7 @@ class BucketUnsafeTrxNode {
401
424
  * > This unsafe version does not check if the objects exist prior to deleting.
402
425
  */
403
426
  async deleteMany(ids) {
404
- return this.bucketTrx.wrap('deleteMany', { ids }, trx => this.bucket.deleteMany(trx, ids, {
427
+ return this.bucketTrx.wrap('deleteMany', { ids }, (trx, bucket) => bucket.deleteMany(trx, ids, {
405
428
  unsafe: true,
406
429
  no_tenancy: !this.enableTenancy
407
430
  }), () => undefined);
@@ -1,23 +1,29 @@
1
1
  import { $Module, ViewName, ViewObj } from "../../../schema";
2
- import { TrxNode } from '../trx_node';
2
+ import { AnyTrxNode, TrxNode } from '../trx_node';
3
3
  import { $Bucket } from "../../../elements/entities/bucket/bucket.schema";
4
4
  import { Bucket } from "../../../elements/entities/bucket/bucket";
5
5
  import { NQL_AnyQuery, NQL_Pagination, NQL_Query } from "../../../elements/entities/bucket/query/nql.schema";
6
6
  import { NQL_Result } from "../../../elements/entities/bucket/query/nql_engine";
7
+ import { Tag } from "../../dependency";
7
8
  /**
8
9
  * @category Engine
9
10
  * @subcategory Transaction
10
11
  */
11
12
  export declare class BucketQueryTrxNode<M extends $Module, B extends $Bucket, V extends ViewName<B> | undefined = undefined, Obj = V extends string ? ViewObj<B, V> : B['#data']> {
12
13
  private trx;
13
- private bucket;
14
+ private tag;
14
15
  private query;
15
16
  private enableTenancy;
16
17
  private view?;
17
18
  private _params?;
18
- constructor(trx: TrxNode<any, M, any>, bucket: Bucket<M, B>, query: NQL_AnyQuery, enableTenancy: boolean, view?: V | undefined);
19
+ private external;
20
+ private bucket?;
21
+ constructor(trx: TrxNode<any, M, any>, tag: Tag, query: NQL_AnyQuery, enableTenancy: boolean, view?: V | undefined);
19
22
  merge($: NQL_Query<M, B>): void;
20
- params(value?: Record<string, any>): this;
23
+ params(value?: Record<string, any> | Record<string, any>[]): this;
24
+ wrap(action: string, input: Record<string, any>, fn: (trx: AnyTrxNode, element: Bucket<M, B>) => Promise<any>): Promise<{
25
+ data: any[];
26
+ }>;
21
27
  first(): Promise<Obj | undefined>;
22
28
  firstOrFail(): Promise<Obj>;
23
29
  all(): Promise<Obj[]>;
@@ -3,18 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BucketQueryTrxNode = void 0;
4
4
  const trx_node_1 = require("../trx_node");
5
5
  const error_1 = require("../../data/error");
6
+ const dependency_1 = require("../../dependency");
7
+ const external_trx_node_1 = require("./external.trx_node");
6
8
  /**
7
9
  * @category Engine
8
10
  * @subcategory Transaction
9
11
  */
10
12
  class BucketQueryTrxNode {
11
- constructor(trx, bucket, query, enableTenancy, view) {
13
+ constructor(trx, tag, query, enableTenancy, view) {
12
14
  this.trx = trx;
13
- this.bucket = bucket;
15
+ this.tag = tag;
14
16
  this.query = query;
15
17
  this.enableTenancy = enableTenancy;
16
18
  this.view = view;
17
19
  this._params = [];
20
+ const module = trx_node_1.TrxNode.getModule(trx);
21
+ this.external = tag.module !== module.name;
22
+ if (!this.external) {
23
+ this.bucket = dependency_1.Tag.element(tag, trx);
24
+ }
18
25
  }
19
26
  merge($) {
20
27
  const and = $['#and'];
@@ -26,79 +33,83 @@ class BucketQueryTrxNode {
26
33
  this.query['#or*'] = or; // TODO: make this a little better
27
34
  }
28
35
  params(value) {
29
- this._params = value ? [value] : [];
36
+ this._params = value
37
+ ? Array.isArray(value) ? value : [value]
38
+ : [];
30
39
  return this;
31
40
  }
41
+ /*
42
+ Wrap
43
+ */
44
+ async wrap(action, input, fn) {
45
+ const wrapped = async (parentTrx, bucket) => {
46
+ const trx = trx_node_1.TrxNode.makeChildNode(parentTrx, bucket.schema.module, 'bucket', bucket.schema.name);
47
+ trx_node_1.TrxNode.open(trx, action, input);
48
+ let out;
49
+ try {
50
+ out = await fn(trx, bucket);
51
+ }
52
+ catch (e) {
53
+ throw trx_node_1.TrxNode.error(trx, e);
54
+ }
55
+ trx_node_1.TrxNode.ok(trx, { length: out.data.length });
56
+ return out;
57
+ };
58
+ if (this.external) {
59
+ const ext = new external_trx_node_1.ExternalTrxNode(this.trx, this.tag);
60
+ return ext.run(trx => dependency_1.Tag.element(this.tag, trx), wrapped);
61
+ }
62
+ else {
63
+ return wrapped(this.trx, this.bucket);
64
+ }
65
+ }
32
66
  async first() {
33
- await trx_node_1.TrxNode.open(this.trx, 'queryFirst', { schema: this.query, view: this.view });
34
- let results;
35
- try {
36
- results = await this.bucket.query(this.trx, this.query, {
67
+ const results = await this.wrap('queryFirst', { schema: this.query, view: this.view }, (trx, bucket) => {
68
+ return bucket.query(this.trx, this.query, {
37
69
  perPage: 1
38
70
  }, this.view, {
39
71
  no_tenancy: !this.enableTenancy,
40
72
  params: this._params
41
73
  });
42
- }
43
- catch (e) {
44
- throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
45
- }
46
- await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
74
+ });
47
75
  return results.data.length
48
76
  ? results.data[0]
49
77
  : undefined;
50
78
  }
51
79
  async firstOrFail() {
52
- await trx_node_1.TrxNode.open(this.trx, 'queryFirstOrFail', { schema: this.query, view: this.view });
53
- let results;
54
- try {
55
- results = await this.bucket.query(this.trx, this.query, undefined, this.view, {
80
+ const results = await this.wrap('queryFirstOrFail', { schema: this.query, view: this.view }, async (trx, bucket) => {
81
+ const results = await bucket.query(trx, this.query, undefined, this.view, {
56
82
  no_tenancy: !this.enableTenancy,
57
83
  params: this._params
58
84
  });
59
- }
60
- catch (e) {
61
- throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
62
- }
63
- if (!results.data.length) {
64
- const e = error_1.NesoiError.Bucket.Query.NoResults({ bucket: this.bucket.schema.alias, query: this.query });
65
- throw await trx_node_1.TrxNode.error(this.trx, e);
66
- }
67
- await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
85
+ if (!results.data.length) {
86
+ throw error_1.NesoiError.Bucket.Query.NoResults({ bucket: bucket.schema.alias, query: this.query });
87
+ }
88
+ return results;
89
+ });
68
90
  return results.data[0];
69
91
  }
70
92
  async all() {
71
- await trx_node_1.TrxNode.open(this.trx, 'queryAll', { schema: this.query, view: this.view });
72
- let results;
73
- try {
74
- results = await this.bucket.query(this.trx, this.query, undefined, this.view, {
93
+ const results = await this.wrap('queryAll', { schema: this.query, view: this.view }, async (trx, bucket) => {
94
+ return bucket.query(trx, this.query, undefined, this.view, {
75
95
  params: this._params
76
96
  });
77
- }
78
- catch (e) {
79
- throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
80
- }
81
- await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
97
+ });
82
98
  return results.data;
83
99
  }
84
100
  async page(pagination) {
85
101
  if (!pagination) {
102
+ const data = await this.all();
86
103
  return {
87
- data: await this.all()
104
+ data, totalItems: data.length
88
105
  };
89
106
  }
90
- await trx_node_1.TrxNode.open(this.trx, 'queryPage', { schema: this.query, pagination, view: this.view });
91
- let result;
92
- try {
93
- result = await this.bucket.query(this.trx, this.query, pagination, this.view, {
107
+ const results = await this.wrap('queryPage', { schema: this.query, view: this.view }, async (trx, bucket) => {
108
+ return bucket.query(trx, this.query, pagination, this.view, {
94
109
  params: this._params
95
110
  });
96
- }
97
- catch (e) {
98
- throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
99
- }
100
- await trx_node_1.TrxNode.ok(this.trx, { length: result.data.length });
101
- return result;
111
+ });
112
+ return results;
102
113
  }
103
114
  }
104
115
  exports.BucketQueryTrxNode = BucketQueryTrxNode;
@@ -0,0 +1,15 @@
1
+ import { $Module } from "../../../schema";
2
+ import { AnyTrxNode, TrxNode } from '../trx_node';
3
+ import { $Topic } from "../../../elements/blocks/topic/topic.schema";
4
+ import { Tag } from "../../dependency";
5
+ /**
6
+ * @category Engine
7
+ * @subcategory Transaction
8
+ */
9
+ export declare class ExternalTrxNode<M extends $Module, $ extends $Topic> {
10
+ private trx;
11
+ private tag;
12
+ private daemon;
13
+ constructor(trx: TrxNode<any, M, any>, tag: Tag);
14
+ run(element: (trx: AnyTrxNode) => any, fn: (trx: AnyTrxNode, element: any) => Promise<any>): Promise<any>;
15
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExternalTrxNode = void 0;
4
+ const trx_node_1 = require("../trx_node");
5
+ const error_1 = require("../../data/error");
6
+ /**
7
+ * @category Engine
8
+ * @subcategory Transaction
9
+ */
10
+ class ExternalTrxNode {
11
+ constructor(trx, tag) {
12
+ this.trx = trx;
13
+ this.tag = tag;
14
+ const _module = trx_node_1.TrxNode.getModule(trx);
15
+ if (!_module.daemon) {
16
+ throw error_1.NesoiError.Trx.DaemonNotFound(_module.name);
17
+ }
18
+ this.daemon = _module.daemon;
19
+ }
20
+ async run(element, fn) {
21
+ const root = this.trx.trx;
22
+ const module = trx_node_1.TrxNode.getModule(this.trx);
23
+ const trx = trx_node_1.TrxNode.makeChildNode(this.trx, module.name, 'externals', this.tag.full);
24
+ trx_node_1.TrxNode.open(trx, '~', {
25
+ tag: this.tag
26
+ });
27
+ let out;
28
+ try {
29
+ const res = await this.daemon.trx(this.tag.module).run_and_hold(async (extTrx) => {
30
+ try {
31
+ return await fn(extTrx, element(extTrx));
32
+ }
33
+ catch (e) {
34
+ throw trx_node_1.TrxNode.error(extTrx, e);
35
+ }
36
+ finally {
37
+ trx_node_1.TrxNode.merge(trx, extTrx);
38
+ }
39
+ }, root.id);
40
+ if (res.status.state === 'error') {
41
+ throw res.status.error;
42
+ }
43
+ out = res.status.output;
44
+ root.holdNode(res);
45
+ }
46
+ catch (e) {
47
+ throw trx_node_1.TrxNode.error(trx, e);
48
+ }
49
+ trx_node_1.TrxNode.ok(trx, out);
50
+ return out;
51
+ }
52
+ }
53
+ exports.ExternalTrxNode = ExternalTrxNode;
@@ -1,18 +1,22 @@
1
1
  import { $Module } from "../../../schema";
2
- import { TrxNode } from '../trx_node';
2
+ import { AnyTrxNode, TrxNode } from '../trx_node';
3
3
  import { $Job } from "../../../elements/blocks/job/job.schema";
4
4
  import { Job } from "../../../elements/blocks/job/job";
5
5
  import { Message } from "../../../elements/entities/message/message";
6
6
  import { JobInput } from "../../../elements/blocks/job/job.types";
7
+ import { Tag } from "../../dependency";
7
8
  /**
8
9
  * @category Engine
9
10
  * @subcategory Transaction
10
11
  */
11
12
  export declare class JobTrxNode<M extends $Module, $ extends $Job> {
12
13
  private trx;
13
- private job;
14
+ private tag;
14
15
  private ctx?;
15
- constructor(trx: TrxNode<any, M, any>, job: Job<any, M, $>, ctx?: Record<string, any> | undefined);
16
+ private external;
17
+ private job?;
18
+ constructor(trx: TrxNode<any, M, any>, tag: Tag, ctx?: Record<string, any> | undefined);
19
+ wrap(action: string, input: Record<string, any>, fn: (trx: AnyTrxNode, element: Job<any, M, $>) => Promise<any>, fmtTrxOut?: (out: any) => any): Promise<any>;
16
20
  run(message: JobInput<$>): Promise<$['#output']>;
17
21
  forward(message: Message<$['#input']>): Promise<$['#output']>;
18
22
  }