nesoi 3.0.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/lib/adapters/postgres/src/migrator/database.d.ts +37 -0
- package/lib/adapters/postgres/src/migrator/database.js +88 -0
- package/lib/adapters/postgres/src/migrator/index.d.ts +1 -0
- package/lib/adapters/postgres/src/migrator/index.js +5 -0
- package/lib/adapters/postgres/src/migrator/migration.d.ts +73 -0
- package/lib/adapters/postgres/src/migrator/migration.js +351 -0
- package/lib/adapters/postgres/src/migrator/migrator.d.ts +21 -0
- package/lib/adapters/postgres/src/migrator/migrator.js +73 -0
- package/lib/adapters/postgres/src/migrator/runner.d.ts +61 -0
- package/lib/adapters/postgres/src/migrator/runner.js +202 -0
- package/lib/adapters/postgres/src/postgres.bucket_adapter.d.ts +45 -0
- package/lib/adapters/postgres/src/postgres.bucket_adapter.js +278 -0
- package/lib/adapters/postgres/src/postgres.cli.d.ts +46 -0
- package/lib/adapters/postgres/src/postgres.cli.js +124 -0
- package/lib/adapters/postgres/src/postgres.nql.d.ts +12 -0
- package/lib/adapters/postgres/src/postgres.nql.js +69 -0
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.d.ts +1 -0
- package/lib/adapters/postgres/test/postgres.bucket_adapter.test.js +173 -0
- package/lib/adapters/postgres/test/postgres.bucket_query.test.d.ts +0 -0
- package/lib/adapters/postgres/test/postgres.bucket_query.test.js +136 -0
- package/lib/compiler/apps/monolyth/monolyth_compiler.d.ts +21 -0
- package/lib/compiler/apps/monolyth/monolyth_compiler.js +95 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.js +80 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +128 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.js +75 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.d.ts +13 -0
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +130 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/5_dump_cli_stage.js +65 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.d.ts +12 -0
- package/lib/compiler/apps/monolyth/stages/6_dump_package_json_stage.js +74 -0
- package/lib/compiler/compiler.d.ts +19 -0
- package/lib/compiler/compiler.js +83 -0
- package/lib/compiler/elements/bucket.element.d.ts +23 -0
- package/lib/compiler/elements/bucket.element.js +304 -0
- package/lib/compiler/elements/constants.element.d.ts +9 -0
- package/lib/compiler/elements/constants.element.js +88 -0
- package/lib/compiler/elements/controller.element.d.ts +6 -0
- package/lib/compiler/elements/controller.element.js +22 -0
- package/lib/compiler/elements/element.d.ts +49 -0
- package/lib/compiler/elements/element.js +105 -0
- package/lib/compiler/elements/externals.element.d.ts +19 -0
- package/lib/compiler/elements/externals.element.js +83 -0
- package/lib/compiler/elements/job.element.d.ts +7 -0
- package/lib/compiler/elements/job.element.js +62 -0
- package/lib/compiler/elements/machine.element.d.ts +10 -0
- package/lib/compiler/elements/machine.element.js +98 -0
- package/lib/compiler/elements/message.element.d.ts +9 -0
- package/lib/compiler/elements/message.element.js +175 -0
- package/lib/compiler/elements/queue.element.d.ts +6 -0
- package/lib/compiler/elements/queue.element.js +24 -0
- package/lib/compiler/elements/resource.element.d.ts +7 -0
- package/lib/compiler/elements/resource.element.js +64 -0
- package/lib/compiler/error.d.ts +21 -0
- package/lib/compiler/error.js +57 -0
- package/lib/compiler/helpers/dump_helpers.d.ts +11 -0
- package/lib/compiler/helpers/dump_helpers.js +157 -0
- package/lib/compiler/helpers/name_helpers.d.ts +20 -0
- package/lib/compiler/helpers/name_helpers.js +44 -0
- package/lib/compiler/index.d.ts +2 -0
- package/lib/compiler/index.js +7 -0
- package/lib/compiler/module.d.ts +24 -0
- package/lib/compiler/module.js +122 -0
- package/lib/compiler/stages/1_scan_stage.d.ts +10 -0
- package/lib/compiler/stages/1_scan_stage.js +23 -0
- package/lib/compiler/stages/2_treeshake_stage.d.ts +11 -0
- package/lib/compiler/stages/2_treeshake_stage.js +24 -0
- package/lib/compiler/stages/3_extract_ts_stage.d.ts +10 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +71 -0
- package/lib/compiler/stages/4_build_schemas_stage.d.ts +10 -0
- package/lib/compiler/stages/4_build_schemas_stage.js +25 -0
- package/lib/compiler/stages/5_inject_ts_stage.d.ts +10 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +22 -0
- package/lib/compiler/stages/6_build_elements_stage.d.ts +11 -0
- package/lib/compiler/stages/6_build_elements_stage.js +22 -0
- package/lib/compiler/stages/7_dump_stage.d.ts +14 -0
- package/lib/compiler/stages/7_dump_stage.js +208 -0
- package/lib/compiler/stages/8_diagnose_stage.d.ts +16 -0
- package/lib/compiler/stages/8_diagnose_stage.js +43 -0
- package/lib/compiler/treeshake.d.ts +58 -0
- package/lib/compiler/treeshake.js +424 -0
- package/lib/compiler/typescript/bridge/extract.d.ts +11 -0
- package/lib/compiler/typescript/bridge/extract.js +270 -0
- package/lib/compiler/typescript/bridge/inject.d.ts +10 -0
- package/lib/compiler/typescript/bridge/inject.js +140 -0
- package/lib/compiler/typescript/bridge/organize.d.ts +61 -0
- package/lib/compiler/typescript/bridge/organize.js +258 -0
- package/lib/compiler/typescript/error.d.ts +88 -0
- package/lib/compiler/typescript/error.js +265 -0
- package/lib/compiler/typescript/parser.d.ts +48 -0
- package/lib/compiler/typescript/parser.js +581 -0
- package/lib/compiler/typescript/source.d.ts +12 -0
- package/lib/compiler/typescript/source.js +87 -0
- package/lib/compiler/typescript/transformers/app_inject.transformer.d.ts +2 -0
- package/lib/compiler/typescript/transformers/app_inject.transformer.js +89 -0
- package/lib/compiler/typescript/transformers/replace_import.transformer.d.ts +4 -0
- package/lib/compiler/typescript/transformers/replace_import.transformer.js +102 -0
- package/lib/compiler/typescript/typescript_compiler.d.ts +63 -0
- package/lib/compiler/typescript/typescript_compiler.js +602 -0
- package/lib/elements/blocks/block.builder.d.ts +29 -0
- package/lib/elements/blocks/block.builder.js +87 -0
- package/lib/elements/blocks/block.d.ts +15 -0
- package/lib/elements/blocks/block.js +37 -0
- package/lib/elements/blocks/block.schema.d.ts +23 -0
- package/lib/elements/blocks/block.schema.js +15 -0
- package/lib/elements/blocks/externals/externals.builder.d.ts +30 -0
- package/lib/elements/blocks/externals/externals.builder.js +37 -0
- package/lib/elements/blocks/externals/externals.schema.d.ts +11 -0
- package/lib/elements/blocks/externals/externals.schema.js +19 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +52 -0
- package/lib/elements/blocks/job/internal/machine_job.builder.js +74 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.d.ts +5 -0
- package/lib/elements/blocks/job/internal/machine_job.schema.js +10 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +109 -0
- package/lib/elements/blocks/job/internal/resource_job.builder.js +146 -0
- package/lib/elements/blocks/job/internal/resource_job.d.ts +14 -0
- package/lib/elements/blocks/job/internal/resource_job.js +30 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.d.ts +11 -0
- package/lib/elements/blocks/job/internal/resource_job.schema.js +15 -0
- package/lib/elements/blocks/job/job.builder.d.ts +118 -0
- package/lib/elements/blocks/job/job.builder.js +137 -0
- package/lib/elements/blocks/job/job.d.ts +13 -0
- package/lib/elements/blocks/job/job.js +40 -0
- package/lib/elements/blocks/job/job.schema.d.ts +26 -0
- package/lib/elements/blocks/job/job.schema.js +20 -0
- package/lib/elements/blocks/machine/machine.builder.d.ts +58 -0
- package/lib/elements/blocks/machine/machine.builder.js +135 -0
- package/lib/elements/blocks/machine/machine.d.ts +86 -0
- package/lib/elements/blocks/machine/machine.js +228 -0
- package/lib/elements/blocks/machine/machine.schema.d.ts +85 -0
- package/lib/elements/blocks/machine/machine.schema.js +64 -0
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +58 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +186 -0
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +48 -0
- package/lib/elements/blocks/machine/machine_transition.builder.js +98 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.d.ts +10 -0
- package/lib/elements/blocks/queue/adapters/bucket.queue_adapter.js +17 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.d.ts +6 -0
- package/lib/elements/blocks/queue/adapters/queue_adapter.js +6 -0
- package/lib/elements/blocks/queue/queue.builder.d.ts +40 -0
- package/lib/elements/blocks/queue/queue.builder.js +31 -0
- package/lib/elements/blocks/queue/queue.d.ts +9 -0
- package/lib/elements/blocks/queue/queue.js +11 -0
- package/lib/elements/blocks/queue/queue.schema.d.ts +12 -0
- package/lib/elements/blocks/queue/queue.schema.js +17 -0
- package/lib/elements/blocks/resource/resource.builder.d.ts +60 -0
- package/lib/elements/blocks/resource/resource.builder.js +224 -0
- package/lib/elements/blocks/resource/resource.d.ts +48 -0
- package/lib/elements/blocks/resource/resource.js +125 -0
- package/lib/elements/blocks/resource/resource.schema.d.ts +32 -0
- package/lib/elements/blocks/resource/resource.schema.js +30 -0
- package/lib/elements/blocks/resource/resource.types.d.ts +38 -0
- package/lib/elements/blocks/resource/resource.types.js +3 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.d.ts +8 -0
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +17 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +14 -0
- package/lib/elements/edge/controller/adapters/controller_adapter.js +44 -0
- package/lib/elements/edge/controller/controller.builder.d.ts +78 -0
- package/lib/elements/edge/controller/controller.builder.js +178 -0
- package/lib/elements/edge/controller/controller.config.d.ts +6 -0
- package/lib/elements/edge/controller/controller.config.js +2 -0
- package/lib/elements/edge/controller/controller.d.ts +22 -0
- package/lib/elements/edge/controller/controller.js +41 -0
- package/lib/elements/edge/controller/controller.schema.d.ts +44 -0
- package/lib/elements/edge/controller/controller.schema.js +51 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +107 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +41 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +37 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +149 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.d.ts +0 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_query copy.js +218 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.d.ts +19 -0
- package/lib/elements/entities/bucket/adapters/memory.nql.js +212 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.d.ts +20 -0
- package/lib/elements/entities/bucket/adapters/slow_memory.bucket_adapter.js +31 -0
- package/lib/elements/entities/bucket/bucket.builder.d.ts +61 -0
- package/lib/elements/entities/bucket/bucket.builder.js +130 -0
- package/lib/elements/entities/bucket/bucket.config.d.ts +29 -0
- package/lib/elements/entities/bucket/bucket.config.js +2 -0
- package/lib/elements/entities/bucket/bucket.d.ts +36 -0
- package/lib/elements/entities/bucket/bucket.infer.d.ts +22 -0
- package/lib/elements/entities/bucket/bucket.infer.js +85 -0
- package/lib/elements/entities/bucket/bucket.js +125 -0
- package/lib/elements/entities/bucket/bucket.schema.d.ts +24 -0
- package/lib/elements/entities/bucket/bucket.schema.js +16 -0
- package/lib/elements/entities/bucket/bucket.types.d.ts +32 -0
- package/lib/elements/entities/bucket/bucket.types.js +2 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +35 -0
- package/lib/elements/entities/bucket/cache/bucket_cache.js +182 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.d.ts +11 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.builder.js +27 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +16 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +9 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.js +2 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.js +136 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +28 -0
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.js +27 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +36 -0
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +56 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +24 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +5 -0
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +51 -0
- package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.infer.js +2 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +35 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +47 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +119 -0
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +154 -0
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +140 -0
- package/lib/elements/entities/bucket/query/nql.schema.js +2 -0
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +44 -0
- package/lib/elements/entities/bucket/query/nql_compiler.js +620 -0
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +16 -0
- package/lib/elements/entities/bucket/query/nql_engine.js +42 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +14 -0
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +24 -0
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +10 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +102 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +55 -0
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +42 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +37 -0
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +138 -0
- package/lib/elements/entities/constants/constants.builder.d.ts +57 -0
- package/lib/elements/entities/constants/constants.builder.js +116 -0
- package/lib/elements/entities/constants/constants.d.ts +7 -0
- package/lib/elements/entities/constants/constants.js +15 -0
- package/lib/elements/entities/constants/constants.schema.d.ts +51 -0
- package/lib/elements/entities/constants/constants.schema.js +45 -0
- package/lib/elements/entities/message/message.builder.d.ts +33 -0
- package/lib/elements/entities/message/message.builder.js +41 -0
- package/lib/elements/entities/message/message.d.ts +11 -0
- package/lib/elements/entities/message/message.infer.d.ts +63 -0
- package/lib/elements/entities/message/message.infer.js +2 -0
- package/lib/elements/entities/message/message.js +52 -0
- package/lib/elements/entities/message/message.schema.d.ts +15 -0
- package/lib/elements/entities/message/message.schema.js +13 -0
- package/lib/elements/entities/message/message_parser.d.ts +12 -0
- package/lib/elements/entities/message/message_parser.js +112 -0
- package/lib/elements/entities/message/template/message_template.builder.d.ts +14 -0
- package/lib/elements/entities/message/template/message_template.builder.js +20 -0
- package/lib/elements/entities/message/template/message_template.schema.d.ts +57 -0
- package/lib/elements/entities/message/template/message_template.schema.js +28 -0
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +225 -0
- package/lib/elements/entities/message/template/message_template_field.builder.js +172 -0
- package/lib/elements/entities/message/template/message_template_parser.d.ts +3 -0
- package/lib/elements/entities/message/template/message_template_parser.js +83 -0
- package/lib/elements/index.d.ts +11 -0
- package/lib/elements/index.js +23 -0
- package/lib/engine/apps/app.config.d.ts +49 -0
- package/lib/engine/apps/app.config.js +38 -0
- package/lib/engine/apps/app.d.ts +70 -0
- package/lib/engine/apps/app.js +101 -0
- package/lib/engine/apps/inline.app.d.ts +48 -0
- package/lib/engine/apps/inline.app.js +144 -0
- package/lib/engine/apps/monolyth/monolyth.app.d.ts +20 -0
- package/lib/engine/apps/monolyth/monolyth.app.js +94 -0
- package/lib/engine/apps/monolyth/monolyth.cli.d.ts +45 -0
- package/lib/engine/apps/monolyth/monolyth.cli.js +362 -0
- package/lib/engine/auth/authn.d.ts +18 -0
- package/lib/engine/auth/authn.js +9 -0
- package/lib/engine/auth/zero.authn_provider.d.ts +13 -0
- package/lib/engine/auth/zero.authn_provider.js +13 -0
- package/lib/engine/cli/cli.d.ts +19 -0
- package/lib/engine/cli/cli.js +88 -0
- package/lib/engine/cli/cli_adapter.d.ts +18 -0
- package/lib/engine/cli/cli_adapter.js +61 -0
- package/lib/engine/cli/ui.d.ts +36 -0
- package/lib/engine/cli/ui.js +188 -0
- package/lib/engine/daemon.d.ts +35 -0
- package/lib/engine/daemon.js +66 -0
- package/lib/engine/data/date.d.ts +10 -0
- package/lib/engine/data/date.js +32 -0
- package/lib/engine/data/datetime.d.ts +12 -0
- package/lib/engine/data/datetime.js +31 -0
- package/lib/engine/data/decimal.d.ts +11 -0
- package/lib/engine/data/decimal.js +70 -0
- package/lib/engine/data/error.d.ts +213 -0
- package/lib/engine/data/error.js +386 -0
- package/lib/engine/data/obj.d.ts +16 -0
- package/lib/engine/data/obj.js +5 -0
- package/lib/engine/data/tree.d.ts +17 -0
- package/lib/engine/data/tree.js +111 -0
- package/lib/engine/dependency.d.ts +68 -0
- package/lib/engine/dependency.js +91 -0
- package/lib/engine/module.d.ts +97 -0
- package/lib/engine/module.js +335 -0
- package/lib/engine/space.d.ts +54 -0
- package/lib/engine/space.js +138 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +53 -0
- package/lib/engine/transaction/nodes/bucket.trx_node.js +522 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +17 -0
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +82 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +13 -0
- package/lib/engine/transaction/nodes/job.trx_node.js +40 -0
- package/lib/engine/transaction/nodes/machine.trx_node.d.ts +12 -0
- package/lib/engine/transaction/nodes/machine.trx_node.js +39 -0
- package/lib/engine/transaction/nodes/queue.trx_node.d.ts +10 -0
- package/lib/engine/transaction/nodes/queue.trx_node.js +24 -0
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +24 -0
- package/lib/engine/transaction/nodes/resource.trx_node.js +77 -0
- package/lib/engine/transaction/trx.d.ts +50 -0
- package/lib/engine/transaction/trx.js +94 -0
- package/lib/engine/transaction/trx_engine.config.d.ts +15 -0
- package/lib/engine/transaction/trx_engine.config.js +2 -0
- package/lib/engine/transaction/trx_engine.d.ts +27 -0
- package/lib/engine/transaction/trx_engine.js +95 -0
- package/lib/engine/transaction/trx_node.d.ts +61 -0
- package/lib/engine/transaction/trx_node.js +175 -0
- package/lib/engine/tree.d.ts +34 -0
- package/lib/engine/tree.js +237 -0
- package/lib/engine/util/cache.d.ts +6 -0
- package/lib/engine/util/cache.js +20 -0
- package/lib/engine/util/console.d.ts +4 -0
- package/lib/engine/util/console.js +24 -0
- package/lib/engine/util/deep.d.ts +7 -0
- package/lib/engine/util/deep.js +2 -0
- package/lib/engine/util/dotenv.d.ts +15 -0
- package/lib/engine/util/dotenv.js +94 -0
- package/lib/engine/util/i18n.d.ts +5 -0
- package/lib/engine/util/i18n.js +19 -0
- package/lib/engine/util/log.d.ts +17 -0
- package/lib/engine/util/log.js +93 -0
- package/lib/engine/util/parse.d.ts +63 -0
- package/lib/engine/util/parse.js +229 -0
- package/lib/engine/util/promise.d.ts +3 -0
- package/lib/engine/util/promise.js +14 -0
- package/lib/engine/util/shell.d.ts +6 -0
- package/lib/engine/util/shell.js +44 -0
- package/lib/engine/util/string.d.ts +18 -0
- package/lib/engine/util/string.js +25 -0
- package/lib/engine/util/type.d.ts +7 -0
- package/lib/engine/util/type.js +3 -0
- package/lib/schema.d.ts +63 -0
- package/lib/schema.js +2 -0
- package/package.json +22 -0
- package/tools/compile.d.ts +1 -0
- package/tools/compile.js +68 -0
- package/tools/joaquin/job.d.ts +40 -0
- package/tools/joaquin/job.js +47 -0
- package/tools/joaquin/message.d.ts +12 -0
- package/tools/joaquin/message.js +47 -0
- package/tools/joaquin/mock.d.ts +28 -0
- package/tools/joaquin/mock.js +128 -0
- package/tsconfig.build.tsbuildinfo +1 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceJobBuilder = void 0;
|
|
4
|
+
const job_schema_1 = require("../job.schema");
|
|
5
|
+
const message_template_field_builder_1 = require("../../../entities/message/template/message_template_field.builder");
|
|
6
|
+
const block_builder_1 = require("../../block.builder");
|
|
7
|
+
const message_builder_1 = require("../../../entities/message/message.builder");
|
|
8
|
+
const dependency_1 = require("../../../../engine/dependency");
|
|
9
|
+
const error_1 = require("../../../../engine/data/error");
|
|
10
|
+
const resource_job_1 = require("./resource_job");
|
|
11
|
+
class ResourceJobBuilder extends block_builder_1.BlockBuilder {
|
|
12
|
+
constructor(module, name, bucket, method, alias, execMethod, _authn = [], implicitFields = {}) {
|
|
13
|
+
super(module, 'job', name);
|
|
14
|
+
this.module = module;
|
|
15
|
+
this.name = name;
|
|
16
|
+
this.bucket = bucket;
|
|
17
|
+
this.method = method;
|
|
18
|
+
this.alias = alias;
|
|
19
|
+
this.execMethod = execMethod;
|
|
20
|
+
this._authn = _authn;
|
|
21
|
+
this.implicitFields = implicitFields;
|
|
22
|
+
this.$b = 'job';
|
|
23
|
+
this.$j = 'ResourceJob';
|
|
24
|
+
this._customInput = false;
|
|
25
|
+
this._extrasAndAsserts = [];
|
|
26
|
+
this.resource = this.name.split('.')[0];
|
|
27
|
+
this._msg = new message_builder_1.MessageBuilder(module, name)
|
|
28
|
+
.as(alias);
|
|
29
|
+
super._input(name);
|
|
30
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
31
|
+
module: this.module,
|
|
32
|
+
type: 'message',
|
|
33
|
+
name: name,
|
|
34
|
+
builder: this._msg,
|
|
35
|
+
isInline: true,
|
|
36
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
37
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The input message accepted by the job.
|
|
42
|
+
*
|
|
43
|
+
* @param def A `$ => ({})` definition for a custom trigger message
|
|
44
|
+
*/
|
|
45
|
+
input(def) {
|
|
46
|
+
this._msg.template($ => {
|
|
47
|
+
const fields = def($);
|
|
48
|
+
for (const f in this.implicitFields || []) {
|
|
49
|
+
const [type, arg] = this.implicitFields[f];
|
|
50
|
+
fields[f] = arg
|
|
51
|
+
? $[type](arg)
|
|
52
|
+
: $[type];
|
|
53
|
+
}
|
|
54
|
+
return fields;
|
|
55
|
+
});
|
|
56
|
+
this._customInput = true;
|
|
57
|
+
this._prepareMethod = undefined;
|
|
58
|
+
this._afterMethod = undefined;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/*
|
|
62
|
+
With
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* A function that will build new fields on the input message to be
|
|
66
|
+
* consumed by the job.
|
|
67
|
+
*
|
|
68
|
+
* @param $ A function which returns an object to be assigned to the input.
|
|
69
|
+
*/
|
|
70
|
+
extra($) {
|
|
71
|
+
this._extrasAndAsserts.push({ extra: $ });
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
/*
|
|
75
|
+
Assert
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* A function that checks a given condition over the input and throws an exception;
|
|
79
|
+
* This assertion runs before the job method.
|
|
80
|
+
*
|
|
81
|
+
* @param { cond } A function which returns true or false
|
|
82
|
+
* @param { error } An error message or a function that makes one
|
|
83
|
+
*/
|
|
84
|
+
assert(condition) {
|
|
85
|
+
this._extrasAndAsserts.push({ assert: condition });
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/*
|
|
89
|
+
Action
|
|
90
|
+
*/
|
|
91
|
+
/**
|
|
92
|
+
* The function called to prepare the input for the job.
|
|
93
|
+
*
|
|
94
|
+
* @param method A function which returns the required output.
|
|
95
|
+
*/
|
|
96
|
+
prepare(method) {
|
|
97
|
+
this._prepareMethod = method;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The function called after the input has been processed.
|
|
102
|
+
*
|
|
103
|
+
* @param method A function which returns void.
|
|
104
|
+
*/
|
|
105
|
+
after(method) {
|
|
106
|
+
this._afterMethod = method;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
// Build
|
|
110
|
+
static build(node, tree, module, output, defaultTrigger, idType) {
|
|
111
|
+
if (node.builder._customInput && !node.builder._prepareMethod) {
|
|
112
|
+
throw error_1.NesoiError.Builder.Resource.CustomInputRequiresPrepare(node.builder.name);
|
|
113
|
+
}
|
|
114
|
+
const fields = node.builder._msg._template._fields;
|
|
115
|
+
if (idType !== undefined) {
|
|
116
|
+
if (idType) {
|
|
117
|
+
fields['id'] = new message_template_field_builder_1.MessageTemplateFieldBuilder(idType, {});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
delete fields['id'];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
node.schema = new job_schema_1.$Job(node.builder.module, node.builder.name, node.builder.alias || node.builder.name, node.builder._authn, [new dependency_1.$Dependency(node.module, 'message', node.builder.name)], output, node.builder._extrasAndAsserts, resource_job_1.ResourceJob.method, {
|
|
124
|
+
module: node.builder.module,
|
|
125
|
+
resource: node.builder.resource,
|
|
126
|
+
bucket: node.builder.bucket,
|
|
127
|
+
method: node.builder.method,
|
|
128
|
+
prepareMethod: node.builder._prepareMethod,
|
|
129
|
+
execMethod: node.builder.execMethod,
|
|
130
|
+
afterMethod: node.builder._afterMethod
|
|
131
|
+
});
|
|
132
|
+
let inlineMessages;
|
|
133
|
+
if (node.builder._customInput) {
|
|
134
|
+
inlineMessages = message_builder_1.MessageBuilder.buildInlines(node, tree, module);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
inlineMessages = { [defaultTrigger.name]: defaultTrigger };
|
|
138
|
+
node.inlines.message[node.builder.name].schema = defaultTrigger;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
schema: node.schema,
|
|
142
|
+
inlineMessages
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.ResourceJobBuilder = ResourceJobBuilder;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
2
|
+
import { $Job } from '../job.schema';
|
|
3
|
+
import { AnyMessage } from "../../../entities/message/message";
|
|
4
|
+
export declare class ResourceJob {
|
|
5
|
+
static method($: {
|
|
6
|
+
trx: AnyTrxNode;
|
|
7
|
+
msg: any;
|
|
8
|
+
job: $Job;
|
|
9
|
+
}): Promise<any>;
|
|
10
|
+
static prepareMsgData($: {
|
|
11
|
+
msg: any;
|
|
12
|
+
}): Promise<Omit<AnyMessage, "$" | "__meta__" | "getData">>;
|
|
13
|
+
static prepareTrue(): Promise<boolean>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceJob = void 0;
|
|
4
|
+
class ResourceJob {
|
|
5
|
+
static async method($) {
|
|
6
|
+
const scope = $.job.scope;
|
|
7
|
+
let obj;
|
|
8
|
+
if (scope.method === 'update' || scope.method === 'delete') {
|
|
9
|
+
obj = await $.trx.bucket(scope.bucket).readOneOrFail($.msg.id);
|
|
10
|
+
}
|
|
11
|
+
obj = await scope.prepareMethod({ ...$, obj, bucket: scope.bucket });
|
|
12
|
+
if (scope.execMethod) {
|
|
13
|
+
obj = await scope.execMethod({ ...$, obj, bucket: scope.bucket });
|
|
14
|
+
}
|
|
15
|
+
if (scope.afterMethod) {
|
|
16
|
+
obj = await scope.afterMethod({ ...$, obj, bucket: scope.bucket });
|
|
17
|
+
}
|
|
18
|
+
return obj;
|
|
19
|
+
}
|
|
20
|
+
// The methods below exist so the JobElement is able
|
|
21
|
+
// to identify these methods and replace them with the
|
|
22
|
+
// proper text on the built element.
|
|
23
|
+
static async prepareMsgData($) {
|
|
24
|
+
return $.msg.getData();
|
|
25
|
+
}
|
|
26
|
+
static async prepareTrue() {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ResourceJob = ResourceJob;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { $JobMethod } from '../job.schema';
|
|
2
|
+
export declare class $ResourceJobScope {
|
|
3
|
+
module: string;
|
|
4
|
+
resource: string;
|
|
5
|
+
bucket: string;
|
|
6
|
+
method: 'view' | 'query' | 'create' | 'update' | 'delete';
|
|
7
|
+
prepareMethod: $JobMethod<any, any, any, any>;
|
|
8
|
+
execMethod?: $JobMethod<any, any, any, any> | undefined;
|
|
9
|
+
afterMethod?: $JobMethod<any, any, any, any> | undefined;
|
|
10
|
+
constructor(module: string, resource: string, bucket: string, method: 'view' | 'query' | 'create' | 'update' | 'delete', prepareMethod: $JobMethod<any, any, any, any>, execMethod?: $JobMethod<any, any, any, any> | undefined, afterMethod?: $JobMethod<any, any, any, any> | undefined);
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$ResourceJobScope = void 0;
|
|
4
|
+
class $ResourceJobScope {
|
|
5
|
+
constructor(module, resource, bucket, method, prepareMethod, execMethod, afterMethod) {
|
|
6
|
+
this.module = module;
|
|
7
|
+
this.resource = resource;
|
|
8
|
+
this.bucket = bucket;
|
|
9
|
+
this.method = method;
|
|
10
|
+
this.prepareMethod = prepareMethod;
|
|
11
|
+
this.execMethod = execMethod;
|
|
12
|
+
this.afterMethod = afterMethod;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.$ResourceJobScope = $ResourceJobScope;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { $Module, $Space, ScopedMessage, ScopedMessageName } from "../../../schema";
|
|
2
|
+
import { $Job, $JobAssert, $JobMethod } from './job.schema';
|
|
3
|
+
import { BlockBuilder } from '../block.builder';
|
|
4
|
+
import { MultiMessageTemplateDef } from "../../entities/message/template/message_template.builder";
|
|
5
|
+
import { Overlay } from "../../../engine/util/type";
|
|
6
|
+
import { $MessageInfer } from "../../entities/message/message.infer";
|
|
7
|
+
import { TrxNode } from "../../../engine/transaction/trx_node";
|
|
8
|
+
import { ModuleTree } from "../../../engine/tree";
|
|
9
|
+
import { $Dependency, ResolvedBuilderNode } from "../../../engine/dependency";
|
|
10
|
+
import { $Message } from "../../entities/message/message.schema";
|
|
11
|
+
import { $BlockOutput } from '../block.schema';
|
|
12
|
+
export type JobExtrasAndAsserts = ({
|
|
13
|
+
extra: $JobMethod<any, any, any, any, any>;
|
|
14
|
+
} | {
|
|
15
|
+
assert: $JobAssert<any, any, any, any>;
|
|
16
|
+
})[];
|
|
17
|
+
export declare class JobBuilder<Space extends $Space, Module extends $Module, Job extends $Job = $Job, Ctx = {}> extends BlockBuilder<Space, Module, 'job'> {
|
|
18
|
+
$b: "job";
|
|
19
|
+
$j: "Job";
|
|
20
|
+
private _extrasAndAsserts;
|
|
21
|
+
private _method?;
|
|
22
|
+
private _scope?;
|
|
23
|
+
constructor(module: string, name: Job['name']);
|
|
24
|
+
authn<U extends keyof Space['authnUsers']>(...providers: U[]): JobBuilder<Space, Module, Overlay<Job, {
|
|
25
|
+
"#authn": { [K in U]: Space["authnUsers"][U]; };
|
|
26
|
+
}>, Ctx>;
|
|
27
|
+
scope<JobScope extends `machine:${keyof Module['machines'] & string}`, Machine extends NoInfer<Module['machines'][JobScope extends `machine:${infer X}` ? X : never]>>(scope: JobScope): JobBuilder<Space, Module, Job, {
|
|
28
|
+
obj: Machine["#data"];
|
|
29
|
+
from: keyof Machine["states"] & string;
|
|
30
|
+
to: keyof Machine["states"] & string;
|
|
31
|
+
}>;
|
|
32
|
+
messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): JobBuilder<Space, Overlay<Module, {
|
|
33
|
+
messages: Overlay<Module["messages"], { [K in keyof ReturnType<Def> as `${Job["name"]}${K extends "" ? "" : "."}${K & string}`]: $MessageInfer<`${Job["name"]}${K extends "" ? "" : "."}${K & string}`, ($: any) => ReturnType<Def>[K], ReturnType<Def>[K], import("../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T ? { [K_1 in keyof T]: ReturnType<Def>[K][K_1] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
34
|
+
path: `${K_1 & string}${keyof I & string}`;
|
|
35
|
+
data: I[keyof I];
|
|
36
|
+
opt: Opt[0];
|
|
37
|
+
nul: Nul[0];
|
|
38
|
+
} : never; } : never>, import("../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T_1 ? { [K_2 in keyof T_1]: ReturnType<Def>[K][K_2] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
39
|
+
path: `${K_2 & string}${keyof O & string}`;
|
|
40
|
+
data: O[keyof O];
|
|
41
|
+
opt: Opt_1[1];
|
|
42
|
+
nul: Nul_1[1];
|
|
43
|
+
} : never; } : never>>; }>;
|
|
44
|
+
}>, Job, Ctx>;
|
|
45
|
+
input<MsgName extends ScopedMessageName<Module, Job['name']>, Msg extends NoInfer<ScopedMessage<Module, Job['name'], MsgName>>>(...def: MsgName[]): JobBuilder<Space, Module, Overlay<Job, {
|
|
46
|
+
"#input": Msg;
|
|
47
|
+
}>, Ctx>;
|
|
48
|
+
get output(): {
|
|
49
|
+
raw: <T>() => JobBuilder<Space, Module, Overlay<Job, {
|
|
50
|
+
"#output": unknown extends Job["#output"] ? T : (Job["#output"] | T);
|
|
51
|
+
}>, Ctx>;
|
|
52
|
+
msg: <MsgName extends ScopedMessageName<Module, Job["name"]>, Msg extends NoInfer<ScopedMessage<Module, Job["name"], MsgName>>>(...msgs: MsgName[]) => JobBuilder<Space, Module, Overlay<Job, {
|
|
53
|
+
"#output": unknown extends Job["#output"] ? Msg["#parsed"] : (Job["#output"] | Msg["#parsed"]);
|
|
54
|
+
}>, Ctx>;
|
|
55
|
+
obj: <BucketName extends keyof Module["buckets"], Bucket extends NoInfer<Module["buckets"][BucketName]>>(...objs: BucketName[]) => JobBuilder<Space, Module, Overlay<Job, {
|
|
56
|
+
"#output": unknown extends Job["#output"] ? Bucket["#data"] : (Job["#output"] | Bucket["#data"]);
|
|
57
|
+
}>, Ctx>;
|
|
58
|
+
};
|
|
59
|
+
protected outputRaw<T>(): JobBuilder<Space, Module, Overlay<Job, {
|
|
60
|
+
"#output": unknown extends Job["#output"] ? T : (Job["#output"] | T);
|
|
61
|
+
}>, Ctx>;
|
|
62
|
+
protected outputMsg<MsgName extends ScopedMessageName<Module, Job['name']>, Msg extends NoInfer<ScopedMessage<Module, Job['name'], MsgName>>>(...msgs: MsgName[]): JobBuilder<Space, Module, Overlay<Job, {
|
|
63
|
+
"#output": unknown extends Job["#output"] ? Msg["#parsed"] : (Job["#output"] | Msg["#parsed"]);
|
|
64
|
+
}>, Ctx>;
|
|
65
|
+
protected outputObj<BucketName extends keyof Module['buckets'], Bucket extends NoInfer<Module['buckets'][BucketName]>>(...objs: BucketName[]): JobBuilder<Space, Module, Overlay<Job, {
|
|
66
|
+
"#output": unknown extends Job["#output"] ? Bucket["#data"] : (Job["#output"] | Bucket["#data"]);
|
|
67
|
+
}>, Ctx>;
|
|
68
|
+
/**
|
|
69
|
+
* A function that will build new fields on the input message to be
|
|
70
|
+
* consumed by the job.
|
|
71
|
+
*
|
|
72
|
+
* @param $ A function which returns an object to be assigned to the input.
|
|
73
|
+
*/
|
|
74
|
+
extra<Extra extends {
|
|
75
|
+
[_: string]: any;
|
|
76
|
+
}, Trx = NoInfer<TrxNode<Space, Module, Job['#authn']>>, Msg = NoInfer<Job['#input']['#parsed']>, PreviousExtras = NoInfer<Job['#extra']>, C = NoInfer<Ctx>>($: $JobMethod<Trx, Msg, Extra, PreviousExtras, C>): JobBuilder<Space, Module, Job & {
|
|
77
|
+
"#extra": Job["#extra"] & Extra;
|
|
78
|
+
}, Ctx>;
|
|
79
|
+
/**
|
|
80
|
+
* A function that checks a given condition over the input and throws an exception;
|
|
81
|
+
* This assertion runs before the job method.
|
|
82
|
+
*
|
|
83
|
+
* @param { cond } A function which returns true or false
|
|
84
|
+
* @param { error } An error message or a function that makes one
|
|
85
|
+
*/
|
|
86
|
+
assert<Trx = NoInfer<TrxNode<Space, Module, Job['#authn']>>, Msg = NoInfer<Job['#input']['#parsed']>, Extras = NoInfer<Job['#extra']>, C = NoInfer<Ctx>>(condition: $JobAssert<Trx, Msg, Extras, C>): this;
|
|
87
|
+
/**
|
|
88
|
+
* The function called when the job is run.
|
|
89
|
+
*
|
|
90
|
+
* @param method A function which returns one of the output messages or the response message
|
|
91
|
+
*/
|
|
92
|
+
method<Trx = NoInfer<TrxNode<Space, Module, Job['#authn']>>, Msg = NoInfer<Job['#input']['#parsed']>, Extras = NoInfer<Job['#extra']>, C = NoInfer<Ctx>>(method: $JobMethod<Trx, Msg, Job['#output'], Extras, C>): this;
|
|
93
|
+
static build(node: JobBuilderNode, tree: ModuleTree, module: $Module): {
|
|
94
|
+
schema: $Job;
|
|
95
|
+
inlineMessages: Record<string, $Message>;
|
|
96
|
+
};
|
|
97
|
+
static buildInlines(node: ResolvedBuilderNode, tree: ModuleTree, module: $Module, config?: JobBuildConfig): {
|
|
98
|
+
inlineJobs: Record<string, $Job>;
|
|
99
|
+
nestedInlineMessages: Record<string, $Message>;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export type AnyJobBuilder = JobBuilder<any, any, any>;
|
|
103
|
+
export type JobBuilderNode = Omit<ResolvedBuilderNode, 'builder'> & {
|
|
104
|
+
builder: AnyJobBuilder;
|
|
105
|
+
schema?: $Job;
|
|
106
|
+
};
|
|
107
|
+
export type JobBuildConfig = {
|
|
108
|
+
[name: string]: {
|
|
109
|
+
ResourceJob?: {
|
|
110
|
+
idType?: 'string' | 'int' | null;
|
|
111
|
+
output: $BlockOutput;
|
|
112
|
+
defaultTrigger: $Message;
|
|
113
|
+
};
|
|
114
|
+
MachineJob?: {
|
|
115
|
+
input: $Dependency[];
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JobBuilder = void 0;
|
|
4
|
+
const job_schema_1 = require("./job.schema");
|
|
5
|
+
const block_builder_1 = require("../block.builder");
|
|
6
|
+
const dependency_1 = require("../../../engine/dependency");
|
|
7
|
+
const message_builder_1 = require("../../entities/message/message.builder");
|
|
8
|
+
const resource_job_builder_1 = require("./internal/resource_job.builder");
|
|
9
|
+
const machine_job_builder_1 = require("./internal/machine_job.builder");
|
|
10
|
+
const error_1 = require("../../../engine/data/error");
|
|
11
|
+
class JobBuilder extends block_builder_1.BlockBuilder {
|
|
12
|
+
constructor(module, name) {
|
|
13
|
+
super(module, 'job', name);
|
|
14
|
+
this.$b = 'job';
|
|
15
|
+
this.$j = 'Job';
|
|
16
|
+
this._extrasAndAsserts = [];
|
|
17
|
+
}
|
|
18
|
+
/* [Block] */
|
|
19
|
+
authn(...providers) {
|
|
20
|
+
return super.authn(...providers);
|
|
21
|
+
}
|
|
22
|
+
/* [Scope] */
|
|
23
|
+
scope(scope) {
|
|
24
|
+
this._scope = scope;
|
|
25
|
+
// Machine-scoped job
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
/* [Job] */
|
|
29
|
+
messages(def) {
|
|
30
|
+
return super.messages(def);
|
|
31
|
+
}
|
|
32
|
+
input(...def) {
|
|
33
|
+
return super._input(...def);
|
|
34
|
+
}
|
|
35
|
+
get output() {
|
|
36
|
+
return {
|
|
37
|
+
raw: this.outputRaw.bind(this),
|
|
38
|
+
msg: this.outputMsg.bind(this),
|
|
39
|
+
obj: this.outputObj.bind(this)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
outputRaw() {
|
|
43
|
+
// super.outputRaw()
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
outputMsg(...msgs) {
|
|
47
|
+
super.outputMsg();
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
outputObj(...objs) {
|
|
51
|
+
super.outputObj();
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/*
|
|
55
|
+
Extra
|
|
56
|
+
*/
|
|
57
|
+
/**
|
|
58
|
+
* A function that will build new fields on the input message to be
|
|
59
|
+
* consumed by the job.
|
|
60
|
+
*
|
|
61
|
+
* @param $ A function which returns an object to be assigned to the input.
|
|
62
|
+
*/
|
|
63
|
+
extra($) {
|
|
64
|
+
this._extrasAndAsserts.push({ extra: $ });
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/*
|
|
68
|
+
Assert
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* A function that checks a given condition over the input and throws an exception;
|
|
72
|
+
* This assertion runs before the job method.
|
|
73
|
+
*
|
|
74
|
+
* @param { cond } A function which returns true or false
|
|
75
|
+
* @param { error } An error message or a function that makes one
|
|
76
|
+
*/
|
|
77
|
+
assert(condition) {
|
|
78
|
+
this._extrasAndAsserts.push({ assert: condition });
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/*
|
|
82
|
+
Action
|
|
83
|
+
*/
|
|
84
|
+
/**
|
|
85
|
+
* The function called when the job is run.
|
|
86
|
+
*
|
|
87
|
+
* @param method A function which returns one of the output messages or the response message
|
|
88
|
+
*/
|
|
89
|
+
method(method) {
|
|
90
|
+
this._method = method;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
// Build
|
|
94
|
+
static build(node, tree, module) {
|
|
95
|
+
if (!node.builder._method) {
|
|
96
|
+
throw error_1.NesoiError.Builder.Job.NoMethod({ job: node.builder.name });
|
|
97
|
+
}
|
|
98
|
+
const input = node.builder._inputMsgs;
|
|
99
|
+
const scope = node.builder._scope ? dependency_1.$Tag.parse(node.builder._scope) : undefined;
|
|
100
|
+
node.schema = new job_schema_1.$Job(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._authn, input, node.builder._output, node.builder._extrasAndAsserts, node.builder._method, scope ? {
|
|
101
|
+
module: node.builder.module,
|
|
102
|
+
machine: scope.name,
|
|
103
|
+
} : undefined);
|
|
104
|
+
return {
|
|
105
|
+
schema: node.schema,
|
|
106
|
+
inlineMessages: message_builder_1.MessageBuilder.buildInlines(node, tree, module)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Build Inline
|
|
110
|
+
static buildInlines(node, tree, module, config) {
|
|
111
|
+
const nodeInlines = node.inlines.job || {};
|
|
112
|
+
const inlineJobs = {};
|
|
113
|
+
const nestedInlineMessages = {};
|
|
114
|
+
for (const name in nodeInlines || {}) {
|
|
115
|
+
const inline = nodeInlines[name];
|
|
116
|
+
const $j = inline.builder.$j;
|
|
117
|
+
if ($j === 'Job') {
|
|
118
|
+
const job = JobBuilder.build(inline, tree, module);
|
|
119
|
+
inlineJobs[name] = job.schema;
|
|
120
|
+
Object.assign(nestedInlineMessages, job.inlineMessages);
|
|
121
|
+
}
|
|
122
|
+
else if ($j === 'ResourceJob') {
|
|
123
|
+
const cfg = config[name].ResourceJob;
|
|
124
|
+
const job = resource_job_builder_1.ResourceJobBuilder.build(inline, tree, module, cfg.output, cfg.defaultTrigger, cfg.idType);
|
|
125
|
+
inlineJobs[name] = job.schema;
|
|
126
|
+
Object.assign(nestedInlineMessages, job.inlineMessages);
|
|
127
|
+
}
|
|
128
|
+
else if ($j === 'MachineJob') {
|
|
129
|
+
const cfg = config[name]?.MachineJob;
|
|
130
|
+
const job = machine_job_builder_1.MachineJobBuilder.build(inline, cfg?.input || []);
|
|
131
|
+
inlineJobs[name] = job;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return { inlineJobs, nestedInlineMessages };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.JobBuilder = JobBuilder;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { $Module, $Space } from "../../../schema";
|
|
2
|
+
import { $Job } from './job.schema';
|
|
3
|
+
import { Block } from '../block';
|
|
4
|
+
import { AnyMessage } from "../../entities/message/message";
|
|
5
|
+
import { Module } from "../../../engine/module";
|
|
6
|
+
import { TrxNode } from "../../../engine/transaction/trx_node";
|
|
7
|
+
export declare class Job<S extends $Space, M extends $Module, $ extends $Job> extends Block<S, M, $> {
|
|
8
|
+
module: Module<S, M>;
|
|
9
|
+
schema: $;
|
|
10
|
+
constructor(module: Module<S, M>, schema: $);
|
|
11
|
+
protected run(trx: TrxNode<S, M, $['#authn']>, msg: AnyMessage, _ctx?: Record<string, any>): Promise<$['#output']>;
|
|
12
|
+
}
|
|
13
|
+
export type AnyJob = Job<any, any, any>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Job = void 0;
|
|
7
|
+
const block_1 = require("../block");
|
|
8
|
+
const promise_1 = __importDefault(require("../../../engine/util/promise"));
|
|
9
|
+
const message_1 = require("../../entities/message/message");
|
|
10
|
+
const error_1 = require("../../../engine/data/error");
|
|
11
|
+
class Job extends block_1.Block {
|
|
12
|
+
constructor(module, schema) {
|
|
13
|
+
super('job', module, schema);
|
|
14
|
+
this.module = module;
|
|
15
|
+
this.schema = schema;
|
|
16
|
+
}
|
|
17
|
+
async run(trx, msg, _ctx = {}) {
|
|
18
|
+
const _msg = message_1.Message.clone(msg);
|
|
19
|
+
const extra = {};
|
|
20
|
+
const ctx = { trx, msg: _msg, extra, job: this.schema };
|
|
21
|
+
Object.assign(ctx, _ctx);
|
|
22
|
+
for (const i in this.schema.extrasAndAsserts) {
|
|
23
|
+
const def = this.schema.extrasAndAsserts[i];
|
|
24
|
+
// Extra
|
|
25
|
+
if ('extra' in def) {
|
|
26
|
+
const extraInput = await promise_1.default.solve(def.extra(ctx));
|
|
27
|
+
Object.assign(extra, extraInput);
|
|
28
|
+
}
|
|
29
|
+
// Condition
|
|
30
|
+
else {
|
|
31
|
+
const condValue = await promise_1.default.solve(def.assert(ctx));
|
|
32
|
+
if (condValue !== true) {
|
|
33
|
+
throw error_1.NesoiError.Job.ConditionUnmet({ job: this.schema.alias, error: condValue });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return this.schema.method(ctx);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Job = Job;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { $Block, $BlockOutput } from '../block.schema';
|
|
2
|
+
import { $Dependency } from "../../../engine/dependency";
|
|
3
|
+
import { JobExtrasAndAsserts } from './job.builder';
|
|
4
|
+
import { $ResourceJobScope } from './internal/resource_job.schema';
|
|
5
|
+
import { $MachineJobScope } from '../machine/machine.schema';
|
|
6
|
+
export type $JobAssert<Trx, Message, Extra = {}, Ctx = {}> = $JobMethod<Trx, Message, string | true, Extra, Ctx>;
|
|
7
|
+
export type $JobMethod<Trx, Message, O, Extra = never, Ctx = {}> = (ctx: {
|
|
8
|
+
trx: Trx;
|
|
9
|
+
msg: Message;
|
|
10
|
+
extra: Extra;
|
|
11
|
+
job: $Job;
|
|
12
|
+
} & Ctx) => O | Promise<O>;
|
|
13
|
+
export declare class $Job extends $Block {
|
|
14
|
+
module: string;
|
|
15
|
+
name: string;
|
|
16
|
+
alias: string;
|
|
17
|
+
authn: string[];
|
|
18
|
+
input: $Dependency[];
|
|
19
|
+
output: $BlockOutput | undefined;
|
|
20
|
+
extrasAndAsserts: JobExtrasAndAsserts;
|
|
21
|
+
method: $JobMethod<any, any, any, any>;
|
|
22
|
+
scope?: ($MachineJobScope | $ResourceJobScope) | undefined;
|
|
23
|
+
$t: "job";
|
|
24
|
+
'#extra': unknown;
|
|
25
|
+
constructor(module: string, name: string, alias: string, authn: string[], input: $Dependency[], output: $BlockOutput | undefined, extrasAndAsserts: JobExtrasAndAsserts, method: $JobMethod<any, any, any, any>, scope?: ($MachineJobScope | $ResourceJobScope) | undefined);
|
|
26
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$Job = void 0;
|
|
4
|
+
const block_schema_1 = require("../block.schema");
|
|
5
|
+
class $Job extends block_schema_1.$Block {
|
|
6
|
+
constructor(module, name, alias, authn, input, output, extrasAndAsserts, method, scope) {
|
|
7
|
+
super(module, name, alias, authn, input, output);
|
|
8
|
+
this.module = module;
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.alias = alias;
|
|
11
|
+
this.authn = authn;
|
|
12
|
+
this.input = input;
|
|
13
|
+
this.output = output;
|
|
14
|
+
this.extrasAndAsserts = extrasAndAsserts;
|
|
15
|
+
this.method = method;
|
|
16
|
+
this.scope = scope;
|
|
17
|
+
this.$t = 'job';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.$Job = $Job;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { $Module, $Space } from "../../../schema";
|
|
2
|
+
import { $Machine, $MachineLogFn } from './machine.schema';
|
|
3
|
+
import { MultiMessageTemplateDef } from "../../entities/message/template/message_template.builder";
|
|
4
|
+
import { $MessageInfer } from "../../entities/message/message.infer";
|
|
5
|
+
import { MachineStateDef } from './machine_state.builder';
|
|
6
|
+
import { BlockBuilder } from '../block.builder';
|
|
7
|
+
import { Overlay } from "../../../engine/util/type";
|
|
8
|
+
import { ModuleTree } from "../../../engine/tree";
|
|
9
|
+
import { ResolvedBuilderNode } from "../../../engine/dependency";
|
|
10
|
+
export declare class MachineBuilder<Space extends $Space, Module extends $Module, Name extends string, $ extends $Machine = $Machine> extends BlockBuilder<Space, Module, 'machine'> {
|
|
11
|
+
$b: "machine";
|
|
12
|
+
private _buckets;
|
|
13
|
+
private _stateField;
|
|
14
|
+
private _stateAliasField?;
|
|
15
|
+
private _states;
|
|
16
|
+
private _logger?;
|
|
17
|
+
constructor(module: string, name: Name);
|
|
18
|
+
authn<U extends keyof Space['authnUsers']>(...providers: U[]): MachineBuilder<Space, Module, Name, Overlay<$, {
|
|
19
|
+
"#authn": { [K in U]: Space["authnUsers"][K]; };
|
|
20
|
+
}>>;
|
|
21
|
+
messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): MachineBuilder<Space, Overlay<Module, {
|
|
22
|
+
messages: Overlay<Module["messages"], { [K in keyof ReturnType<Def> as `${Name}${K extends "" ? "" : "."}${K & string}`]: $MessageInfer<`${Name}${K extends "" ? "" : "."}${K & string}`, ($: any) => ReturnType<Def>[K], ReturnType<Def>[K], import("../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T ? { [K_1 in keyof T]: ReturnType<Def>[K][K_1] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
23
|
+
path: `${K_1 & string}${keyof I & string}`;
|
|
24
|
+
data: I[keyof I];
|
|
25
|
+
opt: Opt[0];
|
|
26
|
+
nul: Nul[0];
|
|
27
|
+
} : never; } : never>, import("../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T_1 ? { [K_2 in keyof T_1]: ReturnType<Def>[K][K_2] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
28
|
+
path: `${K_2 & string}${keyof O & string}`;
|
|
29
|
+
data: O[keyof O];
|
|
30
|
+
opt: Opt_1[1];
|
|
31
|
+
nul: Nul_1[1];
|
|
32
|
+
} : never; } : never>>; }>;
|
|
33
|
+
}>, Name, $>;
|
|
34
|
+
bucket<M extends keyof Module['buckets']>(names: M | M[]): MachineBuilder<Space, Module, Name, $ & {
|
|
35
|
+
"#data": Module["buckets"][M]["#data"];
|
|
36
|
+
}>;
|
|
37
|
+
stateField(key: {
|
|
38
|
+
[K in keyof $['#data']]: $['#data'][K] extends string ? K : never;
|
|
39
|
+
}[keyof $['#data']]): this;
|
|
40
|
+
stateAliasField(key: {
|
|
41
|
+
[K in keyof $['#data']]: $['#data'][K] extends string ? K : never;
|
|
42
|
+
}[keyof $['#data']]): this;
|
|
43
|
+
state<Name extends string, Def extends MachineStateDef<Space, Module, $, $['states'][Name]>>(name: Name, $?: Def): this;
|
|
44
|
+
logger($: $MachineLogFn<$>): this;
|
|
45
|
+
static build(node: MachineBuilderNode, tree: ModuleTree, module: $Module): {
|
|
46
|
+
schema: $Machine;
|
|
47
|
+
inlineMessages: {
|
|
48
|
+
[x: string]: import("../..").$Message;
|
|
49
|
+
};
|
|
50
|
+
inlineJobs: Record<string, import("../..").$Job>;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export type AnyMachineBuilder = MachineBuilder<any, any, any, any>;
|
|
54
|
+
export type MachineDef = ($: AnyMachineBuilder) => any;
|
|
55
|
+
export type MachineBuilderNode = Omit<ResolvedBuilderNode, 'builder'> & {
|
|
56
|
+
builder: AnyMachineBuilder;
|
|
57
|
+
schema?: $Machine;
|
|
58
|
+
};
|