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
package/lib/engine/tree.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModuleTree = void 0;
|
|
4
4
|
const dependency_1 = require("./dependency");
|
|
5
|
-
const error_1 = require("../compiler/error");
|
|
6
5
|
const log_1 = require("./util/log");
|
|
7
6
|
const string_1 = require("./util/string");
|
|
8
|
-
const treeshake_1 = require("
|
|
9
|
-
const
|
|
7
|
+
const treeshake_1 = require("./treeshake");
|
|
8
|
+
const error_1 = require("./data/error");
|
|
9
|
+
/* @nesoi:browser ignore-end */
|
|
10
10
|
/**
|
|
11
11
|
* A tree of module elements which allows building in the correct order.
|
|
12
12
|
*
|
|
@@ -29,7 +29,22 @@ class ModuleTree {
|
|
|
29
29
|
* - Groups tree into layers which can be built in isolation
|
|
30
30
|
*/
|
|
31
31
|
async resolve(cache) {
|
|
32
|
-
cache ?? (cache =
|
|
32
|
+
cache ?? (cache = {
|
|
33
|
+
nesoidir: '',
|
|
34
|
+
hash: {
|
|
35
|
+
$: '',
|
|
36
|
+
files: {},
|
|
37
|
+
modules: {},
|
|
38
|
+
space: ''
|
|
39
|
+
},
|
|
40
|
+
files: {},
|
|
41
|
+
modules: {},
|
|
42
|
+
types: {
|
|
43
|
+
space: {},
|
|
44
|
+
modules: {},
|
|
45
|
+
elements: {}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
33
48
|
const nodesByModule = await this.treeshake(cache);
|
|
34
49
|
const resolvedNodes = await this.resolveDependencies(nodesByModule);
|
|
35
50
|
this.layers = this.resolveLayers(resolvedNodes);
|
|
@@ -41,7 +56,7 @@ class ModuleTree {
|
|
|
41
56
|
* @returns A dictionary of nodes by module name
|
|
42
57
|
*/
|
|
43
58
|
async treeshake(cache) {
|
|
44
|
-
log_1.Log.debug('
|
|
59
|
+
log_1.Log.debug('builder', 'tree', 'Treeshaking');
|
|
45
60
|
const nodesByModule = {};
|
|
46
61
|
for (const m in this.modules) {
|
|
47
62
|
const module = this.modules[m];
|
|
@@ -51,79 +66,112 @@ class ModuleTree {
|
|
|
51
66
|
return nodesByModule;
|
|
52
67
|
}
|
|
53
68
|
/**
|
|
54
|
-
* Each element declares it's dependencies as a
|
|
69
|
+
* Each element declares it's dependencies as a list of `Dependency`.
|
|
55
70
|
* In order to assemble the build layers, it's necessary to
|
|
56
71
|
* resolve them into a graph of `ResolvedBuilderNode`s.
|
|
57
72
|
* This also resolves the inline nodes, to allow merging the schemas
|
|
58
|
-
* of inline nodes on
|
|
73
|
+
* of inline nodes on compile.
|
|
59
74
|
*
|
|
60
75
|
* @param nodesByModule A dictionary of builder nodes by module name
|
|
61
76
|
* @returns A dictionary of resolved builder nodes
|
|
62
77
|
*/
|
|
63
78
|
async resolveDependencies(nodesByModule) {
|
|
64
|
-
log_1.Log.debug('
|
|
79
|
+
log_1.Log.debug('builder', 'tree', 'Resolving dependencies');
|
|
65
80
|
const resolved = {};
|
|
66
81
|
Object.entries(nodesByModule).forEach(([module, nodes]) => {
|
|
67
|
-
|
|
82
|
+
const externals = nodes.find(node => node.tag.type === 'externals');
|
|
83
|
+
log_1.Log.debug('builder', 'tree', `Resolving dependencies of ${(0, log_1.scopeTag)('module', module)}`);
|
|
68
84
|
nodes.forEach(node => {
|
|
69
|
-
log_1.Log.trace('
|
|
85
|
+
log_1.Log.trace('builder', 'tree', ` └ ${(0, log_1.scopeTag)(node.tag.type, node.tag.name)}`);
|
|
70
86
|
const dependencies = node.dependencies.map(dep => {
|
|
71
87
|
// Find dependency module
|
|
72
|
-
const depModuleNodes = nodesByModule[dep.module
|
|
88
|
+
const depModuleNodes = nodesByModule[dep.tag.module];
|
|
73
89
|
if (!depModuleNodes) {
|
|
74
|
-
throw error_1.
|
|
90
|
+
throw error_1.NesoiError.Builder.UnmetModuleDependency({ from: node.tag.full, dep: dep.tag.full });
|
|
75
91
|
}
|
|
76
92
|
// Find dependency node
|
|
77
|
-
const depNode = depModuleNodes.find(mNode => mNode.tag
|
|
93
|
+
const depNode = depModuleNodes.find(mNode => dependency_1.Tag.isSameNodeAs(mNode.tag, dep.tag));
|
|
78
94
|
if (!depNode) {
|
|
79
|
-
throw error_1.
|
|
95
|
+
throw error_1.NesoiError.Builder.UnmetDependency({ from: node.tag.full, dep: dep.tag.full });
|
|
96
|
+
}
|
|
97
|
+
// Check constants nodes
|
|
98
|
+
if (dep.tag.type === 'constants.enum') {
|
|
99
|
+
const enums = depNode.builder.enums;
|
|
100
|
+
if (!Object.keys(enums).some(v => v === dep.tag.name
|
|
101
|
+
|| v.startsWith(dep.tag.name + '.'))) {
|
|
102
|
+
throw error_1.NesoiError.Builder.UnmetDependencyEnum({ from: node.tag.full, dep: dep.tag.full });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (dep.tag.type === 'constants.value') {
|
|
106
|
+
const values = depNode.builder._values;
|
|
107
|
+
if (!(dep.tag.name in values)) {
|
|
108
|
+
throw error_1.NesoiError.Builder.UnmetDependencyValue({ from: node.tag.full, dep: dep.tag.full });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Check for externals
|
|
112
|
+
if (dep.tag.module !== module) {
|
|
113
|
+
const external = externals
|
|
114
|
+
? dependency_1.Tag.resolveExternal(dep.tag, externals.builder)
|
|
115
|
+
: undefined;
|
|
116
|
+
if (!external) {
|
|
117
|
+
throw error_1.NesoiError.Builder.NotImportedDependency({ from: node.tag.full, dep: dep.tag.full });
|
|
118
|
+
}
|
|
80
119
|
}
|
|
81
|
-
log_1.Log.trace('
|
|
120
|
+
log_1.Log.trace('builder', 'tree', ` ~ ${(0, string_1.colored)('OK', 'green')} ${(0, string_1.colored)(dep.tag.full, 'purple')}`);
|
|
82
121
|
// If dependency node was not resolved yet, create a shared reference
|
|
83
122
|
// on which the `dependencies` and `inlines` will be populated on future iterations.
|
|
84
|
-
|
|
85
|
-
|
|
123
|
+
const tag = ['constants.enum', 'constants.value'].includes(dep.tag.type)
|
|
124
|
+
? new dependency_1.Tag(dep.tag.module, 'constants', '*').full
|
|
125
|
+
: dep.tag.full;
|
|
126
|
+
if (!(tag in resolved)) {
|
|
127
|
+
resolved[tag] = {
|
|
86
128
|
...depNode,
|
|
87
129
|
dependencies: [],
|
|
88
130
|
inlines: {}
|
|
89
131
|
};
|
|
90
132
|
}
|
|
91
|
-
return { node: resolved[
|
|
133
|
+
return { node: resolved[tag], dep };
|
|
92
134
|
});
|
|
93
135
|
const inlines = {};
|
|
94
136
|
if (!node.progressive) {
|
|
95
137
|
if ('_inlineNodes' in node.builder) {
|
|
96
138
|
const inlineNodes = node.builder._inlineNodes;
|
|
97
139
|
inlineNodes.forEach((inline) => {
|
|
98
|
-
log_1.Log.trace('
|
|
140
|
+
log_1.Log.trace('builder', 'tree', ` └ ${(0, string_1.colored)('OK', 'green')} ${(0, string_1.colored)(inline.tag.full, 'lightcyan')}`);
|
|
99
141
|
// If inline node was not resolved yet, create a shared reference
|
|
100
142
|
// on which the `dependencies` and `inlines` will be populated on future iterations.
|
|
101
|
-
|
|
102
|
-
|
|
143
|
+
const tag = ['constants.enum', 'constants.value'].includes(inline.tag.type)
|
|
144
|
+
? new dependency_1.Tag(inline.tag.module, 'constants', '*').full
|
|
145
|
+
: inline.tag.full;
|
|
146
|
+
if (!(tag in resolved)) {
|
|
147
|
+
resolved[tag] = {
|
|
103
148
|
...inline,
|
|
104
149
|
dependencies: [],
|
|
105
150
|
inlines: {}
|
|
106
151
|
};
|
|
107
152
|
}
|
|
108
|
-
const type = inline.type;
|
|
153
|
+
const type = inline.tag.type;
|
|
109
154
|
if (!(type in inlines)) {
|
|
110
155
|
inlines[type] = {
|
|
111
|
-
[inline.name]: resolved[
|
|
156
|
+
[inline.tag.name]: resolved[tag]
|
|
112
157
|
};
|
|
113
158
|
}
|
|
114
|
-
inlines[type][inline.name] = resolved[
|
|
159
|
+
inlines[type][inline.tag.name] = resolved[tag];
|
|
115
160
|
});
|
|
116
161
|
}
|
|
117
162
|
}
|
|
118
163
|
// If node was already created when resolving a dependendant,
|
|
119
164
|
// just fill the dependencies and inlines.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
165
|
+
const tag = ['constants.enum', 'constants.value'].includes(node.tag.type)
|
|
166
|
+
? new dependency_1.Tag(node.tag.module, 'constants', '*').full
|
|
167
|
+
: node.tag.full;
|
|
168
|
+
if (tag in resolved) {
|
|
169
|
+
resolved[tag].dependencies = dependencies;
|
|
170
|
+
resolved[tag].inlines = inlines;
|
|
123
171
|
}
|
|
124
172
|
// If not, create the resolved node
|
|
125
173
|
else {
|
|
126
|
-
resolved[
|
|
174
|
+
resolved[tag] = {
|
|
127
175
|
...node,
|
|
128
176
|
dependencies,
|
|
129
177
|
inlines
|
|
@@ -182,16 +230,16 @@ class ModuleTree {
|
|
|
182
230
|
* @returns A list of module tree layers
|
|
183
231
|
*/
|
|
184
232
|
resolveLayers(nodes) {
|
|
185
|
-
log_1.Log.debug('
|
|
233
|
+
log_1.Log.debug('builder', 'tree', 'Resolving Layers');
|
|
186
234
|
nodes.forEach(node => {
|
|
187
235
|
node._dependencies = [...(node.dependencies || [])]
|
|
188
|
-
.filter(dep =>
|
|
236
|
+
.filter(dep => dep.dep.build)
|
|
189
237
|
.map(dep => dep.node);
|
|
190
238
|
});
|
|
191
239
|
const layers = [];
|
|
192
240
|
while (nodes.length) {
|
|
193
|
-
log_1.Log.trace('
|
|
194
|
-
|
|
241
|
+
log_1.Log.trace('builder', 'tree', ` └ ${(0, string_1.colored)(`layer.${layers.length}`, 'lightblue')}`);
|
|
242
|
+
const layer = [];
|
|
195
243
|
const future = [];
|
|
196
244
|
nodes.forEach(node => {
|
|
197
245
|
// Node has no dependency, it belongs to the current list
|
|
@@ -199,7 +247,7 @@ class ModuleTree {
|
|
|
199
247
|
if (node._dependencies.length == 0) {
|
|
200
248
|
layer.push(node);
|
|
201
249
|
node.layered = true;
|
|
202
|
-
log_1.Log.trace('
|
|
250
|
+
log_1.Log.trace('builder', 'tree', ` └ ${node.tag.module}::${(0, log_1.scopeTag)(node.tag.type, node.tag.name)}` + (node.root ? (0, string_1.colored)(` @ ${node.root?.tag}`, 'purple') : ''));
|
|
203
251
|
}
|
|
204
252
|
// Node has dependencies, so it must be on future layers.
|
|
205
253
|
else {
|
|
@@ -215,16 +263,12 @@ class ModuleTree {
|
|
|
215
263
|
// are not permitted.
|
|
216
264
|
if (future.length === nodes.length) {
|
|
217
265
|
nodes.forEach(node => {
|
|
218
|
-
log_1.Log.trace('
|
|
219
|
-
log_1.Log.trace('
|
|
266
|
+
log_1.Log.trace('builder', 'tree', ` └ ${(0, string_1.colored)('(future)', 'lightred')} ${node.tag.module}::${(0, log_1.scopeTag)(node.tag.type, node.tag.name)}` + (node.root ? (0, string_1.colored)(` @ ${node.root?.tag}`, 'purple') : ''));
|
|
267
|
+
log_1.Log.trace('builder', 'tree', (0, string_1.colored)(` depends on: ${node._dependencies.map(dep => dep.tag.full + (dep.layered ? '(OK)' : '')).join(', ')}`, 'purple'));
|
|
220
268
|
});
|
|
221
|
-
throw error_1.
|
|
269
|
+
throw error_1.NesoiError.Builder.CircularDependency({});
|
|
222
270
|
}
|
|
223
271
|
nodes = future;
|
|
224
|
-
// Reorder layer so that externals are built first
|
|
225
|
-
const externals = layer.filter(node => node.type === 'externals');
|
|
226
|
-
const internals = layer.filter(node => node.type !== 'externals');
|
|
227
|
-
layer = [...externals, ...internals];
|
|
228
272
|
layers.push(layer);
|
|
229
273
|
}
|
|
230
274
|
layers.forEach(layer => {
|
|
@@ -244,26 +288,12 @@ class ModuleTree {
|
|
|
244
288
|
async traverse(actionAlias, fn) {
|
|
245
289
|
for (let i = 0; i < this.layers.length; i++) {
|
|
246
290
|
const layer = this.layers[i];
|
|
247
|
-
log_1.Log.debug('
|
|
291
|
+
log_1.Log.debug('builder', 'tree', `${actionAlias} ${(0, log_1.scopeTag)('layer', i.toString())}`);
|
|
248
292
|
for (const node of layer) {
|
|
249
293
|
await fn(node);
|
|
250
294
|
}
|
|
251
295
|
}
|
|
252
296
|
}
|
|
253
|
-
/**
|
|
254
|
-
* Get schema of a dependency-like object.
|
|
255
|
-
*
|
|
256
|
-
* @param node A dependency-like object
|
|
257
|
-
* @return An element schema
|
|
258
|
-
*/
|
|
259
|
-
getSchema(node) {
|
|
260
|
-
const mod = this.modules[node.module];
|
|
261
|
-
const schema = dependency_1.$Dependency.resolve(mod.schema, node);
|
|
262
|
-
if (!schema) {
|
|
263
|
-
throw error_1.CompilerError.UnmetDependency('tree', node.name);
|
|
264
|
-
}
|
|
265
|
-
return schema;
|
|
266
|
-
}
|
|
267
297
|
/**
|
|
268
298
|
* Return a list of all nodes of all modules on the tree.
|
|
269
299
|
*
|
|
@@ -288,8 +318,8 @@ class ModuleTree {
|
|
|
288
318
|
const modules = {};
|
|
289
319
|
for (const layer of this.layers) {
|
|
290
320
|
for (const node of layer) {
|
|
291
|
-
modules[_a = node.module] ?? (modules[_a] = []);
|
|
292
|
-
modules[node.module].push(node);
|
|
321
|
+
modules[_a = node.tag.module] ?? (modules[_a] = []);
|
|
322
|
+
modules[node.tag.module].push(node);
|
|
293
323
|
}
|
|
294
324
|
}
|
|
295
325
|
return modules;
|
|
@@ -1,40 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Dependency, BuilderNode } from "./dependency";
|
|
2
2
|
import { BucketGraphBuilder } from "../elements/entities/bucket/graph/bucket_graph.builder";
|
|
3
|
-
import { AnyModule } from "
|
|
4
|
-
import { $BucketModelFields } from "../elements/entities/bucket/model/bucket_model.schema";
|
|
5
|
-
import { ProgressiveBuildCache } from './progressive';
|
|
3
|
+
import { AnyModule } from "./module";
|
|
6
4
|
export type TreeshakeConfig = {
|
|
7
5
|
exclude?: string[];
|
|
8
6
|
};
|
|
7
|
+
import { ProgressiveBuildCache } from '../compiler/progressive';
|
|
8
|
+
import { BucketModelFieldBuilders } from "../elements/entities/bucket/model/bucket_model_field.builder";
|
|
9
9
|
export declare class Treeshake {
|
|
10
|
-
static externals(node: BuilderNode, depth?: number): void;
|
|
11
|
-
static bucket(node: BuilderNode, depth?: number): void;
|
|
12
|
-
static bucketModelFields(node: BuilderNode, fields: $BucketModelFields): $Dependency[];
|
|
13
|
-
static bucketGraph(node: BuilderNode, builder: BucketGraphBuilder<any>): $Dependency[];
|
|
14
|
-
private static bucketGraphLink;
|
|
15
|
-
static message(node: BuilderNode, depth?: number): void;
|
|
16
|
-
private static messageFieldTree;
|
|
17
|
-
protected static blockIO(node: BuilderNode): $Dependency[];
|
|
18
|
-
protected static blockInlineNodes(node: BuilderNode, depth?: number): {
|
|
19
|
-
dependencies: $Dependency[];
|
|
20
|
-
inlines: BuilderNode[];
|
|
21
|
-
};
|
|
22
|
-
static job(node: BuilderNode, depth?: number): {
|
|
23
|
-
inlines: BuilderNode[];
|
|
24
|
-
};
|
|
25
|
-
static resource(node: BuilderNode, depth?: number): {
|
|
26
|
-
inlines: BuilderNode[];
|
|
27
|
-
};
|
|
28
|
-
static machine(node: BuilderNode, depth?: number): {
|
|
29
|
-
inlines: BuilderNode[];
|
|
30
|
-
};
|
|
31
|
-
static controller(node: BuilderNode): void;
|
|
32
|
-
static queue(node: BuilderNode): {
|
|
33
|
-
inlines: BuilderNode[];
|
|
34
|
-
};
|
|
35
|
-
static topic(node: BuilderNode): {
|
|
36
|
-
inlines: BuilderNode[];
|
|
37
|
-
};
|
|
38
10
|
/**
|
|
39
11
|
* Scans the module directory, imports the builders and lists
|
|
40
12
|
* all nodes found.
|
|
@@ -58,6 +30,34 @@ export declare class Treeshake {
|
|
|
58
30
|
* - Nested inline builders
|
|
59
31
|
*/
|
|
60
32
|
private static builder;
|
|
33
|
+
static externals(node: BuilderNode, depth?: number): void;
|
|
34
|
+
static message(node: BuilderNode, depth?: number): void;
|
|
35
|
+
private static messageFieldTree;
|
|
36
|
+
static bucket(node: BuilderNode, depth?: number): void;
|
|
37
|
+
static bucketModelFields(node: BuilderNode, fields: BucketModelFieldBuilders<any>): Dependency[];
|
|
38
|
+
static bucketGraph(node: BuilderNode, builder: BucketGraphBuilder<any>): Dependency[];
|
|
39
|
+
private static bucketGraphLink;
|
|
40
|
+
protected static blockIO(node: BuilderNode): Dependency[];
|
|
41
|
+
protected static blockInlineNodes(node: BuilderNode, depth?: number): {
|
|
42
|
+
dependencies: Dependency[];
|
|
43
|
+
inlines: BuilderNode[];
|
|
44
|
+
};
|
|
45
|
+
static job(node: BuilderNode, depth?: number): {
|
|
46
|
+
inlines: BuilderNode[];
|
|
47
|
+
};
|
|
48
|
+
static resource(node: BuilderNode, depth?: number): {
|
|
49
|
+
inlines: BuilderNode[];
|
|
50
|
+
};
|
|
51
|
+
static machine(node: BuilderNode, depth?: number): {
|
|
52
|
+
inlines: BuilderNode[];
|
|
53
|
+
};
|
|
54
|
+
static controller(node: BuilderNode): void;
|
|
55
|
+
static queue(node: BuilderNode): {
|
|
56
|
+
inlines: BuilderNode[];
|
|
57
|
+
};
|
|
58
|
+
static topic(node: BuilderNode): {
|
|
59
|
+
inlines: BuilderNode[];
|
|
60
|
+
};
|
|
61
61
|
private static cleanNodeDependencies;
|
|
62
62
|
private static logNodeList;
|
|
63
63
|
private static logNodeTree;
|