nesoi 3.2.9 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/lib/bundler/browser/browser.app.d.ts +32 -0
- package/lib/bundler/browser/browser.app.js +51 -0
- package/lib/bundler/browser/browser.bundler.d.ts +5 -0
- package/lib/bundler/browser/browser.bundler.js +27 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.d.ts +13 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.js +74 -0
- package/lib/bundler/distributed/distributed.app.config.d.ts +43 -0
- package/lib/{engine/apps → bundler}/distributed/distributed.app.config.js +1 -1
- package/lib/{engine/apps → bundler}/distributed/distributed.app.d.ts +14 -14
- package/lib/{engine/apps → bundler}/distributed/distributed.app.js +8 -3
- package/lib/{compiler/apps/distributed/distributed_compiler.d.ts → bundler/distributed/distributed.bundler.d.ts} +7 -7
- package/lib/{compiler/apps/distributed/distributed_compiler.js → bundler/distributed/distributed.bundler.js} +11 -11
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.d.ts +14 -20
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.js +18 -50
- package/lib/bundler/distributed/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/distributed/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/2_build_typescript_stage.js +7 -7
- package/lib/bundler/distributed/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/3_copy_types_stage.js +7 -7
- package/lib/bundler/distributed/stages/4_dump_modules_stage.d.ts +16 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/4_dump_modules_stage.js +5 -5
- package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.js +3 -3
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.d.ts +13 -13
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.js +13 -10
- package/lib/{compiler/apps/monolyth/monolyth_compiler.d.ts → bundler/monolyth/monolyth.bundler.d.ts} +9 -7
- package/lib/{compiler/apps/monolyth/monolyth_compiler.js → bundler/monolyth/monolyth.bundler.js} +13 -12
- package/lib/bundler/monolyth/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/monolyth/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/2_build_typescript_stage.js +8 -7
- package/lib/bundler/monolyth/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/3_copy_types_stage.js +7 -7
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.js +29 -16
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.js +7 -7
- package/lib/bundler/monolyth/stages/6_dump_cli_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/6_dump_cli_stage.js +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.js +14 -11
- package/lib/compiler/compiler.d.ts +1 -6
- package/lib/compiler/compiler.js +1 -1
- package/lib/compiler/elements/bucket.element.d.ts +2 -1
- package/lib/compiler/elements/bucket.element.js +16 -21
- package/lib/compiler/elements/cached.element.d.ts +1 -1
- package/lib/compiler/elements/cached.element.js +2 -2
- package/lib/compiler/elements/constants.element.d.ts +1 -1
- package/lib/compiler/elements/constants.element.js +2 -0
- package/lib/compiler/elements/controller.element.js +3 -3
- package/lib/compiler/elements/element.d.ts +6 -13
- package/lib/compiler/elements/element.js +11 -9
- package/lib/compiler/elements/externals.element.js +2 -2
- package/lib/compiler/elements/job.element.d.ts +1 -1
- package/lib/compiler/elements/job.element.js +1 -1
- package/lib/compiler/elements/machine.element.d.ts +2 -2
- package/lib/compiler/elements/machine.element.js +7 -7
- package/lib/compiler/elements/message.element.d.ts +1 -1
- package/lib/compiler/elements/message.element.js +26 -26
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/elements/resource.element.d.ts +1 -1
- package/lib/compiler/elements/resource.element.js +9 -9
- package/lib/compiler/elements/topic.element.js +1 -1
- package/lib/compiler/error.d.ts +1 -5
- package/lib/compiler/error.js +3 -15
- package/lib/compiler/helpers/dump_helpers.d.ts +1 -1
- package/lib/compiler/helpers/dump_helpers.js +1 -1
- package/lib/compiler/index.d.ts +1 -3
- package/lib/compiler/index.js +15 -7
- package/lib/compiler/module.js +12 -12
- package/lib/compiler/progressive.d.ts +3 -4
- package/lib/compiler/progressive.js +3 -4
- package/lib/compiler/stages/2_treeshake_stage.js +4 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +7 -7
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -16
- package/lib/compiler/stages/6_build_elements_stage.js +1 -1
- package/lib/compiler/stages/7_dump_stage.js +35 -10
- package/lib/compiler/typescript/bridge/extract.js +24 -0
- package/lib/compiler/typescript/bridge/inject.js +18 -3
- package/lib/compiler/typescript/bridge/organize.d.ts +4 -0
- package/lib/compiler/typescript/bridge/organize.js +41 -22
- package/lib/compiler/typescript/error.d.ts +2 -83
- package/lib/compiler/typescript/error.js +6 -219
- package/lib/compiler/typescript/parser.js +3 -3
- package/lib/compiler/typescript/source.d.ts +2 -2
- package/lib/compiler/typescript/transformers/app_inject.transformer.js +13 -4
- package/lib/compiler/typescript/typescript_compiler.d.ts +3 -3
- package/lib/compiler/typescript/typescript_compiler.js +2 -2
- package/lib/elements/blocks/block.builder.d.ts +7 -4
- package/lib/elements/blocks/block.builder.js +24 -13
- package/lib/elements/blocks/block.js +2 -2
- package/lib/elements/blocks/block.schema.d.ts +12 -9
- package/lib/elements/blocks/block.schema.js +2 -2
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -5
- package/lib/elements/blocks/job/internal/machine_job.builder.js +3 -3
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +11 -10
- package/lib/elements/blocks/job/internal/resource_job.builder.js +9 -6
- package/lib/elements/blocks/job/internal/resource_job.js +3 -6
- package/lib/elements/blocks/job/job.builder.d.ts +5 -5
- package/lib/elements/blocks/job/job.builder.js +7 -7
- package/lib/elements/blocks/job/job.js +1 -1
- package/lib/elements/blocks/job/job.schema.d.ts +5 -5
- package/lib/elements/blocks/job/job.schema.js +3 -3
- package/lib/elements/blocks/machine/machine.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine.builder.js +12 -9
- package/lib/elements/blocks/machine/machine.js +7 -7
- package/lib/elements/blocks/machine/machine.schema.d.ts +23 -23
- package/lib/elements/blocks/machine/machine.schema.js +9 -9
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +1 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +31 -29
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine_transition.builder.js +8 -8
- package/lib/elements/blocks/queue/queue.builder.d.ts +3 -3
- package/lib/elements/blocks/queue/queue.builder.js +3 -3
- package/lib/elements/blocks/queue/queue.schema.d.ts +6 -6
- package/lib/elements/blocks/queue/queue.schema.js +3 -3
- package/lib/elements/blocks/resource/resource.builder.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.builder.js +37 -40
- package/lib/elements/blocks/resource/resource.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.js +10 -18
- package/lib/elements/blocks/resource/resource.schema.d.ts +15 -15
- package/lib/elements/blocks/resource/resource.schema.js +8 -8
- package/lib/elements/blocks/topic/topic.builder.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.builder.js +4 -4
- package/lib/elements/blocks/topic/topic.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.js +7 -7
- package/lib/elements/blocks/topic/topic.schema.d.ts +6 -6
- package/lib/elements/blocks/topic/topic.schema.js +3 -3
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +1 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -2
- package/lib/elements/edge/controller/adapters/controller_adapter.js +2 -2
- package/lib/elements/edge/controller/controller.builder.d.ts +14 -13
- package/lib/elements/edge/controller/controller.builder.js +52 -42
- package/lib/elements/edge/controller/controller.d.ts +3 -3
- package/lib/elements/edge/controller/controller.js +12 -12
- package/lib/elements/edge/controller/controller.schema.d.ts +17 -16
- package/lib/elements/edge/controller/controller.schema.js +11 -11
- package/lib/elements/edge/externals/externals.builder.d.ts +8 -13
- package/lib/elements/edge/externals/externals.builder.js +43 -11
- package/lib/elements/edge/externals/externals.schema.d.ts +8 -7
- package/lib/elements/edge/externals/externals.schema.js +5 -3
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.d.ts +45 -0
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.js +164 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.d.ts +30 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.js +97 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +6 -1
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +7 -6
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.d.ts +1 -1
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.js +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +14 -13
- package/lib/elements/entities/bucket/adapters/memory.nql.js +41 -35
- package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -8
- package/lib/elements/entities/bucket/bucket.builder.js +19 -34
- package/lib/elements/entities/bucket/bucket.d.ts +2 -2
- package/lib/elements/entities/bucket/bucket.infer.d.ts +5 -5
- package/lib/elements/entities/bucket/bucket.js +19 -17
- package/lib/elements/entities/bucket/bucket.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.schema.js +2 -2
- package/lib/elements/entities/bucket/cache/bucket_cache.js +14 -2
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph.js +101 -29
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
- package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
- package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
- package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
- package/lib/elements/entities/constants/constants.builder.js +8 -8
- package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
- package/lib/elements/entities/constants/constants.schema.js +7 -2
- package/lib/elements/entities/message/message.infer.d.ts +1 -5
- package/lib/elements/entities/message/message.js +2 -7
- package/lib/elements/entities/message/message.schema.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
- package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
- package/lib/elements/entities/message/template/message_template_parser.js +2 -2
- package/lib/engine/{apps → app}/app.config.d.ts +11 -5
- package/lib/engine/{apps → app}/app.config.js +2 -2
- package/lib/engine/{apps → app}/app.d.ts +3 -2
- package/lib/engine/{apps → app}/app.js +3 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
- package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
- package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
- package/lib/engine/{apps → app}/inline.app.js +37 -34
- package/lib/engine/auth/authn.d.ts +10 -12
- package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
- package/lib/engine/auth/zero.authn_provider.js +0 -1
- package/lib/engine/builder.d.ts +28 -0
- package/lib/engine/builder.js +99 -0
- package/lib/engine/cli/cli.js +3 -2
- package/lib/engine/cli/ui.js +1 -0
- package/lib/engine/daemon.d.ts +28 -25
- package/lib/engine/daemon.js +37 -8
- package/lib/engine/data/error.d.ts +37 -3
- package/lib/engine/data/error.js +58 -16
- package/lib/engine/data/file.d.ts +1 -0
- package/lib/engine/data/file.js +4 -0
- package/lib/engine/dependency.d.ts +53 -81
- package/lib/engine/dependency.js +246 -120
- package/lib/engine/module.d.ts +18 -48
- package/lib/engine/module.js +78 -158
- package/lib/engine/space.d.ts +2 -2
- package/lib/engine/space.js +6 -6
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
- package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
- package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
- package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
- package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
- package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
- package/lib/engine/transaction/trx.d.ts +15 -12
- package/lib/engine/transaction/trx.js +19 -3
- package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
- package/lib/engine/transaction/trx_engine.d.ts +25 -7
- package/lib/engine/transaction/trx_engine.js +67 -16
- package/lib/engine/transaction/trx_node.d.ts +25 -21
- package/lib/engine/transaction/trx_node.js +99 -57
- package/lib/engine/tree.d.ts +4 -16
- package/lib/engine/tree.js +87 -57
- package/lib/{compiler → engine}/treeshake.d.ts +32 -32
- package/lib/{compiler → engine}/treeshake.js +272 -242
- package/lib/engine/util/console.js +3 -0
- package/lib/engine/util/crypto.d.ts +4 -3
- package/lib/engine/util/crypto.js +15 -5
- package/lib/engine/util/hash.js +5 -0
- package/lib/engine/util/log.d.ts +6 -8
- package/lib/engine/util/log.js +1 -1
- package/lib/engine/util/name_helpers.d.ts +37 -0
- package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
- package/lib/engine/util/parse.d.ts +4 -3
- package/lib/engine/util/parse.js +13 -28
- package/lib/engine/util/path.d.ts +1 -0
- package/lib/engine/util/path.js +14 -0
- package/lib/engine/util/random.d.ts +4 -0
- package/lib/engine/util/random.js +31 -0
- package/lib/engine/util/type.d.ts +8 -0
- package/lib/schema.d.ts +1 -1
- package/package.json +4 -1
- package/tools/joaquin/bucket.js +1 -1
- package/tools/joaquin/job.js +1 -1
- package/tools/joaquin/message.js +1 -1
- package/tools/joaquin/mock.js +2 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
- package/lib/compiler/helpers/name_helpers.d.ts +0 -20
- package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
- package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
- package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
- /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.js +0 -0
|
@@ -11,7 +11,7 @@ import { BlockBuilder } from '../../block.builder';
|
|
|
11
11
|
import { ResolvedBuilderNode } from "../../../../engine/dependency";
|
|
12
12
|
import { NQL_AnyQuery } from "../../../entities/bucket/query/nql.schema";
|
|
13
13
|
import { $Bucket } from "../../../entities/bucket/bucket.schema";
|
|
14
|
-
import { $BlockOutput } from '../../block.schema';
|
|
14
|
+
import { $BlockAuth, $BlockOutput } from '../../block.schema';
|
|
15
15
|
export type ResourceAssertions<Bucket extends $Bucket> = {
|
|
16
16
|
'query is empty': NQL_AnyQuery;
|
|
17
17
|
'has no link': keyof Bucket['graph']['links'];
|
|
@@ -23,14 +23,14 @@ export type ResourceAssertionDef<Bucket extends $Bucket> = <T extends keyof Reso
|
|
|
23
23
|
* @category Builders
|
|
24
24
|
* @subcategory Block
|
|
25
25
|
*/
|
|
26
|
-
export declare class ResourceJobBuilder<Space extends $Space, Module extends $Module, Name extends string, Prepared,
|
|
26
|
+
export declare class ResourceJobBuilder<Space extends $Space, Module extends $Module, Name extends string, Prepared, AuthUsers extends AnyUsers = {}, Bucket extends $Bucket = never, RequiredInput = {}, Trigger extends $Message = never, MsgExtras = {}, Ctx = {}, CtxAfter = {}> extends BlockBuilder<Space, Module, 'job'> {
|
|
27
27
|
protected module: string;
|
|
28
28
|
protected name: Name;
|
|
29
29
|
protected bucket: string;
|
|
30
30
|
protected method: 'view' | 'query' | 'create' | 'update' | 'delete';
|
|
31
31
|
private alias;
|
|
32
32
|
private execMethod?;
|
|
33
|
-
protected
|
|
33
|
+
protected _auth: $BlockAuth[];
|
|
34
34
|
private implicitFields;
|
|
35
35
|
$b: "job";
|
|
36
36
|
$j: "ResourceJob";
|
|
@@ -40,13 +40,14 @@ export declare class ResourceJobBuilder<Space extends $Space, Module extends $Mo
|
|
|
40
40
|
private _extrasAndAsserts;
|
|
41
41
|
private _prepareMethod;
|
|
42
42
|
private _afterMethod?;
|
|
43
|
-
constructor(module: string, name: Name, bucket: string, method: 'view' | 'query' | 'create' | 'update' | 'delete', alias: string, execMethod?: $JobMethod<any, any, any, any> | undefined,
|
|
43
|
+
constructor(module: string, name: Name, bucket: string, method: 'view' | 'query' | 'create' | 'update' | 'delete', alias: string, execMethod?: $JobMethod<any, any, any, any> | undefined, _auth?: $BlockAuth[], implicitFields?: Record<string, [string, any, boolean]>);
|
|
44
|
+
auth<U extends keyof Space['authnUsers']>(provider: U, resolver?: (user: Space['authnUsers'][U]) => boolean): ResourceJobBuilder<Space, Module, Name, Prepared, AuthUsers & { [K in U]: Space["authnUsers"][U]; }, Bucket, RequiredInput, Trigger, MsgExtras, Ctx, CtxAfter>;
|
|
44
45
|
/**
|
|
45
46
|
* The input message accepted by the job.
|
|
46
47
|
*
|
|
47
48
|
* @param def A `$ => ({})` definition for a custom trigger message
|
|
48
49
|
*/
|
|
49
|
-
input<Def extends MessageTemplateDef<Space, Module, Name>>(def: Def): ResourceJobBuilder<Space, Module, Name, Prepared,
|
|
50
|
+
input<Def extends MessageTemplateDef<Space, Module, Name>>(def: Def): ResourceJobBuilder<Space, Module, Name, Prepared, AuthUsers, Bucket, RequiredInput, $MessageInfer<Name, any, ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
|
|
50
51
|
'': RequiredInput[K];
|
|
51
52
|
}, any, [false, false], "">; }, import("../../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
|
|
52
53
|
'': RequiredInput[K];
|
|
@@ -61,7 +62,7 @@ export declare class ResourceJobBuilder<Space extends $Space, Module extends $Mo
|
|
|
61
62
|
*/
|
|
62
63
|
extra<Extra extends {
|
|
63
64
|
[_: string]: any;
|
|
64
|
-
}, Trx = NoInfer<TrxNode<Space, Module,
|
|
65
|
+
}, Trx = NoInfer<TrxNode<Space, Module, AuthUsers>>, Msg = NoInfer<Trigger['#parsed']>, PreviousExtras = NoInfer<MsgExtras>, C = NoInfer<Ctx>>($: $JobMethod<Trx, Msg, Extra, PreviousExtras, C>): ResourceJobBuilder<Space, Module, Name, Prepared, AuthUsers, Bucket, RequiredInput, Trigger, MsgExtras & Extra, Ctx, CtxAfter>;
|
|
65
66
|
/**
|
|
66
67
|
* A function that checks a given condition over the input and throws an exception;
|
|
67
68
|
* This assertion runs before the job method.
|
|
@@ -69,7 +70,7 @@ export declare class ResourceJobBuilder<Space extends $Space, Module extends $Mo
|
|
|
69
70
|
* @param { cond } A function which returns true or false
|
|
70
71
|
* @param { error } An error message or a function that makes one
|
|
71
72
|
*/
|
|
72
|
-
assert<Trx = NoInfer<TrxNode<Space, Module,
|
|
73
|
+
assert<Trx = NoInfer<TrxNode<Space, Module, AuthUsers>>, Msg = NoInfer<Trigger['#parsed']>, Extras = NoInfer<MsgExtras>, C = NoInfer<Ctx & {
|
|
73
74
|
that: ResourceAssertionDef<Bucket>;
|
|
74
75
|
}>>(condition: $JobAssert<Trx, Msg, Extras, C>): this;
|
|
75
76
|
/**
|
|
@@ -77,20 +78,20 @@ export declare class ResourceJobBuilder<Space extends $Space, Module extends $Mo
|
|
|
77
78
|
*
|
|
78
79
|
* @param method A function which returns the required output.
|
|
79
80
|
*/
|
|
80
|
-
prepare<Trx = NoInfer<TrxNode<Space, Module,
|
|
81
|
+
prepare<Trx = NoInfer<TrxNode<Space, Module, AuthUsers>>, Msg = NoInfer<Trigger['#parsed']>, Extras = NoInfer<MsgExtras>, C = NoInfer<Ctx>>(method: $JobMethod<Trx, Msg, Prepared, Extras, C>): this;
|
|
81
82
|
/**
|
|
82
83
|
* The function called after the input has been processed.
|
|
83
84
|
*
|
|
84
85
|
* @param method A function which returns void.
|
|
85
86
|
*/
|
|
86
|
-
after<Trx = NoInfer<TrxNode<Space, Module,
|
|
87
|
+
after<Trx = NoInfer<TrxNode<Space, Module, AuthUsers>>, Msg = NoInfer<Trigger['#parsed']>, Extras = NoInfer<MsgExtras>, C = NoInfer<CtxAfter>>(method: $JobMethod<Trx, Msg, void, Extras, C>): this;
|
|
87
88
|
static build(node: ResourceJobBuilderNode, tree: ModuleTree, module: $Module, output: $BlockOutput, defaultTrigger: $Message, idType?: 'string' | 'int' | null): {
|
|
88
89
|
schema: $Job;
|
|
89
90
|
inlineMessages: Record<string, $Message>;
|
|
90
91
|
};
|
|
91
92
|
}
|
|
92
93
|
export type AnyResourceJobBuilder = ResourceJobBuilder<any, any, any, any, any, any>;
|
|
93
|
-
export type ResourceJobDef<S extends $Space, M extends $Module, Name extends string, Prepared,
|
|
94
|
+
export type ResourceJobDef<S extends $Space, M extends $Module, Name extends string, Prepared, AuthUsers extends AnyUsers, Bucket extends $Bucket, DefaultTrigger extends $Message = never, RequiredInput = {}, Ctx = {}, CtxAfter = {}> = ($: ResourceJobBuilder<S, M, Name, Prepared, AuthUsers, Bucket, RequiredInput, DefaultTrigger, {}, Ctx, CtxAfter>) => any;
|
|
94
95
|
export type ResourceJobBuilderNode = Omit<ResolvedBuilderNode, 'builder'> & {
|
|
95
96
|
builder: AnyResourceJobBuilder;
|
|
96
97
|
schema?: $Job;
|
|
@@ -13,7 +13,7 @@ const resource_job_1 = require("./resource_job");
|
|
|
13
13
|
* @subcategory Block
|
|
14
14
|
*/
|
|
15
15
|
class ResourceJobBuilder extends block_builder_1.BlockBuilder {
|
|
16
|
-
constructor(module, name, bucket, method, alias, execMethod,
|
|
16
|
+
constructor(module, name, bucket, method, alias, execMethod, _auth = [], implicitFields = {}) {
|
|
17
17
|
super(module, 'job', name);
|
|
18
18
|
this.module = module;
|
|
19
19
|
this.name = name;
|
|
@@ -21,7 +21,7 @@ class ResourceJobBuilder extends block_builder_1.BlockBuilder {
|
|
|
21
21
|
this.method = method;
|
|
22
22
|
this.alias = alias;
|
|
23
23
|
this.execMethod = execMethod;
|
|
24
|
-
this.
|
|
24
|
+
this._auth = _auth;
|
|
25
25
|
this.implicitFields = implicitFields;
|
|
26
26
|
this.$b = 'job';
|
|
27
27
|
this.$j = 'ResourceJob';
|
|
@@ -32,15 +32,17 @@ class ResourceJobBuilder extends block_builder_1.BlockBuilder {
|
|
|
32
32
|
.as(alias);
|
|
33
33
|
super._input(name);
|
|
34
34
|
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
35
|
-
|
|
36
|
-
type: 'message',
|
|
37
|
-
name: name,
|
|
35
|
+
tag: new dependency_1.Tag(this.module, 'message', name),
|
|
38
36
|
builder: this._msg,
|
|
39
37
|
isInline: true,
|
|
40
38
|
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
41
39
|
dependencies: [] // This is added later by Treeshake.*()
|
|
42
40
|
}));
|
|
43
41
|
}
|
|
42
|
+
/* [Block] */
|
|
43
|
+
auth(provider, resolver) {
|
|
44
|
+
return super.auth(provider, resolver);
|
|
45
|
+
}
|
|
44
46
|
/**
|
|
45
47
|
* The input message accepted by the job.
|
|
46
48
|
*
|
|
@@ -127,7 +129,8 @@ class ResourceJobBuilder extends block_builder_1.BlockBuilder {
|
|
|
127
129
|
delete fields['id'];
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
|
-
|
|
132
|
+
const msgTag = node.builder._inlineNodes[0].tag;
|
|
133
|
+
node.schema = new job_schema_1.$Job(node.builder.module, node.builder.name, node.builder.alias || node.builder.name, node.builder._auth, [msgTag], output, node.builder._extrasAndAsserts, resource_job_1.ResourceJob.method, {
|
|
131
134
|
module: node.builder.module,
|
|
132
135
|
resource: node.builder.resource,
|
|
133
136
|
bucket: node.builder.bucket,
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResourceJob = void 0;
|
|
4
|
-
const trx_node_1 = require("../../../../engine/transaction/trx_node");
|
|
5
4
|
/**
|
|
6
5
|
* @category Elements
|
|
7
6
|
* @subcategory Block
|
|
8
7
|
*/
|
|
9
8
|
class ResourceJob {
|
|
10
9
|
static async method($) {
|
|
11
|
-
// Check authentication
|
|
12
|
-
trx_node_1.TrxNode.checkAuthn($.trx, $.job.authn);
|
|
13
10
|
//
|
|
14
11
|
const id = $.msg.id;
|
|
15
12
|
const scope = $.job.scope;
|
|
16
13
|
let obj = $.obj;
|
|
17
14
|
obj = await scope.prepareMethod({ ...$, obj, bucket: scope.bucket });
|
|
18
15
|
// Preserve the original message ID (if any),
|
|
19
|
-
//
|
|
20
|
-
if (scope.method === '
|
|
16
|
+
// if the prepare method mistakenly changed it
|
|
17
|
+
if (scope.method === 'update') {
|
|
21
18
|
obj.id = id;
|
|
22
19
|
}
|
|
23
20
|
// On delete, the method returns a boolean, so replace it with the id.
|
|
24
|
-
else {
|
|
21
|
+
else if (scope.method === 'delete') {
|
|
25
22
|
if (!obj)
|
|
26
23
|
return;
|
|
27
24
|
obj = { id };
|
|
@@ -6,7 +6,7 @@ import { Overlay } from "../../../engine/util/type";
|
|
|
6
6
|
import { $MessageInfer } from "../../entities/message/message.infer";
|
|
7
7
|
import { TrxNode } from "../../../engine/transaction/trx_node";
|
|
8
8
|
import { ModuleTree } from "../../../engine/tree";
|
|
9
|
-
import {
|
|
9
|
+
import { ResolvedBuilderNode, Tag } from "../../../engine/dependency";
|
|
10
10
|
import { $Message } from "../../entities/message/message.schema";
|
|
11
11
|
import { $BlockOutput } from '../block.schema';
|
|
12
12
|
export type JobExtrasAndAsserts = ({
|
|
@@ -27,10 +27,10 @@ export declare class JobBuilder<Space extends $Space, Module extends $Module, Jo
|
|
|
27
27
|
private _method?;
|
|
28
28
|
private _scope?;
|
|
29
29
|
constructor(module: string, name: Job['name']);
|
|
30
|
-
|
|
31
|
-
"#authn": { [K in U]: Space["authnUsers"][U]; };
|
|
30
|
+
auth<U extends keyof Space['authnUsers']>(provider: U, resolver?: (user: Space['authnUsers'][U]) => boolean): JobBuilder<Space, Module, Overlay<Job, {
|
|
31
|
+
"#authn": Job["#authn"] & { [K in U]: Space["authnUsers"][U]; };
|
|
32
32
|
}>, Ctx>;
|
|
33
|
-
scope<
|
|
33
|
+
scope<MachineName extends keyof Module['machines'] & string, JobScope extends `machine:${MachineName}`, Machine extends NoInfer<Module['machines'][MachineName]>>(scope: JobScope): JobBuilder<Space, Module, Job, {
|
|
34
34
|
obj: Machine["#data"];
|
|
35
35
|
from: keyof Machine["states"] & string;
|
|
36
36
|
to: keyof Machine["states"] & string;
|
|
@@ -109,7 +109,7 @@ export type JobBuildConfig = {
|
|
|
109
109
|
defaultTrigger: $Message;
|
|
110
110
|
};
|
|
111
111
|
MachineJob?: {
|
|
112
|
-
input:
|
|
112
|
+
input: Tag[];
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
115
|
};
|
|
@@ -8,7 +8,7 @@ const message_builder_1 = require("../../entities/message/message.builder");
|
|
|
8
8
|
const resource_job_builder_1 = require("./internal/resource_job.builder");
|
|
9
9
|
const machine_job_builder_1 = require("./internal/machine_job.builder");
|
|
10
10
|
const error_1 = require("../../../engine/data/error");
|
|
11
|
-
const name_helpers_1 = require("../../../
|
|
11
|
+
const name_helpers_1 = require("../../../engine/util/name_helpers");
|
|
12
12
|
/**
|
|
13
13
|
* @category Builders
|
|
14
14
|
* @subcategory Block
|
|
@@ -21,12 +21,12 @@ class JobBuilder extends block_builder_1.BlockBuilder {
|
|
|
21
21
|
this._extrasAndAsserts = [];
|
|
22
22
|
}
|
|
23
23
|
/* [Block] */
|
|
24
|
-
|
|
25
|
-
return super.
|
|
24
|
+
auth(provider, resolver) {
|
|
25
|
+
return super.auth(provider, resolver);
|
|
26
26
|
}
|
|
27
27
|
/* [Scope] */
|
|
28
28
|
scope(scope) {
|
|
29
|
-
this._scope = scope;
|
|
29
|
+
this._scope = new dependency_1.Tag(this.module, 'machine', scope.split(':')[1]);
|
|
30
30
|
// Machine-scoped job
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
@@ -101,9 +101,9 @@ class JobBuilder extends block_builder_1.BlockBuilder {
|
|
|
101
101
|
if (!node.builder._method) {
|
|
102
102
|
throw error_1.NesoiError.Builder.Job.NoMethod({ job: node.builder.name });
|
|
103
103
|
}
|
|
104
|
-
const input = node.builder._inputMsgs;
|
|
105
|
-
const scope = node.builder._scope
|
|
106
|
-
node.schema = new job_schema_1.$Job(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder.
|
|
104
|
+
const input = node.builder._inputMsgs.map(m => m.tag);
|
|
105
|
+
const scope = node.builder._scope;
|
|
106
|
+
node.schema = new job_schema_1.$Job(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._auth, input, node.builder._output, node.builder._extrasAndAsserts, node.builder._method, scope ? {
|
|
107
107
|
module: node.builder.module,
|
|
108
108
|
machine: scope.name,
|
|
109
109
|
} : undefined);
|
|
@@ -21,7 +21,7 @@ class Job extends block_1.Block {
|
|
|
21
21
|
}
|
|
22
22
|
async run(trx, msg, _ctx = {}) {
|
|
23
23
|
// Check authentication
|
|
24
|
-
trx_node_1.TrxNode.
|
|
24
|
+
await trx_node_1.TrxNode.checkAuth(trx, this.schema.auth);
|
|
25
25
|
const _msg = message_1.Message.clone(msg);
|
|
26
26
|
const extra = {};
|
|
27
27
|
const ctx = { trx, msg: _msg, extra, job: this.schema };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $Block, $BlockOutput } from '../block.schema';
|
|
2
|
-
import {
|
|
1
|
+
import { $Block, $BlockOutput, $BlockAuth } from '../block.schema';
|
|
2
|
+
import { Tag } from "../../../engine/dependency";
|
|
3
3
|
import { JobExtrasAndAsserts } from './job.builder';
|
|
4
4
|
import { $ResourceJobScope } from './internal/resource_job.schema';
|
|
5
5
|
import { $MachineJobScope } from '../machine/machine.schema';
|
|
@@ -18,13 +18,13 @@ export declare class $Job extends $Block {
|
|
|
18
18
|
module: string;
|
|
19
19
|
name: string;
|
|
20
20
|
alias: string;
|
|
21
|
-
|
|
22
|
-
input:
|
|
21
|
+
auth: $BlockAuth[];
|
|
22
|
+
input: Tag[];
|
|
23
23
|
output: $BlockOutput | undefined;
|
|
24
24
|
extrasAndAsserts: JobExtrasAndAsserts;
|
|
25
25
|
method: $JobMethod<any, any, any, any>;
|
|
26
26
|
scope?: ($MachineJobScope | $ResourceJobScope) | undefined;
|
|
27
27
|
$t: "job";
|
|
28
28
|
'#extra': unknown;
|
|
29
|
-
constructor(module: string, name: string, alias: string,
|
|
29
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], input: Tag[], output: $BlockOutput | undefined, extrasAndAsserts: JobExtrasAndAsserts, method: $JobMethod<any, any, any, any>, scope?: ($MachineJobScope | $ResourceJobScope) | undefined);
|
|
30
30
|
}
|
|
@@ -7,12 +7,12 @@ const block_schema_1 = require("../block.schema");
|
|
|
7
7
|
* @subcategory Block
|
|
8
8
|
*/
|
|
9
9
|
class $Job extends block_schema_1.$Block {
|
|
10
|
-
constructor(module, name, alias,
|
|
11
|
-
super(module, name, alias,
|
|
10
|
+
constructor(module, name, alias, auth, input, output, extrasAndAsserts, method, scope) {
|
|
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.extrasAndAsserts = extrasAndAsserts;
|
|
@@ -20,8 +20,8 @@ export declare class MachineBuilder<Space extends $Space, Module extends $Module
|
|
|
20
20
|
private _states;
|
|
21
21
|
private _logger?;
|
|
22
22
|
constructor(module: string, name: Name);
|
|
23
|
-
|
|
24
|
-
"#authn": { [K in U]: Space["authnUsers"][K]; };
|
|
23
|
+
auth<U extends keyof Space['authnUsers']>(provider: U, resolver?: (user: Space['authnUsers'][U]) => boolean): MachineBuilder<Space, Module, Name, Overlay<$, {
|
|
24
|
+
"#authn": $["#authn"] & { [K in U]: Space["authnUsers"][K]; };
|
|
25
25
|
}>>;
|
|
26
26
|
message<Name extends string, Def extends MessageTemplateDef<Space, Module, Name>, FullName extends string = `${$['name']}${Name extends '' ? '' : '.'}${Name & string}`, Msg extends $Message = $MessageInfer<FullName, ($: any) => ReturnType<Def>>>(name: Name, def: Def): MachineBuilder<Space, Overlay<Module, {
|
|
27
27
|
messages: Overlay<Module["messages"], { [K in FullName]: Msg; }>;
|
|
@@ -20,8 +20,8 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
|
|
|
20
20
|
this._states = {};
|
|
21
21
|
}
|
|
22
22
|
/* [Block] */
|
|
23
|
-
|
|
24
|
-
return super.
|
|
23
|
+
auth(provider, resolver) {
|
|
24
|
+
return super.auth(provider, resolver);
|
|
25
25
|
}
|
|
26
26
|
message(name, def) {
|
|
27
27
|
return super.message(name, def);
|
|
@@ -29,7 +29,10 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
|
|
|
29
29
|
/* [Data] */
|
|
30
30
|
bucket(names) {
|
|
31
31
|
names = Array.isArray(names) ? names : [names];
|
|
32
|
-
this._buckets = names.map(name =>
|
|
32
|
+
this._buckets = names.map(name => {
|
|
33
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'bucket', name);
|
|
34
|
+
return new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true });
|
|
35
|
+
});
|
|
33
36
|
return this;
|
|
34
37
|
}
|
|
35
38
|
stateField(key) {
|
|
@@ -78,7 +81,7 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
|
|
|
78
81
|
Object.values(msgTransitions)
|
|
79
82
|
.flat(1)
|
|
80
83
|
.forEach(t => {
|
|
81
|
-
if (!states[state].input.some(
|
|
84
|
+
if (!states[state].input.some(tag => tag.full === t.msg.full)) {
|
|
82
85
|
states[state].input.push(t.msg);
|
|
83
86
|
}
|
|
84
87
|
});
|
|
@@ -88,16 +91,16 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
|
|
|
88
91
|
.flat(1);
|
|
89
92
|
const jobs = [];
|
|
90
93
|
Object.values(states).forEach(state => {
|
|
91
|
-
jobs.push(...Object.values(state.jobs));
|
|
94
|
+
jobs.push(...Object.values(state.jobs).filter(j => !!j));
|
|
92
95
|
});
|
|
93
96
|
Object.values(transitions.from).forEach(stateTransitions => {
|
|
94
97
|
Object.values(stateTransitions).forEach(transitionList => {
|
|
95
98
|
transitionList.forEach(trans => {
|
|
96
|
-
jobs.push(...trans.jobs);
|
|
99
|
+
jobs.push(...trans.jobs.filter(j => !!j));
|
|
97
100
|
});
|
|
98
101
|
});
|
|
99
102
|
});
|
|
100
|
-
node.schema = new machine_schema_1.$Machine(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder.
|
|
103
|
+
node.schema = new machine_schema_1.$Machine(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._auth, input, node.builder._buckets.map(b => b.tag), jobs, node.builder._stateField || 'state', states, transitions, node.builder._stateAliasField, node.builder._logger);
|
|
101
104
|
// Configure state jobs with proper input, based on transition targets
|
|
102
105
|
const inlineJobsConfig = {};
|
|
103
106
|
Object.values(states).forEach(state => {
|
|
@@ -105,13 +108,13 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
|
|
|
105
108
|
const inputLeave = [];
|
|
106
109
|
Object.values(transFrom)
|
|
107
110
|
.flat(1)
|
|
108
|
-
.filter($t => !inputLeave.some(
|
|
111
|
+
.filter($t => !inputLeave.some(tag => dependency_1.Tag.matches(tag, $t.msg)))
|
|
109
112
|
.forEach($t => inputLeave.push($t.msg));
|
|
110
113
|
const transTo = transitions.to[state.name] || {};
|
|
111
114
|
const inputEnter = [];
|
|
112
115
|
Object.values(transTo)
|
|
113
116
|
.flat(1)
|
|
114
|
-
.filter($t => !inputEnter.some(
|
|
117
|
+
.filter($t => !inputEnter.some(tag => dependency_1.Tag.matches(tag, $t.msg)))
|
|
115
118
|
.forEach($t => inputEnter.push($t.msg));
|
|
116
119
|
state.inputEnter = inputEnter;
|
|
117
120
|
state.inputLeave = inputLeave;
|
|
@@ -133,7 +133,7 @@ class Machine extends block_1.Block {
|
|
|
133
133
|
let bucketUsed;
|
|
134
134
|
let obj;
|
|
135
135
|
for (const bucket of this.schema.buckets) {
|
|
136
|
-
obj = await trx.bucket(bucket.
|
|
136
|
+
obj = await trx.bucket(bucket.short).readOne(msg.id);
|
|
137
137
|
if (obj) {
|
|
138
138
|
bucketUsed = bucket;
|
|
139
139
|
break;
|
|
@@ -184,12 +184,12 @@ class Machine extends block_1.Block {
|
|
|
184
184
|
}
|
|
185
185
|
// Run all transition jobs
|
|
186
186
|
for (const job of transition.jobs) {
|
|
187
|
-
await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.
|
|
187
|
+
await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.short, {
|
|
188
188
|
obj,
|
|
189
189
|
from: state.name,
|
|
190
190
|
to: nextState.name
|
|
191
191
|
}).forward(msg);
|
|
192
|
-
MachineOutput.add(output, MachineOutputEntry.info_job_from_transition(job.
|
|
192
|
+
MachineOutput.add(output, MachineOutputEntry.info_job_from_transition(job.full, transition.name));
|
|
193
193
|
}
|
|
194
194
|
// Run "beforeEnter" job of next state
|
|
195
195
|
await this.runStateJob(trx, output, queue, nextState.jobs.beforeEnter, msg, obj, state.name, nextState.name, 'before_enter', `Ran job '${nextState.jobs.beforeEnter?.name}' before entering '${nextState.name}'`);
|
|
@@ -199,7 +199,7 @@ class Machine extends block_1.Block {
|
|
|
199
199
|
if (this.schema.stateAliasField) {
|
|
200
200
|
obj[this.schema.stateAliasField] = nextState.alias;
|
|
201
201
|
}
|
|
202
|
-
obj = await trx.bucket(bucketUsed.
|
|
202
|
+
obj = await trx.bucket(bucketUsed.short).patch(obj);
|
|
203
203
|
if (nextStateName !== stateName) {
|
|
204
204
|
MachineOutput.add(output, MachineOutputEntry.info_state_changed(state.name, nextState.name));
|
|
205
205
|
}
|
|
@@ -226,15 +226,15 @@ class Machine extends block_1.Block {
|
|
|
226
226
|
if (!job) {
|
|
227
227
|
return;
|
|
228
228
|
}
|
|
229
|
-
const result = await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.
|
|
229
|
+
const result = await trx_node_1.TrxNode.jobWithCustomCtx(trx, job.short, {
|
|
230
230
|
obj,
|
|
231
231
|
from,
|
|
232
232
|
to
|
|
233
233
|
}).forward(msg);
|
|
234
|
-
MachineOutput.add(output, MachineOutputEntry.info_job_from_state(job.
|
|
234
|
+
MachineOutput.add(output, MachineOutputEntry.info_job_from_state(job.full, from));
|
|
235
235
|
if (result instanceof message_1.Message) {
|
|
236
236
|
queue.push(result);
|
|
237
|
-
MachineOutput.add(output, MachineOutputEntry.info_job_returned_message(job.
|
|
237
|
+
MachineOutput.add(output, MachineOutputEntry.info_job_returned_message(job.full, result));
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $Block } from "../block.schema";
|
|
1
|
+
import { $Block, $BlockAuth } from "../block.schema";
|
|
2
2
|
import { $JobAssert } from "../job/job.schema";
|
|
3
|
-
import {
|
|
3
|
+
import { Tag } from "../../../engine/dependency";
|
|
4
4
|
import { AnyTrxNode } from "../../../engine/transaction/trx_node";
|
|
5
5
|
import { MachineOutput } from './machine';
|
|
6
6
|
/**
|
|
@@ -11,14 +11,14 @@ export declare class $MachineTransition extends $Block {
|
|
|
11
11
|
module: string;
|
|
12
12
|
name: string;
|
|
13
13
|
alias: string;
|
|
14
|
-
|
|
15
|
-
msg:
|
|
14
|
+
auth: $BlockAuth[];
|
|
15
|
+
msg: Tag;
|
|
16
16
|
from: string;
|
|
17
17
|
to: string;
|
|
18
18
|
condition?: $JobAssert<any, any, never, any> | undefined;
|
|
19
|
-
jobs:
|
|
19
|
+
jobs: Tag[];
|
|
20
20
|
$t: any;
|
|
21
|
-
constructor(module: string, name: string, alias: string,
|
|
21
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], msg: Tag, from: string, to: string, condition?: $JobAssert<any, any, never, any> | undefined, jobs?: Tag[]);
|
|
22
22
|
}
|
|
23
23
|
export type $MachineTransitions = {
|
|
24
24
|
from: {
|
|
@@ -40,25 +40,25 @@ export declare class $MachineState extends $Block {
|
|
|
40
40
|
module: string;
|
|
41
41
|
name: string;
|
|
42
42
|
alias: string;
|
|
43
|
-
|
|
43
|
+
auth: $BlockAuth[];
|
|
44
44
|
initial: boolean;
|
|
45
45
|
final: boolean;
|
|
46
|
-
inputEnter:
|
|
47
|
-
inputLeave:
|
|
46
|
+
inputEnter: Tag[];
|
|
47
|
+
inputLeave: Tag[];
|
|
48
48
|
jobs: {
|
|
49
|
-
beforeEnter?:
|
|
50
|
-
afterEnter?:
|
|
51
|
-
beforeLeave?:
|
|
52
|
-
afterLeave?:
|
|
49
|
+
beforeEnter?: Tag;
|
|
50
|
+
afterEnter?: Tag;
|
|
51
|
+
beforeLeave?: Tag;
|
|
52
|
+
afterLeave?: Tag;
|
|
53
53
|
};
|
|
54
54
|
$t: any;
|
|
55
55
|
'#input.enter': any;
|
|
56
56
|
'#input.leave': any;
|
|
57
|
-
constructor(module: string, name: string, alias: string,
|
|
58
|
-
beforeEnter?:
|
|
59
|
-
afterEnter?:
|
|
60
|
-
beforeLeave?:
|
|
61
|
-
afterLeave?:
|
|
57
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], initial: boolean, final: boolean, inputEnter: Tag[], inputLeave: Tag[], jobs: {
|
|
58
|
+
beforeEnter?: Tag;
|
|
59
|
+
afterEnter?: Tag;
|
|
60
|
+
beforeLeave?: Tag;
|
|
61
|
+
afterLeave?: Tag;
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
export type $MachineStates = {
|
|
@@ -72,10 +72,10 @@ export declare class $Machine extends $Block {
|
|
|
72
72
|
module: string;
|
|
73
73
|
name: string;
|
|
74
74
|
alias: string;
|
|
75
|
-
|
|
76
|
-
input:
|
|
77
|
-
buckets:
|
|
78
|
-
jobs:
|
|
75
|
+
auth: $BlockAuth[];
|
|
76
|
+
input: Tag[];
|
|
77
|
+
buckets: Tag[];
|
|
78
|
+
jobs: Tag[];
|
|
79
79
|
stateField: string;
|
|
80
80
|
states: $MachineStates;
|
|
81
81
|
transitions: $MachineTransitions;
|
|
@@ -83,7 +83,7 @@ export declare class $Machine extends $Block {
|
|
|
83
83
|
logger?: $MachineLogFn<any> | undefined;
|
|
84
84
|
$t: "machine";
|
|
85
85
|
'#data': unknown;
|
|
86
|
-
constructor(module: string, name: string, alias: string,
|
|
86
|
+
constructor(module: string, name: string, alias: string, auth: $BlockAuth[], input: Tag[], buckets: Tag[], jobs: Tag[], stateField: string, states: $MachineStates, transitions: $MachineTransitions, stateAliasField?: string | undefined, logger?: $MachineLogFn<any> | undefined);
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
89
|
* @category Schemas
|
|
@@ -8,12 +8,12 @@ const block_schema_1 = require("../block.schema");
|
|
|
8
8
|
* @subcategory Block
|
|
9
9
|
*/
|
|
10
10
|
class $MachineTransition extends block_schema_1.$Block {
|
|
11
|
-
constructor(module, name, alias,
|
|
12
|
-
super(module, name, alias,
|
|
11
|
+
constructor(module, name, alias, auth, msg, from, to, condition, jobs = []) {
|
|
12
|
+
super(module, name, alias, auth, [msg], {});
|
|
13
13
|
this.module = module;
|
|
14
14
|
this.name = name;
|
|
15
15
|
this.alias = alias;
|
|
16
|
-
this.
|
|
16
|
+
this.auth = auth;
|
|
17
17
|
this.msg = msg;
|
|
18
18
|
this.from = from;
|
|
19
19
|
this.to = to;
|
|
@@ -29,12 +29,12 @@ exports.$MachineTransition = $MachineTransition;
|
|
|
29
29
|
* @subcategory Block
|
|
30
30
|
*/
|
|
31
31
|
class $MachineState extends block_schema_1.$Block {
|
|
32
|
-
constructor(module, name, alias,
|
|
33
|
-
super(module, name, alias,
|
|
32
|
+
constructor(module, name, alias, auth, initial, final, inputEnter, inputLeave, jobs) {
|
|
33
|
+
super(module, name, alias, auth, [...inputEnter, ...inputLeave], {});
|
|
34
34
|
this.module = module;
|
|
35
35
|
this.name = name;
|
|
36
36
|
this.alias = alias;
|
|
37
|
-
this.
|
|
37
|
+
this.auth = auth;
|
|
38
38
|
this.initial = initial;
|
|
39
39
|
this.final = final;
|
|
40
40
|
this.inputEnter = inputEnter;
|
|
@@ -49,12 +49,12 @@ exports.$MachineState = $MachineState;
|
|
|
49
49
|
* @subcategory Block
|
|
50
50
|
*/
|
|
51
51
|
class $Machine extends block_schema_1.$Block {
|
|
52
|
-
constructor(module, name, alias,
|
|
53
|
-
super(module, name, alias,
|
|
52
|
+
constructor(module, name, alias, auth, input, buckets, jobs, stateField, states, transitions, stateAliasField, logger) {
|
|
53
|
+
super(module, name, alias, auth, input, {});
|
|
54
54
|
this.module = module;
|
|
55
55
|
this.name = name;
|
|
56
56
|
this.alias = alias;
|
|
57
|
-
this.
|
|
57
|
+
this.auth = auth;
|
|
58
58
|
this.input = input;
|
|
59
59
|
this.buckets = buckets;
|
|
60
60
|
this.jobs = jobs;
|
|
@@ -60,3 +60,4 @@ export declare class MachineStateBuilder<S extends $Space, M extends $Module, $M
|
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
export type MachineStateDef<S extends $Space, M extends $Module, $M extends $Machine, State extends $MachineState> = ($: MachineStateBuilder<S, M, $M, State>) => any;
|
|
63
|
+
export type AnyMachineStateBuilder = MachineStateBuilder<any, any, any, any>;
|