nesoi 3.0.8 → 3.0.10
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/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +1 -1
- package/lib/compiler/apps/monolyth/monolyth_compiler.js +7 -7
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
- package/lib/compiler/elements/externals.element.d.ts +1 -1
- package/lib/compiler/module.js +1 -1
- package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
- package/lib/compiler/stages/1_scan_stage.js +3 -0
- package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
- package/lib/compiler/stages/2_treeshake_stage.js +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
- package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
- package/lib/compiler/stages/6_build_elements_stage.js +3 -0
- package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
- package/lib/compiler/stages/7_dump_stage.js +3 -0
- package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
- package/lib/compiler/stages/8_diagnose_stage.js +3 -0
- package/lib/compiler/treeshake.js +3 -3
- package/lib/elements/blocks/block.builder.d.ts +6 -2
- package/lib/elements/blocks/block.builder.js +8 -4
- package/lib/elements/blocks/block.schema.d.ts +4 -0
- package/lib/elements/blocks/block.schema.js +4 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
- package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
- package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
- package/lib/elements/blocks/job/job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/job.builder.js +4 -0
- package/lib/elements/blocks/job/job.d.ts +4 -0
- package/lib/elements/blocks/job/job.js +4 -0
- package/lib/elements/blocks/job/job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/job.schema.js +4 -0
- package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine.builder.js +16 -1
- package/lib/elements/blocks/machine/machine.d.ts +12 -0
- package/lib/elements/blocks/machine/machine.js +12 -0
- package/lib/elements/blocks/machine/machine.schema.d.ts +18 -1
- package/lib/elements/blocks/machine/machine.schema.js +18 -2
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.builder.js +4 -0
- package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.schema.js +4 -0
- package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.builder.js +4 -0
- package/lib/elements/blocks/resource/resource.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.js +4 -0
- package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.schema.js +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +7 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.js +6 -1
- package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
- package/lib/elements/edge/controller/controller.builder.js +16 -0
- package/lib/elements/edge/controller/controller.config.d.ts +3 -2
- package/lib/elements/edge/controller/controller.d.ts +7 -3
- package/lib/elements/edge/controller/controller.js +7 -3
- package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
- package/lib/elements/edge/controller/controller.schema.js +16 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +18 -12
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
- package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
- package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.builder.js +4 -0
- package/lib/elements/entities/bucket/bucket.config.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.d.ts +12 -4
- package/lib/elements/entities/bucket/bucket.js +18 -11
- package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.schema.js +4 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
- package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
- package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
- package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
- package/lib/elements/entities/constants/constants.builder.js +21 -6
- package/lib/elements/entities/constants/constants.d.ts +4 -0
- package/lib/elements/entities/constants/constants.js +4 -0
- package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
- package/lib/elements/entities/constants/constants.schema.js +16 -0
- package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
- package/lib/elements/entities/drive/drive_adapter.js +5 -2
- package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
- package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
- package/lib/elements/entities/message/message.builder.d.ts +4 -0
- package/lib/elements/entities/message/message.builder.js +4 -0
- package/lib/elements/entities/message/message.d.ts +4 -0
- package/lib/elements/entities/message/message.js +4 -0
- package/lib/elements/entities/message/message.schema.d.ts +4 -0
- package/lib/elements/entities/message/message.schema.js +4 -0
- package/lib/elements/entities/message/message_parser.d.ts +4 -0
- package/lib/elements/entities/message/message_parser.js +4 -0
- package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
- package/lib/elements/entities/message/template/message_template.builder.js +4 -0
- package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
- package/lib/elements/entities/message/template/message_template.schema.js +25 -0
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
- package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
- package/lib/elements/index.d.ts +1 -1
- package/lib/elements/index.js +1 -1
- package/lib/engine/apps/app.config.d.ts +15 -11
- package/lib/engine/apps/app.config.js +3 -0
- package/lib/engine/apps/app.d.ts +12 -20
- package/lib/engine/apps/app.js +13 -10
- package/lib/engine/apps/inline.app.d.ts +12 -8
- package/lib/engine/apps/inline.app.js +27 -24
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +13 -5
- package/lib/engine/apps/monolyth/monolyth.app.js +14 -6
- package/lib/engine/apps/service.d.ts +30 -0
- package/lib/engine/apps/service.js +15 -0
- package/lib/engine/auth/authn.d.ts +14 -1
- package/lib/engine/auth/authn.js +4 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +11 -3
- package/lib/engine/auth/zero.authn_provider.js +13 -2
- package/lib/engine/cli/cli.d.ts +8 -2
- package/lib/engine/cli/cli.js +10 -1
- package/lib/engine/cli/cli_adapter.d.ts +11 -1
- package/lib/engine/cli/cli_adapter.js +10 -1
- package/lib/engine/cli/cli_input.d.ts +4 -0
- package/lib/engine/cli/cli_input.js +4 -0
- package/lib/engine/cli/ui.d.ts +14 -2
- package/lib/engine/cli/ui.js +10 -6
- package/lib/engine/daemon.d.ts +96 -9
- package/lib/engine/daemon.js +101 -18
- package/lib/engine/data/date.d.ts +4 -0
- package/lib/engine/data/date.js +4 -0
- package/lib/engine/data/datetime.d.ts +4 -0
- package/lib/engine/data/datetime.js +4 -0
- package/lib/engine/data/decimal.d.ts +4 -0
- package/lib/engine/data/decimal.js +4 -0
- package/lib/engine/data/file.d.ts +23 -23
- package/lib/engine/data/file.js +66 -29
- package/lib/engine/data/json.d.ts +4 -0
- package/lib/engine/data/json.js +4 -0
- package/lib/engine/data/tree.d.ts +4 -0
- package/lib/engine/data/tree.js +4 -0
- package/lib/engine/dependency.d.ts +65 -3
- package/lib/engine/dependency.js +70 -0
- package/lib/engine/module.d.ts +110 -8
- package/lib/engine/module.js +131 -31
- package/lib/engine/space.d.ts +163 -10
- package/lib/engine/space.js +184 -22
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.js +13 -2
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +9 -10
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +5 -2
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +6 -4
- package/lib/engine/transaction/trx.d.ts +14 -4
- package/lib/engine/transaction/trx.js +10 -1
- package/lib/engine/transaction/trx_engine.config.d.ts +2 -2
- package/lib/engine/transaction/trx_engine.d.ts +8 -3
- package/lib/engine/transaction/trx_engine.js +24 -20
- package/lib/engine/transaction/trx_node.d.ts +8 -2
- package/lib/engine/transaction/trx_node.js +17 -1
- package/lib/engine/tree.d.ts +54 -2
- package/lib/engine/tree.js +60 -19
- package/lib/engine/util/mime.d.ts +4 -4
- package/lib/engine/util/mime.js +7 -9
- package/lib/schema.d.ts +2 -2
- package/package.json +2 -3
- package/tools/joaquin/job.js +2 -2
- package/tools/joaquin/message.js +2 -2
- package/tools/joaquin/mock.d.ts +6 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
- package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
- package/lib/adapters/postgres/src/migrator/csv.d.ts +0 -7
- package/lib/adapters/postgres/src/migrator/csv.js +0 -72
- package/lib/adapters/postgres/src/migrator/database.d.ts +0 -37
- package/lib/adapters/postgres/src/migrator/database.js +0 -88
- package/lib/adapters/postgres/src/migrator/index.d.ts +0 -1
- package/lib/adapters/postgres/src/migrator/index.js +0 -5
- package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
- package/lib/adapters/postgres/src/migrator/migration.js +0 -203
- package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
- package/lib/adapters/postgres/src/migrator/migrator.js +0 -76
- package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
- package/lib/adapters/postgres/src/migrator/runner.js +0 -271
- package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +0 -42
- package/lib/adapters/postgres/src/postgres.bucket_adapter.js +0 -294
- package/lib/adapters/postgres/src/postgres.cli.d.ts +0 -66
- package/lib/adapters/postgres/src/postgres.cli.js +0 -184
- package/lib/adapters/postgres/src/postgres.config.d.ts +0 -5
- package/lib/adapters/postgres/src/postgres.config.js +0 -2
- package/lib/adapters/postgres/src/postgres.nql.d.ts +0 -16
- package/lib/adapters/postgres/src/postgres.nql.js +0 -123
- package/lib/adapters/postgres/src/postgres.provider.d.ts +0 -18
- package/lib/adapters/postgres/src/postgres.provider.js +0 -77
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +0 -1
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +0 -210
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
- package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
- package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
- package/lib/engine/util/cache.d.ts +0 -6
- package/lib/engine/util/cache.js +0 -20
package/lib/engine/space.js
CHANGED
|
@@ -39,7 +39,7 @@ const path = __importStar(require("path"));
|
|
|
39
39
|
// import { MachineBuilder } from "~/plugins/machine";
|
|
40
40
|
const machine_builder_1 = require("../elements/blocks/machine/machine.builder");
|
|
41
41
|
const constants_builder_1 = require("../elements/entities/constants/constants.builder");
|
|
42
|
-
const externals_builder_1 = require("../elements/
|
|
42
|
+
const externals_builder_1 = require("../elements/edge/externals/externals.builder");
|
|
43
43
|
const job_builder_1 = require("../elements/blocks/job/job.builder");
|
|
44
44
|
const message_builder_1 = require("../elements/entities/message/message.builder");
|
|
45
45
|
const resource_builder_1 = require("../elements/blocks/resource/resource.builder");
|
|
@@ -49,21 +49,48 @@ const bucket_model_builder_1 = require("../elements/entities/bucket/model/bucket
|
|
|
49
49
|
const bucket_model_field_builder_1 = require("../elements/entities/bucket/model/bucket_model_field.builder");
|
|
50
50
|
const error_1 = require("../compiler/error");
|
|
51
51
|
const queue_builder_1 = require("../elements/blocks/queue/queue.builder");
|
|
52
|
+
/**
|
|
53
|
+
* When using Nesoi as a framework (not a library), the `Space`
|
|
54
|
+
* is a collection of all modules.
|
|
55
|
+
* The name comes from the linear algebra notion of 'vector space'.
|
|
56
|
+
* It's the 'module space', where all past and future modules exist.
|
|
57
|
+
*
|
|
58
|
+
* The `Space` is mainly used to:
|
|
59
|
+
* - Declare builders which reference the compiled schemas with a minimal syntax
|
|
60
|
+
* - Read modules from the directory structure to compile schemas and apps
|
|
61
|
+
*
|
|
62
|
+
* @category Engine
|
|
63
|
+
*/
|
|
52
64
|
class Space {
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
/**
|
|
66
|
+
* @param dirpath The path for the Space root directory
|
|
67
|
+
*/
|
|
68
|
+
constructor(dirpath) {
|
|
69
|
+
this.dirpath = dirpath;
|
|
55
70
|
this._authn = {};
|
|
56
|
-
this._name = '
|
|
71
|
+
this._name = 'Space';
|
|
57
72
|
}
|
|
73
|
+
/*
|
|
74
|
+
* ROOT
|
|
75
|
+
*/
|
|
58
76
|
/**
|
|
59
|
-
* Space
|
|
60
|
-
*
|
|
61
|
-
*
|
|
77
|
+
* Set a custom Space name. The default is 'Space'.
|
|
78
|
+
* > This method MUST be called on the root `nesoi.ts` file.
|
|
79
|
+
* @param name A new Space name
|
|
80
|
+
* @returns The current Space, for call-chaining
|
|
62
81
|
*/
|
|
63
82
|
name(name) {
|
|
64
83
|
this._name = name;
|
|
65
84
|
return this;
|
|
66
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Set one authentication model.
|
|
88
|
+
* This model MUST be yielded by the `AuthnProvider` assigned
|
|
89
|
+
* to the same name.
|
|
90
|
+
* > This method MUST be called on the root `nesoi.ts` file.
|
|
91
|
+
* @param name A name for the authentication
|
|
92
|
+
* @returns The current Space, for call-chaining
|
|
93
|
+
*/
|
|
67
94
|
authn(name, $) {
|
|
68
95
|
const fieldBuilder = new bucket_model_field_builder_1.BucketModelFieldFactory('*');
|
|
69
96
|
const fields = $(fieldBuilder);
|
|
@@ -71,64 +98,199 @@ class Space {
|
|
|
71
98
|
this._authn[name] = bucket_model_builder_1.BucketModelBuilder.build(builder);
|
|
72
99
|
return this;
|
|
73
100
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
101
|
+
/*
|
|
102
|
+
* ELEMENTS
|
|
103
|
+
*/
|
|
104
|
+
// Entities
|
|
105
|
+
/**
|
|
106
|
+
* > Elements / Entities / Constants
|
|
107
|
+
*
|
|
108
|
+
* `Constants` represent statically-known data, namely `values` and `enums`,
|
|
109
|
+
* which can be referenced from any `Module`.
|
|
110
|
+
*
|
|
111
|
+
* @param module A module name
|
|
112
|
+
* @returns A `Constants` builder
|
|
113
|
+
*/
|
|
78
114
|
constants(module) {
|
|
79
115
|
return new constants_builder_1.ConstantsBuilder(module);
|
|
80
116
|
}
|
|
81
|
-
|
|
117
|
+
/**
|
|
118
|
+
* > Elements / Entities / Bucket
|
|
119
|
+
*
|
|
120
|
+
* A `Bucket` represents stored data, on any kind of storage.
|
|
121
|
+
* It contains a definition of the type of data (_model_),
|
|
122
|
+
* the relations between this data and other (_graph_),
|
|
123
|
+
* and different ways to present this data (_view_).
|
|
124
|
+
*
|
|
125
|
+
* The actual storage is linked through a `BucketAdapter`, on the
|
|
126
|
+
* `App` definition. Which means you build a _Bucket_ without
|
|
127
|
+
* knowing how it's data will be stored, and then later plug
|
|
128
|
+
* any adapter (like Memory, or PostgreSQL, etc) into it.
|
|
129
|
+
*
|
|
130
|
+
* @param globalName A _Bucket_ name in the format `module::name`
|
|
131
|
+
* @returns A `Bucket` builder
|
|
132
|
+
*/
|
|
82
133
|
bucket(globalName) {
|
|
83
134
|
const [module, name] = globalName.split('::');
|
|
84
135
|
// TODO: review why this was not "$Bucket & {...}"
|
|
85
136
|
// type Bucket = Module['buckets'][K] & { name: K }
|
|
86
137
|
return new bucket_builder_1.BucketBuilder(module, name);
|
|
87
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* > Elements / Entities / Message
|
|
141
|
+
*
|
|
142
|
+
* A `Message` represents data in transit (generally incoming).
|
|
143
|
+
* It contains a definition of the data format (_template_),
|
|
144
|
+
* which includes possibly complex validation rules.
|
|
145
|
+
*
|
|
146
|
+
* This _template_ is used to _parse_ an object into the message format,
|
|
147
|
+
* so a _Message_ has two states: `raw` and `parsed`.
|
|
148
|
+
* - `raw`: A JS object containing a `$` with the message name plus some other properties
|
|
149
|
+
* - `parsed`: A `Message` object containing the parsed data plus some metadata (signature, etc)
|
|
150
|
+
*
|
|
151
|
+
* @param globalName A message name in the format `module::name`
|
|
152
|
+
* @returns A `Constants` builder
|
|
153
|
+
*/
|
|
88
154
|
message(globalName) {
|
|
89
155
|
const [module, name] = globalName.split('::');
|
|
90
156
|
return new message_builder_1.MessageBuilder(module, name);
|
|
91
157
|
}
|
|
92
158
|
// Blocks
|
|
159
|
+
/**
|
|
160
|
+
* > Elements / Blocks / Job
|
|
161
|
+
*
|
|
162
|
+
* A `Job` is a method which accepts one or more _Messages_ as input.
|
|
163
|
+
*
|
|
164
|
+
* It might declare _extra_ data to include on the job input, and
|
|
165
|
+
* conditions which must be met before the method is executed.
|
|
166
|
+
* These can be pre-validate a Job before queuing it, or for
|
|
167
|
+
* organizing the job flow in a more declarative way.
|
|
168
|
+
*
|
|
169
|
+
* This method has access to all elements within it's module.
|
|
170
|
+
*
|
|
171
|
+
* @param globalName A _Job_ name in the format `module::name`
|
|
172
|
+
* @returns A `Job` builder
|
|
173
|
+
*/
|
|
93
174
|
job(globalName) {
|
|
94
175
|
const [module, name] = globalName.split('::');
|
|
95
176
|
return new job_builder_1.JobBuilder(module, name);
|
|
96
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* > Elements / Blocks / Resource
|
|
180
|
+
*
|
|
181
|
+
* A `Resource` is a fast way to declare simple CRUD _Jobs_ and _Messages_ for a `Bucket`.
|
|
182
|
+
*
|
|
183
|
+
* It offers 5 types of jobs:
|
|
184
|
+
* - `view`: Read one or all bucket object(s) through a specific view
|
|
185
|
+
* - `query`: Query bucket object(s)
|
|
186
|
+
* - `create`: Create one object on the bucket
|
|
187
|
+
* - `update`: Modify (patch) one object of the bucket
|
|
188
|
+
* - `delete`: Delete one object of the bucket
|
|
189
|
+
*
|
|
190
|
+
* @param globalName A _Resource_ name in the format `module::name`
|
|
191
|
+
* @returns A `Resource` builder
|
|
192
|
+
*/
|
|
97
193
|
resource(globalName) {
|
|
98
194
|
const [module, name] = globalName.split('::');
|
|
99
195
|
return new resource_builder_1.ResourceBuilder(module, name);
|
|
100
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* > Elements / Blocks / Machine
|
|
199
|
+
*
|
|
200
|
+
* A `Machine` is a _Statechart_ which reads it's context from a _Bucket_,
|
|
201
|
+
* and uses a specific property to store a discrete state.
|
|
202
|
+
* When this machine receives _Messages_, it follows the definition to possibly
|
|
203
|
+
* advance the state and run _Jobs_.
|
|
204
|
+
*
|
|
205
|
+
* @param globalName A _Machine_ name in the format `module::name`
|
|
206
|
+
* @returns A `Machine` builder
|
|
207
|
+
*/
|
|
101
208
|
machine(globalName) {
|
|
102
209
|
const [module, name] = globalName.split('::');
|
|
103
210
|
return new machine_builder_1.MachineBuilder(module, name);
|
|
104
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* > Elements / Blocks / Queue
|
|
214
|
+
*
|
|
215
|
+
* A `Queue` stores _Messages_ to be consumed later in order.
|
|
216
|
+
*
|
|
217
|
+
* @param globalName A _Queue_ name in the format `module::name`
|
|
218
|
+
* @returns A `Queue` builder
|
|
219
|
+
*/
|
|
220
|
+
queue(globalName) {
|
|
221
|
+
const [module, name] = globalName.split('::');
|
|
222
|
+
return new queue_builder_1.QueueBuilder(module, name);
|
|
223
|
+
}
|
|
105
224
|
// Edge
|
|
225
|
+
/**
|
|
226
|
+
* > Elements / Edge / Externals
|
|
227
|
+
*
|
|
228
|
+
* `Externals` references elements from other modules, allowing
|
|
229
|
+
* them to be used by Jobs and other elements from this module.
|
|
230
|
+
*
|
|
231
|
+
* @param module A module name
|
|
232
|
+
* @returns A `Externals` builder
|
|
233
|
+
*/
|
|
234
|
+
externals(module) {
|
|
235
|
+
return new externals_builder_1.ExternalsBuilder(module);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* > Elements / Edge / Controller
|
|
239
|
+
*
|
|
240
|
+
* A `Controller` allows an external application to send
|
|
241
|
+
* and receive messages /from the Nesoi Engine.
|
|
242
|
+
*
|
|
243
|
+
* The controller declares endpoints which accept specific messages
|
|
244
|
+
* and route them to specific elements.
|
|
245
|
+
* On the `App`, each controller is assigned a `ControllerAdapter`, which
|
|
246
|
+
* is responsible for creating the raw _Messages_ and sending them to the Engine.
|
|
247
|
+
*
|
|
248
|
+
* @param globalName A _Controller_ name in the format `module::name`
|
|
249
|
+
* @returns A `Controller` builder
|
|
250
|
+
*/
|
|
106
251
|
controller(globalName) {
|
|
107
252
|
const [module, name] = globalName.split('::');
|
|
108
253
|
return new controller_builder_1.ControllerBuilder(module, name);
|
|
109
254
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
255
|
+
/*
|
|
256
|
+
* RUN / COMPILE
|
|
257
|
+
*/
|
|
114
258
|
/**
|
|
259
|
+
* Resolve a path relative to the Space root.
|
|
115
260
|
*
|
|
261
|
+
* @param space A `Space` instance
|
|
262
|
+
* @param relPath One or many path terms
|
|
263
|
+
* @returns A resolved path
|
|
116
264
|
*/
|
|
117
265
|
static path(space, ...relPath) {
|
|
118
|
-
if (!space.
|
|
266
|
+
if (!space.dirpath) {
|
|
119
267
|
throw new Error('Cant use .path() on virtual space');
|
|
120
268
|
}
|
|
121
|
-
return path.resolve(space.
|
|
269
|
+
return path.resolve(space.dirpath, ...relPath);
|
|
122
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Return a path relative to the Space root given an absolute path.
|
|
273
|
+
*
|
|
274
|
+
* @param space A `Space` instance
|
|
275
|
+
* @param relPath One or many path terms
|
|
276
|
+
* @returns A resolved path
|
|
277
|
+
*/
|
|
123
278
|
static relPath(space, absPath) {
|
|
124
|
-
if (!space.
|
|
279
|
+
if (!space.dirpath) {
|
|
125
280
|
throw new Error('Cant use .path() on virtual space');
|
|
126
281
|
}
|
|
127
|
-
return path.relative(space.
|
|
282
|
+
return path.relative(space.dirpath, absPath);
|
|
128
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Read all module directories from the Space root, then
|
|
286
|
+
* run a callback for each.
|
|
287
|
+
*
|
|
288
|
+
* @param space A `Space` instance
|
|
289
|
+
* @param buildFn A callback to run for each module directory
|
|
290
|
+
*/
|
|
129
291
|
static scan(space, buildFn) {
|
|
130
|
-
if (!fs.existsSync(space.
|
|
131
|
-
throw error_1.CompilerError.DirectoryDoesntExists(space.
|
|
292
|
+
if (!fs.existsSync(space.dirpath)) {
|
|
293
|
+
throw error_1.CompilerError.DirectoryDoesntExists(space.dirpath);
|
|
132
294
|
}
|
|
133
295
|
const modulesPath = this.path(space, './modules');
|
|
134
296
|
if (!fs.existsSync(modulesPath)) {
|
|
@@ -6,6 +6,10 @@ import { Bucket } from "../../../elements/entities/bucket/bucket";
|
|
|
6
6
|
import { CreateObj, PatchObj, PutObj } from "../../../elements/entities/bucket/bucket.types";
|
|
7
7
|
import { NQL_Query } from "../../../elements/entities/bucket/query/nql.schema";
|
|
8
8
|
import { NesoiFile } from "../../data/file";
|
|
9
|
+
/**
|
|
10
|
+
* @category Engine
|
|
11
|
+
* @subcategory Transaction
|
|
12
|
+
*/
|
|
9
13
|
export declare class BucketTrxNode<M extends $Module, $ extends $Bucket> {
|
|
10
14
|
private parentTrx;
|
|
11
15
|
private bucket;
|
|
@@ -147,6 +151,10 @@ export declare class BucketTrxNode<M extends $Module, $ extends $Bucket> {
|
|
|
147
151
|
*/
|
|
148
152
|
get unsafe(): BucketUnsafeTrxNode<M, $>;
|
|
149
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* @category Engine
|
|
156
|
+
* @subcategory Transaction
|
|
157
|
+
*/
|
|
150
158
|
export declare class BucketUnsafeTrxNode<M extends $Module, $ extends $Bucket> {
|
|
151
159
|
private bucketTrx;
|
|
152
160
|
private bucket;
|
|
@@ -188,6 +196,10 @@ export declare class BucketUnsafeTrxNode<M extends $Module, $ extends $Bucket> {
|
|
|
188
196
|
*/
|
|
189
197
|
deleteMany(ids: $['#data']['id'][]): Promise<void>;
|
|
190
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* @category Engine
|
|
201
|
+
* @subcategory Transaction
|
|
202
|
+
*/
|
|
191
203
|
export declare class BucketDriveTrxNode<M extends $Module, $ extends $Bucket> {
|
|
192
204
|
private bucketTrx;
|
|
193
205
|
private bucket;
|
|
@@ -4,6 +4,10 @@ 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
|
+
/**
|
|
8
|
+
* @category Engine
|
|
9
|
+
* @subcategory Transaction
|
|
10
|
+
*/
|
|
7
11
|
class BucketTrxNode {
|
|
8
12
|
constructor(parentTrx, bucket) {
|
|
9
13
|
this.parentTrx = parentTrx;
|
|
@@ -28,8 +32,7 @@ class BucketTrxNode {
|
|
|
28
32
|
out = await fn(trx);
|
|
29
33
|
}
|
|
30
34
|
catch (e) {
|
|
31
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
32
|
-
throw e;
|
|
35
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
33
36
|
}
|
|
34
37
|
await trx_node_1.TrxNode.ok(trx, fmtTrxOut ? fmtTrxOut(out) : out);
|
|
35
38
|
return out;
|
|
@@ -283,6 +286,10 @@ class BucketTrxNode {
|
|
|
283
286
|
}
|
|
284
287
|
}
|
|
285
288
|
exports.BucketTrxNode = BucketTrxNode;
|
|
289
|
+
/**
|
|
290
|
+
* @category Engine
|
|
291
|
+
* @subcategory Transaction
|
|
292
|
+
*/
|
|
286
293
|
class BucketUnsafeTrxNode {
|
|
287
294
|
constructor(bucketTrx, bucket, enableTenancy) {
|
|
288
295
|
this.bucketTrx = bucketTrx;
|
|
@@ -360,6 +367,10 @@ class BucketUnsafeTrxNode {
|
|
|
360
367
|
}
|
|
361
368
|
}
|
|
362
369
|
exports.BucketUnsafeTrxNode = BucketUnsafeTrxNode;
|
|
370
|
+
/**
|
|
371
|
+
* @category Engine
|
|
372
|
+
* @subcategory Transaction
|
|
373
|
+
*/
|
|
363
374
|
class BucketDriveTrxNode {
|
|
364
375
|
constructor(bucketTrx, bucket) {
|
|
365
376
|
this.bucketTrx = bucketTrx;
|
|
@@ -4,6 +4,10 @@ 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
|
+
/**
|
|
8
|
+
* @category Engine
|
|
9
|
+
* @subcategory Transaction
|
|
10
|
+
*/
|
|
7
11
|
export declare class BucketQueryTrxNode<M extends $Module, B extends $Bucket, V extends ViewName<B>, Obj = ViewObj<B, V>> {
|
|
8
12
|
private trx;
|
|
9
13
|
private bucket;
|
|
@@ -3,6 +3,10 @@ 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
|
+
/**
|
|
7
|
+
* @category Engine
|
|
8
|
+
* @subcategory Transaction
|
|
9
|
+
*/
|
|
6
10
|
class BucketQueryTrxNode {
|
|
7
11
|
constructor(trx, bucket, query, view, enableTenancy) {
|
|
8
12
|
this.trx = trx;
|
|
@@ -31,8 +35,7 @@ class BucketQueryTrxNode {
|
|
|
31
35
|
});
|
|
32
36
|
}
|
|
33
37
|
catch (e) {
|
|
34
|
-
await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
35
|
-
throw e;
|
|
38
|
+
throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
36
39
|
}
|
|
37
40
|
await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
|
|
38
41
|
return results.data.length
|
|
@@ -48,13 +51,11 @@ class BucketQueryTrxNode {
|
|
|
48
51
|
});
|
|
49
52
|
}
|
|
50
53
|
catch (e) {
|
|
51
|
-
await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
52
|
-
throw e;
|
|
54
|
+
throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
53
55
|
}
|
|
54
56
|
if (!results.data.length) {
|
|
55
57
|
const e = error_1.NesoiError.Bucket.Query.NoResults({ bucket: this.bucket.schema.alias, query: this.query });
|
|
56
|
-
await trx_node_1.TrxNode.error(this.trx, e);
|
|
57
|
-
throw e;
|
|
58
|
+
throw await trx_node_1.TrxNode.error(this.trx, e);
|
|
58
59
|
}
|
|
59
60
|
await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
|
|
60
61
|
return results.data[0];
|
|
@@ -66,8 +67,7 @@ class BucketQueryTrxNode {
|
|
|
66
67
|
results = await this.bucket.query(this.trx, this.query, undefined, this.view);
|
|
67
68
|
}
|
|
68
69
|
catch (e) {
|
|
69
|
-
await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
70
|
-
throw e;
|
|
70
|
+
throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
71
71
|
}
|
|
72
72
|
await trx_node_1.TrxNode.ok(this.trx, { length: results.data.length });
|
|
73
73
|
return results.data;
|
|
@@ -84,8 +84,7 @@ class BucketQueryTrxNode {
|
|
|
84
84
|
result = await this.bucket.query(this.trx, this.query, pagination, this.view);
|
|
85
85
|
}
|
|
86
86
|
catch (e) {
|
|
87
|
-
await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
88
|
-
throw e;
|
|
87
|
+
throw await trx_node_1.TrxNode.error(this.trx, e); // Bucket unexpected error
|
|
89
88
|
}
|
|
90
89
|
await trx_node_1.TrxNode.ok(this.trx, { length: result.data.length });
|
|
91
90
|
return result;
|
|
@@ -4,6 +4,10 @@ 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
|
+
/**
|
|
8
|
+
* @category Engine
|
|
9
|
+
* @subcategory Transaction
|
|
10
|
+
*/
|
|
7
11
|
export declare class JobTrxNode<M extends $Module, $ extends $Job> {
|
|
8
12
|
private trx;
|
|
9
13
|
private job;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JobTrxNode = void 0;
|
|
4
4
|
const trx_node_1 = require("../trx_node");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Transaction
|
|
8
|
+
*/
|
|
5
9
|
class JobTrxNode {
|
|
6
10
|
constructor(trx, job, ctx) {
|
|
7
11
|
this.trx = trx;
|
|
@@ -22,8 +26,7 @@ class JobTrxNode {
|
|
|
22
26
|
response = await this.job.consumeRaw(trx, message, this.ctx);
|
|
23
27
|
}
|
|
24
28
|
catch (e) {
|
|
25
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
26
|
-
throw e;
|
|
29
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
27
30
|
}
|
|
28
31
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
29
32
|
return response;
|
|
@@ -36,8 +39,7 @@ class JobTrxNode {
|
|
|
36
39
|
response = await this.job.consume(trx, message, this.ctx);
|
|
37
40
|
}
|
|
38
41
|
catch (e) {
|
|
39
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
40
|
-
throw e;
|
|
42
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
41
43
|
}
|
|
42
44
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
43
45
|
return response;
|
|
@@ -3,6 +3,10 @@ import { TrxNode } from '../trx_node';
|
|
|
3
3
|
import { $Machine } from "../../../elements/blocks/machine/machine.schema";
|
|
4
4
|
import { Machine, MachineOutput } from "../../../elements/blocks/machine/machine";
|
|
5
5
|
import { Message } from "../../../elements/entities/message/message";
|
|
6
|
+
/**
|
|
7
|
+
* @category Engine
|
|
8
|
+
* @subcategory Transaction
|
|
9
|
+
*/
|
|
6
10
|
export declare class MachineTrxNode<M extends $Module, $ extends $Machine> {
|
|
7
11
|
private trx;
|
|
8
12
|
private machine;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MachineTrxNode = void 0;
|
|
4
4
|
const trx_node_1 = require("../trx_node");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Transaction
|
|
8
|
+
*/
|
|
5
9
|
class MachineTrxNode {
|
|
6
10
|
constructor(trx, machine) {
|
|
7
11
|
this.trx = trx;
|
|
@@ -15,8 +19,7 @@ class MachineTrxNode {
|
|
|
15
19
|
response = await this.machine.consumeRaw(trx, message);
|
|
16
20
|
}
|
|
17
21
|
catch (e) {
|
|
18
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
19
|
-
throw e;
|
|
22
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
20
23
|
}
|
|
21
24
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
22
25
|
return response;
|
|
@@ -29,8 +32,7 @@ class MachineTrxNode {
|
|
|
29
32
|
response = await this.machine.consume(trx, message);
|
|
30
33
|
}
|
|
31
34
|
catch (e) {
|
|
32
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
33
|
-
throw e;
|
|
35
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
34
36
|
}
|
|
35
37
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
36
38
|
return response;
|
|
@@ -2,6 +2,10 @@ import { $Module, RawMessageInput } from "../../../schema";
|
|
|
2
2
|
import { TrxNode } from '../trx_node';
|
|
3
3
|
import { $Queue } from "../../../elements/blocks/queue/queue.schema";
|
|
4
4
|
import { Queue } from "../../../elements/blocks/queue/queue";
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Transaction
|
|
8
|
+
*/
|
|
5
9
|
export declare class QueueTrxNode<M extends $Module, $ extends $Queue> {
|
|
6
10
|
private trx;
|
|
7
11
|
private queue;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueueTrxNode = void 0;
|
|
4
4
|
const trx_node_1 = require("../trx_node");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Transaction
|
|
8
|
+
*/
|
|
5
9
|
class QueueTrxNode {
|
|
6
10
|
constructor(trx, queue) {
|
|
7
11
|
this.trx = trx;
|
|
@@ -15,8 +19,7 @@ class QueueTrxNode {
|
|
|
15
19
|
// response = this.queue.push(trx, raw);
|
|
16
20
|
}
|
|
17
21
|
catch (e) {
|
|
18
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
19
|
-
throw e;
|
|
22
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
20
23
|
}
|
|
21
24
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
22
25
|
}
|
|
@@ -8,6 +8,10 @@ type QueryRaw<$ extends $Resource> = $['#input.query']['#raw'];
|
|
|
8
8
|
type CreateRaw<$ extends $Resource> = $['#input.create']['#raw'];
|
|
9
9
|
type UpdateRaw<$ extends $Resource> = $['#input.update']['#raw'];
|
|
10
10
|
type DeleteRaw<$ extends $Resource> = $['#input.delete']['#raw'];
|
|
11
|
+
/**
|
|
12
|
+
* @category Engine
|
|
13
|
+
* @subcategory Transaction
|
|
14
|
+
*/
|
|
11
15
|
export declare class ResourceTrxNode<M extends $Module, $ extends $Resource> {
|
|
12
16
|
private trx;
|
|
13
17
|
private resource;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResourceTrxNode = void 0;
|
|
4
4
|
const trx_node_1 = require("../trx_node");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Transaction
|
|
8
|
+
*/
|
|
5
9
|
class ResourceTrxNode {
|
|
6
10
|
constructor(trx, resource) {
|
|
7
11
|
this.trx = trx;
|
|
@@ -15,8 +19,7 @@ class ResourceTrxNode {
|
|
|
15
19
|
response = await this.resource.consume(trx, message);
|
|
16
20
|
}
|
|
17
21
|
catch (e) {
|
|
18
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
19
|
-
throw e;
|
|
22
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
20
23
|
}
|
|
21
24
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
22
25
|
return response;
|
|
@@ -67,8 +70,7 @@ class ResourceTrxNode {
|
|
|
67
70
|
response = await this.resource.consumeRaw(trx, message);
|
|
68
71
|
}
|
|
69
72
|
catch (e) {
|
|
70
|
-
await trx_node_1.TrxNode.error(trx, e);
|
|
71
|
-
throw e;
|
|
73
|
+
throw await trx_node_1.TrxNode.error(trx, e);
|
|
72
74
|
}
|
|
73
75
|
await trx_node_1.TrxNode.ok(trx, response);
|
|
74
76
|
return response;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { $Module, $Space } from "../../schema";
|
|
2
2
|
import { Module } from '../module';
|
|
3
3
|
import { AnyTrxNode, TrxNode, TrxNodeStatus } from './trx_node';
|
|
4
|
-
import { TrxEngineOrigin } from './trx_engine';
|
|
4
|
+
import { AnyTrxEngine, TrxEngineOrigin } from './trx_engine';
|
|
5
5
|
import { AnyUsers, AuthnRequest } from '../auth/authn';
|
|
6
6
|
import { NesoiDatetime } from '../data/datetime';
|
|
7
|
+
import { NesoiError } from '../data/error';
|
|
7
8
|
type TrxOrigin = TrxEngineOrigin | `trx:${string}`;
|
|
8
9
|
type TrxState = 'open' | 'ok' | 'error';
|
|
10
|
+
/**
|
|
11
|
+
* @category Engine
|
|
12
|
+
* @subcategory Transaction
|
|
13
|
+
*/
|
|
9
14
|
export declare class TrxStatus<Output> {
|
|
10
15
|
id: string;
|
|
11
16
|
origin: TrxOrigin;
|
|
@@ -13,12 +18,17 @@ export declare class TrxStatus<Output> {
|
|
|
13
18
|
end?: NesoiDatetime | undefined;
|
|
14
19
|
state?: TrxState | undefined;
|
|
15
20
|
output?: Output | undefined;
|
|
16
|
-
error?:
|
|
21
|
+
error?: NesoiError.BaseError | undefined;
|
|
17
22
|
nodes: TrxNodeStatus[];
|
|
18
|
-
constructor(id: string, origin: TrxOrigin, start: NesoiDatetime, end?: NesoiDatetime | undefined, state?: TrxState | undefined, output?: Output | undefined, error?:
|
|
23
|
+
constructor(id: string, origin: TrxOrigin, start: NesoiDatetime, end?: NesoiDatetime | undefined, state?: TrxState | undefined, output?: Output | undefined, error?: NesoiError.BaseError | undefined, nodes?: TrxNodeStatus[]);
|
|
19
24
|
summary(): string;
|
|
20
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @category Engine
|
|
28
|
+
* @subcategory Transaction
|
|
29
|
+
*/
|
|
21
30
|
export declare class Trx<S extends $Space, M extends $Module, Authn extends AnyUsers> {
|
|
31
|
+
engine: AnyTrxEngine;
|
|
22
32
|
private module;
|
|
23
33
|
id: string;
|
|
24
34
|
private origin;
|
|
@@ -27,7 +37,7 @@ export declare class Trx<S extends $Space, M extends $Module, Authn extends AnyU
|
|
|
27
37
|
start: NesoiDatetime;
|
|
28
38
|
end?: NesoiDatetime;
|
|
29
39
|
ctx: Record<string, any>;
|
|
30
|
-
constructor(module: Module<S, M>, origin: TrxOrigin, authn?: {
|
|
40
|
+
constructor(engine: AnyTrxEngine, module: Module<S, M>, origin: TrxOrigin, authn?: {
|
|
31
41
|
tokens: AuthnRequest<any>;
|
|
32
42
|
users: Authn;
|
|
33
43
|
}, id?: string, root?: TrxNode<S, M, Authn>, nodes?: Record<string, TrxNode<S, M, Authn>>);
|
|
@@ -8,6 +8,10 @@ const datetime_1 = require("../data/datetime");
|
|
|
8
8
|
/*
|
|
9
9
|
Transaction Status
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* @category Engine
|
|
13
|
+
* @subcategory Transaction
|
|
14
|
+
*/
|
|
11
15
|
class TrxStatus {
|
|
12
16
|
constructor(id, origin, start, end, state, output, error, nodes = []) {
|
|
13
17
|
this.id = id;
|
|
@@ -45,8 +49,13 @@ class TrxStatus {
|
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
exports.TrxStatus = TrxStatus;
|
|
52
|
+
/**
|
|
53
|
+
* @category Engine
|
|
54
|
+
* @subcategory Transaction
|
|
55
|
+
*/
|
|
48
56
|
class Trx {
|
|
49
|
-
constructor(module, origin, authn, id, root, nodes) {
|
|
57
|
+
constructor(engine, module, origin, authn, id, root, nodes) {
|
|
58
|
+
this.engine = engine;
|
|
50
59
|
this.start = datetime_1.NesoiDatetime.now();
|
|
51
60
|
this.ctx = {};
|
|
52
61
|
this.module = module;
|
|
@@ -4,10 +4,10 @@ import { AnyTrx, Trx } from './trx';
|
|
|
4
4
|
import { AnyUsers } from '../auth/authn';
|
|
5
5
|
import { TrxNode, TrxNodeStatus } from './trx_node';
|
|
6
6
|
export type TrxEngineWrapFn<S extends $Space, M extends $Module> = (trx: TrxNode<S, M, any>) => Promise<TrxNodeStatus>;
|
|
7
|
-
export type TrxEngineConfig<S extends $Space, M extends $Module, Authn extends AnyUsers,
|
|
7
|
+
export type TrxEngineConfig<S extends $Space, M extends $Module, Authn extends AnyUsers, Services extends Record<string, any>> = {
|
|
8
8
|
/**
|
|
9
9
|
* Adapter used to store transactions of this module.
|
|
10
10
|
*/
|
|
11
11
|
adapter?: (schema: M) => BucketAdapter<AnyTrx>;
|
|
12
|
-
wrap?: <T extends Trx<S, M, Authn>>(trx: T, fn: TrxEngineWrapFn<S, M>,
|
|
12
|
+
wrap?: <T extends Trx<S, M, Authn>>(trx: T, fn: TrxEngineWrapFn<S, M>, services: Services) => Promise<any>;
|
|
13
13
|
};
|