nesoi 3.0.8 → 3.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +1 -1
- package/lib/compiler/apps/monolyth/monolyth_compiler.js +7 -7
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
- package/lib/compiler/elements/externals.element.d.ts +1 -1
- package/lib/compiler/module.js +1 -1
- package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
- package/lib/compiler/stages/1_scan_stage.js +3 -0
- package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
- package/lib/compiler/stages/2_treeshake_stage.js +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
- package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
- package/lib/compiler/stages/6_build_elements_stage.js +3 -0
- package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
- package/lib/compiler/stages/7_dump_stage.js +3 -0
- package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
- package/lib/compiler/stages/8_diagnose_stage.js +3 -0
- package/lib/compiler/treeshake.js +3 -3
- package/lib/elements/blocks/block.builder.d.ts +6 -2
- package/lib/elements/blocks/block.builder.js +8 -4
- package/lib/elements/blocks/block.schema.d.ts +4 -0
- package/lib/elements/blocks/block.schema.js +4 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
- package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
- package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
- package/lib/elements/blocks/job/job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/job.builder.js +4 -0
- package/lib/elements/blocks/job/job.d.ts +4 -0
- package/lib/elements/blocks/job/job.js +4 -0
- package/lib/elements/blocks/job/job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/job.schema.js +4 -0
- package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine.builder.js +16 -1
- package/lib/elements/blocks/machine/machine.d.ts +12 -0
- package/lib/elements/blocks/machine/machine.js +12 -0
- package/lib/elements/blocks/machine/machine.schema.d.ts +18 -1
- package/lib/elements/blocks/machine/machine.schema.js +18 -2
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.builder.js +4 -0
- package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.schema.js +4 -0
- package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.builder.js +4 -0
- package/lib/elements/blocks/resource/resource.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.js +4 -0
- package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.schema.js +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +7 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.js +6 -1
- package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
- package/lib/elements/edge/controller/controller.builder.js +16 -0
- package/lib/elements/edge/controller/controller.config.d.ts +3 -2
- package/lib/elements/edge/controller/controller.d.ts +7 -3
- package/lib/elements/edge/controller/controller.js +7 -3
- package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
- package/lib/elements/edge/controller/controller.schema.js +16 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +18 -12
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
- package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
- package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.builder.js +4 -0
- package/lib/elements/entities/bucket/bucket.config.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.d.ts +12 -4
- package/lib/elements/entities/bucket/bucket.js +18 -11
- package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.schema.js +4 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
- package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
- package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
- package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
- package/lib/elements/entities/constants/constants.builder.js +21 -6
- package/lib/elements/entities/constants/constants.d.ts +4 -0
- package/lib/elements/entities/constants/constants.js +4 -0
- package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
- package/lib/elements/entities/constants/constants.schema.js +16 -0
- package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
- package/lib/elements/entities/drive/drive_adapter.js +5 -2
- package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
- package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
- package/lib/elements/entities/message/message.builder.d.ts +4 -0
- package/lib/elements/entities/message/message.builder.js +4 -0
- package/lib/elements/entities/message/message.d.ts +4 -0
- package/lib/elements/entities/message/message.js +4 -0
- package/lib/elements/entities/message/message.schema.d.ts +4 -0
- package/lib/elements/entities/message/message.schema.js +4 -0
- package/lib/elements/entities/message/message_parser.d.ts +4 -0
- package/lib/elements/entities/message/message_parser.js +4 -0
- package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
- package/lib/elements/entities/message/template/message_template.builder.js +4 -0
- package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
- package/lib/elements/entities/message/template/message_template.schema.js +25 -0
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
- package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
- package/lib/elements/index.d.ts +1 -1
- package/lib/elements/index.js +1 -1
- package/lib/engine/apps/app.config.d.ts +15 -11
- package/lib/engine/apps/app.config.js +3 -0
- package/lib/engine/apps/app.d.ts +12 -20
- package/lib/engine/apps/app.js +13 -10
- package/lib/engine/apps/inline.app.d.ts +12 -8
- package/lib/engine/apps/inline.app.js +27 -24
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +13 -5
- package/lib/engine/apps/monolyth/monolyth.app.js +14 -6
- package/lib/engine/apps/service.d.ts +30 -0
- package/lib/engine/apps/service.js +15 -0
- package/lib/engine/auth/authn.d.ts +14 -1
- package/lib/engine/auth/authn.js +4 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +11 -3
- package/lib/engine/auth/zero.authn_provider.js +13 -2
- package/lib/engine/cli/cli.d.ts +8 -2
- package/lib/engine/cli/cli.js +10 -1
- package/lib/engine/cli/cli_adapter.d.ts +11 -1
- package/lib/engine/cli/cli_adapter.js +10 -1
- package/lib/engine/cli/cli_input.d.ts +4 -0
- package/lib/engine/cli/cli_input.js +4 -0
- package/lib/engine/cli/ui.d.ts +14 -2
- package/lib/engine/cli/ui.js +10 -6
- package/lib/engine/daemon.d.ts +96 -9
- package/lib/engine/daemon.js +101 -18
- package/lib/engine/data/date.d.ts +4 -0
- package/lib/engine/data/date.js +4 -0
- package/lib/engine/data/datetime.d.ts +4 -0
- package/lib/engine/data/datetime.js +4 -0
- package/lib/engine/data/decimal.d.ts +4 -0
- package/lib/engine/data/decimal.js +4 -0
- package/lib/engine/data/file.d.ts +23 -23
- package/lib/engine/data/file.js +66 -29
- package/lib/engine/data/json.d.ts +4 -0
- package/lib/engine/data/json.js +4 -0
- package/lib/engine/data/tree.d.ts +4 -0
- package/lib/engine/data/tree.js +4 -0
- package/lib/engine/dependency.d.ts +65 -3
- package/lib/engine/dependency.js +70 -0
- package/lib/engine/module.d.ts +110 -8
- package/lib/engine/module.js +131 -31
- package/lib/engine/space.d.ts +163 -10
- package/lib/engine/space.js +184 -22
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.js +13 -2
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +9 -10
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +5 -2
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +6 -4
- package/lib/engine/transaction/trx.d.ts +14 -4
- package/lib/engine/transaction/trx.js +10 -1
- package/lib/engine/transaction/trx_engine.config.d.ts +2 -2
- package/lib/engine/transaction/trx_engine.d.ts +8 -3
- package/lib/engine/transaction/trx_engine.js +24 -20
- package/lib/engine/transaction/trx_node.d.ts +8 -2
- package/lib/engine/transaction/trx_node.js +17 -1
- package/lib/engine/tree.d.ts +54 -2
- package/lib/engine/tree.js +60 -19
- package/lib/engine/util/mime.d.ts +4 -4
- package/lib/engine/util/mime.js +7 -9
- package/lib/schema.d.ts +2 -2
- package/package.json +2 -3
- package/tools/joaquin/job.js +2 -2
- package/tools/joaquin/message.js +2 -2
- package/tools/joaquin/mock.d.ts +6 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
- package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
- package/lib/adapters/postgres/src/migrator/csv.d.ts +0 -7
- package/lib/adapters/postgres/src/migrator/csv.js +0 -72
- package/lib/adapters/postgres/src/migrator/database.d.ts +0 -37
- package/lib/adapters/postgres/src/migrator/database.js +0 -88
- package/lib/adapters/postgres/src/migrator/index.d.ts +0 -1
- package/lib/adapters/postgres/src/migrator/index.js +0 -5
- package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
- package/lib/adapters/postgres/src/migrator/migration.js +0 -203
- package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
- package/lib/adapters/postgres/src/migrator/migrator.js +0 -76
- package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
- package/lib/adapters/postgres/src/migrator/runner.js +0 -271
- package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +0 -42
- package/lib/adapters/postgres/src/postgres.bucket_adapter.js +0 -294
- package/lib/adapters/postgres/src/postgres.cli.d.ts +0 -66
- package/lib/adapters/postgres/src/postgres.cli.js +0 -184
- package/lib/adapters/postgres/src/postgres.config.d.ts +0 -5
- package/lib/adapters/postgres/src/postgres.config.js +0 -2
- package/lib/adapters/postgres/src/postgres.nql.d.ts +0 -16
- package/lib/adapters/postgres/src/postgres.nql.js +0 -123
- package/lib/adapters/postgres/src/postgres.provider.d.ts +0 -18
- package/lib/adapters/postgres/src/postgres.provider.js +0 -77
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +0 -1
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +0 -210
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
- package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
- package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
- package/lib/engine/util/cache.d.ts +0 -6
- package/lib/engine/util/cache.js +0 -20
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import { $Module, $Space, ModuleName } from "../../schema";
|
|
2
|
-
import { App
|
|
2
|
+
import { App } from './app';
|
|
3
|
+
import { IService } from './service';
|
|
3
4
|
import { AnyTrxEngine } from '../transaction/trx_engine';
|
|
4
5
|
import { AnyBuilder, AnyModule, Module } from '../module';
|
|
5
6
|
import { AnyDaemon, Daemon } from '../daemon';
|
|
6
7
|
import { AppConfigFactory } from './app.config';
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @category App
|
|
10
|
+
*/
|
|
11
|
+
export declare class InlineApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Services extends Record<string, any> = Record<string, any>> extends App<S, ModuleNames, Services> {
|
|
8
12
|
protected _daemon?: Daemon<S, ModuleNames>;
|
|
9
13
|
protected _modules: Record<string, AnyModule>;
|
|
10
14
|
private packageJson?;
|
|
11
15
|
protected bootPromise?: Promise<void>;
|
|
12
16
|
constructor(name: string, builders: AnyBuilder[]);
|
|
13
|
-
boot(): InlineApp<S, ModuleNames,
|
|
17
|
+
boot(): InlineApp<S, ModuleNames, Services>;
|
|
14
18
|
/**
|
|
15
19
|
* Treeshake and build modules declared for this application.
|
|
16
20
|
*/
|
|
17
21
|
protected build(): Promise<void>;
|
|
18
22
|
/**
|
|
19
|
-
* Build the application, start
|
|
23
|
+
* Build the application, start services and trx engines.
|
|
20
24
|
* Returns references to start a daemon.
|
|
21
25
|
*/
|
|
22
26
|
protected make(): Promise<{
|
|
23
27
|
modules: Record<string, AnyModule>;
|
|
24
|
-
|
|
28
|
+
services: Record<string, any>;
|
|
25
29
|
trxEngines: Record<ModuleNames, AnyTrxEngine>;
|
|
26
30
|
}>;
|
|
27
31
|
daemon(): Promise<Daemon<S, ModuleNames>>;
|
|
28
|
-
protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>,
|
|
32
|
+
protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, services: Record<string, IService>): AnyDaemon;
|
|
29
33
|
package(_package: Record<string, any>): this;
|
|
30
34
|
/**
|
|
31
35
|
* This method injects elements flagged as externals by referencing them
|
|
@@ -35,8 +39,8 @@ export declare class InlineApp<S extends $Space, ModuleNames extends string = Mo
|
|
|
35
39
|
*/
|
|
36
40
|
protected linkExternals(modules: Record<string, Module<S, $Module>>): void;
|
|
37
41
|
modules<M extends ModuleName<S>>(modules: M[]): InlineApp<S, M & ModuleNames>;
|
|
38
|
-
|
|
39
|
-
get config(): AppConfigFactory<S, ModuleNames,
|
|
42
|
+
service<T extends IService>($: T): InlineApp<S, ModuleNames, Services & { [K in T["name"]]: T; }>;
|
|
43
|
+
get config(): AppConfigFactory<S, ModuleNames, Services, typeof this>;
|
|
40
44
|
static package(app: InlineApp<any, any>, scripts: Record<string, string>, dependencies: Record<string, string>): {
|
|
41
45
|
name: string;
|
|
42
46
|
version: string;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.InlineDaemon = exports.InlineApp = void 0;
|
|
4
7
|
const app_1 = require("./app");
|
|
@@ -7,6 +10,10 @@ const trx_engine_1 = require("../transaction/trx_engine");
|
|
|
7
10
|
const tree_1 = require("../tree");
|
|
8
11
|
const daemon_1 = require("../daemon");
|
|
9
12
|
const app_config_1 = require("./app.config");
|
|
13
|
+
const promise_1 = __importDefault(require("../util/promise"));
|
|
14
|
+
/**
|
|
15
|
+
* @category App
|
|
16
|
+
*/
|
|
10
17
|
class InlineApp extends app_1.App {
|
|
11
18
|
constructor(name, builders) {
|
|
12
19
|
super(name, { builders });
|
|
@@ -41,7 +48,7 @@ class InlineApp extends app_1.App {
|
|
|
41
48
|
});
|
|
42
49
|
}
|
|
43
50
|
/**
|
|
44
|
-
* Build the application, start
|
|
51
|
+
* Build the application, start services and trx engines.
|
|
45
52
|
* Returns references to start a daemon.
|
|
46
53
|
*/
|
|
47
54
|
async make() {
|
|
@@ -53,19 +60,19 @@ class InlineApp extends app_1.App {
|
|
|
53
60
|
const mod = this._injectedModules[key];
|
|
54
61
|
modules[mod.name] = mod;
|
|
55
62
|
}
|
|
56
|
-
const
|
|
57
|
-
for (const key in this.
|
|
58
|
-
const
|
|
63
|
+
const services = {};
|
|
64
|
+
for (const key in this._services) {
|
|
65
|
+
const service = this._services[key];
|
|
66
|
+
await promise_1.default.solve(service.up({
|
|
59
67
|
modules
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
providers[key] = provider;
|
|
68
|
+
}));
|
|
69
|
+
services[key] = service;
|
|
63
70
|
}
|
|
64
71
|
log_1.Log.debug('app', this.name, 'Starting transaction engines');
|
|
65
72
|
const trxEngines = {};
|
|
66
73
|
for (const m in modules) {
|
|
67
74
|
const module = modules[m];
|
|
68
|
-
module.start(this,
|
|
75
|
+
module.start(this, services);
|
|
69
76
|
const trxConfig = this._config.trxEngine?.[m];
|
|
70
77
|
const authn = {};
|
|
71
78
|
for (const a in this._config?.authn || {}) {
|
|
@@ -74,13 +81,13 @@ class InlineApp extends app_1.App {
|
|
|
74
81
|
authn[a] = prov;
|
|
75
82
|
}
|
|
76
83
|
}
|
|
77
|
-
trxEngines[m] = new trx_engine_1.TrxEngine(`app:${this.name}`, module, authn, trxConfig,
|
|
84
|
+
trxEngines[m] = new trx_engine_1.TrxEngine(`app:${this.name}`, module, authn, trxConfig, services);
|
|
78
85
|
}
|
|
79
86
|
log_1.Log.debug('app', this.name, 'Linking externals');
|
|
80
87
|
this.linkExternals(modules);
|
|
81
88
|
return {
|
|
82
89
|
modules,
|
|
83
|
-
|
|
90
|
+
services,
|
|
84
91
|
trxEngines
|
|
85
92
|
};
|
|
86
93
|
}
|
|
@@ -90,7 +97,7 @@ class InlineApp extends app_1.App {
|
|
|
90
97
|
}
|
|
91
98
|
const app = await this.make();
|
|
92
99
|
log_1.Log.debug('app', this.name, 'Spawning daemon');
|
|
93
|
-
this._daemon = this.makeDaemon(app.trxEngines, app.
|
|
100
|
+
this._daemon = this.makeDaemon(app.trxEngines, app.services);
|
|
94
101
|
// Link daemon to modules
|
|
95
102
|
for (const m in app.modules) {
|
|
96
103
|
const module = app.modules[m];
|
|
@@ -98,8 +105,8 @@ class InlineApp extends app_1.App {
|
|
|
98
105
|
}
|
|
99
106
|
return this._daemon;
|
|
100
107
|
}
|
|
101
|
-
makeDaemon(trxEngines,
|
|
102
|
-
return new InlineDaemon(this.name, trxEngines,
|
|
108
|
+
makeDaemon(trxEngines, services) {
|
|
109
|
+
return new InlineDaemon(this.name, trxEngines, services, this._config);
|
|
103
110
|
}
|
|
104
111
|
package(_package) {
|
|
105
112
|
this.packageJson = _package;
|
|
@@ -113,19 +120,15 @@ class InlineApp extends app_1.App {
|
|
|
113
120
|
*/
|
|
114
121
|
linkExternals(modules) {
|
|
115
122
|
Object.values(modules).forEach(module => {
|
|
123
|
+
module.injectDependencies(modules, {
|
|
124
|
+
buckets: Object.values(module.schema.externals.buckets),
|
|
125
|
+
jobs: Object.values(module.schema.externals.jobs),
|
|
126
|
+
machines: Object.values(module.schema.externals.machines),
|
|
127
|
+
});
|
|
116
128
|
const buckets = module.schema.externals.buckets;
|
|
117
129
|
Object.values(buckets).forEach(bucket => {
|
|
118
|
-
module.buckets[bucket.refName] = modules[bucket.module].buckets[bucket.name];
|
|
119
130
|
module.nql.linkExternal(modules[bucket.module].buckets[bucket.name]);
|
|
120
131
|
});
|
|
121
|
-
const jobs = module.schema.externals.jobs;
|
|
122
|
-
Object.values(jobs).forEach(job => {
|
|
123
|
-
module.jobs[job.refName] = modules[job.module].jobs[job.name];
|
|
124
|
-
});
|
|
125
|
-
const machines = module.schema.externals.machines;
|
|
126
|
-
Object.values(machines).forEach(machine => {
|
|
127
|
-
module.machines[machine.refName] = modules[machine.module].machines[machine.name];
|
|
128
|
-
});
|
|
129
132
|
});
|
|
130
133
|
}
|
|
131
134
|
// Type Builder Overrides
|
|
@@ -133,8 +136,8 @@ class InlineApp extends app_1.App {
|
|
|
133
136
|
super.modules(modules);
|
|
134
137
|
return this;
|
|
135
138
|
}
|
|
136
|
-
|
|
137
|
-
super.
|
|
139
|
+
service($) {
|
|
140
|
+
super.service($);
|
|
138
141
|
return this;
|
|
139
142
|
}
|
|
140
143
|
get config() {
|
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
import { $Space, ModuleName } from "../../../schema";
|
|
2
|
-
import {
|
|
2
|
+
import { IService } from '../service';
|
|
3
3
|
import { InlineApp } from './../inline.app';
|
|
4
4
|
import { AnyTrxEngine } from '../../transaction/trx_engine';
|
|
5
5
|
import { Space } from '../../space';
|
|
6
6
|
import { Daemon } from "../../daemon";
|
|
7
7
|
import { AppConfigFactory } from '../app.config';
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @category App
|
|
10
|
+
* @subcategory Monolyth
|
|
11
|
+
*/
|
|
12
|
+
export declare class MonolythApp<S extends $Space, ModuleNames extends string = ModuleName<S> & string, Services extends Record<string, any> = Record<string, any>> extends InlineApp<S, ModuleNames, Services> {
|
|
9
13
|
private watcher?;
|
|
10
14
|
constructor(name: string, space?: Space<S>);
|
|
11
15
|
protected _packageJson?: Record<string, any>;
|
|
12
16
|
daemon($?: {
|
|
13
17
|
watch?: boolean;
|
|
14
18
|
}): Promise<Daemon<S, ModuleNames>>;
|
|
15
|
-
protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>,
|
|
19
|
+
protected makeDaemon(trxEngines: Record<ModuleNames, AnyTrxEngine>, services: Record<string, IService>): MonolythDaemon<$Space, ModuleNames>;
|
|
16
20
|
remake(): Promise<void>;
|
|
17
21
|
modules<M extends ModuleName<S>>(modules: M[]): MonolythApp<S, M & ModuleNames>;
|
|
18
|
-
|
|
19
|
-
get config(): AppConfigFactory<S, ModuleNames,
|
|
22
|
+
service<T extends IService>($: T): MonolythApp<S, ModuleNames, Services & { [K in T["name"]]: T; }>;
|
|
23
|
+
get config(): AppConfigFactory<S, ModuleNames, Services, typeof this>;
|
|
20
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* @category App
|
|
27
|
+
* @subcategory Monolyth
|
|
28
|
+
*/
|
|
21
29
|
export declare class MonolythDaemon<S extends $Space, Modules extends ModuleName<S>> extends Daemon<S, Modules> {
|
|
22
30
|
}
|
|
@@ -39,6 +39,10 @@ const space_1 = require("../../space");
|
|
|
39
39
|
const daemon_1 = require("../../daemon");
|
|
40
40
|
const log_1 = require("../../util/log");
|
|
41
41
|
const app_config_1 = require("../app.config");
|
|
42
|
+
/**
|
|
43
|
+
* @category App
|
|
44
|
+
* @subcategory Monolyth
|
|
45
|
+
*/
|
|
42
46
|
class MonolythApp extends inline_app_1.InlineApp {
|
|
43
47
|
constructor(name, space) {
|
|
44
48
|
super(name, []);
|
|
@@ -72,8 +76,8 @@ class MonolythApp extends inline_app_1.InlineApp {
|
|
|
72
76
|
}
|
|
73
77
|
return super.daemon();
|
|
74
78
|
}
|
|
75
|
-
makeDaemon(trxEngines,
|
|
76
|
-
return new MonolythDaemon(this.name, trxEngines,
|
|
79
|
+
makeDaemon(trxEngines, services) {
|
|
80
|
+
return new MonolythDaemon(this.name, trxEngines, services, this._config);
|
|
77
81
|
}
|
|
78
82
|
// Reboot (from Watcher)
|
|
79
83
|
async remake() {
|
|
@@ -82,18 +86,18 @@ class MonolythApp extends inline_app_1.InlineApp {
|
|
|
82
86
|
log_1.Log.error('app', 'monolyth', `Attempt to remake app ${this.name} failed: Daemon not running.`);
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
85
|
-
await
|
|
89
|
+
await this._daemon.destroy();
|
|
86
90
|
this.bootPromise = undefined;
|
|
87
91
|
const app = await this.make();
|
|
88
|
-
await
|
|
92
|
+
await this._daemon.reload(app.trxEngines, app.services);
|
|
89
93
|
}
|
|
90
94
|
// Type Builder Overrides
|
|
91
95
|
modules(modules) {
|
|
92
96
|
super.modules(modules);
|
|
93
97
|
return this;
|
|
94
98
|
}
|
|
95
|
-
|
|
96
|
-
super.
|
|
99
|
+
service($) {
|
|
100
|
+
super.service($);
|
|
97
101
|
return this;
|
|
98
102
|
}
|
|
99
103
|
get config() {
|
|
@@ -101,6 +105,10 @@ class MonolythApp extends inline_app_1.InlineApp {
|
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
exports.MonolythApp = MonolythApp;
|
|
108
|
+
/**
|
|
109
|
+
* @category App
|
|
110
|
+
* @subcategory Monolyth
|
|
111
|
+
*/
|
|
104
112
|
class MonolythDaemon extends daemon_1.Daemon {
|
|
105
113
|
}
|
|
106
114
|
exports.MonolythDaemon = MonolythDaemon;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AnyModule } from '../module';
|
|
2
|
+
/**
|
|
3
|
+
* Service
|
|
4
|
+
*/
|
|
5
|
+
type Optional<T> = (T extends undefined ? [] : never) | [cfg: T];
|
|
6
|
+
export declare abstract class Service<out Name extends string, Config = never> {
|
|
7
|
+
/**
|
|
8
|
+
* This property MUST be set on the implementation class.
|
|
9
|
+
*/
|
|
10
|
+
static defaultName: string;
|
|
11
|
+
name: Name;
|
|
12
|
+
config: Config;
|
|
13
|
+
libPaths?: string[];
|
|
14
|
+
abstract up($: {
|
|
15
|
+
modules: Record<string, AnyModule>;
|
|
16
|
+
}): void | Promise<void>;
|
|
17
|
+
abstract down(): void | Promise<void>;
|
|
18
|
+
constructor(...cfg: Optional<Config>);
|
|
19
|
+
constructor(name: Name, ...cfg: Optional<Config>);
|
|
20
|
+
}
|
|
21
|
+
export type AnyService = Service<any, any>;
|
|
22
|
+
export interface IService {
|
|
23
|
+
name: string;
|
|
24
|
+
libPaths?: string[];
|
|
25
|
+
up(this: IService, $: {
|
|
26
|
+
modules: Record<string, AnyModule>;
|
|
27
|
+
}): void | Promise<void>;
|
|
28
|
+
down(this: IService): void | Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Service = void 0;
|
|
4
|
+
class Service {
|
|
5
|
+
constructor(arg1, arg2) {
|
|
6
|
+
if (typeof arg1 === 'string') {
|
|
7
|
+
this.name = arg1;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
this.name = this.constructor.defaultName;
|
|
11
|
+
}
|
|
12
|
+
this.config = arg2 || arg1;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Service = Service;
|
|
@@ -8,11 +8,24 @@ export type AuthnToken = string;
|
|
|
8
8
|
export type AuthnRequest<P extends keyof any> = {
|
|
9
9
|
[K in P]?: AuthnToken;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* @category Engine
|
|
13
|
+
* @subcategory Auth
|
|
14
|
+
*/
|
|
11
15
|
export declare abstract class AuthnProvider<U extends User> {
|
|
16
|
+
/**
|
|
17
|
+
* - If `true`, this provider is run for all transactions, regardless
|
|
18
|
+
* of a token being sent on the authentication request.
|
|
19
|
+
* - If `false`, the `$.token` is always defined.
|
|
20
|
+
*/
|
|
21
|
+
abstract eager: boolean;
|
|
12
22
|
abstract authenticate($: {
|
|
13
23
|
trx: AnyTrxNode;
|
|
24
|
+
token?: AuthnToken;
|
|
25
|
+
}): Promise<{
|
|
14
26
|
token: AuthnToken;
|
|
15
|
-
|
|
27
|
+
user: U;
|
|
28
|
+
}>;
|
|
16
29
|
}
|
|
17
30
|
export type AnyAuthnProviders = {
|
|
18
31
|
[K: string]: AuthnProvider<any>;
|
package/lib/engine/auth/authn.js
CHANGED
|
@@ -4,12 +4,20 @@ type ZeroUser = {
|
|
|
4
4
|
id: NesoiObjId;
|
|
5
5
|
name: string;
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* @category Engine
|
|
9
|
+
* @subcategory Auth
|
|
10
|
+
*/
|
|
7
11
|
export declare class ZeroAuthnProvider extends AuthnProvider<ZeroUser> {
|
|
12
|
+
eager: boolean;
|
|
8
13
|
authenticate($: {
|
|
9
|
-
token
|
|
14
|
+
token?: string;
|
|
10
15
|
}): Promise<{
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
token: string;
|
|
17
|
+
user: {
|
|
18
|
+
id: number;
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
13
21
|
}>;
|
|
14
22
|
}
|
|
15
23
|
export {};
|
|
@@ -2,11 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZeroAuthnProvider = void 0;
|
|
4
4
|
const authn_1 = require("./authn");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Auth
|
|
8
|
+
*/
|
|
5
9
|
class ZeroAuthnProvider extends authn_1.AuthnProvider {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.eager = false;
|
|
13
|
+
}
|
|
6
14
|
authenticate($) {
|
|
7
15
|
return Promise.resolve({
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
token: $.token,
|
|
17
|
+
user: {
|
|
18
|
+
id: 0,
|
|
19
|
+
name: $.token
|
|
20
|
+
}
|
|
10
21
|
});
|
|
11
22
|
}
|
|
12
23
|
}
|
package/lib/engine/cli/cli.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { AnyDaemon } from '../daemon';
|
|
2
2
|
import { CLIAdapter } from './cli_adapter';
|
|
3
|
-
export type CLIConfig<
|
|
3
|
+
export type CLIConfig<Services> = {
|
|
4
|
+
editor?: string;
|
|
4
5
|
adapters?: {
|
|
5
|
-
[x: string]: (
|
|
6
|
+
[x: string]: (cli: CLI, services: Services) => CLIAdapter;
|
|
6
7
|
};
|
|
7
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* @category Engine
|
|
11
|
+
* @subcategory CLI
|
|
12
|
+
*/
|
|
8
13
|
export declare class CLI {
|
|
9
14
|
private daemon;
|
|
10
15
|
config?: CLIConfig<any> | undefined;
|
|
@@ -18,4 +23,5 @@ export declare class CLI {
|
|
|
18
23
|
private cmdHelp;
|
|
19
24
|
private cmdClear;
|
|
20
25
|
private getCmds;
|
|
26
|
+
openEditor(file: string): void;
|
|
21
27
|
}
|
package/lib/engine/cli/cli.js
CHANGED
|
@@ -10,6 +10,11 @@ const console_1 = __importDefault(require("../util/console"));
|
|
|
10
10
|
const daemon_1 = require("../daemon");
|
|
11
11
|
const log_1 = require("../util/log");
|
|
12
12
|
const cli_input_1 = require("./cli_input");
|
|
13
|
+
const shell_1 = __importDefault(require("../util/shell"));
|
|
14
|
+
/**
|
|
15
|
+
* @category Engine
|
|
16
|
+
* @subcategory CLI
|
|
17
|
+
*/
|
|
13
18
|
class CLI {
|
|
14
19
|
constructor(daemon, config) {
|
|
15
20
|
this.daemon = daemon;
|
|
@@ -20,7 +25,7 @@ class CLI {
|
|
|
20
25
|
// Build adapters
|
|
21
26
|
this.adapters = {};
|
|
22
27
|
Object.entries(config?.adapters || {}).forEach(([key, val]) => {
|
|
23
|
-
this.adapters[key] = val(daemon_1.Daemon.get(daemon, '
|
|
28
|
+
this.adapters[key] = val(this, daemon_1.Daemon.get(daemon, 'services'));
|
|
24
29
|
this.adapters[key].name = key;
|
|
25
30
|
});
|
|
26
31
|
this.input = new cli_input_1.CLIInputHandler(this.getCmds());
|
|
@@ -103,5 +108,9 @@ class CLI {
|
|
|
103
108
|
}
|
|
104
109
|
return cmds;
|
|
105
110
|
}
|
|
111
|
+
openEditor(file) {
|
|
112
|
+
const editor = this.config?.editor || 'code';
|
|
113
|
+
shell_1.default.cmd(process.cwd(), `${editor} ${file}`);
|
|
114
|
+
}
|
|
106
115
|
}
|
|
107
116
|
exports.CLI = CLI;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { AnyDaemon } from '../daemon';
|
|
2
|
+
import { CLI } from './cli';
|
|
3
|
+
/**
|
|
4
|
+
* @category Engine
|
|
5
|
+
* @subcategory CLI
|
|
6
|
+
*/
|
|
2
7
|
export declare abstract class CLICommand<T extends Record<string, any> = Record<string, any>> {
|
|
3
8
|
scope: 'dev' | 'prod' | 'any';
|
|
4
9
|
name: string;
|
|
@@ -10,10 +15,15 @@ export declare abstract class CLICommand<T extends Record<string, any> = Record<
|
|
|
10
15
|
input(payload: string): Record<string, any>;
|
|
11
16
|
abstract run(daemon: AnyDaemon, input: T): Promise<void>;
|
|
12
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @category Engine
|
|
20
|
+
* @subcategory CLI
|
|
21
|
+
*/
|
|
13
22
|
export declare abstract class CLIAdapter {
|
|
23
|
+
protected cli: CLI;
|
|
14
24
|
name?: string;
|
|
15
25
|
commands: Record<string, CLICommand>;
|
|
16
|
-
constructor();
|
|
26
|
+
constructor(cli: CLI);
|
|
17
27
|
runCmd(daemon: AnyDaemon, payload: string): Promise<boolean>;
|
|
18
28
|
help(): string;
|
|
19
29
|
}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CLIAdapter = exports.CLICommand = void 0;
|
|
4
4
|
const string_1 = require("../util/string");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory CLI
|
|
8
|
+
*/
|
|
5
9
|
class CLICommand {
|
|
6
10
|
constructor(scope, name, syntax, description, regex, groups) {
|
|
7
11
|
this.scope = scope;
|
|
@@ -30,8 +34,13 @@ class CLICommand {
|
|
|
30
34
|
}
|
|
31
35
|
}
|
|
32
36
|
exports.CLICommand = CLICommand;
|
|
37
|
+
/**
|
|
38
|
+
* @category Engine
|
|
39
|
+
* @subcategory CLI
|
|
40
|
+
*/
|
|
33
41
|
class CLIAdapter {
|
|
34
|
-
constructor() {
|
|
42
|
+
constructor(cli) {
|
|
43
|
+
this.cli = cli;
|
|
35
44
|
this.commands = {};
|
|
36
45
|
}
|
|
37
46
|
async runCmd(daemon, payload) {
|
|
@@ -36,6 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.CLIInputHandler = void 0;
|
|
37
37
|
const stream_1 = require("stream");
|
|
38
38
|
const readline = __importStar(require("readline"));
|
|
39
|
+
/**
|
|
40
|
+
* @category Engine
|
|
41
|
+
* @subcategory CLI
|
|
42
|
+
*/
|
|
39
43
|
class CLIInputHandler {
|
|
40
44
|
constructor(suggestions = []) {
|
|
41
45
|
this.suggestions = suggestions;
|
package/lib/engine/cli/ui.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category Engine
|
|
3
|
+
* @subcategory CLI
|
|
4
|
+
*/
|
|
1
5
|
export default class UI {
|
|
2
6
|
/**
|
|
3
7
|
* Show a list of options and let the user pick with up/down + enter
|
|
4
8
|
*/
|
|
5
|
-
static select<T>(title: string, options: T[], val?: NoInfer<(o: T) => string>, defaul?: number): Promise<
|
|
9
|
+
static select<T>(title: string, options: T[], val?: NoInfer<(o: T) => string>, defaul?: number): Promise<{
|
|
10
|
+
i: number;
|
|
11
|
+
value: T;
|
|
12
|
+
}>;
|
|
6
13
|
/**
|
|
7
14
|
* Ask a question and wait for the answer
|
|
8
15
|
*/
|
|
@@ -10,7 +17,12 @@ export default class UI {
|
|
|
10
17
|
/**
|
|
11
18
|
* Show a message and wait for the user to press any key
|
|
12
19
|
*/
|
|
13
|
-
static waitForAnyKey(title?: string): Promise<
|
|
20
|
+
static waitForAnyKey(title?: string): Promise<{
|
|
21
|
+
sequence: string;
|
|
22
|
+
name: string;
|
|
23
|
+
ctrl: boolean;
|
|
24
|
+
shift: boolean;
|
|
25
|
+
}>;
|
|
14
26
|
/**
|
|
15
27
|
* Ask a yes or no question and wait for the answer
|
|
16
28
|
*/
|
package/lib/engine/cli/ui.js
CHANGED
|
@@ -36,6 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
const readline = __importStar(require("readline"));
|
|
37
37
|
const stream_1 = require("stream");
|
|
38
38
|
const string_1 = require("../util/string");
|
|
39
|
+
/**
|
|
40
|
+
* @category Engine
|
|
41
|
+
* @subcategory CLI
|
|
42
|
+
*/
|
|
39
43
|
class UI {
|
|
40
44
|
/**
|
|
41
45
|
* Show a list of options and let the user pick with up/down + enter
|
|
@@ -85,7 +89,7 @@ class UI {
|
|
|
85
89
|
else if (key.name === 'return') {
|
|
86
90
|
rl.close();
|
|
87
91
|
process.stdin.off('keypress', onKeypress);
|
|
88
|
-
resolve(options[selected]);
|
|
92
|
+
resolve({ i: selected, value: options[selected] });
|
|
89
93
|
}
|
|
90
94
|
clear();
|
|
91
95
|
print();
|
|
@@ -115,7 +119,7 @@ class UI {
|
|
|
115
119
|
*/
|
|
116
120
|
static waitForAnyKey(title = 'Press any key to continue...') {
|
|
117
121
|
return new Promise(resolve => {
|
|
118
|
-
|
|
122
|
+
process.stdin.write(title + ' ');
|
|
119
123
|
const mutableStdout = new stream_1.Writable({
|
|
120
124
|
write: function (chunk, encoding, callback) {
|
|
121
125
|
}
|
|
@@ -127,8 +131,9 @@ class UI {
|
|
|
127
131
|
});
|
|
128
132
|
const onKeypress = function (ch, key) {
|
|
129
133
|
rl.close();
|
|
134
|
+
console.log(`${(0, string_1.colored)(ch, 'lightcyan')}\n`);
|
|
130
135
|
process.stdin.off('keypress', onKeypress);
|
|
131
|
-
resolve();
|
|
136
|
+
resolve(key);
|
|
132
137
|
};
|
|
133
138
|
process.stdin.on('keypress', onKeypress);
|
|
134
139
|
});
|
|
@@ -137,9 +142,8 @@ class UI {
|
|
|
137
142
|
* Ask a yes or no question and wait for the answer
|
|
138
143
|
*/
|
|
139
144
|
static async yesOrNo(text, defaul = 'n') {
|
|
140
|
-
|
|
141
|
-
answer
|
|
142
|
-
if (answer === 'y' || answer === 'yes')
|
|
145
|
+
const answer = await this.waitForAnyKey('\n\t» ' + (0, string_1.colored)(text, 'lightblue') + (0, string_1.colored)(' [y|n]', 'darkgray'));
|
|
146
|
+
if (answer.name === 'y')
|
|
143
147
|
return true;
|
|
144
148
|
return false;
|
|
145
149
|
}
|