nesoi 3.0.6 → 3.0.9
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/adapters/postgres/src/migrator/database.d.ts +3 -6
- package/lib/adapters/postgres/src/migrator/database.js +20 -20
- package/lib/adapters/postgres/src/migrator/generator/generator.d.ts +22 -0
- package/lib/adapters/postgres/src/migrator/generator/generator.js +326 -0
- package/lib/adapters/postgres/src/migrator/generator/migration.d.ts +66 -0
- package/lib/adapters/postgres/src/migrator/generator/migration.js +249 -0
- package/lib/adapters/postgres/src/migrator/generator/provider.d.ts +19 -0
- package/lib/adapters/postgres/src/migrator/{migrator.js → generator/provider.js} +23 -25
- package/lib/adapters/postgres/src/migrator/index.d.ts +47 -1
- package/lib/adapters/postgres/src/migrator/index.js +20 -3
- package/lib/adapters/postgres/src/migrator/runner/runner.d.ts +17 -0
- package/lib/adapters/postgres/src/migrator/runner/runner.js +249 -0
- package/lib/adapters/postgres/src/migrator/runner/status.d.ts +17 -0
- package/lib/adapters/postgres/src/migrator/runner/status.js +55 -0
- package/lib/adapters/postgres/src/postgres.cli.d.ts +11 -1
- package/lib/adapters/postgres/src/postgres.cli.js +34 -11
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +4 -4
- 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 +32 -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/compiler/typescript/transformers/replace_import.transformer.js +8 -1
- 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 +4 -0
- 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 +16 -0
- package/lib/elements/blocks/machine/machine.schema.js +16 -1
- 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 +4 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.js +4 -0
- 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.d.ts +4 -0
- package/lib/elements/edge/controller/controller.js +4 -0
- 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 +16 -11
- 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.d.ts +9 -2
- package/lib/elements/entities/bucket/bucket.js +14 -7
- 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 +3 -0
- package/lib/engine/apps/app.config.js +3 -0
- package/lib/engine/apps/app.d.ts +3 -0
- package/lib/engine/apps/app.js +4 -1
- package/lib/engine/apps/inline.app.d.ts +3 -0
- package/lib/engine/apps/inline.app.js +3 -0
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +8 -0
- package/lib/engine/apps/monolyth/monolyth.app.js +8 -0
- package/lib/engine/auth/authn.d.ts +4 -0
- package/lib/engine/auth/authn.js +4 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +4 -0
- package/lib/engine/auth/zero.authn_provider.js +4 -0
- package/lib/engine/cli/cli.d.ts +7 -1
- 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 +93 -6
- package/lib/engine/daemon.js +90 -7
- 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 +63 -2
- package/lib/engine/dependency.js +52 -0
- package/lib/engine/module.d.ts +109 -9
- package/lib/engine/module.js +110 -25
- 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 +12 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +4 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +4 -0
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +4 -0
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +4 -0
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +4 -0
- package/lib/engine/transaction/trx.d.ts +8 -0
- package/lib/engine/transaction/trx.js +8 -0
- package/lib/engine/transaction/trx_engine.d.ts +4 -0
- package/lib/engine/transaction/trx_engine.js +4 -3
- package/lib/engine/transaction/trx_node.d.ts +4 -0
- package/lib/engine/transaction/trx_node.js +4 -0
- package/lib/engine/tree.d.ts +54 -2
- package/lib/engine/tree.js +54 -2
- package/lib/engine/util/mime.d.ts +4 -4
- package/lib/engine/util/mime.js +7 -9
- package/lib/schema.d.ts +1 -1
- package/package.json +1 -1
- 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/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/runner.d.ts +0 -71
- package/lib/adapters/postgres/src/migrator/runner.js +0 -271
- 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;
|
|
@@ -283,6 +287,10 @@ class BucketTrxNode {
|
|
|
283
287
|
}
|
|
284
288
|
}
|
|
285
289
|
exports.BucketTrxNode = BucketTrxNode;
|
|
290
|
+
/**
|
|
291
|
+
* @category Engine
|
|
292
|
+
* @subcategory Transaction
|
|
293
|
+
*/
|
|
286
294
|
class BucketUnsafeTrxNode {
|
|
287
295
|
constructor(bucketTrx, bucket, enableTenancy) {
|
|
288
296
|
this.bucketTrx = bucketTrx;
|
|
@@ -360,6 +368,10 @@ class BucketUnsafeTrxNode {
|
|
|
360
368
|
}
|
|
361
369
|
}
|
|
362
370
|
exports.BucketUnsafeTrxNode = BucketUnsafeTrxNode;
|
|
371
|
+
/**
|
|
372
|
+
* @category Engine
|
|
373
|
+
* @subcategory Transaction
|
|
374
|
+
*/
|
|
363
375
|
class BucketDriveTrxNode {
|
|
364
376
|
constructor(bucketTrx, bucket) {
|
|
365
377
|
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;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -6,6 +6,10 @@ import { AnyUsers, AuthnRequest } from '../auth/authn';
|
|
|
6
6
|
import { NesoiDatetime } from '../data/datetime';
|
|
7
7
|
type TrxOrigin = TrxEngineOrigin | `trx:${string}`;
|
|
8
8
|
type TrxState = 'open' | 'ok' | 'error';
|
|
9
|
+
/**
|
|
10
|
+
* @category Engine
|
|
11
|
+
* @subcategory Transaction
|
|
12
|
+
*/
|
|
9
13
|
export declare class TrxStatus<Output> {
|
|
10
14
|
id: string;
|
|
11
15
|
origin: TrxOrigin;
|
|
@@ -18,6 +22,10 @@ export declare class TrxStatus<Output> {
|
|
|
18
22
|
constructor(id: string, origin: TrxOrigin, start: NesoiDatetime, end?: NesoiDatetime | undefined, state?: TrxState | undefined, output?: Output | undefined, error?: string | undefined, nodes?: TrxNodeStatus[]);
|
|
19
23
|
summary(): string;
|
|
20
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* @category Engine
|
|
27
|
+
* @subcategory Transaction
|
|
28
|
+
*/
|
|
21
29
|
export declare class Trx<S extends $Space, M extends $Module, Authn extends AnyUsers> {
|
|
22
30
|
private module;
|
|
23
31
|
id: string;
|
|
@@ -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,6 +49,10 @@ class TrxStatus {
|
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
exports.TrxStatus = TrxStatus;
|
|
52
|
+
/**
|
|
53
|
+
* @category Engine
|
|
54
|
+
* @subcategory Transaction
|
|
55
|
+
*/
|
|
48
56
|
class Trx {
|
|
49
57
|
constructor(module, origin, authn, id, root, nodes) {
|
|
50
58
|
this.start = datetime_1.NesoiDatetime.now();
|
|
@@ -5,6 +5,10 @@ import { TrxNode, TrxNodeStatus } from './trx_node';
|
|
|
5
5
|
import { AnyAuthnProviders, AuthnRequest } from '../auth/authn';
|
|
6
6
|
import { TrxEngineConfig } from './trx_engine.config';
|
|
7
7
|
export type TrxEngineOrigin = `app:${string}`;
|
|
8
|
+
/**
|
|
9
|
+
* @category Engine
|
|
10
|
+
* @subcategory Transaction
|
|
11
|
+
*/
|
|
8
12
|
export declare class TrxEngine<S extends $Space, M extends $Module, Authn extends AnyAuthnProviders> {
|
|
9
13
|
private origin;
|
|
10
14
|
private module;
|
|
@@ -6,9 +6,10 @@ const trx_1 = require("./trx");
|
|
|
6
6
|
const trx_node_1 = require("./trx_node");
|
|
7
7
|
const error_1 = require("../data/error");
|
|
8
8
|
const memory_bucket_adapter_1 = require("../../elements/entities/bucket/adapters/memory.bucket_adapter");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
* @category Engine
|
|
11
|
+
* @subcategory Transaction
|
|
12
|
+
*/
|
|
12
13
|
class TrxEngine {
|
|
13
14
|
constructor(origin, module, authnProviders, config, providers = {}) {
|
|
14
15
|
this.origin = origin;
|
|
@@ -22,6 +22,10 @@ export type TrxNodeStatus = {
|
|
|
22
22
|
nodes: TrxNodeStatus[];
|
|
23
23
|
app: number;
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* @category Engine
|
|
27
|
+
* @subcategory Transaction
|
|
28
|
+
*/
|
|
25
29
|
export declare class TrxNode<Space extends $Space, M extends $Module, Authn extends AnyUsers> {
|
|
26
30
|
private scope;
|
|
27
31
|
private trx;
|
package/lib/engine/tree.d.ts
CHANGED
|
@@ -3,32 +3,84 @@ import { ResolvedBuilderNode } from './dependency';
|
|
|
3
3
|
import { AnyModule } from './module';
|
|
4
4
|
import { TreeshakeConfig } from "../compiler/treeshake";
|
|
5
5
|
type TraverseCallback = (node: ResolvedBuilderNode) => Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* A tree of module elements which allows building in the correct order.
|
|
8
|
+
*
|
|
9
|
+
* @category Engine
|
|
10
|
+
*/
|
|
6
11
|
export declare class ModuleTree {
|
|
7
12
|
modules: Record<string, AnyModule>;
|
|
8
13
|
config?: TreeshakeConfig | undefined;
|
|
9
14
|
private layers;
|
|
15
|
+
/**
|
|
16
|
+
* @param modules A dictionary of modules by name
|
|
17
|
+
* @param config Optional configuration for the treeshaking process
|
|
18
|
+
*/
|
|
10
19
|
constructor(modules: Record<string, AnyModule>, config?: TreeshakeConfig | undefined);
|
|
20
|
+
/**
|
|
21
|
+
* Build the tree from existing modules on the Space.
|
|
22
|
+
* - Treeshakes each element to identify it's dependencies
|
|
23
|
+
* - Resolves each found dependency forming a tree
|
|
24
|
+
* - Groups tree into layers which can be built in isolation
|
|
25
|
+
*/
|
|
11
26
|
resolve(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Read the module elements from files and identify
|
|
29
|
+
* all related nodes.
|
|
30
|
+
*
|
|
31
|
+
* @returns A dictionary of nodes by module name
|
|
32
|
+
*/
|
|
12
33
|
private treeshake;
|
|
13
34
|
/**
|
|
14
|
-
* Each
|
|
35
|
+
* Each element declares it's dependencies as a `$Dependency`.
|
|
15
36
|
* In order to assemble the build layers, it's necessary to
|
|
16
37
|
* resolve them into a graph of `ResolvedBuilderNode`s.
|
|
17
38
|
* This also resolves the inline nodes, to allow merging the schemas
|
|
18
39
|
* of inline nodes on build.
|
|
40
|
+
*
|
|
41
|
+
* @param nodesByModule A dictionary of builder nodes by module name
|
|
42
|
+
* @returns A dictionary of resolved builder nodes
|
|
19
43
|
*/
|
|
20
44
|
private resolveDependencies;
|
|
45
|
+
/**
|
|
46
|
+
* Recursively extract all inline nodes from a resolved builder node.
|
|
47
|
+
*
|
|
48
|
+
* @param node A resolved builder node
|
|
49
|
+
* @returns A list of resolved builder nodes
|
|
50
|
+
*/
|
|
21
51
|
private getAllInlineNodes;
|
|
22
52
|
/**
|
|
23
|
-
*
|
|
53
|
+
* Build a list of layers (a _layer_ is a list of resolved builder nodes),
|
|
54
|
+
* each of which can be separately built, in a specific order, so all
|
|
55
|
+
* the dependencies of a node are built before the node itself.
|
|
56
|
+
*
|
|
57
|
+
* @param nodes A list of resolved builder nodes
|
|
58
|
+
* @returns A list of module tree layers
|
|
24
59
|
*/
|
|
25
60
|
private resolveLayers;
|
|
61
|
+
/**
|
|
62
|
+
* Traverse tree layers and run the callback `fn` for each node of each layer.
|
|
63
|
+
*
|
|
64
|
+
* @param actionAlias Action alias to be logged
|
|
65
|
+
* @param fn Callback to be run for each node
|
|
66
|
+
*/
|
|
26
67
|
traverse(actionAlias: string, fn: TraverseCallback): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Get schema of a dependency-like object.
|
|
70
|
+
*
|
|
71
|
+
* @param node A dependency-like object
|
|
72
|
+
* @return An element schema
|
|
73
|
+
*/
|
|
27
74
|
getSchema(node: {
|
|
28
75
|
module: string;
|
|
29
76
|
type: BuilderType;
|
|
30
77
|
name: string;
|
|
31
78
|
}): import("../elements").$Message | import("../elements").$Machine | import("../elements").$Bucket | import("../elements").$Constants | import("../elements").$Job | import("../elements").$Externals | import("../elements").$Resource | import("../elements").$Controller;
|
|
79
|
+
/**
|
|
80
|
+
* Return a list of all nodes of all modules on the tree.
|
|
81
|
+
*
|
|
82
|
+
* @returns A list of resolved builder nodes
|
|
83
|
+
*/
|
|
32
84
|
allNodes(): ResolvedBuilderNode[];
|
|
33
85
|
}
|
|
34
86
|
export {};
|