nesoi 3.0.8 → 3.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +1 -1
- package/lib/compiler/apps/monolyth/monolyth_compiler.js +7 -7
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +3 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +3 -0
- package/lib/compiler/elements/externals.element.d.ts +1 -1
- package/lib/compiler/module.js +1 -1
- package/lib/compiler/stages/1_scan_stage.d.ts +3 -0
- package/lib/compiler/stages/1_scan_stage.js +3 -0
- package/lib/compiler/stages/2_treeshake_stage.d.ts +3 -0
- package/lib/compiler/stages/2_treeshake_stage.js +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.d.ts +3 -0
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.d.ts +3 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +3 -0
- package/lib/compiler/stages/6_build_elements_stage.d.ts +3 -0
- package/lib/compiler/stages/6_build_elements_stage.js +3 -0
- package/lib/compiler/stages/7_dump_stage.d.ts +3 -0
- package/lib/compiler/stages/7_dump_stage.js +3 -0
- package/lib/compiler/stages/8_diagnose_stage.d.ts +3 -0
- package/lib/compiler/stages/8_diagnose_stage.js +3 -0
- package/lib/compiler/treeshake.js +3 -3
- package/lib/elements/blocks/block.builder.d.ts +6 -2
- package/lib/elements/blocks/block.builder.js +8 -4
- package/lib/elements/blocks/block.schema.d.ts +4 -0
- package/lib/elements/blocks/block.schema.js +4 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -3
- package/lib/elements/blocks/job/internal/machine_job.builder.js +5 -2
- package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.js +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.js +4 -0
- package/lib/elements/blocks/job/job.builder.d.ts +4 -0
- package/lib/elements/blocks/job/job.builder.js +4 -0
- package/lib/elements/blocks/job/job.d.ts +4 -0
- package/lib/elements/blocks/job/job.js +4 -0
- package/lib/elements/blocks/job/job.schema.d.ts +4 -0
- package/lib/elements/blocks/job/job.schema.js +4 -0
- package/lib/elements/blocks/machine/machine.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine.builder.js +16 -1
- package/lib/elements/blocks/machine/machine.d.ts +12 -0
- package/lib/elements/blocks/machine/machine.js +12 -0
- package/lib/elements/blocks/machine/machine.schema.d.ts +18 -1
- package/lib/elements/blocks/machine/machine.schema.js +18 -2
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +4 -0
- package/lib/elements/blocks/machine/machine_transition.builder.js +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +4 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.js +4 -0
- package/lib/elements/blocks/queue/queue.builder.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.builder.js +4 -0
- package/lib/elements/blocks/queue/queue.schema.d.ts +4 -0
- package/lib/elements/blocks/queue/queue.schema.js +4 -0
- package/lib/elements/blocks/resource/resource.builder.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.builder.js +4 -0
- package/lib/elements/blocks/resource/resource.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.js +4 -0
- package/lib/elements/blocks/resource/resource.schema.d.ts +4 -0
- package/lib/elements/blocks/resource/resource.schema.js +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +4 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +4 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +7 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.js +6 -1
- package/lib/elements/edge/controller/controller.builder.d.ts +16 -0
- package/lib/elements/edge/controller/controller.builder.js +16 -0
- package/lib/elements/edge/controller/controller.config.d.ts +3 -2
- package/lib/elements/edge/controller/controller.d.ts +7 -3
- package/lib/elements/edge/controller/controller.js +7 -3
- package/lib/elements/edge/controller/controller.schema.d.ts +16 -0
- package/lib/elements/edge/controller/controller.schema.js +16 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.builder.js +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.d.ts +4 -0
- package/lib/elements/{blocks → edge}/externals/externals.schema.js +4 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +18 -12
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +5 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +4 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +4 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +4 -1
- package/lib/elements/entities/bucket/adapters/memory.nql.js +4 -1
- package/lib/elements/entities/bucket/bucket.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.builder.js +4 -0
- package/lib/elements/entities/bucket/bucket.config.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.d.ts +12 -4
- package/lib/elements/entities/bucket/bucket.js +18 -11
- package/lib/elements/entities/bucket/bucket.schema.d.ts +4 -0
- package/lib/elements/entities/bucket/bucket.schema.js +4 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +8 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.js +4 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +4 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +8 -0
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +9 -0
- package/lib/elements/entities/bucket/query/nql_compiler.js +9 -0
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +6 -0
- package/lib/elements/entities/bucket/query/nql_engine.js +6 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +4 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +10 -2
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +8 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -0
- package/lib/elements/entities/constants/constants.builder.d.ts +21 -6
- package/lib/elements/entities/constants/constants.builder.js +21 -6
- package/lib/elements/entities/constants/constants.d.ts +4 -0
- package/lib/elements/entities/constants/constants.js +4 -0
- package/lib/elements/entities/constants/constants.schema.d.ts +16 -0
- package/lib/elements/entities/constants/constants.schema.js +16 -0
- package/lib/elements/entities/drive/drive_adapter.d.ts +15 -10
- package/lib/elements/entities/drive/drive_adapter.js +5 -2
- package/lib/elements/entities/drive/local.drive_adapter.d.ts +10 -4
- package/lib/elements/entities/drive/local.drive_adapter.js +23 -8
- package/lib/elements/entities/message/message.builder.d.ts +4 -0
- package/lib/elements/entities/message/message.builder.js +4 -0
- package/lib/elements/entities/message/message.d.ts +4 -0
- package/lib/elements/entities/message/message.js +4 -0
- package/lib/elements/entities/message/message.schema.d.ts +4 -0
- package/lib/elements/entities/message/message.schema.js +4 -0
- package/lib/elements/entities/message/message_parser.d.ts +4 -0
- package/lib/elements/entities/message/message_parser.js +4 -0
- package/lib/elements/entities/message/template/message_template.builder.d.ts +4 -0
- package/lib/elements/entities/message/template/message_template.builder.js +4 -0
- package/lib/elements/entities/message/template/message_template.schema.d.ts +9 -0
- package/lib/elements/entities/message/template/message_template.schema.js +25 -0
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +8 -0
- package/lib/elements/entities/message/template/message_template_field.builder.js +8 -0
- package/lib/elements/index.d.ts +1 -1
- package/lib/elements/index.js +1 -1
- package/lib/engine/apps/app.config.d.ts +15 -11
- package/lib/engine/apps/app.config.js +3 -0
- package/lib/engine/apps/app.d.ts +12 -20
- package/lib/engine/apps/app.js +13 -10
- package/lib/engine/apps/inline.app.d.ts +12 -8
- package/lib/engine/apps/inline.app.js +27 -24
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +13 -5
- package/lib/engine/apps/monolyth/monolyth.app.js +14 -6
- package/lib/engine/apps/service.d.ts +30 -0
- package/lib/engine/apps/service.js +15 -0
- package/lib/engine/auth/authn.d.ts +14 -1
- package/lib/engine/auth/authn.js +4 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +11 -3
- package/lib/engine/auth/zero.authn_provider.js +13 -2
- package/lib/engine/cli/cli.d.ts +8 -2
- package/lib/engine/cli/cli.js +10 -1
- package/lib/engine/cli/cli_adapter.d.ts +11 -1
- package/lib/engine/cli/cli_adapter.js +10 -1
- package/lib/engine/cli/cli_input.d.ts +4 -0
- package/lib/engine/cli/cli_input.js +4 -0
- package/lib/engine/cli/ui.d.ts +14 -2
- package/lib/engine/cli/ui.js +10 -6
- package/lib/engine/daemon.d.ts +96 -9
- package/lib/engine/daemon.js +101 -18
- package/lib/engine/data/date.d.ts +4 -0
- package/lib/engine/data/date.js +4 -0
- package/lib/engine/data/datetime.d.ts +4 -0
- package/lib/engine/data/datetime.js +4 -0
- package/lib/engine/data/decimal.d.ts +4 -0
- package/lib/engine/data/decimal.js +4 -0
- package/lib/engine/data/file.d.ts +23 -23
- package/lib/engine/data/file.js +66 -29
- package/lib/engine/data/json.d.ts +4 -0
- package/lib/engine/data/json.js +4 -0
- package/lib/engine/data/tree.d.ts +4 -0
- package/lib/engine/data/tree.js +4 -0
- package/lib/engine/dependency.d.ts +65 -3
- package/lib/engine/dependency.js +70 -0
- package/lib/engine/module.d.ts +110 -8
- package/lib/engine/module.js +131 -31
- package/lib/engine/space.d.ts +163 -10
- package/lib/engine/space.js +184 -22
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +12 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.js +13 -2
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +9 -10
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -4
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +5 -2
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +4 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +6 -4
- package/lib/engine/transaction/trx.d.ts +14 -4
- package/lib/engine/transaction/trx.js +10 -1
- package/lib/engine/transaction/trx_engine.config.d.ts +2 -2
- package/lib/engine/transaction/trx_engine.d.ts +8 -3
- package/lib/engine/transaction/trx_engine.js +24 -20
- package/lib/engine/transaction/trx_node.d.ts +8 -2
- package/lib/engine/transaction/trx_node.js +17 -1
- package/lib/engine/tree.d.ts +54 -2
- package/lib/engine/tree.js +60 -19
- package/lib/engine/util/mime.d.ts +4 -4
- package/lib/engine/util/mime.js +7 -9
- package/lib/schema.d.ts +2 -2
- package/package.json +2 -3
- package/tools/joaquin/job.js +2 -2
- package/tools/joaquin/message.js +2 -2
- package/tools/joaquin/mock.d.ts +6 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/adapters/postgres/src/migrator/bucket.d.ts +0 -20
- package/lib/adapters/postgres/src/migrator/bucket.js +0 -184
- package/lib/adapters/postgres/src/migrator/csv.d.ts +0 -7
- package/lib/adapters/postgres/src/migrator/csv.js +0 -72
- package/lib/adapters/postgres/src/migrator/database.d.ts +0 -37
- package/lib/adapters/postgres/src/migrator/database.js +0 -88
- package/lib/adapters/postgres/src/migrator/index.d.ts +0 -1
- package/lib/adapters/postgres/src/migrator/index.js +0 -5
- package/lib/adapters/postgres/src/migrator/migration.d.ts +0 -57
- package/lib/adapters/postgres/src/migrator/migration.js +0 -203
- package/lib/adapters/postgres/src/migrator/migrator.d.ts +0 -21
- package/lib/adapters/postgres/src/migrator/migrator.js +0 -76
- package/lib/adapters/postgres/src/migrator/runner.d.ts +0 -71
- package/lib/adapters/postgres/src/migrator/runner.js +0 -271
- package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +0 -42
- package/lib/adapters/postgres/src/postgres.bucket_adapter.js +0 -294
- package/lib/adapters/postgres/src/postgres.cli.d.ts +0 -66
- package/lib/adapters/postgres/src/postgres.cli.js +0 -184
- package/lib/adapters/postgres/src/postgres.config.d.ts +0 -5
- package/lib/adapters/postgres/src/postgres.config.js +0 -2
- package/lib/adapters/postgres/src/postgres.nql.d.ts +0 -16
- package/lib/adapters/postgres/src/postgres.nql.js +0 -123
- package/lib/adapters/postgres/src/postgres.provider.d.ts +0 -18
- package/lib/adapters/postgres/src/postgres.provider.js +0 -77
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +0 -1
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +0 -210
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +0 -218
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +0 -47
- package/lib/engine/apps/monolyth/monolyth.cli.d.ts +0 -45
- package/lib/engine/apps/monolyth/monolyth.cli.js +0 -362
- package/lib/engine/util/cache.d.ts +0 -6
- package/lib/engine/util/cache.js +0 -20
package/lib/engine/daemon.d.ts
CHANGED
|
@@ -6,31 +6,118 @@ import { AnyUsers, AuthnRequest } from './auth/authn';
|
|
|
6
6
|
import { TrxNode } from './transaction/trx_node';
|
|
7
7
|
import { TrxStatus } from './transaction/trx';
|
|
8
8
|
import { AnyModule } from './module';
|
|
9
|
+
import { IService } from './apps/service';
|
|
10
|
+
/**
|
|
11
|
+
* A background process running one or more modules,
|
|
12
|
+
* which runs _Transactions_ for the available elements.
|
|
13
|
+
*
|
|
14
|
+
* A `Daemon` is spawn by an `App`.
|
|
15
|
+
*
|
|
16
|
+
* @category Engine
|
|
17
|
+
*/
|
|
9
18
|
export declare abstract class Daemon<S extends $Space, Modules extends ModuleName<S>> {
|
|
10
19
|
protected name: string;
|
|
11
20
|
protected trxEngines: Record<Modules, AnyTrxEngine>;
|
|
12
|
-
protected
|
|
13
|
-
protected
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
protected services: Record<string, IService>;
|
|
22
|
+
protected config?: AnyAppConfig | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* @param name Name of the daemon (taken from App)
|
|
25
|
+
* @param trxEngines A dictionary of Transaction Engine by module name
|
|
26
|
+
* @param services A dictionary of Service by name
|
|
27
|
+
* @param config Optional `AppConfig`
|
|
28
|
+
*/
|
|
29
|
+
constructor(name: string, trxEngines: Record<Modules, AnyTrxEngine>, services: Record<string, IService>, config?: AnyAppConfig | undefined);
|
|
30
|
+
/**
|
|
31
|
+
* Prepare a transaction to be run by the Daemon.
|
|
32
|
+
*
|
|
33
|
+
* @param moduleName Name of the module where to run the transactoin
|
|
34
|
+
* @returns A `DaemonTrx` instance, which can be run
|
|
35
|
+
*/
|
|
16
36
|
trx<K extends Modules & keyof S['modules']>(moduleName: K): DaemonTrx<S, S["modules"][K], {}>;
|
|
37
|
+
/**
|
|
38
|
+
* Run the Nesoi CLI for this Daemon.
|
|
39
|
+
*/
|
|
17
40
|
cli(cmd?: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Bind the controller of each module to this Daemon.
|
|
43
|
+
* This allows the registered `Controller Adapters` to run
|
|
44
|
+
* transactions on the daemon.
|
|
45
|
+
*/
|
|
18
46
|
private bindControllers;
|
|
19
|
-
|
|
20
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Destroy the services and transaction engines of this daemon
|
|
49
|
+
*
|
|
50
|
+
* @param A `Daemon` instance
|
|
51
|
+
*/
|
|
52
|
+
destroy(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Replace the services and transaction engines of this daemon
|
|
55
|
+
* and rebind the controllers
|
|
56
|
+
*
|
|
57
|
+
* @param daemon A `Daemon` instance
|
|
58
|
+
* @param trxEngines A dictionary of Transaction Engine by module name
|
|
59
|
+
* @param services A dictionary of Service by name
|
|
60
|
+
*/
|
|
61
|
+
reload(trxEngines: Record<Modules, AnyTrxEngine>, services: Record<string, any>): void;
|
|
62
|
+
/**
|
|
63
|
+
* Return a `Daemon` property.
|
|
64
|
+
* This is used to read private properties.
|
|
65
|
+
*
|
|
66
|
+
* @param daemon A `Daemon` instance
|
|
67
|
+
* @param key A `Daemon` property `'name'|'services'|'app'`
|
|
68
|
+
* @returns The selected property
|
|
69
|
+
*/
|
|
21
70
|
static get<T extends {
|
|
22
71
|
name: string;
|
|
23
|
-
|
|
72
|
+
services: Record<string, any>;
|
|
24
73
|
app: AnyAppConfig;
|
|
25
74
|
}, K extends keyof T>(daemon: AnyDaemon | undefined, key: K): T[K];
|
|
26
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Return one module of the `Daemon` by name.
|
|
77
|
+
*
|
|
78
|
+
* @param daemon A `Daemon` instance
|
|
79
|
+
* @param module A module name
|
|
80
|
+
* @returns The `Module` instance
|
|
81
|
+
*/
|
|
82
|
+
static getModule<Module extends ModuleName<any>, D extends Daemon<any, Module>>(daemon: D, module: Module): import("./module").Module<any, any>;
|
|
83
|
+
/**
|
|
84
|
+
* Return all modules of the `Daemon`.
|
|
85
|
+
*
|
|
86
|
+
* @param daemon A `Daemon` instance
|
|
87
|
+
* @returns The `Module` instances
|
|
88
|
+
*/
|
|
27
89
|
static getModules(daemon: AnyDaemon): AnyModule[];
|
|
28
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* A helper class for preparing a transaction to be run.
|
|
93
|
+
* It allows declaring authentication data before running
|
|
94
|
+
* the transaction.
|
|
95
|
+
*
|
|
96
|
+
* @category Engine
|
|
97
|
+
*/
|
|
29
98
|
export declare class DaemonTrx<S extends $Space, M extends $Module, Authn extends AnyUsers = {}> {
|
|
30
99
|
private trxEngine;
|
|
31
|
-
|
|
100
|
+
/**
|
|
101
|
+
* The authentication request which will be used to
|
|
102
|
+
* authenticate this transaction prior to running.
|
|
103
|
+
*/
|
|
104
|
+
private authnRequest?;
|
|
105
|
+
/**
|
|
106
|
+
* @param trxEngine The transaction engine where to run the transaction.
|
|
107
|
+
*/
|
|
32
108
|
constructor(trxEngine: AnyTrxEngine);
|
|
109
|
+
/**
|
|
110
|
+
* Authenticate the transaction with the given credentials.
|
|
111
|
+
* You can specify one or more credentials, so the transaction
|
|
112
|
+
* is able to access elements with different authn providers.
|
|
113
|
+
*/
|
|
33
114
|
authn<Authn extends AuthnRequest<keyof S['authnUsers']>>(authn?: Authn): DaemonTrx<S, M, { [K in keyof Authn]: S["authnUsers"][K & keyof S["authnUsers"]]; }>;
|
|
115
|
+
/**
|
|
116
|
+
* Run a method inside the transaction.
|
|
117
|
+
*
|
|
118
|
+
* @param fn A function to execute inside the transaction
|
|
119
|
+
* @returns A `TrxStatus` containing metadata about the transaction and the function response
|
|
120
|
+
*/
|
|
34
121
|
run<Output>(fn: (trx: TrxNode<S, M, Authn>) => Promise<Output>): Promise<TrxStatus<Output>>;
|
|
35
122
|
}
|
|
36
123
|
export type AnyDaemon = Daemon<any, any>;
|
package/lib/engine/daemon.js
CHANGED
|
@@ -4,15 +4,35 @@ exports.DaemonTrx = exports.Daemon = void 0;
|
|
|
4
4
|
const log_1 = require("./util/log");
|
|
5
5
|
const error_1 = require("./data/error");
|
|
6
6
|
const cli_1 = require("./cli/cli");
|
|
7
|
+
/**
|
|
8
|
+
* A background process running one or more modules,
|
|
9
|
+
* which runs _Transactions_ for the available elements.
|
|
10
|
+
*
|
|
11
|
+
* A `Daemon` is spawn by an `App`.
|
|
12
|
+
*
|
|
13
|
+
* @category Engine
|
|
14
|
+
*/
|
|
7
15
|
class Daemon {
|
|
8
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @param name Name of the daemon (taken from App)
|
|
18
|
+
* @param trxEngines A dictionary of Transaction Engine by module name
|
|
19
|
+
* @param services A dictionary of Service by name
|
|
20
|
+
* @param config Optional `AppConfig`
|
|
21
|
+
*/
|
|
22
|
+
constructor(name, trxEngines, services, config) {
|
|
9
23
|
this.name = name;
|
|
10
24
|
this.trxEngines = trxEngines;
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
25
|
+
this.services = services;
|
|
26
|
+
this.config = config;
|
|
13
27
|
this.bindControllers();
|
|
14
28
|
log_1.Log.info('daemon', name, 'Woo-ha!');
|
|
15
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Prepare a transaction to be run by the Daemon.
|
|
32
|
+
*
|
|
33
|
+
* @param moduleName Name of the module where to run the transactoin
|
|
34
|
+
* @returns A `DaemonTrx` instance, which can be run
|
|
35
|
+
*/
|
|
16
36
|
trx(moduleName) {
|
|
17
37
|
const trxEngine = this.trxEngines[moduleName];
|
|
18
38
|
if (!trxEngine) {
|
|
@@ -20,10 +40,18 @@ class Daemon {
|
|
|
20
40
|
}
|
|
21
41
|
return new DaemonTrx(trxEngine);
|
|
22
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Run the Nesoi CLI for this Daemon.
|
|
45
|
+
*/
|
|
23
46
|
async cli(cmd) {
|
|
24
|
-
|
|
25
|
-
await
|
|
47
|
+
const cli = new cli_1.CLI(this, this.config?.cli);
|
|
48
|
+
await cli.run(cmd);
|
|
26
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Bind the controller of each module to this Daemon.
|
|
52
|
+
* This allows the registered `Controller Adapters` to run
|
|
53
|
+
* transactions on the daemon.
|
|
54
|
+
*/
|
|
27
55
|
bindControllers() {
|
|
28
56
|
log_1.Log.info('daemon', this.name, 'Binding controllers');
|
|
29
57
|
for (const t in this.trxEngines) {
|
|
@@ -34,45 +62,100 @@ class Daemon {
|
|
|
34
62
|
}
|
|
35
63
|
}
|
|
36
64
|
}
|
|
37
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Destroy the services and transaction engines of this daemon
|
|
67
|
+
*
|
|
68
|
+
* @param A `Daemon` instance
|
|
69
|
+
*/
|
|
70
|
+
async destroy() {
|
|
38
71
|
log_1.Log.info('daemon', this.name, 'Stop');
|
|
39
|
-
for (const key in
|
|
40
|
-
const
|
|
41
|
-
await
|
|
42
|
-
delete
|
|
72
|
+
for (const key in this.services) {
|
|
73
|
+
const service = this.services[key];
|
|
74
|
+
await service.down();
|
|
75
|
+
delete this.services[key];
|
|
43
76
|
}
|
|
44
|
-
for (const key in
|
|
45
|
-
delete
|
|
77
|
+
for (const key in this.trxEngines) {
|
|
78
|
+
delete this.trxEngines[key];
|
|
46
79
|
}
|
|
47
80
|
}
|
|
48
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Replace the services and transaction engines of this daemon
|
|
83
|
+
* and rebind the controllers
|
|
84
|
+
*
|
|
85
|
+
* @param daemon A `Daemon` instance
|
|
86
|
+
* @param trxEngines A dictionary of Transaction Engine by module name
|
|
87
|
+
* @param services A dictionary of Service by name
|
|
88
|
+
*/
|
|
89
|
+
reload(trxEngines, services) {
|
|
49
90
|
log_1.Log.info('daemon', this.name, 'Reloaded');
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
91
|
+
this.trxEngines = trxEngines;
|
|
92
|
+
this.services = services;
|
|
93
|
+
this.bindControllers();
|
|
53
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Return a `Daemon` property.
|
|
97
|
+
* This is used to read private properties.
|
|
98
|
+
*
|
|
99
|
+
* @param daemon A `Daemon` instance
|
|
100
|
+
* @param key A `Daemon` property `'name'|'services'|'app'`
|
|
101
|
+
* @returns The selected property
|
|
102
|
+
*/
|
|
54
103
|
static get(daemon, key) {
|
|
55
104
|
return daemon?.[key];
|
|
56
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Return one module of the `Daemon` by name.
|
|
108
|
+
*
|
|
109
|
+
* @param daemon A `Daemon` instance
|
|
110
|
+
* @param module A module name
|
|
111
|
+
* @returns The `Module` instance
|
|
112
|
+
*/
|
|
57
113
|
static getModule(daemon, module) {
|
|
58
114
|
return daemon.trxEngines[module].getModule();
|
|
59
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Return all modules of the `Daemon`.
|
|
118
|
+
*
|
|
119
|
+
* @param daemon A `Daemon` instance
|
|
120
|
+
* @returns The `Module` instances
|
|
121
|
+
*/
|
|
60
122
|
static getModules(daemon) {
|
|
61
123
|
return Object.values(daemon.trxEngines)
|
|
62
124
|
.map((trx) => trx.getModule());
|
|
63
125
|
}
|
|
64
126
|
}
|
|
65
127
|
exports.Daemon = Daemon;
|
|
128
|
+
/**
|
|
129
|
+
* A helper class for preparing a transaction to be run.
|
|
130
|
+
* It allows declaring authentication data before running
|
|
131
|
+
* the transaction.
|
|
132
|
+
*
|
|
133
|
+
* @category Engine
|
|
134
|
+
*/
|
|
66
135
|
class DaemonTrx {
|
|
136
|
+
/**
|
|
137
|
+
* @param trxEngine The transaction engine where to run the transaction.
|
|
138
|
+
*/
|
|
67
139
|
constructor(trxEngine) {
|
|
68
140
|
this.trxEngine = trxEngine;
|
|
69
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Authenticate the transaction with the given credentials.
|
|
144
|
+
* You can specify one or more credentials, so the transaction
|
|
145
|
+
* is able to access elements with different authn providers.
|
|
146
|
+
*/
|
|
70
147
|
authn(authn) {
|
|
71
|
-
this.
|
|
148
|
+
this.authnRequest = authn;
|
|
72
149
|
return this;
|
|
73
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Run a method inside the transaction.
|
|
153
|
+
*
|
|
154
|
+
* @param fn A function to execute inside the transaction
|
|
155
|
+
* @returns A `TrxStatus` containing metadata about the transaction and the function response
|
|
156
|
+
*/
|
|
74
157
|
async run(fn) {
|
|
75
|
-
return this.trxEngine.trx(fn, this.
|
|
158
|
+
return this.trxEngine.trx(fn, this.authnRequest);
|
|
76
159
|
}
|
|
77
160
|
}
|
|
78
161
|
exports.DaemonTrx = DaemonTrx;
|
package/lib/engine/data/date.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NesoiDatetime = void 0;
|
|
4
4
|
const error_1 = require("./error");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Data
|
|
8
|
+
*/
|
|
5
9
|
class NesoiDatetime {
|
|
6
10
|
constructor(epoch, tz = 'Z') {
|
|
7
11
|
this.epoch = epoch || new Date().getTime();
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NesoiDecimal = void 0;
|
|
4
4
|
const error_1 = require("./error");
|
|
5
|
+
/**
|
|
6
|
+
* @category Engine
|
|
7
|
+
* @subcategory Data
|
|
8
|
+
*/
|
|
5
9
|
class NesoiDecimal {
|
|
6
10
|
constructor(value, pLeft = 12, pRight = 12) {
|
|
7
11
|
this.neg = false;
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @category Engine
|
|
3
|
+
* @subcategory Data
|
|
4
|
+
*/
|
|
5
|
+
export declare class LocalNesoiFile {
|
|
6
|
+
/**
|
|
7
|
+
* - If not overriden, `extname` is derived from `filepath`
|
|
8
|
+
* - If `overrides.originalFilename` is passed, `extname` is derived from it (this allows saving the file without extension, but keeping the information on NesoiFile).
|
|
9
|
+
* - If not overriden, `mimetype` is derived from the resolved `extname`
|
|
10
|
+
*/
|
|
11
|
+
static from(filepath: string, overrides?: Partial<NesoiFile>): NesoiFile;
|
|
12
|
+
static delete(file: NesoiFile): void;
|
|
13
|
+
static move(file: NesoiFile, to: string): void;
|
|
14
|
+
static read(file: NesoiFile): string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @category Engine
|
|
18
|
+
* @subcategory Data
|
|
19
|
+
*/
|
|
3
20
|
export declare class NesoiFile {
|
|
4
21
|
__nesoi_file: boolean;
|
|
5
22
|
filepath: string;
|
|
@@ -8,31 +25,14 @@ export declare class NesoiFile {
|
|
|
8
25
|
mimetype: string | null;
|
|
9
26
|
size: number;
|
|
10
27
|
originalFilename: string | null;
|
|
11
|
-
newFilename: string;
|
|
12
28
|
mtime: Date | null;
|
|
13
29
|
hashAlgorithm: false | 'sha1' | 'md5' | 'sha256';
|
|
14
|
-
private
|
|
15
|
-
constructor(filepath: string,
|
|
16
|
-
|
|
17
|
-
newFilename?: string | null;
|
|
18
|
-
});
|
|
30
|
+
private hash;
|
|
31
|
+
constructor(filepath: string, filename: string, extname: string, mimetype: string | null, size: number, originalFilename: string | null, mtime: Date | null);
|
|
32
|
+
static from(file: NesoiFile, overrides: Partial<NesoiFile>): NesoiFile;
|
|
19
33
|
static hash(file: NesoiFile, hashAlgorithm: 'sha1' | 'md5' | 'sha256'): Promise<{
|
|
20
34
|
algorithm: "sha1" | "sha256" | "md5";
|
|
21
35
|
hash: string | object;
|
|
22
36
|
}>;
|
|
23
|
-
static
|
|
24
|
-
trx: TrxNode<any, M, any>;
|
|
25
|
-
}, bucket: keyof M['buckets'], file: NesoiFile, options?: {
|
|
26
|
-
silent?: boolean;
|
|
27
|
-
}): Promise<void> | undefined;
|
|
28
|
-
static move<M extends $Module>($: {
|
|
29
|
-
trx: TrxNode<any, M, any>;
|
|
30
|
-
}, bucket: keyof M['buckets'], file: NesoiFile, to: string, options?: {
|
|
31
|
-
silent?: boolean;
|
|
32
|
-
}): Promise<void>;
|
|
33
|
-
static read<M extends $Module>($: {
|
|
34
|
-
trx: TrxNode<any, M, any>;
|
|
35
|
-
}, bucket: keyof M['buckets'], file: NesoiFile, options?: {
|
|
36
|
-
silent?: boolean;
|
|
37
|
-
}): Promise<void>;
|
|
37
|
+
static local: typeof LocalNesoiFile;
|
|
38
38
|
}
|
package/lib/engine/data/file.js
CHANGED
|
@@ -3,52 +3,89 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.NesoiFile = void 0;
|
|
6
|
+
exports.NesoiFile = exports.LocalNesoiFile = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const hash_1 = require("../util/hash");
|
|
10
10
|
const mime_1 = require("../util/mime");
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @category Engine
|
|
13
|
+
* @subcategory Data
|
|
14
|
+
*/
|
|
15
|
+
class LocalNesoiFile {
|
|
16
|
+
/**
|
|
17
|
+
* - If not overriden, `extname` is derived from `filepath`
|
|
18
|
+
* - If `overrides.originalFilename` is passed, `extname` is derived from it (this allows saving the file without extension, but keeping the information on NesoiFile).
|
|
19
|
+
* - If not overriden, `mimetype` is derived from the resolved `extname`
|
|
20
|
+
*/
|
|
21
|
+
static from(filepath, overrides) {
|
|
22
|
+
const filename = overrides?.filename || path_1.default.basename(filepath);
|
|
23
|
+
let extname;
|
|
24
|
+
if (overrides?.extname) {
|
|
25
|
+
extname = overrides.extname;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (overrides?.originalFilename) {
|
|
29
|
+
extname = path_1.default.extname(overrides?.originalFilename).slice(1);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
extname = path_1.default.extname(filepath).slice(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const mimetype = overrides?.mimetype || mime_1.Mime.ofExtname(extname);
|
|
36
|
+
const stat = fs_1.default.statSync(filepath);
|
|
37
|
+
const mtime = stat.mtime;
|
|
38
|
+
const size = stat.size;
|
|
39
|
+
const originalFilename = overrides?.originalFilename || null;
|
|
40
|
+
return new NesoiFile(filepath, filename, extname, mimetype, size, originalFilename, mtime);
|
|
41
|
+
}
|
|
42
|
+
static delete(file) {
|
|
43
|
+
fs_1.default.rmSync(file.filepath);
|
|
44
|
+
}
|
|
45
|
+
static move(file, to) {
|
|
46
|
+
fs_1.default.renameSync(file.filepath, to);
|
|
47
|
+
file.filepath = to;
|
|
48
|
+
file.filename = path_1.default.basename(to);
|
|
49
|
+
}
|
|
50
|
+
static read(file) {
|
|
51
|
+
return fs_1.default.readFileSync(file.filepath).toString();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.LocalNesoiFile = LocalNesoiFile;
|
|
55
|
+
/**
|
|
56
|
+
* @category Engine
|
|
57
|
+
* @subcategory Data
|
|
58
|
+
*/
|
|
12
59
|
class NesoiFile {
|
|
13
|
-
constructor(filepath,
|
|
60
|
+
constructor(filepath, filename, extname, mimetype, size, originalFilename, mtime) {
|
|
14
61
|
this.__nesoi_file = true;
|
|
62
|
+
// Algorithm used to generate the hash
|
|
15
63
|
this.hashAlgorithm = false;
|
|
16
64
|
// Only available after `.hash` is called
|
|
17
|
-
this.
|
|
65
|
+
this.hash = null;
|
|
18
66
|
this.filepath = filepath;
|
|
19
|
-
this.filename =
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.newFilename = extra?.newFilename || this.filename;
|
|
29
|
-
this.mtime = stat.mtime;
|
|
67
|
+
this.filename = filename;
|
|
68
|
+
this.extname = extname;
|
|
69
|
+
this.mimetype = mimetype;
|
|
70
|
+
this.size = size;
|
|
71
|
+
this.originalFilename = originalFilename;
|
|
72
|
+
this.mtime = mtime;
|
|
73
|
+
}
|
|
74
|
+
static from(file, overrides) {
|
|
75
|
+
return new NesoiFile(overrides.filepath || file.filepath, overrides.filename || file.filename, overrides.extname || file.extname, overrides.mimetype || file.mimetype, overrides.size || file.size, overrides.originalFilename || file.originalFilename, overrides.mtime || file.mtime);
|
|
30
76
|
}
|
|
31
77
|
static async hash(file, hashAlgorithm) {
|
|
32
|
-
if (!file.
|
|
78
|
+
if (!file.hash) {
|
|
33
79
|
file.hashAlgorithm = hashAlgorithm;
|
|
34
|
-
file.
|
|
35
|
-
file.
|
|
80
|
+
file.hash = hash_1.Hash.file(file.filepath, file.hashAlgorithm).then(hash => {
|
|
81
|
+
file.hash = hash;
|
|
36
82
|
});
|
|
37
83
|
}
|
|
38
84
|
return {
|
|
39
85
|
algorithm: hashAlgorithm,
|
|
40
|
-
hash: file.
|
|
86
|
+
hash: file.hash
|
|
41
87
|
};
|
|
42
88
|
}
|
|
43
|
-
static delete($, bucket, file, options) {
|
|
44
|
-
return $.trx.bucket(bucket).drive.delete(file, options);
|
|
45
|
-
}
|
|
46
|
-
static async move($, bucket, file, to, options) {
|
|
47
|
-
await $.trx.bucket(bucket).drive.move(file, to, options);
|
|
48
|
-
file.filepath = to;
|
|
49
|
-
}
|
|
50
|
-
static async read($, bucket, file, options) {
|
|
51
|
-
await $.trx.bucket(bucket).drive.read(file, options);
|
|
52
|
-
}
|
|
53
89
|
}
|
|
54
90
|
exports.NesoiFile = NesoiFile;
|
|
91
|
+
NesoiFile.local = LocalNesoiFile;
|
package/lib/engine/data/json.js
CHANGED
package/lib/engine/data/tree.js
CHANGED
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Tree = void 0;
|
|
7
7
|
const error_1 = require("./error");
|
|
8
|
+
/**
|
|
9
|
+
* @category Engine
|
|
10
|
+
* @subcategory Data
|
|
11
|
+
*/
|
|
8
12
|
class Tree {
|
|
9
13
|
/**
|
|
10
14
|
* Read one or more values from the object, from a _fieldpath_.
|