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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { $Block } from "../block.schema";
|
|
1
|
+
import { $Block, $BlockAuth } from "../block.schema";
|
|
2
2
|
import { $Bucket } from "../../entities/bucket/bucket.schema";
|
|
3
3
|
import { $Message } from "../../entities/message/message.schema";
|
|
4
|
-
import {
|
|
4
|
+
import { Tag } from "../../../engine/dependency";
|
|
5
5
|
/**
|
|
6
6
|
* @category Schemas
|
|
7
7
|
* @subcategory Block
|
|
@@ -10,14 +10,14 @@ export declare class $Resource extends $Block {
|
|
|
10
10
|
module: string;
|
|
11
11
|
name: string;
|
|
12
12
|
alias: string;
|
|
13
|
-
|
|
14
|
-
bucket:
|
|
13
|
+
auth: $BlockAuth[];
|
|
14
|
+
bucket: Tag;
|
|
15
15
|
jobs: {
|
|
16
|
-
view?:
|
|
17
|
-
query?:
|
|
18
|
-
create?:
|
|
19
|
-
update?:
|
|
20
|
-
delete?:
|
|
16
|
+
view?: Tag;
|
|
17
|
+
query?: Tag;
|
|
18
|
+
create?: Tag;
|
|
19
|
+
update?: Tag;
|
|
20
|
+
delete?: Tag;
|
|
21
21
|
};
|
|
22
22
|
$t: "resource";
|
|
23
23
|
'#bucket': $Bucket;
|
|
@@ -26,11 +26,11 @@ export declare class $Resource extends $Block {
|
|
|
26
26
|
'#input.create': $Message;
|
|
27
27
|
'#input.update': $Message;
|
|
28
28
|
'#input.delete': $Message;
|
|
29
|
-
constructor(module: string, name: string, alias: string,
|
|
30
|
-
view?:
|
|
31
|
-
query?:
|
|
32
|
-
create?:
|
|
33
|
-
update?:
|
|
34
|
-
delete?:
|
|
29
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], bucket: Tag, jobs: {
|
|
30
|
+
view?: Tag;
|
|
31
|
+
query?: Tag;
|
|
32
|
+
create?: Tag;
|
|
33
|
+
update?: Tag;
|
|
34
|
+
delete?: Tag;
|
|
35
35
|
});
|
|
36
36
|
}
|
|
@@ -8,24 +8,24 @@ const dependency_1 = require("../../../engine/dependency");
|
|
|
8
8
|
* @subcategory Block
|
|
9
9
|
*/
|
|
10
10
|
class $Resource extends block_schema_1.$Block {
|
|
11
|
-
constructor(module, name, alias,
|
|
11
|
+
constructor(module, name, alias, auth, bucket, jobs) {
|
|
12
12
|
const input = [];
|
|
13
13
|
if (jobs.view)
|
|
14
|
-
input.push(new dependency_1
|
|
14
|
+
input.push(new dependency_1.Tag(module, 'message', jobs.view.name));
|
|
15
15
|
if (jobs.query)
|
|
16
|
-
input.push(new dependency_1
|
|
16
|
+
input.push(new dependency_1.Tag(module, 'message', jobs.query.name));
|
|
17
17
|
if (jobs.create)
|
|
18
|
-
input.push(new dependency_1
|
|
18
|
+
input.push(new dependency_1.Tag(module, 'message', jobs.create.name));
|
|
19
19
|
if (jobs.update)
|
|
20
|
-
input.push(new dependency_1
|
|
20
|
+
input.push(new dependency_1.Tag(module, 'message', jobs.update.name));
|
|
21
21
|
if (jobs.delete)
|
|
22
|
-
input.push(new dependency_1
|
|
22
|
+
input.push(new dependency_1.Tag(module, 'message', jobs.delete.name));
|
|
23
23
|
// TODO: Input dependencies
|
|
24
|
-
super(module, name, alias,
|
|
24
|
+
super(module, name, alias, auth, input, {});
|
|
25
25
|
this.module = module;
|
|
26
26
|
this.name = name;
|
|
27
27
|
this.alias = alias;
|
|
28
|
-
this.
|
|
28
|
+
this.auth = auth;
|
|
29
29
|
this.bucket = bucket;
|
|
30
30
|
this.jobs = jobs;
|
|
31
31
|
this.$t = 'resource';
|
|
@@ -14,8 +14,8 @@ import { $Message } from "../../entities/message/message.schema";
|
|
|
14
14
|
export declare class TopicBuilder<Space extends $Space, Module extends $Module, Topic extends $Topic> extends BlockBuilder<Space, Module, 'topic'> {
|
|
15
15
|
$b: "topic";
|
|
16
16
|
constructor(module: string, name: string);
|
|
17
|
-
|
|
18
|
-
"#authn": { [K in U]: Space["authnUsers"][U]; };
|
|
17
|
+
auth<U extends keyof Space['authnUsers']>(provider: U, resolver?: (user: Space['authnUsers'][U]) => boolean): TopicBuilder<Space, Module, Overlay<Topic, {
|
|
18
|
+
"#authn": Topic["#authn"] & { [K in U]: Space["authnUsers"][U]; };
|
|
19
19
|
}>>;
|
|
20
20
|
message<Name extends string, Def extends MessageTemplateDef<Space, Module, Name>, FullName extends string = `${Topic['name']}${Name extends '' ? '' : '.'}${Name & string}`, Msg extends $Message = $MessageInfer<FullName, ($: any) => ReturnType<Def>>>(name: Name, def: Def): TopicBuilder<Space, Overlay<Module, {
|
|
21
21
|
messages: Overlay<Module["messages"], { [K in FullName]: Msg; }>;
|
|
@@ -14,8 +14,8 @@ class TopicBuilder extends block_builder_1.BlockBuilder {
|
|
|
14
14
|
this.$b = 'topic';
|
|
15
15
|
}
|
|
16
16
|
/* [Block] */
|
|
17
|
-
|
|
18
|
-
return super.
|
|
17
|
+
auth(provider, resolver) {
|
|
18
|
+
return super.auth(provider, resolver);
|
|
19
19
|
}
|
|
20
20
|
/* [Topic] */
|
|
21
21
|
message(name, def) {
|
|
@@ -26,8 +26,8 @@ class TopicBuilder extends block_builder_1.BlockBuilder {
|
|
|
26
26
|
}
|
|
27
27
|
// Build
|
|
28
28
|
static build(node, tree, module) {
|
|
29
|
-
const input = node.builder._inputMsgs;
|
|
30
|
-
node.schema = new topic_schema_1.$Topic(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder.
|
|
29
|
+
const input = node.builder._inputMsgs.map(m => m.tag);
|
|
30
|
+
node.schema = new topic_schema_1.$Topic(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._auth, input, node.builder._output);
|
|
31
31
|
return {
|
|
32
32
|
schema: node.schema,
|
|
33
33
|
inlineMessages: message_builder_1.MessageBuilder.buildInlines(node, tree, module)
|
|
@@ -14,7 +14,7 @@ export declare class Topic<S extends $Space, M extends $Module, $ extends $Topic
|
|
|
14
14
|
private subscriptions;
|
|
15
15
|
constructor(module: Module<any, M>, schema: $);
|
|
16
16
|
protected run(trx: TrxNode<S, M, $['#authn']>, msg: AnyMessage, _ctx?: Record<string, any>): Promise<void>;
|
|
17
|
-
subscribe(trx: TrxNode<S, M, $['#authn']>, fn: (msg: AnyMessage) => void): string
|
|
18
|
-
unsubscribe(trx: TrxNode<S, M, $['#authn']>, id: string): void
|
|
17
|
+
subscribe(trx: TrxNode<S, M, $['#authn']>, fn: (msg: AnyMessage) => void): Promise<string>;
|
|
18
|
+
unsubscribe(trx: TrxNode<S, M, $['#authn']>, id: string): Promise<void>;
|
|
19
19
|
}
|
|
20
20
|
export type AnyTopic = Topic<any, any, any>;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Topic = void 0;
|
|
4
4
|
const trx_node_1 = require("../../../engine/transaction/trx_node");
|
|
5
5
|
const block_1 = require("../block");
|
|
6
|
-
const crypto_1 = require("crypto");
|
|
7
6
|
const log_1 = require("../../../engine/util/log");
|
|
7
|
+
const random_1 = require("../../../engine/util/random");
|
|
8
8
|
class Topic extends block_1.Block {
|
|
9
9
|
constructor(module, schema) {
|
|
10
10
|
super('topic', module, schema);
|
|
@@ -15,7 +15,7 @@ class Topic extends block_1.Block {
|
|
|
15
15
|
// Publish
|
|
16
16
|
async run(trx, msg, _ctx = {}) {
|
|
17
17
|
// Check authentication
|
|
18
|
-
trx_node_1.TrxNode.
|
|
18
|
+
await trx_node_1.TrxNode.checkAuth(trx, this.schema.auth);
|
|
19
19
|
for (const id in this.subscriptions) {
|
|
20
20
|
try {
|
|
21
21
|
this.subscriptions[id].fn(msg);
|
|
@@ -26,18 +26,18 @@ class Topic extends block_1.Block {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
subscribe(trx, fn) {
|
|
29
|
+
async subscribe(trx, fn) {
|
|
30
30
|
// Check authentication
|
|
31
|
-
trx_node_1.TrxNode.
|
|
32
|
-
const id =
|
|
31
|
+
await trx_node_1.TrxNode.checkAuth(trx, this.schema.auth);
|
|
32
|
+
const id = random_1.Random.uuid();
|
|
33
33
|
this.subscriptions[id] = {
|
|
34
34
|
id, fn
|
|
35
35
|
};
|
|
36
36
|
return id;
|
|
37
37
|
}
|
|
38
|
-
unsubscribe(trx, id) {
|
|
38
|
+
async unsubscribe(trx, id) {
|
|
39
39
|
// Check authentication
|
|
40
|
-
trx_node_1.TrxNode.
|
|
40
|
+
await trx_node_1.TrxNode.checkAuth(trx, this.schema.auth);
|
|
41
41
|
delete this.subscriptions[id];
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { $Block, $BlockOutput } from '../block.schema';
|
|
1
|
+
import { Tag } from "../../../engine/dependency";
|
|
2
|
+
import { $Block, $BlockOutput, $BlockAuth } from '../block.schema';
|
|
3
3
|
/**
|
|
4
4
|
* @category Schemas
|
|
5
5
|
* @subcategory Block
|
|
@@ -8,10 +8,10 @@ export declare class $Topic extends $Block {
|
|
|
8
8
|
module: string;
|
|
9
9
|
name: string;
|
|
10
10
|
alias: string;
|
|
11
|
-
|
|
12
|
-
input:
|
|
11
|
+
auth: $BlockAuth[];
|
|
12
|
+
input: Tag[];
|
|
13
13
|
output: $BlockOutput | undefined;
|
|
14
14
|
$t: "topic";
|
|
15
|
-
dependencies:
|
|
16
|
-
constructor(module: string, name: string, alias: string,
|
|
15
|
+
dependencies: Tag[];
|
|
16
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], input: Tag[], output: $BlockOutput | undefined);
|
|
17
17
|
}
|
|
@@ -7,12 +7,12 @@ const block_schema_1 = require("../block.schema");
|
|
|
7
7
|
* @subcategory Block
|
|
8
8
|
*/
|
|
9
9
|
class $Topic extends block_schema_1.$Block {
|
|
10
|
-
constructor(module, name, alias,
|
|
11
|
-
super(module, name, alias,
|
|
10
|
+
constructor(module, name, alias, auth, input, output) {
|
|
11
|
+
super(module, name, alias, auth, input, output);
|
|
12
12
|
this.module = module;
|
|
13
13
|
this.name = name;
|
|
14
14
|
this.alias = alias;
|
|
15
|
-
this.
|
|
15
|
+
this.auth = auth;
|
|
16
16
|
this.input = input;
|
|
17
17
|
this.output = output;
|
|
18
18
|
this.$t = 'topic';
|
|
@@ -16,7 +16,7 @@ class CLIControllerAdapter extends controller_adapter_1.ControllerAdapter {
|
|
|
16
16
|
}
|
|
17
17
|
makeEndpoint(path, schema) {
|
|
18
18
|
this.endpoints[path] = new controller_1.ControllerEndpoint(schema, this, path);
|
|
19
|
-
log_1.Log.debug('controller', this.schema.name, `Bound endpoint '${path}' to '${schema.target
|
|
19
|
+
log_1.Log.debug('controller', this.schema.name, `Bound endpoint '${path}' to '${schema.target}'`);
|
|
20
20
|
}
|
|
21
21
|
makeTopic(schema) {
|
|
22
22
|
this.topics[schema.name] = new controller_1.ControllerTopic(schema, this, schema.name);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
2
2
|
import { $Controller, $ControllerDomain, $ControllerEndpoint, $ControllerGroup, $ControllerTopic } from '../controller.schema';
|
|
3
3
|
import { AnyDaemon } from "../../../../engine/daemon";
|
|
4
|
-
import {
|
|
4
|
+
import { AuthRequest } from "../../../../engine/auth/authn";
|
|
5
5
|
import { $Module } from "../../..";
|
|
6
6
|
export type ControllerEndpointPath = ($ControllerDomain | $ControllerGroup | $ControllerEndpoint)[];
|
|
7
7
|
/**
|
|
@@ -13,7 +13,7 @@ export declare abstract class ControllerAdapter {
|
|
|
13
13
|
protected schema: $Controller;
|
|
14
14
|
protected daemon?: AnyDaemon;
|
|
15
15
|
constructor(module: $Module, schema: $Controller);
|
|
16
|
-
trx(fn: (trx: AnyTrxNode) => Promise<any>,
|
|
16
|
+
trx(fn: (trx: AnyTrxNode) => Promise<any>, auth?: AuthRequest<any>): Promise<import("../../../../engine/transaction/trx").TrxStatus<any>>;
|
|
17
17
|
bind(daemon: AnyDaemon): void;
|
|
18
18
|
protected abstract makeEndpoint(path: string, schema: $ControllerEndpoint): void;
|
|
19
19
|
protected abstract makeTopic(schema: $ControllerTopic): void;
|
|
@@ -11,13 +11,13 @@ class ControllerAdapter {
|
|
|
11
11
|
this.module = module;
|
|
12
12
|
this.schema = schema;
|
|
13
13
|
}
|
|
14
|
-
async trx(fn,
|
|
14
|
+
async trx(fn, auth) {
|
|
15
15
|
if (!this.daemon) {
|
|
16
16
|
throw new Error('Controller not bound to a daemon');
|
|
17
17
|
}
|
|
18
18
|
try {
|
|
19
19
|
return await this.daemon.trx(this.schema.module)
|
|
20
|
-
.
|
|
20
|
+
.auth(auth)
|
|
21
21
|
.run(fn);
|
|
22
22
|
}
|
|
23
23
|
catch (e) {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { $Module, $Space } from "../../../schema";
|
|
2
2
|
import { $Controller, $ControllerDomain, $ControllerEndpoint, $ControllerGroup, $ControllerTopic } from './controller.schema';
|
|
3
3
|
import { $Message } from "../../entities/message/message.schema";
|
|
4
|
-
import {
|
|
4
|
+
import { Dependency, ResolvedBuilderNode, Tag } from "../../../engine/dependency";
|
|
5
5
|
import { $Topic } from "../../blocks/topic/topic.schema";
|
|
6
6
|
import { DeepPartial } from "../../../engine/util/deep";
|
|
7
|
+
import { $BlockAuth } from "../../blocks/block.schema";
|
|
7
8
|
type JobsSupportingMsg<M extends $Module, Msg extends $Message> = {
|
|
8
9
|
[J in keyof M['jobs']]: Msg extends M['jobs'][J]['#input'] ? J : never;
|
|
9
10
|
}[keyof M['jobs']];
|
|
@@ -20,15 +21,15 @@ type MachinesSupportingMsg<M extends $Module, Msg extends $Message> = {
|
|
|
20
21
|
export declare class ControllerEndpointBuilder<S extends $Space, M extends $Module, Msg extends $Message = never> {
|
|
21
22
|
private module;
|
|
22
23
|
private name;
|
|
23
|
-
private
|
|
24
|
+
private _auth;
|
|
24
25
|
private _alias?;
|
|
25
26
|
private _tags;
|
|
26
27
|
private _msg;
|
|
27
28
|
private _target;
|
|
28
29
|
private _implicit?;
|
|
29
|
-
constructor(module: string, name: string,
|
|
30
|
+
constructor(module: string, name: string, _auth?: $BlockAuth[]);
|
|
30
31
|
as(alias: string): this;
|
|
31
|
-
|
|
32
|
+
auth<U extends keyof S['authnUsers']>(provider: U, resolver?: (user: S['authnUsers'][U]) => boolean): this;
|
|
32
33
|
tag(tag: string): this;
|
|
33
34
|
tags(tags: string[]): this;
|
|
34
35
|
msg<K extends keyof M['messages']>(msg: K): ControllerEndpointBuilder<S, M, M["messages"][K]>;
|
|
@@ -44,13 +45,13 @@ export declare class ControllerEndpointBuilder<S extends $Space, M extends $Modu
|
|
|
44
45
|
export declare class ControllerTopicBuilder<S extends $Space, Topic extends $Topic> {
|
|
45
46
|
private module;
|
|
46
47
|
private topic;
|
|
47
|
-
private
|
|
48
|
+
private _auth;
|
|
48
49
|
private _alias?;
|
|
49
50
|
private _tags;
|
|
50
51
|
private _msgs;
|
|
51
|
-
constructor(module: string, topic:
|
|
52
|
+
constructor(module: string, topic: Dependency, _auth?: $BlockAuth[]);
|
|
52
53
|
as(alias: string): this;
|
|
53
|
-
|
|
54
|
+
auth<U extends keyof S['authnUsers']>(provider: U, resolver?: (user: S['authnUsers'][U]) => boolean): this;
|
|
54
55
|
msg(name: Topic['#input']['#raw']['$']): this;
|
|
55
56
|
static build(builder: ControllerTopicBuilder<any, any>): $ControllerTopic;
|
|
56
57
|
}
|
|
@@ -61,13 +62,13 @@ export declare class ControllerTopicBuilder<S extends $Space, Topic extends $Top
|
|
|
61
62
|
export declare class ControllerGroupBuilder<S extends $Space, M extends $Module> {
|
|
62
63
|
private module;
|
|
63
64
|
protected name: string;
|
|
64
|
-
protected
|
|
65
|
+
protected _auth: $BlockAuth[];
|
|
65
66
|
protected _alias?: string;
|
|
66
67
|
protected groups: Record<string, ControllerGroupBuilder<any, any>>;
|
|
67
68
|
protected endpoints: Record<string, ControllerEndpointBuilder<any, any>>;
|
|
68
|
-
constructor(module: string, name: string,
|
|
69
|
+
constructor(module: string, name: string, _auth?: $BlockAuth[]);
|
|
69
70
|
as(alias: string): this;
|
|
70
|
-
|
|
71
|
+
auth<U extends keyof S['authnUsers']>(provider: U, resolver?: (user: S['authnUsers'][U]) => boolean): this;
|
|
71
72
|
endpoint(name: string, $: ControllerEndpointDef<S, M>): this;
|
|
72
73
|
group(name: string, $: ControllerGroupDef<S, M>): this;
|
|
73
74
|
static build(builder: ControllerGroupBuilder<any, any>): $ControllerGroup;
|
|
@@ -92,16 +93,16 @@ export declare class ControllerBuilder<S extends $Space, M extends $Module> {
|
|
|
92
93
|
private name;
|
|
93
94
|
$b: "controller";
|
|
94
95
|
private _alias?;
|
|
95
|
-
private
|
|
96
|
+
private _auth;
|
|
96
97
|
private domains;
|
|
97
98
|
protected topics: Record<string, ControllerTopicBuilder<any, any>>;
|
|
98
99
|
constructor(module: string, name: string);
|
|
99
100
|
as(alias: string): this;
|
|
100
|
-
|
|
101
|
+
auth<U extends keyof S['authnUsers']>(provider: U, resolver?: (user: S['authnUsers'][U]) => boolean): this;
|
|
101
102
|
domain(name: string, $: ControllerDomainDef<S, M>): this;
|
|
102
103
|
topic<T extends keyof M['topics']>(name: T, $: ControllerTopicDef<S, M['topics'][T]>): this;
|
|
103
104
|
static build(node: ControllerBuilderNode): $Controller;
|
|
104
|
-
static buildInput(group: $ControllerGroup):
|
|
105
|
+
static buildInput(group: $ControllerGroup): Tag[];
|
|
105
106
|
static buildDomains(builders: Record<string, ControllerDomainBuilder<any, any>>): Record<string, $ControllerDomain>;
|
|
106
107
|
static buildTopics(builders: Record<string, ControllerTopicBuilder<any, any>>): Record<string, $ControllerTopic>;
|
|
107
108
|
}
|
|
@@ -8,21 +8,22 @@ const dependency_1 = require("../../../engine/dependency");
|
|
|
8
8
|
* @subcategory Edge
|
|
9
9
|
*/
|
|
10
10
|
class ControllerEndpointBuilder {
|
|
11
|
-
constructor(module, name,
|
|
11
|
+
constructor(module, name, _auth = []) {
|
|
12
12
|
this.module = module;
|
|
13
13
|
this.name = name;
|
|
14
|
-
this.
|
|
14
|
+
this._auth = _auth;
|
|
15
15
|
this._tags = [];
|
|
16
16
|
}
|
|
17
17
|
as(alias) {
|
|
18
18
|
this._alias = alias;
|
|
19
19
|
return this;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
auth(provider, resolver) {
|
|
22
|
+
this._auth ?? (this._auth = []);
|
|
23
|
+
this._auth.push({
|
|
24
|
+
provider: provider,
|
|
25
|
+
resolver: resolver
|
|
26
|
+
});
|
|
26
27
|
return this;
|
|
27
28
|
}
|
|
28
29
|
tag(tag) {
|
|
@@ -34,26 +35,30 @@ class ControllerEndpointBuilder {
|
|
|
34
35
|
return this;
|
|
35
36
|
}
|
|
36
37
|
msg(msg) {
|
|
37
|
-
|
|
38
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'message', msg);
|
|
39
|
+
this._msg = new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
38
40
|
return this;
|
|
39
41
|
}
|
|
40
42
|
toJob(job, implicit) {
|
|
41
|
-
|
|
43
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'job', job);
|
|
44
|
+
this._target = new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
42
45
|
this._implicit = implicit;
|
|
43
46
|
return this;
|
|
44
47
|
}
|
|
45
48
|
toResource(resource, implicit) {
|
|
46
|
-
|
|
49
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'resource', resource);
|
|
50
|
+
this._target = new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
47
51
|
this._implicit = implicit;
|
|
48
52
|
return this;
|
|
49
53
|
}
|
|
50
54
|
toMachine(machine, implicit) {
|
|
51
|
-
|
|
55
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'machine', machine);
|
|
56
|
+
this._target = new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
52
57
|
this._implicit = implicit;
|
|
53
58
|
return this;
|
|
54
59
|
}
|
|
55
60
|
static build(builder) {
|
|
56
|
-
return new controller_schema_1.$ControllerEndpoint(builder.name, builder._alias || builder.name, builder.
|
|
61
|
+
return new controller_schema_1.$ControllerEndpoint(builder.name, builder._alias || builder.name, builder._auth, builder._tags, builder._msg.tag, builder._target.tag, builder._implicit);
|
|
57
62
|
}
|
|
58
63
|
}
|
|
59
64
|
exports.ControllerEndpointBuilder = ControllerEndpointBuilder;
|
|
@@ -62,10 +67,10 @@ exports.ControllerEndpointBuilder = ControllerEndpointBuilder;
|
|
|
62
67
|
* @subcategory Edge
|
|
63
68
|
*/
|
|
64
69
|
class ControllerTopicBuilder {
|
|
65
|
-
constructor(module, topic,
|
|
70
|
+
constructor(module, topic, _auth = []) {
|
|
66
71
|
this.module = module;
|
|
67
72
|
this.topic = topic;
|
|
68
|
-
this.
|
|
73
|
+
this._auth = _auth;
|
|
69
74
|
this._tags = [];
|
|
70
75
|
this._msgs = [];
|
|
71
76
|
}
|
|
@@ -73,19 +78,21 @@ class ControllerTopicBuilder {
|
|
|
73
78
|
this._alias = alias;
|
|
74
79
|
return this;
|
|
75
80
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
auth(provider, resolver) {
|
|
82
|
+
this._auth ?? (this._auth = []);
|
|
83
|
+
this._auth.push({
|
|
84
|
+
provider: provider,
|
|
85
|
+
resolver: resolver
|
|
86
|
+
});
|
|
81
87
|
return this;
|
|
82
88
|
}
|
|
83
89
|
msg(name) {
|
|
84
|
-
|
|
90
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'message', name);
|
|
91
|
+
this._msgs.push(new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true }));
|
|
85
92
|
return this;
|
|
86
93
|
}
|
|
87
94
|
static build(builder) {
|
|
88
|
-
return new controller_schema_1.$ControllerTopic(builder.topic.name, builder._alias || builder.topic.name, builder.
|
|
95
|
+
return new controller_schema_1.$ControllerTopic(builder.topic.tag.name, builder._alias || builder.topic.tag.name, builder._auth, builder._tags, builder._msgs.map(m => m.tag), builder.topic.tag);
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
98
|
exports.ControllerTopicBuilder = ControllerTopicBuilder;
|
|
@@ -94,10 +101,10 @@ exports.ControllerTopicBuilder = ControllerTopicBuilder;
|
|
|
94
101
|
* @subcategory Edge
|
|
95
102
|
*/
|
|
96
103
|
class ControllerGroupBuilder {
|
|
97
|
-
constructor(module, name,
|
|
104
|
+
constructor(module, name, _auth = []) {
|
|
98
105
|
this.module = module;
|
|
99
106
|
this.name = name;
|
|
100
|
-
this.
|
|
107
|
+
this._auth = _auth;
|
|
101
108
|
this.groups = {};
|
|
102
109
|
this.endpoints = {};
|
|
103
110
|
}
|
|
@@ -105,21 +112,22 @@ class ControllerGroupBuilder {
|
|
|
105
112
|
this._alias = alias;
|
|
106
113
|
return this;
|
|
107
114
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
115
|
+
auth(provider, resolver) {
|
|
116
|
+
this._auth ?? (this._auth = []);
|
|
117
|
+
this._auth.push({
|
|
118
|
+
provider: provider,
|
|
119
|
+
resolver: resolver
|
|
120
|
+
});
|
|
113
121
|
return this;
|
|
114
122
|
}
|
|
115
123
|
endpoint(name, $) {
|
|
116
|
-
const builder = new ControllerEndpointBuilder(this.module, name, this.
|
|
124
|
+
const builder = new ControllerEndpointBuilder(this.module, name, this._auth);
|
|
117
125
|
$(builder);
|
|
118
126
|
this.endpoints[name] = builder;
|
|
119
127
|
return this;
|
|
120
128
|
}
|
|
121
129
|
group(name, $) {
|
|
122
|
-
const builder = new ControllerGroupBuilder(this.module, name, this.
|
|
130
|
+
const builder = new ControllerGroupBuilder(this.module, name, this._auth);
|
|
123
131
|
$(builder);
|
|
124
132
|
this.groups[name] = builder;
|
|
125
133
|
return this;
|
|
@@ -127,7 +135,7 @@ class ControllerGroupBuilder {
|
|
|
127
135
|
static build(builder) {
|
|
128
136
|
const endpoints = this.buildEndpoints(builder.endpoints);
|
|
129
137
|
const groups = this.buildGroups(builder.groups);
|
|
130
|
-
return new controller_schema_1.$ControllerGroup(builder.name, builder._alias || builder.name, builder.
|
|
138
|
+
return new controller_schema_1.$ControllerGroup(builder.name, builder._alias || builder.name, builder._auth, groups, endpoints);
|
|
131
139
|
}
|
|
132
140
|
static buildGroups(builders) {
|
|
133
141
|
const groups = {};
|
|
@@ -162,7 +170,7 @@ class ControllerDomainBuilder extends ControllerGroupBuilder {
|
|
|
162
170
|
}
|
|
163
171
|
static build(builder) {
|
|
164
172
|
const group = ControllerGroupBuilder.build(builder);
|
|
165
|
-
return new controller_schema_1.$ControllerDomain(group.name, group.alias, group.
|
|
173
|
+
return new controller_schema_1.$ControllerDomain(group.name, group.alias, group.auth, builder._version, group.groups, group.endpoints);
|
|
166
174
|
}
|
|
167
175
|
}
|
|
168
176
|
exports.ControllerDomainBuilder = ControllerDomainBuilder;
|
|
@@ -175,7 +183,7 @@ class ControllerBuilder {
|
|
|
175
183
|
this.module = module;
|
|
176
184
|
this.name = name;
|
|
177
185
|
this.$b = 'controller';
|
|
178
|
-
this.
|
|
186
|
+
this._auth = [];
|
|
179
187
|
this.domains = {};
|
|
180
188
|
this.topics = {};
|
|
181
189
|
}
|
|
@@ -183,23 +191,25 @@ class ControllerBuilder {
|
|
|
183
191
|
this._alias = alias;
|
|
184
192
|
return this;
|
|
185
193
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
194
|
+
auth(provider, resolver) {
|
|
195
|
+
this._auth ?? (this._auth = []);
|
|
196
|
+
this._auth.push({
|
|
197
|
+
provider: provider,
|
|
198
|
+
resolver: resolver
|
|
199
|
+
});
|
|
191
200
|
return this;
|
|
192
201
|
}
|
|
193
202
|
domain(name, $) {
|
|
194
|
-
const builder = new ControllerDomainBuilder(this.module, name, this.
|
|
203
|
+
const builder = new ControllerDomainBuilder(this.module, name, this._auth);
|
|
195
204
|
$(builder);
|
|
196
205
|
const version = builder._version;
|
|
197
206
|
this.domains[name + '.' + version] = builder;
|
|
198
207
|
return this;
|
|
199
208
|
}
|
|
200
209
|
topic(name, $) {
|
|
201
|
-
const
|
|
202
|
-
const
|
|
210
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'topic', name);
|
|
211
|
+
const topic = new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
212
|
+
const builder = new ControllerTopicBuilder(this.module, topic, this._auth);
|
|
203
213
|
$(builder);
|
|
204
214
|
this.topics[name] = builder;
|
|
205
215
|
return this;
|
|
@@ -211,7 +221,7 @@ class ControllerBuilder {
|
|
|
211
221
|
const input = Object.values(domains)
|
|
212
222
|
.map(domain => this.buildInput(domain))
|
|
213
223
|
.flat();
|
|
214
|
-
node.schema = new controller_schema_1.$Controller(node.module, node.builder.name, node.builder._alias || node.builder.name, node.builder.
|
|
224
|
+
node.schema = new controller_schema_1.$Controller(node.tag.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._auth, input, domains, topics);
|
|
215
225
|
return node.schema;
|
|
216
226
|
}
|
|
217
227
|
static buildInput(group) {
|
|
@@ -4,7 +4,7 @@ import { $Controller, $ControllerEndpoint, $ControllerTopic } from './controller
|
|
|
4
4
|
import { ControllerAdapter } from './adapters/controller_adapter';
|
|
5
5
|
import { ControllerConfig } from './controller.config';
|
|
6
6
|
import { AnyDaemon } from "../../../engine/daemon";
|
|
7
|
-
import {
|
|
7
|
+
import { AuthRequest } from "../../../engine/auth/authn";
|
|
8
8
|
import { AnyMessage } from "../../entities/message/message";
|
|
9
9
|
/**
|
|
10
10
|
* @category Elements
|
|
@@ -15,7 +15,7 @@ export declare class ControllerEndpoint<$ extends $ControllerEndpoint> {
|
|
|
15
15
|
adapter: ControllerAdapter;
|
|
16
16
|
path: string;
|
|
17
17
|
constructor(schema: $, adapter: ControllerAdapter, path: string);
|
|
18
|
-
invoke(data: Record<string, any>,
|
|
18
|
+
invoke(data: Record<string, any>, auth?: AuthRequest<any>): Promise<import("../../../engine/transaction/trx").TrxStatus<any>>;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* @category Elements
|
|
@@ -26,7 +26,7 @@ export declare class ControllerTopic<$ extends $ControllerTopic> {
|
|
|
26
26
|
adapter: ControllerAdapter;
|
|
27
27
|
path: string;
|
|
28
28
|
constructor(schema: $, adapter: ControllerAdapter, path: string);
|
|
29
|
-
subscribe(fn: (msg: AnyMessage) => void,
|
|
29
|
+
subscribe(fn: (msg: AnyMessage) => void, auth?: AuthRequest<any>): Promise<string>;
|
|
30
30
|
unsubscribe(id: string): Promise<string>;
|
|
31
31
|
}
|
|
32
32
|
export declare class Controller<S extends $Space, M extends $Module, $ extends $Controller> {
|