nesoi 3.2.9 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/lib/bundler/browser/browser.app.d.ts +32 -0
- package/lib/bundler/browser/browser.app.js +51 -0
- package/lib/bundler/browser/browser.bundler.d.ts +5 -0
- package/lib/bundler/browser/browser.bundler.js +27 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.d.ts +13 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.js +74 -0
- package/lib/bundler/distributed/distributed.app.config.d.ts +43 -0
- package/lib/{engine/apps → bundler}/distributed/distributed.app.config.js +1 -1
- package/lib/{engine/apps → bundler}/distributed/distributed.app.d.ts +14 -14
- package/lib/{engine/apps → bundler}/distributed/distributed.app.js +8 -3
- package/lib/{compiler/apps/distributed/distributed_compiler.d.ts → bundler/distributed/distributed.bundler.d.ts} +7 -7
- package/lib/{compiler/apps/distributed/distributed_compiler.js → bundler/distributed/distributed.bundler.js} +11 -11
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.d.ts +14 -20
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.js +18 -50
- package/lib/bundler/distributed/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/distributed/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/2_build_typescript_stage.js +7 -7
- package/lib/bundler/distributed/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/3_copy_types_stage.js +7 -7
- package/lib/bundler/distributed/stages/4_dump_modules_stage.d.ts +16 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/4_dump_modules_stage.js +5 -5
- package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.js +3 -3
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.d.ts +13 -13
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.js +13 -10
- package/lib/{compiler/apps/monolyth/monolyth_compiler.d.ts → bundler/monolyth/monolyth.bundler.d.ts} +9 -7
- package/lib/{compiler/apps/monolyth/monolyth_compiler.js → bundler/monolyth/monolyth.bundler.js} +13 -12
- package/lib/bundler/monolyth/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/monolyth/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/2_build_typescript_stage.js +8 -7
- package/lib/bundler/monolyth/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/3_copy_types_stage.js +7 -7
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.js +29 -16
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.js +7 -7
- package/lib/bundler/monolyth/stages/6_dump_cli_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/6_dump_cli_stage.js +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.js +14 -11
- package/lib/compiler/compiler.d.ts +1 -6
- package/lib/compiler/compiler.js +1 -1
- package/lib/compiler/elements/bucket.element.d.ts +2 -1
- package/lib/compiler/elements/bucket.element.js +16 -21
- package/lib/compiler/elements/cached.element.d.ts +1 -1
- package/lib/compiler/elements/cached.element.js +2 -2
- package/lib/compiler/elements/constants.element.d.ts +1 -1
- package/lib/compiler/elements/constants.element.js +2 -0
- package/lib/compiler/elements/controller.element.js +3 -3
- package/lib/compiler/elements/element.d.ts +6 -13
- package/lib/compiler/elements/element.js +11 -9
- package/lib/compiler/elements/externals.element.js +2 -2
- package/lib/compiler/elements/job.element.d.ts +1 -1
- package/lib/compiler/elements/job.element.js +1 -1
- package/lib/compiler/elements/machine.element.d.ts +2 -2
- package/lib/compiler/elements/machine.element.js +7 -7
- package/lib/compiler/elements/message.element.d.ts +1 -1
- package/lib/compiler/elements/message.element.js +26 -26
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/elements/resource.element.d.ts +1 -1
- package/lib/compiler/elements/resource.element.js +9 -9
- package/lib/compiler/elements/topic.element.js +1 -1
- package/lib/compiler/error.d.ts +1 -5
- package/lib/compiler/error.js +3 -15
- package/lib/compiler/helpers/dump_helpers.d.ts +1 -1
- package/lib/compiler/helpers/dump_helpers.js +1 -1
- package/lib/compiler/index.d.ts +1 -3
- package/lib/compiler/index.js +15 -7
- package/lib/compiler/module.js +12 -12
- package/lib/compiler/progressive.d.ts +3 -4
- package/lib/compiler/progressive.js +3 -4
- package/lib/compiler/stages/2_treeshake_stage.js +4 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +7 -7
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -16
- package/lib/compiler/stages/6_build_elements_stage.js +1 -1
- package/lib/compiler/stages/7_dump_stage.js +35 -10
- package/lib/compiler/typescript/bridge/extract.js +24 -0
- package/lib/compiler/typescript/bridge/inject.js +18 -3
- package/lib/compiler/typescript/bridge/organize.d.ts +4 -0
- package/lib/compiler/typescript/bridge/organize.js +41 -22
- package/lib/compiler/typescript/error.d.ts +2 -83
- package/lib/compiler/typescript/error.js +6 -219
- package/lib/compiler/typescript/parser.js +3 -3
- package/lib/compiler/typescript/source.d.ts +2 -2
- package/lib/compiler/typescript/transformers/app_inject.transformer.js +13 -4
- package/lib/compiler/typescript/typescript_compiler.d.ts +3 -3
- package/lib/compiler/typescript/typescript_compiler.js +2 -2
- package/lib/elements/blocks/block.builder.d.ts +7 -4
- package/lib/elements/blocks/block.builder.js +24 -13
- package/lib/elements/blocks/block.js +2 -2
- package/lib/elements/blocks/block.schema.d.ts +12 -9
- package/lib/elements/blocks/block.schema.js +2 -2
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -5
- package/lib/elements/blocks/job/internal/machine_job.builder.js +3 -3
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +11 -10
- package/lib/elements/blocks/job/internal/resource_job.builder.js +9 -6
- package/lib/elements/blocks/job/internal/resource_job.js +3 -6
- package/lib/elements/blocks/job/job.builder.d.ts +5 -5
- package/lib/elements/blocks/job/job.builder.js +7 -7
- package/lib/elements/blocks/job/job.js +1 -1
- package/lib/elements/blocks/job/job.schema.d.ts +5 -5
- package/lib/elements/blocks/job/job.schema.js +3 -3
- package/lib/elements/blocks/machine/machine.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine.builder.js +12 -9
- package/lib/elements/blocks/machine/machine.js +7 -7
- package/lib/elements/blocks/machine/machine.schema.d.ts +23 -23
- package/lib/elements/blocks/machine/machine.schema.js +9 -9
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +1 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +31 -29
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine_transition.builder.js +8 -8
- package/lib/elements/blocks/queue/queue.builder.d.ts +3 -3
- package/lib/elements/blocks/queue/queue.builder.js +3 -3
- package/lib/elements/blocks/queue/queue.schema.d.ts +6 -6
- package/lib/elements/blocks/queue/queue.schema.js +3 -3
- package/lib/elements/blocks/resource/resource.builder.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.builder.js +37 -40
- package/lib/elements/blocks/resource/resource.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.js +10 -18
- package/lib/elements/blocks/resource/resource.schema.d.ts +15 -15
- package/lib/elements/blocks/resource/resource.schema.js +8 -8
- package/lib/elements/blocks/topic/topic.builder.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.builder.js +4 -4
- package/lib/elements/blocks/topic/topic.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.js +7 -7
- package/lib/elements/blocks/topic/topic.schema.d.ts +6 -6
- package/lib/elements/blocks/topic/topic.schema.js +3 -3
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +1 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -2
- package/lib/elements/edge/controller/adapters/controller_adapter.js +2 -2
- package/lib/elements/edge/controller/controller.builder.d.ts +14 -13
- package/lib/elements/edge/controller/controller.builder.js +52 -42
- package/lib/elements/edge/controller/controller.d.ts +3 -3
- package/lib/elements/edge/controller/controller.js +12 -12
- package/lib/elements/edge/controller/controller.schema.d.ts +17 -16
- package/lib/elements/edge/controller/controller.schema.js +11 -11
- package/lib/elements/edge/externals/externals.builder.d.ts +8 -13
- package/lib/elements/edge/externals/externals.builder.js +43 -11
- package/lib/elements/edge/externals/externals.schema.d.ts +8 -7
- package/lib/elements/edge/externals/externals.schema.js +5 -3
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.d.ts +45 -0
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.js +164 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.d.ts +30 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.js +97 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +6 -1
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +7 -6
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.d.ts +1 -1
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.js +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +14 -13
- package/lib/elements/entities/bucket/adapters/memory.nql.js +41 -35
- package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -8
- package/lib/elements/entities/bucket/bucket.builder.js +19 -34
- package/lib/elements/entities/bucket/bucket.d.ts +2 -2
- package/lib/elements/entities/bucket/bucket.infer.d.ts +5 -5
- package/lib/elements/entities/bucket/bucket.js +19 -17
- package/lib/elements/entities/bucket/bucket.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.schema.js +2 -2
- package/lib/elements/entities/bucket/cache/bucket_cache.js +14 -2
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph.js +101 -29
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
- package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
- package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
- package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
- package/lib/elements/entities/constants/constants.builder.js +8 -8
- package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
- package/lib/elements/entities/constants/constants.schema.js +7 -2
- package/lib/elements/entities/message/message.infer.d.ts +1 -5
- package/lib/elements/entities/message/message.js +2 -7
- package/lib/elements/entities/message/message.schema.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
- package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
- package/lib/elements/entities/message/template/message_template_parser.js +2 -2
- package/lib/engine/{apps → app}/app.config.d.ts +11 -5
- package/lib/engine/{apps → app}/app.config.js +2 -2
- package/lib/engine/{apps → app}/app.d.ts +3 -2
- package/lib/engine/{apps → app}/app.js +3 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
- package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
- package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
- package/lib/engine/{apps → app}/inline.app.js +37 -34
- package/lib/engine/auth/authn.d.ts +10 -12
- package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
- package/lib/engine/auth/zero.authn_provider.js +0 -1
- package/lib/engine/builder.d.ts +28 -0
- package/lib/engine/builder.js +99 -0
- package/lib/engine/cli/cli.js +3 -2
- package/lib/engine/cli/ui.js +1 -0
- package/lib/engine/daemon.d.ts +28 -25
- package/lib/engine/daemon.js +37 -8
- package/lib/engine/data/error.d.ts +37 -3
- package/lib/engine/data/error.js +58 -16
- package/lib/engine/data/file.d.ts +1 -0
- package/lib/engine/data/file.js +4 -0
- package/lib/engine/dependency.d.ts +53 -81
- package/lib/engine/dependency.js +246 -120
- package/lib/engine/module.d.ts +18 -48
- package/lib/engine/module.js +78 -158
- package/lib/engine/space.d.ts +2 -2
- package/lib/engine/space.js +6 -6
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
- package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
- package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
- package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
- package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
- package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
- package/lib/engine/transaction/trx.d.ts +15 -12
- package/lib/engine/transaction/trx.js +19 -3
- package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
- package/lib/engine/transaction/trx_engine.d.ts +25 -7
- package/lib/engine/transaction/trx_engine.js +67 -16
- package/lib/engine/transaction/trx_node.d.ts +25 -21
- package/lib/engine/transaction/trx_node.js +99 -57
- package/lib/engine/tree.d.ts +4 -16
- package/lib/engine/tree.js +87 -57
- package/lib/{compiler → engine}/treeshake.d.ts +32 -32
- package/lib/{compiler → engine}/treeshake.js +272 -242
- package/lib/engine/util/console.js +3 -0
- package/lib/engine/util/crypto.d.ts +4 -3
- package/lib/engine/util/crypto.js +15 -5
- package/lib/engine/util/hash.js +5 -0
- package/lib/engine/util/log.d.ts +6 -8
- package/lib/engine/util/log.js +1 -1
- package/lib/engine/util/name_helpers.d.ts +37 -0
- package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
- package/lib/engine/util/parse.d.ts +4 -3
- package/lib/engine/util/parse.js +13 -28
- package/lib/engine/util/path.d.ts +1 -0
- package/lib/engine/util/path.js +14 -0
- package/lib/engine/util/random.d.ts +4 -0
- package/lib/engine/util/random.js +31 -0
- package/lib/engine/util/type.d.ts +8 -0
- package/lib/schema.d.ts +1 -1
- package/package.json +4 -1
- package/tools/joaquin/bucket.js +1 -1
- package/tools/joaquin/job.js +1 -1
- package/tools/joaquin/message.js +1 -1
- package/tools/joaquin/mock.js +2 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
- package/lib/compiler/helpers/name_helpers.d.ts +0 -20
- package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
- package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
- package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
- /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.d.ts +0 -0
- /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(
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
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
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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
|
-
|
|
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
|
-
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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
|
|
282
|
+
await bucket.delete(trx, obj.id);
|
|
266
283
|
}
|
|
267
284
|
else {
|
|
268
|
-
await
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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 =>
|
|
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
|
|
14
|
+
private tag;
|
|
14
15
|
private query;
|
|
15
16
|
private enableTenancy;
|
|
16
17
|
private view?;
|
|
17
18
|
private _params?;
|
|
18
|
-
|
|
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,
|
|
13
|
+
constructor(trx, tag, query, enableTenancy, view) {
|
|
12
14
|
this.trx = trx;
|
|
13
|
-
this.
|
|
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
|
|
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
|
|
34
|
-
|
|
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
|
|
53
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
|
72
|
-
|
|
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:
|
|
104
|
+
data, totalItems: data.length
|
|
88
105
|
};
|
|
89
106
|
}
|
|
90
|
-
await
|
|
91
|
-
|
|
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
|
-
|
|
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
|
|
14
|
+
private tag;
|
|
14
15
|
private ctx?;
|
|
15
|
-
|
|
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
|
}
|