nesoi 3.2.8 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +13 -10
- 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 +24 -22
- 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 +102 -30
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
- package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
- package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
- package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
- package/lib/elements/entities/constants/constants.builder.js +8 -8
- package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
- package/lib/elements/entities/constants/constants.schema.js +7 -2
- package/lib/elements/entities/message/message.infer.d.ts +1 -5
- package/lib/elements/entities/message/message.js +2 -7
- package/lib/elements/entities/message/message.schema.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
- package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
- package/lib/elements/entities/message/template/message_template_parser.js +2 -2
- package/lib/engine/{apps → app}/app.config.d.ts +11 -5
- package/lib/engine/{apps → app}/app.config.js +2 -2
- package/lib/engine/{apps → app}/app.d.ts +3 -2
- package/lib/engine/{apps → app}/app.js +3 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
- package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
- package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
- package/lib/engine/{apps → app}/inline.app.js +37 -34
- package/lib/engine/auth/authn.d.ts +10 -12
- package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
- package/lib/engine/auth/zero.authn_provider.js +0 -1
- package/lib/engine/builder.d.ts +28 -0
- package/lib/engine/builder.js +99 -0
- package/lib/engine/cli/cli.js +3 -2
- package/lib/engine/cli/ui.js +1 -0
- package/lib/engine/daemon.d.ts +28 -25
- package/lib/engine/daemon.js +37 -8
- package/lib/engine/data/error.d.ts +37 -3
- package/lib/engine/data/error.js +58 -16
- package/lib/engine/data/file.d.ts +1 -0
- package/lib/engine/data/file.js +4 -0
- package/lib/engine/dependency.d.ts +53 -81
- package/lib/engine/dependency.js +246 -120
- package/lib/engine/module.d.ts +18 -48
- package/lib/engine/module.js +78 -158
- package/lib/engine/space.d.ts +2 -2
- package/lib/engine/space.js +6 -6
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
- package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
- package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
- package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
- package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
- package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
- package/lib/engine/transaction/trx.d.ts +15 -12
- package/lib/engine/transaction/trx.js +19 -3
- package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
- package/lib/engine/transaction/trx_engine.d.ts +25 -7
- package/lib/engine/transaction/trx_engine.js +67 -16
- package/lib/engine/transaction/trx_node.d.ts +25 -21
- package/lib/engine/transaction/trx_node.js +99 -57
- package/lib/engine/tree.d.ts +4 -16
- package/lib/engine/tree.js +87 -57
- package/lib/{compiler → engine}/treeshake.d.ts +32 -32
- package/lib/{compiler → engine}/treeshake.js +272 -242
- package/lib/engine/util/console.js +3 -0
- package/lib/engine/util/crypto.d.ts +4 -3
- package/lib/engine/util/crypto.js +15 -5
- package/lib/engine/util/hash.js +5 -0
- package/lib/engine/util/log.d.ts +6 -8
- package/lib/engine/util/log.js +1 -1
- package/lib/engine/util/name_helpers.d.ts +37 -0
- package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
- package/lib/engine/util/parse.d.ts +4 -3
- package/lib/engine/util/parse.js +13 -28
- package/lib/engine/util/path.d.ts +1 -0
- package/lib/engine/util/path.js +14 -0
- package/lib/engine/util/random.d.ts +4 -0
- package/lib/engine/util/random.js +31 -0
- package/lib/engine/util/type.d.ts +8 -0
- package/lib/schema.d.ts +1 -1
- package/package.json +4 -1
- package/tools/joaquin/bucket.js +1 -1
- package/tools/joaquin/job.js +1 -1
- package/tools/joaquin/message.js +1 -1
- package/tools/joaquin/mock.js +2 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
- package/lib/compiler/helpers/name_helpers.d.ts +0 -20
- package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
- package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
- package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
- /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.js +0 -0
|
@@ -4,224 +4,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Treeshake = void 0;
|
|
7
|
-
const dependency_1 = require("
|
|
7
|
+
const dependency_1 = require("./dependency");
|
|
8
8
|
const bucket_graph_builder_1 = require("../elements/entities/bucket/graph/bucket_graph.builder");
|
|
9
9
|
const externals_builder_1 = require("../elements/edge/externals/externals.builder");
|
|
10
|
-
const log_1 = require("
|
|
11
|
-
const string_1 = require("
|
|
12
|
-
const error_1 = require("
|
|
10
|
+
const log_1 = require("./util/log");
|
|
11
|
+
const string_1 = require("./util/string");
|
|
12
|
+
const error_1 = require("./data/error");
|
|
13
13
|
const constants_builder_1 = require("../elements/entities/constants/constants.builder");
|
|
14
|
-
const progressive_1 = require("./progressive");
|
|
15
14
|
const path_1 = __importDefault(require("path"));
|
|
15
|
+
/* @nesoi:browser ignore-start */
|
|
16
|
+
const progressive_1 = require("../compiler/progressive");
|
|
17
|
+
/* @nesoi:browser ignore-end */
|
|
16
18
|
class Treeshake {
|
|
17
|
-
/*
|
|
18
|
-
static externals(node, depth = 1) {
|
|
19
|
-
const b = node.builder;
|
|
20
|
-
const $b = b.$b;
|
|
21
|
-
const buckets = b.buckets;
|
|
22
|
-
const messages = b.messages;
|
|
23
|
-
const jobs = b.jobs;
|
|
24
|
-
const enums = b.enums;
|
|
25
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
26
|
-
node.dependencies = [
|
|
27
|
-
...Object.values(buckets),
|
|
28
|
-
...Object.values(messages),
|
|
29
|
-
...Object.values(jobs),
|
|
30
|
-
...Object.values(enums).map(dep => new dependency_1.$Dependency(node.module, 'constants', `${dep.module}::*`))
|
|
31
|
-
];
|
|
32
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
33
|
-
}
|
|
34
|
-
/* Bucket */
|
|
35
|
-
static bucket(node, depth = 1) {
|
|
36
|
-
const b = node.builder;
|
|
37
|
-
const $b = b.$b;
|
|
38
|
-
const _extend = b._extend;
|
|
39
|
-
const graphLinks = b._graph;
|
|
40
|
-
const name = b.name;
|
|
41
|
-
const _model = b._model;
|
|
42
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
43
|
-
node.dependencies = [];
|
|
44
|
-
if (_extend) {
|
|
45
|
-
node.dependencies.push(_extend);
|
|
46
|
-
}
|
|
47
|
-
if (_model) {
|
|
48
|
-
node.dependencies.push(...Treeshake.bucketModelFields(node, _model.fields));
|
|
49
|
-
}
|
|
50
|
-
const graph = new bucket_graph_builder_1.BucketGraphBuilder().links(graphLinks);
|
|
51
|
-
node.dependencies.push(...Treeshake.bucketGraph(node, graph));
|
|
52
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
53
|
-
}
|
|
54
|
-
static bucketModelFields(node, fields) {
|
|
55
|
-
const dependencies = [];
|
|
56
|
-
Object.values(fields).forEach(field => {
|
|
57
|
-
if (field.meta?.enum?.dep) {
|
|
58
|
-
dependencies.push(field.meta?.enum.dep);
|
|
59
|
-
}
|
|
60
|
-
if (field.children?.length) {
|
|
61
|
-
dependencies.push(...Treeshake.bucketModelFields(node, field.children));
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
return dependencies;
|
|
65
|
-
}
|
|
66
|
-
static bucketGraph(node, builder) {
|
|
67
|
-
const b = builder;
|
|
68
|
-
const _links = b._links;
|
|
69
|
-
return Object.values(_links).map((link) => {
|
|
70
|
-
const dep = Treeshake.bucketGraphLink(link);
|
|
71
|
-
if (dep.module === node.module && dep.name === node.name) {
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
return dep;
|
|
75
|
-
}).filter(d => !!d);
|
|
76
|
-
}
|
|
77
|
-
static bucketGraphLink(builder) {
|
|
78
|
-
const b = builder;
|
|
79
|
-
const bucket = b.bucket;
|
|
80
|
-
return bucket;
|
|
81
|
-
}
|
|
82
|
-
/* Message */
|
|
83
|
-
static message(node, depth = 1) {
|
|
84
|
-
const b = node.builder;
|
|
85
|
-
const $b = b.$b;
|
|
86
|
-
const _fields = b._template._fields;
|
|
87
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
88
|
-
node.dependencies = Treeshake.messageFieldTree(node, _fields);
|
|
89
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
90
|
-
}
|
|
91
|
-
static messageFieldTree(node, tree) {
|
|
92
|
-
const dependencies = [];
|
|
93
|
-
if (tree.__ext) {
|
|
94
|
-
dependencies.push(tree.__ext);
|
|
95
|
-
}
|
|
96
|
-
Object.values(tree).forEach(child => {
|
|
97
|
-
const c = child;
|
|
98
|
-
if (c.type === 'enum') {
|
|
99
|
-
if (typeof c.value.enum.options === 'string') {
|
|
100
|
-
dependencies.push(c.value.enum.dep);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else if (c.type === 'id') {
|
|
104
|
-
const ref = c.value.id.bucket;
|
|
105
|
-
dependencies.push(ref);
|
|
106
|
-
}
|
|
107
|
-
else if (c.type === 'msg') {
|
|
108
|
-
dependencies.push(c.value.msg);
|
|
109
|
-
}
|
|
110
|
-
else if (c.children) {
|
|
111
|
-
dependencies.push(...Treeshake.messageFieldTree(node, c.children));
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
return dependencies;
|
|
115
|
-
}
|
|
116
|
-
/* Block */
|
|
117
|
-
static blockIO(node) {
|
|
118
|
-
const b = node.builder;
|
|
119
|
-
const _inputMsgs = b._inputMsgs;
|
|
120
|
-
const _inlineNodes = b._inlineNodes;
|
|
121
|
-
const nonInlineIO = [
|
|
122
|
-
..._inputMsgs.filter(dep => !_inlineNodes.some(node => node.module === dep.module
|
|
123
|
-
&& node.type === dep.type
|
|
124
|
-
&& node.name === dep.name))
|
|
125
|
-
];
|
|
126
|
-
return nonInlineIO;
|
|
127
|
-
}
|
|
128
|
-
static blockInlineNodes(node, depth = 1) {
|
|
129
|
-
const b = node.builder;
|
|
130
|
-
const _inlineNodes = b._inlineNodes;
|
|
131
|
-
const dependencies = [];
|
|
132
|
-
const nestedInlines = [];
|
|
133
|
-
// Finds the dependencies of each inline node
|
|
134
|
-
for (const inlineNode of _inlineNodes) {
|
|
135
|
-
// Inherit information from parent node
|
|
136
|
-
inlineNode.filepath = node.filepath;
|
|
137
|
-
inlineNode.tag = `${inlineNode.module}::${inlineNode.type}:${inlineNode.name}`;
|
|
138
|
-
if (inlineNode.type === 'message') {
|
|
139
|
-
Treeshake.message(inlineNode, depth + 1);
|
|
140
|
-
dependencies.push(...inlineNode.dependencies);
|
|
141
|
-
}
|
|
142
|
-
else if (inlineNode.type === 'job') {
|
|
143
|
-
const deps = Treeshake.job(inlineNode, depth + 1);
|
|
144
|
-
dependencies.push(...inlineNode.dependencies);
|
|
145
|
-
nestedInlines.push(...deps.inlines);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// Inlines are a dependency of their parent node
|
|
149
|
-
const inlines = [..._inlineNodes, ...nestedInlines];
|
|
150
|
-
inlines.forEach(inline => {
|
|
151
|
-
dependencies.push(new dependency_1.$Dependency(inline.module, inline.type, inline.name));
|
|
152
|
-
});
|
|
153
|
-
return {
|
|
154
|
-
dependencies,
|
|
155
|
-
inlines
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
/* Job */
|
|
159
|
-
static job(node, depth = 0) {
|
|
160
|
-
const builder = node.builder;
|
|
161
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.name)}`);
|
|
162
|
-
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
163
|
-
node.dependencies = [
|
|
164
|
-
...Treeshake.blockIO(node),
|
|
165
|
-
...inlineTreeshake.dependencies
|
|
166
|
-
];
|
|
167
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
168
|
-
return { inlines: inlineTreeshake.inlines };
|
|
169
|
-
}
|
|
170
|
-
/* Resource */
|
|
171
|
-
static resource(node, depth = 1) {
|
|
172
|
-
const b = node.builder;
|
|
173
|
-
const $b = b.$b;
|
|
174
|
-
const _bucket = b._bucket;
|
|
175
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
176
|
-
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
177
|
-
node.dependencies = [
|
|
178
|
-
_bucket,
|
|
179
|
-
...inlineTreeshake.dependencies
|
|
180
|
-
];
|
|
181
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
182
|
-
return { inlines: inlineTreeshake.inlines };
|
|
183
|
-
}
|
|
184
|
-
/* Machine */
|
|
185
|
-
static machine(node, depth = 1) {
|
|
186
|
-
const b = node.builder;
|
|
187
|
-
const $b = b.$b;
|
|
188
|
-
const _buckets = b._buckets;
|
|
189
|
-
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
190
|
-
const buckets = _buckets;
|
|
191
|
-
node.dependencies = [...buckets];
|
|
192
|
-
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
193
|
-
node.dependencies.push(...inlineTreeshake.dependencies);
|
|
194
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
195
|
-
return { inlines: inlineTreeshake.inlines };
|
|
196
|
-
}
|
|
197
|
-
/* Controller */
|
|
198
|
-
static controller(node) {
|
|
199
|
-
const b = node.builder;
|
|
200
|
-
node.dependencies = [];
|
|
201
|
-
}
|
|
202
|
-
static queue(node) {
|
|
203
|
-
const builder = node.builder;
|
|
204
|
-
log_1.Log.trace('compiler', 'treeshake', `└ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.name)}`);
|
|
205
|
-
const inlineTreeshake = Treeshake.blockInlineNodes(node);
|
|
206
|
-
node.dependencies = [
|
|
207
|
-
...Treeshake.blockIO(node),
|
|
208
|
-
...inlineTreeshake.dependencies
|
|
209
|
-
];
|
|
210
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
211
|
-
return { inlines: inlineTreeshake.inlines };
|
|
212
|
-
}
|
|
213
|
-
static topic(node) {
|
|
214
|
-
const builder = node.builder;
|
|
215
|
-
log_1.Log.trace('compiler', 'treeshake', `└ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.name)}`);
|
|
216
|
-
const inlineTreeshake = Treeshake.blockInlineNodes(node);
|
|
217
|
-
node.dependencies = [
|
|
218
|
-
...Treeshake.blockIO(node),
|
|
219
|
-
...inlineTreeshake.dependencies
|
|
220
|
-
];
|
|
221
|
-
node.dependencies = this.cleanNodeDependencies(node);
|
|
222
|
-
return { inlines: inlineTreeshake.inlines };
|
|
223
|
-
}
|
|
224
|
-
/* Module */
|
|
19
|
+
/* Entry-Points */
|
|
225
20
|
/**
|
|
226
21
|
* Scans the module directory, imports the builders and lists
|
|
227
22
|
* all nodes found.
|
|
@@ -229,23 +24,46 @@ class Treeshake {
|
|
|
229
24
|
* @returns A list of all `BuilderNodes` found on the module folder
|
|
230
25
|
*/
|
|
231
26
|
static async module(module, cache, config) {
|
|
232
|
-
log_1.Log.debug('
|
|
27
|
+
log_1.Log.debug('engine', 'treeshake', `Treeshaking ${(0, log_1.scopeTag)('module', module.name)}`);
|
|
233
28
|
const nodes = [];
|
|
234
29
|
const merge = (node) => {
|
|
235
30
|
// Merge constants in a single builder
|
|
236
|
-
if (node.type
|
|
31
|
+
if (node.tag.type.startsWith('constants')) {
|
|
237
32
|
node.filepath = [node.filepath];
|
|
238
|
-
const constants = nodes.find(node => node.type === 'constants');
|
|
33
|
+
const constants = nodes.find(node => node.tag.type === 'constants');
|
|
239
34
|
if (constants) {
|
|
240
35
|
constants_builder_1.ConstantsBuilder.merge(constants.builder, node.builder);
|
|
241
36
|
constants.filepath = [...constants.filepath, ...node.filepath];
|
|
242
37
|
return;
|
|
243
38
|
}
|
|
39
|
+
else {
|
|
40
|
+
nodes.push({
|
|
41
|
+
...node,
|
|
42
|
+
tag: new dependency_1.Tag(node.tag.module, 'constants', '*')
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
244
46
|
}
|
|
245
47
|
// Merge externals in a single builder
|
|
246
|
-
if (node.type === 'externals') {
|
|
48
|
+
if (node.tag.type === 'externals') {
|
|
247
49
|
node.filepath = [node.filepath];
|
|
248
|
-
|
|
50
|
+
// If the external references constants, ensure a constants node is present
|
|
51
|
+
// This ensures there will be a container for the external values, which
|
|
52
|
+
// are copied as "static externals"
|
|
53
|
+
const enums = node.builder.enums;
|
|
54
|
+
const values = node.builder.values;
|
|
55
|
+
if (Object.keys(enums).length || Object.keys(values).length) {
|
|
56
|
+
const constants = nodes.find(node => node.tag.type === 'constants');
|
|
57
|
+
if (!constants) {
|
|
58
|
+
nodes.push(new dependency_1.BuilderNode({
|
|
59
|
+
tag: new dependency_1.Tag(node.tag.module, 'constants', '*'),
|
|
60
|
+
filepath: [],
|
|
61
|
+
dependencies: [],
|
|
62
|
+
builder: new constants_builder_1.ConstantsBuilder(node.tag.module),
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const externals = nodes.find(node => node.tag.type === 'externals');
|
|
249
67
|
if (externals) {
|
|
250
68
|
externals_builder_1.ExternalsBuilder.merge(externals.builder, node.builder);
|
|
251
69
|
externals.filepath = [...externals.filepath, ...node.filepath];
|
|
@@ -268,9 +86,9 @@ class Treeshake {
|
|
|
268
86
|
builderNodes.forEach(merge);
|
|
269
87
|
}
|
|
270
88
|
}
|
|
271
|
-
log_1.Log.trace('
|
|
89
|
+
log_1.Log.trace('builder', 'treeshake', `Node list of module ${(0, log_1.scopeTag)('module', module.name)}:`);
|
|
272
90
|
this.logNodeList(nodes);
|
|
273
|
-
log_1.Log.trace('
|
|
91
|
+
log_1.Log.trace('builder', 'treeshake', `Node tree of module ${(0, log_1.scopeTag)('module', module.name)}:`);
|
|
274
92
|
this.logNodeTree(nodes.filter(node => !node.isInline));
|
|
275
93
|
return nodes;
|
|
276
94
|
}
|
|
@@ -282,13 +100,15 @@ class Treeshake {
|
|
|
282
100
|
* - Nested inline builders
|
|
283
101
|
*/
|
|
284
102
|
static async file(module, filepath, cache) {
|
|
103
|
+
/* @nesoi:browser ignore-start */
|
|
285
104
|
if (cache && filepath in cache.files) {
|
|
286
105
|
const nodes = await progressive_1.ProgressiveBuild.treeshake(cache, filepath);
|
|
287
106
|
if (nodes) {
|
|
288
107
|
return nodes;
|
|
289
108
|
}
|
|
290
109
|
}
|
|
291
|
-
|
|
110
|
+
/* @nesoi:browser ignore-end */
|
|
111
|
+
log_1.Log.debug('engine', 'treeshake', ` └ Treeshaking file ${(0, string_1.colored)(filepath, 'blue')}`);
|
|
292
112
|
// Require is used here to avoid cache - which allows watch mode
|
|
293
113
|
delete require.cache[filepath];
|
|
294
114
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
@@ -299,15 +119,15 @@ class Treeshake {
|
|
|
299
119
|
if (!builder.$b) {
|
|
300
120
|
// TODO: check lib paths to re-enable this message
|
|
301
121
|
// without annoying
|
|
302
|
-
// Log.warn('
|
|
122
|
+
// Log.warn('builder', 'treeshake', `No builder found on file ${filepath}, move it to a library folder or it won't work on the built version.`);
|
|
303
123
|
continue;
|
|
304
124
|
}
|
|
305
125
|
nodes.push(...Treeshake.builder(module, builder, filepath));
|
|
306
126
|
}
|
|
307
|
-
log_1.Log.debug('
|
|
127
|
+
log_1.Log.debug('engine', 'treeshake', ` - Nodes: ${(0, string_1.colored)(nodes.map(node => node.tag.full).join(', '), 'purple')}`);
|
|
308
128
|
cache.files[filepath] = {
|
|
309
|
-
type: nodes.map(node => node.type),
|
|
310
|
-
elements: nodes.map(node => path_1.default.join(cache.nesoidir, module, `${node.type}__${node.name}.ts`)).flat(1)
|
|
129
|
+
type: nodes.map(node => node.tag.type),
|
|
130
|
+
elements: nodes.map(node => path_1.default.join(cache.nesoidir, module, `${node.tag.type}__${node.tag.name}.ts`)).flat(1)
|
|
311
131
|
};
|
|
312
132
|
return nodes;
|
|
313
133
|
}
|
|
@@ -319,13 +139,10 @@ class Treeshake {
|
|
|
319
139
|
* - Nested inline builders
|
|
320
140
|
*/
|
|
321
141
|
static builder(module, builder, filepath = '*') {
|
|
322
|
-
log_1.Log.debug('
|
|
142
|
+
log_1.Log.debug('engine', 'treeshake', ` └ Treeshaking builder ${(0, string_1.colored)(builder.$b, 'blue')}`);
|
|
323
143
|
const name = builder.name;
|
|
324
144
|
const node = {
|
|
325
|
-
module,
|
|
326
|
-
type: builder.$b,
|
|
327
|
-
name,
|
|
328
|
-
tag: `${module}::${builder.$b}:${name}`,
|
|
145
|
+
tag: new dependency_1.Tag(module, builder.$b, name),
|
|
329
146
|
builder,
|
|
330
147
|
filepath: filepath,
|
|
331
148
|
dependencies: []
|
|
@@ -348,7 +165,6 @@ class Treeshake {
|
|
|
348
165
|
inlines.forEach(inline => {
|
|
349
166
|
nodes.push({
|
|
350
167
|
...inline,
|
|
351
|
-
module,
|
|
352
168
|
filepath
|
|
353
169
|
});
|
|
354
170
|
});
|
|
@@ -358,7 +174,6 @@ class Treeshake {
|
|
|
358
174
|
inlines.forEach(inline => {
|
|
359
175
|
nodes.push({
|
|
360
176
|
...inline,
|
|
361
|
-
module,
|
|
362
177
|
filepath
|
|
363
178
|
});
|
|
364
179
|
});
|
|
@@ -369,7 +184,6 @@ class Treeshake {
|
|
|
369
184
|
inlines.forEach(inline => {
|
|
370
185
|
nodes.push({
|
|
371
186
|
...inline,
|
|
372
|
-
module,
|
|
373
187
|
filepath
|
|
374
188
|
});
|
|
375
189
|
});
|
|
@@ -382,7 +196,6 @@ class Treeshake {
|
|
|
382
196
|
inlines.forEach(inline => {
|
|
383
197
|
nodes.push({
|
|
384
198
|
...inline,
|
|
385
|
-
module,
|
|
386
199
|
filepath
|
|
387
200
|
});
|
|
388
201
|
});
|
|
@@ -392,7 +205,6 @@ class Treeshake {
|
|
|
392
205
|
inlines.forEach(inline => {
|
|
393
206
|
nodes.push({
|
|
394
207
|
...inline,
|
|
395
|
-
module,
|
|
396
208
|
filepath
|
|
397
209
|
});
|
|
398
210
|
});
|
|
@@ -403,12 +215,230 @@ class Treeshake {
|
|
|
403
215
|
nodes.push(node);
|
|
404
216
|
return nodes;
|
|
405
217
|
}
|
|
218
|
+
/* Externals */
|
|
219
|
+
static externals(node, depth = 1) {
|
|
220
|
+
const b = node.builder;
|
|
221
|
+
const $b = b.$b;
|
|
222
|
+
const enums = b.enums;
|
|
223
|
+
const values = b.values;
|
|
224
|
+
const buckets = b.buckets;
|
|
225
|
+
const messages = b.messages;
|
|
226
|
+
const jobs = b.jobs;
|
|
227
|
+
const machines = b.machines;
|
|
228
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.tag.name)}`);
|
|
229
|
+
node.dependencies = [
|
|
230
|
+
...Object.values(enums),
|
|
231
|
+
...Object.values(values),
|
|
232
|
+
...Object.values(buckets),
|
|
233
|
+
...Object.values(messages),
|
|
234
|
+
...Object.values(jobs),
|
|
235
|
+
...Object.values(machines),
|
|
236
|
+
];
|
|
237
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
238
|
+
}
|
|
239
|
+
/* Message */
|
|
240
|
+
static message(node, depth = 1) {
|
|
241
|
+
const b = node.builder;
|
|
242
|
+
const $b = b.$b;
|
|
243
|
+
const _fields = b._template._fields;
|
|
244
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.tag.name)}`);
|
|
245
|
+
node.dependencies = Treeshake.messageFieldTree(node, _fields);
|
|
246
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
247
|
+
}
|
|
248
|
+
static messageFieldTree(node, tree) {
|
|
249
|
+
const dependencies = [];
|
|
250
|
+
if (tree.__ext) {
|
|
251
|
+
dependencies.push(tree.__ext);
|
|
252
|
+
}
|
|
253
|
+
Object.values(tree).forEach(child => {
|
|
254
|
+
const c = child;
|
|
255
|
+
if (c.type === 'enum') {
|
|
256
|
+
if ('dep' in c.meta.enum) {
|
|
257
|
+
dependencies.push(c.meta.enum.dep);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else if (c.type === 'id') {
|
|
261
|
+
const ref = c.meta.id.bucket;
|
|
262
|
+
dependencies.push(ref);
|
|
263
|
+
}
|
|
264
|
+
else if (c.type === 'msg') {
|
|
265
|
+
dependencies.push(c.meta.msg);
|
|
266
|
+
}
|
|
267
|
+
else if (c.children) {
|
|
268
|
+
dependencies.push(...Treeshake.messageFieldTree(node, c.children));
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
return dependencies;
|
|
272
|
+
}
|
|
273
|
+
/* Bucket */
|
|
274
|
+
static bucket(node, depth = 1) {
|
|
275
|
+
const b = node.builder;
|
|
276
|
+
const $b = b.$b;
|
|
277
|
+
const _extend = b._extend;
|
|
278
|
+
const graphLinks = b._graph;
|
|
279
|
+
const _model = b._model;
|
|
280
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.tag.name)}`);
|
|
281
|
+
node.dependencies = [];
|
|
282
|
+
if (_extend) {
|
|
283
|
+
node.dependencies.push(_extend);
|
|
284
|
+
}
|
|
285
|
+
if (_model) {
|
|
286
|
+
const builders = b._model.builders;
|
|
287
|
+
node.dependencies.push(...Treeshake.bucketModelFields(node, builders));
|
|
288
|
+
}
|
|
289
|
+
const graph = new bucket_graph_builder_1.BucketGraphBuilder().links(graphLinks);
|
|
290
|
+
node.dependencies.push(...Treeshake.bucketGraph(node, graph));
|
|
291
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
292
|
+
}
|
|
293
|
+
static bucketModelFields(node, fields) {
|
|
294
|
+
const dependencies = [];
|
|
295
|
+
Object.values(fields).forEach((field) => {
|
|
296
|
+
const meta = field.meta;
|
|
297
|
+
const crypto = field.crypto;
|
|
298
|
+
const children = field.children;
|
|
299
|
+
if (meta?.enum && 'dep' in meta.enum) {
|
|
300
|
+
dependencies.push(meta.enum.dep);
|
|
301
|
+
}
|
|
302
|
+
if (crypto) {
|
|
303
|
+
dependencies.push(crypto.value);
|
|
304
|
+
}
|
|
305
|
+
if (children?.length) {
|
|
306
|
+
dependencies.push(...Treeshake.bucketModelFields(node, children));
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
return dependencies;
|
|
310
|
+
}
|
|
311
|
+
static bucketGraph(node, builder) {
|
|
312
|
+
const b = builder;
|
|
313
|
+
const _links = b._links;
|
|
314
|
+
return Object.values(_links).map((link) => {
|
|
315
|
+
const dep = Treeshake.bucketGraphLink(link);
|
|
316
|
+
if (dep.tag.full === node.tag.full) {
|
|
317
|
+
return undefined;
|
|
318
|
+
}
|
|
319
|
+
return dep;
|
|
320
|
+
}).filter(d => !!d);
|
|
321
|
+
}
|
|
322
|
+
static bucketGraphLink(builder) {
|
|
323
|
+
const b = builder;
|
|
324
|
+
const bucket = b.bucket;
|
|
325
|
+
return bucket;
|
|
326
|
+
}
|
|
327
|
+
/* Block */
|
|
328
|
+
static blockIO(node) {
|
|
329
|
+
const b = node.builder;
|
|
330
|
+
const _inputMsgs = b._inputMsgs;
|
|
331
|
+
const _inlineNodes = b._inlineNodes;
|
|
332
|
+
const nonInlineIO = [
|
|
333
|
+
..._inputMsgs.filter(dep => !_inlineNodes.some(node => node.tag.full === dep.tag.full))
|
|
334
|
+
];
|
|
335
|
+
return nonInlineIO;
|
|
336
|
+
}
|
|
337
|
+
static blockInlineNodes(node, depth = 1) {
|
|
338
|
+
const b = node.builder;
|
|
339
|
+
const _inlineNodes = b._inlineNodes;
|
|
340
|
+
const dependencies = [];
|
|
341
|
+
const nestedInlines = [];
|
|
342
|
+
// Finds the dependencies of each inline node
|
|
343
|
+
for (const inlineNode of _inlineNodes) {
|
|
344
|
+
// Inherit information from parent node
|
|
345
|
+
inlineNode.filepath = node.filepath;
|
|
346
|
+
if (inlineNode.tag.type === 'message') {
|
|
347
|
+
Treeshake.message(inlineNode, depth + 1);
|
|
348
|
+
dependencies.push(...inlineNode.dependencies);
|
|
349
|
+
}
|
|
350
|
+
else if (inlineNode.tag.type === 'job') {
|
|
351
|
+
const deps = Treeshake.job(inlineNode, depth + 1);
|
|
352
|
+
dependencies.push(...inlineNode.dependencies);
|
|
353
|
+
nestedInlines.push(...deps.inlines);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const inlines = [..._inlineNodes, ...nestedInlines];
|
|
357
|
+
// Inlines were a build dependency of their parent node
|
|
358
|
+
// Now, inlines are ignored on build order
|
|
359
|
+
//
|
|
360
|
+
// inlines.forEach(inline => {
|
|
361
|
+
// dependencies.push(new Dependency(node.tag.module, inline.tag, { build: true }));
|
|
362
|
+
// });
|
|
363
|
+
return {
|
|
364
|
+
dependencies,
|
|
365
|
+
inlines
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
/* Job */
|
|
369
|
+
static job(node, depth = 0) {
|
|
370
|
+
const builder = node.builder;
|
|
371
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.tag.name)}`);
|
|
372
|
+
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
373
|
+
node.dependencies = [
|
|
374
|
+
...Treeshake.blockIO(node),
|
|
375
|
+
...inlineTreeshake.dependencies
|
|
376
|
+
];
|
|
377
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
378
|
+
return { inlines: inlineTreeshake.inlines };
|
|
379
|
+
}
|
|
380
|
+
/* Resource */
|
|
381
|
+
static resource(node, depth = 1) {
|
|
382
|
+
const b = node.builder;
|
|
383
|
+
const $b = b.$b;
|
|
384
|
+
const _bucket = b._bucket;
|
|
385
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.tag.name)}`);
|
|
386
|
+
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
387
|
+
node.dependencies = [
|
|
388
|
+
_bucket,
|
|
389
|
+
...inlineTreeshake.dependencies
|
|
390
|
+
];
|
|
391
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
392
|
+
return { inlines: inlineTreeshake.inlines };
|
|
393
|
+
}
|
|
394
|
+
/* Machine */
|
|
395
|
+
static machine(node, depth = 1) {
|
|
396
|
+
const b = node.builder;
|
|
397
|
+
const $b = b.$b;
|
|
398
|
+
const _buckets = b._buckets;
|
|
399
|
+
log_1.Log.trace('builder', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.tag.name)}`);
|
|
400
|
+
const buckets = _buckets;
|
|
401
|
+
node.dependencies = [...buckets];
|
|
402
|
+
const inlineTreeshake = Treeshake.blockInlineNodes(node, depth);
|
|
403
|
+
node.dependencies.push(...inlineTreeshake.dependencies);
|
|
404
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
405
|
+
return { inlines: inlineTreeshake.inlines };
|
|
406
|
+
}
|
|
407
|
+
/* Controller */
|
|
408
|
+
static controller(node) {
|
|
409
|
+
const b = node.builder;
|
|
410
|
+
node.dependencies = [];
|
|
411
|
+
}
|
|
412
|
+
/* Queue */
|
|
413
|
+
static queue(node) {
|
|
414
|
+
const builder = node.builder;
|
|
415
|
+
log_1.Log.trace('builder', 'treeshake', `└ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.tag.name)}`);
|
|
416
|
+
const inlineTreeshake = Treeshake.blockInlineNodes(node);
|
|
417
|
+
node.dependencies = [
|
|
418
|
+
...Treeshake.blockIO(node),
|
|
419
|
+
...inlineTreeshake.dependencies
|
|
420
|
+
];
|
|
421
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
422
|
+
return { inlines: inlineTreeshake.inlines };
|
|
423
|
+
}
|
|
424
|
+
/* Topic */
|
|
425
|
+
static topic(node) {
|
|
426
|
+
const builder = node.builder;
|
|
427
|
+
log_1.Log.trace('builder', 'treeshake', `└ Treeshaking node ${(0, log_1.scopeTag)(builder.$b, node.tag.name)}`);
|
|
428
|
+
const inlineTreeshake = Treeshake.blockInlineNodes(node);
|
|
429
|
+
node.dependencies = [
|
|
430
|
+
...Treeshake.blockIO(node),
|
|
431
|
+
...inlineTreeshake.dependencies
|
|
432
|
+
];
|
|
433
|
+
node.dependencies = this.cleanNodeDependencies(node);
|
|
434
|
+
return { inlines: inlineTreeshake.inlines };
|
|
435
|
+
}
|
|
406
436
|
// Utility
|
|
407
437
|
static cleanNodeDependencies(node) {
|
|
408
438
|
let filtered = [];
|
|
409
439
|
// Remove duplicates
|
|
410
440
|
node.dependencies.forEach(dep => {
|
|
411
|
-
if (!filtered.find(f => dep.tag
|
|
441
|
+
if (!filtered.find(f => dependency_1.Tag.matches(dep.tag, f.tag))) {
|
|
412
442
|
filtered.push(dep);
|
|
413
443
|
}
|
|
414
444
|
});
|
|
@@ -421,28 +451,28 @@ class Treeshake {
|
|
|
421
451
|
nodes
|
|
422
452
|
.map(node => ({
|
|
423
453
|
node,
|
|
424
|
-
tag: (0, log_1.scopeTag)(node.type, node.name)
|
|
454
|
+
tag: (0, log_1.scopeTag)(node.tag.type, node.tag.name)
|
|
425
455
|
}))
|
|
426
456
|
.sort((a, b) => a.tag.localeCompare(b.tag))
|
|
427
457
|
.forEach(({ node, tag }) => {
|
|
428
|
-
log_1.Log.trace('
|
|
458
|
+
log_1.Log.trace('builder', 'treeshake', ` └ ${tag} ` + (0, string_1.colored)(`@ ${node.filepath}`, 'purple'));
|
|
429
459
|
});
|
|
430
460
|
}
|
|
431
461
|
static logNodeTree(nodes, depth = 1) {
|
|
432
462
|
nodes
|
|
433
463
|
.map(node => ({
|
|
434
464
|
node,
|
|
435
|
-
tag: (0, log_1.scopeTag)(node.type, node.name)
|
|
465
|
+
tag: (0, log_1.scopeTag)(node.tag.type, node.tag.name)
|
|
436
466
|
}))
|
|
437
467
|
.sort((a, b) => a.tag.localeCompare(b.tag))
|
|
438
468
|
.forEach(({ node, tag }) => {
|
|
439
|
-
log_1.Log.debug('
|
|
469
|
+
log_1.Log.debug('engine', 'treeshake', `${' '.repeat(depth)} └ ${tag} ` + (0, string_1.colored)(`@ ${node.filepath}`, 'purple'));
|
|
440
470
|
if (node.progressive) {
|
|
441
|
-
log_1.Log.debug('
|
|
471
|
+
log_1.Log.debug('engine', 'treeshake', `${' '.repeat(depth + 1)}` + (0, string_1.colored)('[cache]', 'green'));
|
|
442
472
|
return;
|
|
443
473
|
}
|
|
444
474
|
if (node.dependencies.length) {
|
|
445
|
-
log_1.Log.debug('
|
|
475
|
+
log_1.Log.debug('engine', 'treeshake', (0, string_1.colored)(`${' '.repeat(depth)} (depends on: ${node.dependencies.map(dep => dep.tag.full).join(', ')})`, 'purple'));
|
|
446
476
|
}
|
|
447
477
|
if ('_inlineNodes' in node.builder) {
|
|
448
478
|
const inlineNodes = node.builder['_inlineNodes'];
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
7
|
+
const log_1 = require("./log");
|
|
7
8
|
const string_1 = require("./string");
|
|
8
9
|
class Console {
|
|
9
10
|
// Prints a step message to the terminal
|
|
@@ -12,6 +13,8 @@ class Console {
|
|
|
12
13
|
}
|
|
13
14
|
// Prints the header
|
|
14
15
|
static header(module) {
|
|
16
|
+
if (['off', 'error', 'warn'].includes(log_1.Log.level))
|
|
17
|
+
return;
|
|
15
18
|
console.log((0, string_1.colored)('┏ ┓', 'lightcyan'));
|
|
16
19
|
console.log((0, string_1.colored)(' ┏┓┳┓┏┏┓┏', 'lightblue'));
|
|
17
20
|
console.log((0, string_1.colored)(' ┛╹┗ ┛┗┛╹', 'lightblue'));
|