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,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceBuilder = void 0;
|
|
4
|
+
const resource_schema_1 = require("./resource.schema");
|
|
5
|
+
const resource_job_builder_1 = require("../job/internal/resource_job.builder");
|
|
6
|
+
const block_builder_1 = require("../block.builder");
|
|
7
|
+
const error_1 = require("../../../engine/data/error");
|
|
8
|
+
const message_builder_1 = require("../../entities/message/message.builder");
|
|
9
|
+
const bucket_model_convert_1 = require("../../entities/bucket/model/bucket_model.convert");
|
|
10
|
+
const dependency_1 = require("../../../engine/dependency");
|
|
11
|
+
const name_helpers_1 = require("../../../compiler/helpers/name_helpers");
|
|
12
|
+
const job_builder_1 = require("../job/job.builder");
|
|
13
|
+
const resource_1 = require("./resource");
|
|
14
|
+
const resource_job_1 = require("../job/internal/resource_job");
|
|
15
|
+
class ResourceBuilder extends block_builder_1.BlockBuilder {
|
|
16
|
+
constructor(module, name) {
|
|
17
|
+
super(module, 'resource', name);
|
|
18
|
+
this.$b = 'resource';
|
|
19
|
+
this._jobs = {};
|
|
20
|
+
}
|
|
21
|
+
/* [Block] */
|
|
22
|
+
authn(...providers) {
|
|
23
|
+
return super.authn(...providers);
|
|
24
|
+
}
|
|
25
|
+
/* Bucket */
|
|
26
|
+
bucket(name) {
|
|
27
|
+
this._bucket = new dependency_1.$Dependency(this.module, 'bucket', name);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/* Read */
|
|
31
|
+
view(...views) {
|
|
32
|
+
const name = `${this.name}.view`;
|
|
33
|
+
const alias = `View ${this._alias || this.name}`;
|
|
34
|
+
const jobBuilder = new resource_job_builder_1.ResourceJobBuilder(this.module, name, this._bucket.refName, 'view', alias, resource_1.Resource.view, this._authn)
|
|
35
|
+
.input($ => ({
|
|
36
|
+
view: $.enum(views).default(views[0]),
|
|
37
|
+
id: $.string_or_number.optional,
|
|
38
|
+
perPage: $.int.default(10),
|
|
39
|
+
page: $.int.default(0),
|
|
40
|
+
orderBy: $.string.optional,
|
|
41
|
+
orderDesc: $.boolean.default(false)
|
|
42
|
+
}))
|
|
43
|
+
.prepare(resource_job_1.ResourceJob.prepareMsgData);
|
|
44
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
45
|
+
module: this.module,
|
|
46
|
+
type: 'job',
|
|
47
|
+
name: name,
|
|
48
|
+
builder: jobBuilder,
|
|
49
|
+
isInline: true,
|
|
50
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
51
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
52
|
+
}));
|
|
53
|
+
this._jobs.view = new dependency_1.$Dependency(this.module, 'job', name);
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
query(...views) {
|
|
57
|
+
const name = `${this.name}.query`;
|
|
58
|
+
const alias = `Query ${this._alias || this.name}`;
|
|
59
|
+
const jobBuilder = new resource_job_builder_1.ResourceJobBuilder(this.module, name, this._bucket.refName, 'query', alias, resource_1.Resource.query, this._authn)
|
|
60
|
+
.input($ => ({
|
|
61
|
+
view: $.enum(views).default(views[0]),
|
|
62
|
+
query: $.dict($.any),
|
|
63
|
+
perPage: $.int.default(10),
|
|
64
|
+
page: $.int.default(0),
|
|
65
|
+
orderBy: $.string.optional,
|
|
66
|
+
orderDesc: $.boolean.default(false)
|
|
67
|
+
}))
|
|
68
|
+
.prepare(resource_job_1.ResourceJob.prepareMsgData);
|
|
69
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
70
|
+
module: this.module,
|
|
71
|
+
type: 'job',
|
|
72
|
+
name: name,
|
|
73
|
+
builder: jobBuilder,
|
|
74
|
+
isInline: true,
|
|
75
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
76
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
77
|
+
}));
|
|
78
|
+
this._jobs.query = new dependency_1.$Dependency(this.module, 'job', name);
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/* Create/Update/Delete */
|
|
82
|
+
create($) {
|
|
83
|
+
const name = `${this.name}.create`;
|
|
84
|
+
const alias = `Create ${this._alias || this.name}`;
|
|
85
|
+
const jobBuilder = new resource_job_builder_1.ResourceJobBuilder(this.module, name, this._bucket.refName, 'create', alias, resource_1.Resource.create, this._authn)
|
|
86
|
+
.prepare(resource_job_1.ResourceJob.prepareMsgData);
|
|
87
|
+
$(jobBuilder);
|
|
88
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
89
|
+
module: this.module,
|
|
90
|
+
type: 'job',
|
|
91
|
+
name: name,
|
|
92
|
+
builder: jobBuilder,
|
|
93
|
+
isInline: true,
|
|
94
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
95
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
96
|
+
}));
|
|
97
|
+
this._jobs.create = new dependency_1.$Dependency(this.module, 'job', name);
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
update($) {
|
|
101
|
+
const name = `${this.name}.update`;
|
|
102
|
+
const alias = `Update ${this._alias || this.name}`;
|
|
103
|
+
const jobBuilder = new resource_job_builder_1.ResourceJobBuilder(this.module, name, this._bucket.refName, 'update', alias, resource_1.Resource.update, this._authn, {
|
|
104
|
+
id: ['string_or_number', undefined]
|
|
105
|
+
})
|
|
106
|
+
.prepare(resource_job_1.ResourceJob.prepareMsgData);
|
|
107
|
+
$(jobBuilder);
|
|
108
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
109
|
+
module: this.module,
|
|
110
|
+
type: 'job',
|
|
111
|
+
name: name,
|
|
112
|
+
builder: jobBuilder,
|
|
113
|
+
isInline: true,
|
|
114
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
115
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
116
|
+
}));
|
|
117
|
+
this._jobs.update = new dependency_1.$Dependency(this.module, 'job', name);
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
delete($) {
|
|
121
|
+
const name = `${this.name}.delete`;
|
|
122
|
+
const alias = `Delete ${this._alias || this.name}`;
|
|
123
|
+
const jobBuilder = new resource_job_builder_1.ResourceJobBuilder(this.module, name, this._bucket.refName, 'delete', alias, resource_1.Resource.delete, this._authn, {
|
|
124
|
+
id: ['string_or_number', undefined]
|
|
125
|
+
})
|
|
126
|
+
.prepare(resource_job_1.ResourceJob.prepareTrue);
|
|
127
|
+
$(jobBuilder);
|
|
128
|
+
this._inlineNodes.push(new dependency_1.BuilderNode({
|
|
129
|
+
module: this.module,
|
|
130
|
+
type: 'job',
|
|
131
|
+
name: name,
|
|
132
|
+
builder: jobBuilder,
|
|
133
|
+
isInline: true,
|
|
134
|
+
filepath: [], // This is added later by Treeshake.blockInlineNodes()
|
|
135
|
+
dependencies: [] // This is added later by Treeshake.*()
|
|
136
|
+
}));
|
|
137
|
+
this._jobs.delete = new dependency_1.$Dependency(this.module, 'job', name);
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
// Build
|
|
141
|
+
static build(node, tree, module) {
|
|
142
|
+
const bucket = tree.getSchema(node.builder._bucket);
|
|
143
|
+
if (!bucket) {
|
|
144
|
+
throw error_1.NesoiError.Builder.Resource.BucketNotFound(node.builder.name, node.builder._bucket.refName);
|
|
145
|
+
}
|
|
146
|
+
const model = bucket.model;
|
|
147
|
+
const modelName = name_helpers_1.NameHelpers.nameLowToHigh(bucket.name);
|
|
148
|
+
const inlineMsgs = {};
|
|
149
|
+
const inlineJobs = {};
|
|
150
|
+
const inlineJobsConfig = {};
|
|
151
|
+
// view
|
|
152
|
+
const viewDep = node.builder._jobs.view;
|
|
153
|
+
if (viewDep) {
|
|
154
|
+
inlineJobsConfig[viewDep.name] = {
|
|
155
|
+
ResourceJob: {
|
|
156
|
+
output: { raw: modelName + ' | ' + modelName + '[]' },
|
|
157
|
+
defaultTrigger: undefined
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// query
|
|
162
|
+
const queryDep = node.builder._jobs.query;
|
|
163
|
+
if (queryDep) {
|
|
164
|
+
inlineJobsConfig[queryDep.name] = {
|
|
165
|
+
ResourceJob: {
|
|
166
|
+
idType: null,
|
|
167
|
+
output: { raw: modelName + '[]' },
|
|
168
|
+
defaultTrigger: undefined
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// create
|
|
173
|
+
const createDep = node.builder._jobs.create;
|
|
174
|
+
if (createDep) {
|
|
175
|
+
const defaultTrigger = (0, bucket_model_convert_1.convertToMessage)(module.name, model, createDep.name, `Create ${node.builder._alias || node.builder.name}`, [], ['id']);
|
|
176
|
+
inlineJobsConfig[createDep.name] = {
|
|
177
|
+
ResourceJob: {
|
|
178
|
+
idType: null,
|
|
179
|
+
output: { raw: modelName },
|
|
180
|
+
defaultTrigger
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// update
|
|
185
|
+
const updateDep = node.builder._jobs.update;
|
|
186
|
+
if (updateDep) {
|
|
187
|
+
const defaultTrigger = (0, bucket_model_convert_1.convertToMessage)(module.name, model, updateDep.name, `Update ${node.builder._alias || node.builder.name}`, [], []);
|
|
188
|
+
inlineJobsConfig[updateDep.name] = {
|
|
189
|
+
ResourceJob: {
|
|
190
|
+
idType: model.fields.id.type,
|
|
191
|
+
output: { raw: modelName },
|
|
192
|
+
defaultTrigger
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// delete
|
|
197
|
+
const deleteDep = node.builder._jobs.delete;
|
|
198
|
+
if (deleteDep) {
|
|
199
|
+
const defaultTrigger = (0, bucket_model_convert_1.convertToMessage)(module.name, model, deleteDep.name, `Delete ${node.builder._alias || node.builder.name}`, ['id'], []);
|
|
200
|
+
inlineJobsConfig[deleteDep.name] = {
|
|
201
|
+
ResourceJob: {
|
|
202
|
+
idType: model.fields.id.type,
|
|
203
|
+
output: { raw: 'void' },
|
|
204
|
+
defaultTrigger
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
node.schema = new resource_schema_1.$Resource(node.builder.module, node.builder.name, node.builder._alias || node.builder.name, node.builder._authn, node.builder._bucket, node.builder._jobs);
|
|
209
|
+
const jobs = job_builder_1.JobBuilder.buildInlines(node, tree, module, inlineJobsConfig);
|
|
210
|
+
return {
|
|
211
|
+
schema: node.schema,
|
|
212
|
+
inlineMessages: {
|
|
213
|
+
...message_builder_1.MessageBuilder.buildInlines(node, tree, module),
|
|
214
|
+
...jobs.nestedInlineMessages,
|
|
215
|
+
...inlineMsgs,
|
|
216
|
+
},
|
|
217
|
+
inlineJobs: {
|
|
218
|
+
...jobs.inlineJobs,
|
|
219
|
+
...inlineJobs
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.ResourceBuilder = ResourceBuilder;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { $Module, $Space } from "../../../schema";
|
|
2
|
+
import { $Resource } from './resource.schema';
|
|
3
|
+
import { Block } from "../block";
|
|
4
|
+
import { NesoiObj } from "../../../engine/data/obj";
|
|
5
|
+
import { AnyMessage } from "../../entities/message/message";
|
|
6
|
+
import { Module } from "../../../engine/module";
|
|
7
|
+
import { AnyTrxNode, TrxNode } from "../../../engine/transaction/trx_node";
|
|
8
|
+
import { $Dependency } from "../../../engine/dependency";
|
|
9
|
+
import { ResourceAssertions } from '../job/internal/resource_job.builder';
|
|
10
|
+
import { $Job } from '../job/job.schema';
|
|
11
|
+
export declare class Resource<S extends $Space, M extends $Module, $ extends $Resource> extends Block<S, M, $> {
|
|
12
|
+
module: Module<S, M>;
|
|
13
|
+
schema: $;
|
|
14
|
+
constructor(module: Module<S, M>, schema: $);
|
|
15
|
+
protected run(trx: TrxNode<S, M, $['#authn']>, msg: AnyMessage): Promise<unknown>;
|
|
16
|
+
private view;
|
|
17
|
+
private query;
|
|
18
|
+
private create;
|
|
19
|
+
private update;
|
|
20
|
+
private delete;
|
|
21
|
+
static view($: {
|
|
22
|
+
trx: AnyTrxNode;
|
|
23
|
+
msg: any;
|
|
24
|
+
job: $Job;
|
|
25
|
+
}): Promise<any>;
|
|
26
|
+
static query($: {
|
|
27
|
+
trx: AnyTrxNode;
|
|
28
|
+
msg: any;
|
|
29
|
+
job: $Job;
|
|
30
|
+
}): Promise<any[]>;
|
|
31
|
+
static create($: {
|
|
32
|
+
trx: AnyTrxNode;
|
|
33
|
+
obj: any;
|
|
34
|
+
job: $Job;
|
|
35
|
+
}): Promise<any>;
|
|
36
|
+
static update($: {
|
|
37
|
+
trx: AnyTrxNode;
|
|
38
|
+
obj: any;
|
|
39
|
+
job: $Job;
|
|
40
|
+
}): Promise<any>;
|
|
41
|
+
static delete($: {
|
|
42
|
+
trx: AnyTrxNode;
|
|
43
|
+
obj: any;
|
|
44
|
+
job: $Job;
|
|
45
|
+
}): Promise<void> | undefined;
|
|
46
|
+
static assertThat(trx: AnyTrxNode, bucket: $Dependency, obj: NesoiObj | undefined, type: keyof ResourceAssertions<any>, arg: any): Promise<boolean | undefined>;
|
|
47
|
+
}
|
|
48
|
+
export type AnyResource = Resource<any, any, any>;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Resource = void 0;
|
|
4
|
+
const block_1 = require("../block");
|
|
5
|
+
const trx_node_1 = require("../../../engine/transaction/trx_node");
|
|
6
|
+
const error_1 = require("../../../engine/data/error");
|
|
7
|
+
class Resource extends block_1.Block {
|
|
8
|
+
constructor(module, schema) {
|
|
9
|
+
super('resource', module, schema);
|
|
10
|
+
this.module = module;
|
|
11
|
+
this.schema = schema;
|
|
12
|
+
}
|
|
13
|
+
async run(trx, msg) {
|
|
14
|
+
if (msg.$.endsWith('.view')) {
|
|
15
|
+
return this.view(trx, msg);
|
|
16
|
+
}
|
|
17
|
+
if (msg.$.endsWith('.query')) {
|
|
18
|
+
return this.query(trx, msg);
|
|
19
|
+
}
|
|
20
|
+
if (msg.$.endsWith('.create')) {
|
|
21
|
+
return this.create(trx, msg);
|
|
22
|
+
}
|
|
23
|
+
if (msg.$.endsWith('.update')) {
|
|
24
|
+
return this.update(trx, msg);
|
|
25
|
+
}
|
|
26
|
+
if (msg.$.endsWith('.delete')) {
|
|
27
|
+
return this.delete(trx, msg);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async view(trx, msg) {
|
|
31
|
+
if (!this.schema.jobs.view) {
|
|
32
|
+
throw error_1.NesoiError.Resource.ViewNotSupported(this.schema);
|
|
33
|
+
}
|
|
34
|
+
return trx.job(this.schema.jobs.view.refName).forward(msg);
|
|
35
|
+
}
|
|
36
|
+
async query(trx, msg) {
|
|
37
|
+
// const q = $BucketQuery.parse(msg.query);
|
|
38
|
+
// const node = trx.bucket(this.schema.bucket.refName).query(msg.view, q);
|
|
39
|
+
// if (msg.orderBy) {
|
|
40
|
+
// node.orderBy(msg.orderBy as keyof NesoiObj, msg.orderDesc ? 'desc' : 'asc');
|
|
41
|
+
// }
|
|
42
|
+
// return node.page({
|
|
43
|
+
// perPage: msg.perPage,
|
|
44
|
+
// page: msg.page
|
|
45
|
+
// });
|
|
46
|
+
if (!this.schema.jobs.query) {
|
|
47
|
+
throw error_1.NesoiError.Resource.QueryNotSupported(this.schema);
|
|
48
|
+
}
|
|
49
|
+
return trx.job(this.schema.jobs.query.refName).forward(msg);
|
|
50
|
+
}
|
|
51
|
+
async create(trx, msg) {
|
|
52
|
+
if (!this.schema.jobs.create) {
|
|
53
|
+
throw error_1.NesoiError.Resource.CreateNotSupported(this.schema);
|
|
54
|
+
}
|
|
55
|
+
return trx_node_1.TrxNode.jobWithCustomCtx(trx, this.schema.jobs.create.refName, {
|
|
56
|
+
that: (type, arg) => Resource.assertThat(trx, this.schema.bucket, undefined, type, arg)
|
|
57
|
+
}).forward(msg);
|
|
58
|
+
}
|
|
59
|
+
async update(trx, msg) {
|
|
60
|
+
if (!this.schema.jobs.update) {
|
|
61
|
+
throw error_1.NesoiError.Resource.UpdateNotSupported(this.schema);
|
|
62
|
+
}
|
|
63
|
+
const obj = await trx.bucket(this.schema.bucket.refName).readOneOrFail(msg.id);
|
|
64
|
+
return trx_node_1.TrxNode.jobWithCustomCtx(trx, this.schema.jobs.update.refName, {
|
|
65
|
+
that: (type, arg) => Resource.assertThat(trx, this.schema.bucket, obj, type, arg),
|
|
66
|
+
obj,
|
|
67
|
+
})
|
|
68
|
+
.forward(msg);
|
|
69
|
+
}
|
|
70
|
+
async delete(trx, msg) {
|
|
71
|
+
if (!this.schema.jobs.delete) {
|
|
72
|
+
throw error_1.NesoiError.Resource.DeleteNotSupported(this.schema);
|
|
73
|
+
}
|
|
74
|
+
const obj = await trx.bucket(this.schema.bucket.refName).readOneOrFail(msg.id);
|
|
75
|
+
return trx_node_1.TrxNode.jobWithCustomCtx(trx, this.schema.jobs.delete.refName, {
|
|
76
|
+
that: (type, arg) => Resource.assertThat(trx, this.schema.bucket, obj, type, arg),
|
|
77
|
+
obj,
|
|
78
|
+
})
|
|
79
|
+
.forward(msg);
|
|
80
|
+
}
|
|
81
|
+
static view($) {
|
|
82
|
+
const scope = $.job.scope;
|
|
83
|
+
return $.msg.id
|
|
84
|
+
? $.trx.bucket(scope.bucket).viewOneOrFail($.msg.id, $.msg.view)
|
|
85
|
+
: $.trx.bucket(scope.bucket).viewAll($.msg.view);
|
|
86
|
+
}
|
|
87
|
+
static query($) {
|
|
88
|
+
const scope = $.job.scope;
|
|
89
|
+
return $.trx.bucket(scope.bucket)
|
|
90
|
+
.query($.msg.query).all();
|
|
91
|
+
}
|
|
92
|
+
static create($) {
|
|
93
|
+
const scope = $.job.scope;
|
|
94
|
+
return $.trx.bucket(scope.bucket)
|
|
95
|
+
.create($.obj);
|
|
96
|
+
}
|
|
97
|
+
static update($) {
|
|
98
|
+
const scope = $.job.scope;
|
|
99
|
+
return $.trx.bucket(scope.bucket)
|
|
100
|
+
.patch($.obj);
|
|
101
|
+
}
|
|
102
|
+
static delete($) {
|
|
103
|
+
const scope = $.job.scope;
|
|
104
|
+
if (!$.obj) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
return $.trx.bucket(scope.bucket)
|
|
108
|
+
.deleteOrFail($.obj.id);
|
|
109
|
+
}
|
|
110
|
+
// Custom assertions
|
|
111
|
+
static async assertThat(trx, bucket, obj, type, arg) {
|
|
112
|
+
if (type === 'query is empty') {
|
|
113
|
+
return !(await trx.bucket(bucket.refName)
|
|
114
|
+
.query(arg)
|
|
115
|
+
.first());
|
|
116
|
+
}
|
|
117
|
+
if (type === 'has no link') {
|
|
118
|
+
if (!obj)
|
|
119
|
+
return true;
|
|
120
|
+
return !(await trx.bucket(bucket.refName)
|
|
121
|
+
.hasLink(obj.id, arg));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Resource = Resource;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { $Block } from "../block.schema";
|
|
2
|
+
import { $Bucket } from "../../entities/bucket/bucket.schema";
|
|
3
|
+
import { $Message } from "../../entities/message/message.schema";
|
|
4
|
+
import { $Dependency } from "../../../engine/dependency";
|
|
5
|
+
export declare class $Resource extends $Block {
|
|
6
|
+
module: string;
|
|
7
|
+
name: string;
|
|
8
|
+
alias: string;
|
|
9
|
+
authn: string[];
|
|
10
|
+
bucket: $Dependency;
|
|
11
|
+
jobs: {
|
|
12
|
+
view?: $Dependency;
|
|
13
|
+
query?: $Dependency;
|
|
14
|
+
create?: $Dependency;
|
|
15
|
+
update?: $Dependency;
|
|
16
|
+
delete?: $Dependency;
|
|
17
|
+
};
|
|
18
|
+
$t: "resource";
|
|
19
|
+
'#bucket': $Bucket;
|
|
20
|
+
'#input.view': $Message;
|
|
21
|
+
'#input.query': $Message;
|
|
22
|
+
'#input.create': $Message;
|
|
23
|
+
'#input.update': $Message;
|
|
24
|
+
'#input.delete': $Message;
|
|
25
|
+
constructor(module: string, name: string, alias: string, authn: string[], bucket: $Dependency, jobs: {
|
|
26
|
+
view?: $Dependency;
|
|
27
|
+
query?: $Dependency;
|
|
28
|
+
create?: $Dependency;
|
|
29
|
+
update?: $Dependency;
|
|
30
|
+
delete?: $Dependency;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$Resource = void 0;
|
|
4
|
+
const block_schema_1 = require("../block.schema");
|
|
5
|
+
const dependency_1 = require("../../../engine/dependency");
|
|
6
|
+
class $Resource extends block_schema_1.$Block {
|
|
7
|
+
constructor(module, name, alias, authn, bucket, jobs) {
|
|
8
|
+
const input = [];
|
|
9
|
+
if (jobs.view)
|
|
10
|
+
input.push(new dependency_1.$Dependency(module, 'message', jobs.view.name));
|
|
11
|
+
if (jobs.query)
|
|
12
|
+
input.push(new dependency_1.$Dependency(module, 'message', jobs.query.name));
|
|
13
|
+
if (jobs.create)
|
|
14
|
+
input.push(new dependency_1.$Dependency(module, 'message', jobs.create.name));
|
|
15
|
+
if (jobs.update)
|
|
16
|
+
input.push(new dependency_1.$Dependency(module, 'message', jobs.update.name));
|
|
17
|
+
if (jobs.delete)
|
|
18
|
+
input.push(new dependency_1.$Dependency(module, 'message', jobs.delete.name));
|
|
19
|
+
// TODO: Input dependencies
|
|
20
|
+
super(module, name, alias, authn, input, {});
|
|
21
|
+
this.module = module;
|
|
22
|
+
this.name = name;
|
|
23
|
+
this.alias = alias;
|
|
24
|
+
this.authn = authn;
|
|
25
|
+
this.bucket = bucket;
|
|
26
|
+
this.jobs = jobs;
|
|
27
|
+
this.$t = 'resource';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.$Resource = $Resource;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { $Module, $Space } from "../../../schema";
|
|
2
|
+
import { $Resource } from './resource.schema';
|
|
3
|
+
import { NesoiObjId, UndefinedToOptional } from "../../../engine/data/obj";
|
|
4
|
+
import { ResourceJobDef } from '../job/internal/resource_job.builder';
|
|
5
|
+
import { $Message } from "../../entities/message/message.schema";
|
|
6
|
+
import { Overlay } from "../../../engine/util/type";
|
|
7
|
+
export type asResourceCreateJob<S extends $Space, Module extends keyof S['modules'], Res extends keyof S['modules'][Module]['resources'], M extends $Module = S['modules'][Module], $ extends $Resource = M['resources'][Res], Response extends Record<string, any> = UndefinedToOptional<Omit<$['#bucket']['#data'], 'id'>>, MsgName extends string = `${$['name']}.create`, MsgData extends Record<string, any> = Omit<$['#bucket']['#data'], 'id'>, DefaultTrigger extends $Message = Overlay<$Message, {
|
|
8
|
+
$: MsgName;
|
|
9
|
+
'#raw': MsgData['#input'] & {
|
|
10
|
+
$: MsgData['$'];
|
|
11
|
+
};
|
|
12
|
+
'#parsed': MsgData['#output'] & {
|
|
13
|
+
$: MsgData['$'];
|
|
14
|
+
};
|
|
15
|
+
fields: any;
|
|
16
|
+
}>> = ResourceJobDef<S, M, MsgName, Response, $['#authn'], $['#bucket'], DefaultTrigger>;
|
|
17
|
+
export type asResourceUpdateJob<S extends $Space, Module extends keyof S['modules'], Res extends keyof S['modules'][Module]['resources'], M extends $Module = S['modules'][Module], $ extends $Resource = M['resources'][Res], Response extends Record<string, any> = UndefinedToOptional<Omit<$['#bucket']['#data'], 'id'>>, MsgName extends string = `${$['name']}.update`, MsgData extends Record<string, any> = $['#bucket']['#data'], DefaultTrigger extends $Message = Overlay<$Message, {
|
|
18
|
+
$: MsgName;
|
|
19
|
+
'#raw': MsgData['#input'] & {
|
|
20
|
+
$: MsgData['$'];
|
|
21
|
+
};
|
|
22
|
+
'#parsed': MsgData['#output'] & {
|
|
23
|
+
$: MsgData['$'];
|
|
24
|
+
};
|
|
25
|
+
fields: any;
|
|
26
|
+
}>> = ResourceJobDef<S, M, MsgName, Response, $['#authn'], $['#bucket'], DefaultTrigger>;
|
|
27
|
+
export type asResourceDeleteJob<S extends $Space, Module extends keyof S['modules'], Res extends keyof S['modules'][Module]['resources'], M extends $Module = S['modules'][Module], $ extends $Resource = M['resources'][Res], MsgName extends string = `${$['name']}.update`, MsgData extends Record<string, any> = $['#bucket']['#data'], DefaultTrigger extends $Message = Overlay<$Message, {
|
|
28
|
+
$: MsgName;
|
|
29
|
+
'#raw': MsgData['#input'] & {
|
|
30
|
+
$: MsgData['$'];
|
|
31
|
+
};
|
|
32
|
+
'#parsed': MsgData['#output'] & {
|
|
33
|
+
$: MsgData['$'];
|
|
34
|
+
};
|
|
35
|
+
fields: any;
|
|
36
|
+
}>> = ResourceJobDef<S, M, MsgName, boolean, $['#authn'], $['#bucket'], DefaultTrigger, {
|
|
37
|
+
id: NesoiObjId;
|
|
38
|
+
}>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ControllerAdapter } from './controller_adapter';
|
|
2
|
+
import { ControllerEndpoint } from '../controller';
|
|
3
|
+
import { $ControllerDomain, $ControllerEndpoint, $ControllerGroup } from '../controller.schema';
|
|
4
|
+
export type ControllerEndpointPath = ($ControllerDomain | $ControllerGroup | $ControllerEndpoint)[];
|
|
5
|
+
export declare class CLIControllerAdapter extends ControllerAdapter {
|
|
6
|
+
endpoints: Record<string, ControllerEndpoint<$ControllerEndpoint>>;
|
|
7
|
+
protected makeEndpoint(path: string, schema: $ControllerEndpoint): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLIControllerAdapter = void 0;
|
|
4
|
+
const controller_adapter_1 = require("./controller_adapter");
|
|
5
|
+
const controller_1 = require("../controller");
|
|
6
|
+
const log_1 = require("../../../../engine/util/log");
|
|
7
|
+
class CLIControllerAdapter extends controller_adapter_1.ControllerAdapter {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.endpoints = {};
|
|
11
|
+
}
|
|
12
|
+
makeEndpoint(path, schema) {
|
|
13
|
+
this.endpoints[path] = new controller_1.ControllerEndpoint(schema, this, path);
|
|
14
|
+
log_1.Log.debug('controller', this.schema.name, `Bound endpoint '${path}' to '${schema.target.tag}'`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.CLIControllerAdapter = CLIControllerAdapter;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
2
|
+
import { $Controller, $ControllerDomain, $ControllerEndpoint, $ControllerGroup } from '../controller.schema';
|
|
3
|
+
import { AnyDaemon } from "../../../../engine/daemon";
|
|
4
|
+
export type ControllerEndpointPath = ($ControllerDomain | $ControllerGroup | $ControllerEndpoint)[];
|
|
5
|
+
export declare abstract class ControllerAdapter {
|
|
6
|
+
protected schema: $Controller;
|
|
7
|
+
protected daemon?: AnyDaemon;
|
|
8
|
+
constructor(schema: $Controller);
|
|
9
|
+
trx(fn: (trx: AnyTrxNode) => Promise<any>): Promise<import("../../../../engine/transaction/trx").TrxStatus<any>>;
|
|
10
|
+
bind(daemon: AnyDaemon): void;
|
|
11
|
+
protected abstract makeEndpoint(path: string, schema: $ControllerEndpoint): void;
|
|
12
|
+
protected makeGroup(group: $ControllerGroup, root?: ControllerEndpointPath): void;
|
|
13
|
+
protected makePath(schema: $Controller, path: ControllerEndpointPath): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ControllerAdapter = void 0;
|
|
4
|
+
class ControllerAdapter {
|
|
5
|
+
constructor(schema) {
|
|
6
|
+
this.schema = schema;
|
|
7
|
+
}
|
|
8
|
+
trx(fn) {
|
|
9
|
+
if (!this.daemon) {
|
|
10
|
+
throw new Error('Controller not bound to a daemon');
|
|
11
|
+
}
|
|
12
|
+
return this.daemon.trx(this.schema.module).run(fn);
|
|
13
|
+
}
|
|
14
|
+
bind(daemon) {
|
|
15
|
+
this.daemon = daemon;
|
|
16
|
+
for (const d in this.schema.domains) {
|
|
17
|
+
const domain = this.schema.domains[d];
|
|
18
|
+
this.makeGroup(domain, [domain]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
makeGroup(group, root = []) {
|
|
22
|
+
for (const e in group.endpoints) {
|
|
23
|
+
const endpoint = group.endpoints[e];
|
|
24
|
+
const path = this.makePath(this.schema, [...root, endpoint]);
|
|
25
|
+
this.makeEndpoint(path, endpoint);
|
|
26
|
+
}
|
|
27
|
+
for (const e in group.groups) {
|
|
28
|
+
const childGroup = group.groups[e];
|
|
29
|
+
const childRoot = [...root, childGroup];
|
|
30
|
+
this.makeGroup(childGroup, childRoot);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
makePath(schema, path) {
|
|
34
|
+
const domain = path[0];
|
|
35
|
+
const root = domain.name
|
|
36
|
+
? [schema.name, domain.name, domain.version]
|
|
37
|
+
: [schema.name, domain.version];
|
|
38
|
+
const list = root.concat(path
|
|
39
|
+
.slice(1)
|
|
40
|
+
.map(node => node.name));
|
|
41
|
+
return '/' + list.join('/');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ControllerAdapter = ControllerAdapter;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { $Module, $Space } from "../../../schema";
|
|
2
|
+
import { $Controller, $ControllerDomain, $ControllerEndpoint, $ControllerGroup } from './controller.schema';
|
|
3
|
+
import { $Message } from "../../entities/message/message.schema";
|
|
4
|
+
import { $Dependency, ResolvedBuilderNode } from "../../../engine/dependency";
|
|
5
|
+
type JobsSupportingMsg<M extends $Module, Msg extends $Message> = {
|
|
6
|
+
[J in keyof M['jobs']]: Msg extends M['jobs'][J]['#input'] ? J : never;
|
|
7
|
+
}[keyof M['jobs']];
|
|
8
|
+
type ResourcesSupportingMsg<M extends $Module, Msg extends $Message> = {
|
|
9
|
+
[J in keyof M['resources']]: Msg extends M['resources'][J]['#input'] ? J : never;
|
|
10
|
+
}[keyof M['resources']];
|
|
11
|
+
type MachinesSupportingMsg<M extends $Module, Msg extends $Message> = {
|
|
12
|
+
[J in keyof M['machines']]: Msg extends M['machines'][J]['#input'] ? J : never;
|
|
13
|
+
}[keyof M['machines']];
|
|
14
|
+
export declare class ControllerEndpointBuilder<S extends $Space, M extends $Module, Msg extends $Message = never> {
|
|
15
|
+
private module;
|
|
16
|
+
private name;
|
|
17
|
+
private _alias?;
|
|
18
|
+
private _version?;
|
|
19
|
+
private _authn;
|
|
20
|
+
private _tags;
|
|
21
|
+
private _msg;
|
|
22
|
+
private _target;
|
|
23
|
+
constructor(module: string, name: string);
|
|
24
|
+
as(alias: string): this;
|
|
25
|
+
authn<U extends keyof S['authnUsers']>(providers: U | U[]): this;
|
|
26
|
+
tag(tag: string): this;
|
|
27
|
+
tags(tags: string[]): this;
|
|
28
|
+
msg<K extends keyof M['messages']>(msg: K): ControllerEndpointBuilder<S, M, M["messages"][K]>;
|
|
29
|
+
toJob(job: JobsSupportingMsg<M, Msg>): this;
|
|
30
|
+
toResource(resource: ResourcesSupportingMsg<M, Msg>): this;
|
|
31
|
+
toMachine(machine: MachinesSupportingMsg<M, Msg>): this;
|
|
32
|
+
static build(builder: ControllerEndpointBuilder<any, any>): $ControllerEndpoint;
|
|
33
|
+
}
|
|
34
|
+
export declare class ControllerGroupBuilder<S extends $Space, M extends $Module> {
|
|
35
|
+
private module;
|
|
36
|
+
protected name: string;
|
|
37
|
+
protected _alias?: string;
|
|
38
|
+
protected _authn: string[];
|
|
39
|
+
protected groups: Record<string, ControllerGroupBuilder<any, any>>;
|
|
40
|
+
protected endpoints: Record<string, ControllerEndpointBuilder<any, any>>;
|
|
41
|
+
constructor(module: string, name: string);
|
|
42
|
+
as(alias: string): this;
|
|
43
|
+
authn<U extends keyof S['authnUsers']>(providers: U | U[]): this;
|
|
44
|
+
endpoint(name: string, $: ControllerEndpointDef<S, M>): this;
|
|
45
|
+
group(name: string, $: ControllerGroupDef<S, M>): this;
|
|
46
|
+
static build(builder: ControllerGroupBuilder<any, any>): $ControllerGroup;
|
|
47
|
+
static buildGroups(builders: Record<string, ControllerGroupBuilder<any, any>>): Record<string, $ControllerGroup>;
|
|
48
|
+
static buildEndpoints(builders: Record<string, ControllerEndpointBuilder<any, any>>): Record<string, $ControllerEndpoint>;
|
|
49
|
+
}
|
|
50
|
+
export declare class ControllerDomainBuilder<S extends $Space, M extends $Module> extends ControllerGroupBuilder<S, M> {
|
|
51
|
+
private _version;
|
|
52
|
+
version(version: string): this;
|
|
53
|
+
static build(builder: ControllerDomainBuilder<any, any>): $ControllerDomain;
|
|
54
|
+
}
|
|
55
|
+
export declare class ControllerBuilder<S extends $Space, M extends $Module> {
|
|
56
|
+
private module;
|
|
57
|
+
private name;
|
|
58
|
+
$b: "controller";
|
|
59
|
+
private _alias?;
|
|
60
|
+
private _authn;
|
|
61
|
+
private domains;
|
|
62
|
+
constructor(module: string, name: string);
|
|
63
|
+
as(alias: string): this;
|
|
64
|
+
authn<U extends keyof S['authnUsers']>(providers: U | U[]): this;
|
|
65
|
+
domain(name: string, $: ControllerDomainDef<S, M>): this;
|
|
66
|
+
static build(node: ControllerBuilderNode): $Controller;
|
|
67
|
+
static buildInput(group: $ControllerGroup): $Dependency[];
|
|
68
|
+
static buildDomains(builders: Record<string, ControllerDomainBuilder<any, any>>): Record<string, $ControllerDomain>;
|
|
69
|
+
}
|
|
70
|
+
type ControllerEndpointDef<S extends $Space, M extends $Module> = ($: ControllerEndpointBuilder<S, M>) => ControllerEndpointBuilder<S, M, any>;
|
|
71
|
+
type ControllerGroupDef<S extends $Space, M extends $Module> = ($: ControllerGroupBuilder<S, M>) => ControllerGroupBuilder<S, M>;
|
|
72
|
+
type ControllerDomainDef<S extends $Space, M extends $Module> = ($: ControllerDomainBuilder<S, M>) => ControllerDomainBuilder<S, M>;
|
|
73
|
+
export type AnyControllerBuilder = ControllerBuilder<any, any>;
|
|
74
|
+
export type ControllerBuilderNode = Omit<ResolvedBuilderNode, 'builder'> & {
|
|
75
|
+
builder: AnyControllerBuilder;
|
|
76
|
+
schema?: $Controller;
|
|
77
|
+
};
|
|
78
|
+
export {};
|