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,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BucketBuilder = void 0;
|
|
4
|
+
const bucket_graph_builder_1 = require("./graph/bucket_graph.builder");
|
|
5
|
+
const bucket_view_builder_1 = require("./view/bucket_view.builder");
|
|
6
|
+
const bucket_schema_1 = require("./bucket.schema");
|
|
7
|
+
const bucket_model_builder_1 = require("./model/bucket_model.builder");
|
|
8
|
+
const bucket_model_convert_1 = require("./model/bucket_model.convert");
|
|
9
|
+
const bucket_model_field_builder_1 = require("./model/bucket_model_field.builder");
|
|
10
|
+
const bucket_graph_link_builder_1 = require("./graph/bucket_graph_link.builder");
|
|
11
|
+
const dependency_1 = require("../../../engine/dependency");
|
|
12
|
+
const constants_schema_1 = require("../constants/constants.schema");
|
|
13
|
+
const error_1 = require("../../../engine/data/error");
|
|
14
|
+
class BucketBuilder {
|
|
15
|
+
constructor(module, name) {
|
|
16
|
+
this.module = module;
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.$b = 'bucket';
|
|
19
|
+
this._graph = {};
|
|
20
|
+
this._views = {};
|
|
21
|
+
}
|
|
22
|
+
as(alias) {
|
|
23
|
+
this._alias = alias;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
extend(name) {
|
|
27
|
+
this._extend = new dependency_1.$Dependency(this.module, 'bucket', name);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
model($) {
|
|
31
|
+
const fieldBuilder = new bucket_model_field_builder_1.BucketModelFieldFactory(this.module);
|
|
32
|
+
const fields = $(fieldBuilder);
|
|
33
|
+
const builder = new bucket_model_builder_1.BucketModelBuilder(this.module).fields(fields);
|
|
34
|
+
this._model = bucket_model_builder_1.BucketModelBuilder.build(builder);
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
graph($) {
|
|
38
|
+
const linkFactory = new bucket_graph_link_builder_1.BucketGraphLinkFactory(this.module);
|
|
39
|
+
const links = $(linkFactory);
|
|
40
|
+
this._graph = links;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
view(name, $) {
|
|
44
|
+
const view = new bucket_view_builder_1.BucketViewBuilder(name);
|
|
45
|
+
view.fields($);
|
|
46
|
+
this._views[name] = view;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
// Build
|
|
50
|
+
static build(node, tree) {
|
|
51
|
+
// If there's an external bucket linked, merge some of
|
|
52
|
+
// the information before starting.
|
|
53
|
+
let $ext;
|
|
54
|
+
const extend = node.builder._extend;
|
|
55
|
+
if (extend) {
|
|
56
|
+
$ext = tree.getSchema(extend);
|
|
57
|
+
// Model
|
|
58
|
+
node.builder._model = Object.assign({}, $ext?.model || {}, node.builder._model);
|
|
59
|
+
// Enums
|
|
60
|
+
// (In order to avoid having to import constants definitions for extended buckets)
|
|
61
|
+
const constants = tree.getSchema({
|
|
62
|
+
module: extend.module,
|
|
63
|
+
type: 'constants',
|
|
64
|
+
name: '*'
|
|
65
|
+
});
|
|
66
|
+
this.mergeModelEnums(node.builder._model.fields, constants);
|
|
67
|
+
}
|
|
68
|
+
const graph = BucketBuilder.buildGraph(node, tree, extend);
|
|
69
|
+
const views = BucketBuilder.buildViews(node.builder, graph, tree, extend);
|
|
70
|
+
BucketBuilder.checkComposition(node, graph);
|
|
71
|
+
node.schema = new bucket_schema_1.$Bucket(node.builder.module, node.builder.name, node.builder._alias || $ext?.alias || node.builder.name, node.builder._model, graph, views, extend);
|
|
72
|
+
return node.schema;
|
|
73
|
+
}
|
|
74
|
+
static mergeModelEnums(fields, constants) {
|
|
75
|
+
Object.values(fields).forEach(field => {
|
|
76
|
+
if (field.type === 'enum' && typeof field._enum?.options === 'string') {
|
|
77
|
+
field._enum = {
|
|
78
|
+
options: constants_schema_1.$ConstantEnum.keys(constants.enums[field._enum.options])
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (field.children) {
|
|
82
|
+
this.mergeModelEnums(field.children, constants);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
static buildGraph(node, tree, extend) {
|
|
87
|
+
const links = {};
|
|
88
|
+
if (extend) {
|
|
89
|
+
const ext = tree.getSchema(extend);
|
|
90
|
+
Object.assign(links, ext.graph.links);
|
|
91
|
+
}
|
|
92
|
+
const graphBuilder = new bucket_graph_builder_1.BucketGraphBuilder().links(node.builder._graph);
|
|
93
|
+
const graph = bucket_graph_builder_1.BucketGraphBuilder.build(node, graphBuilder);
|
|
94
|
+
Object.values(graph.links).forEach(link => {
|
|
95
|
+
if (link.keyOwner === 'other') {
|
|
96
|
+
link.selfKey || (link.selfKey = 'id');
|
|
97
|
+
link.otherKey || (link.otherKey = node.builder.name + '_id');
|
|
98
|
+
}
|
|
99
|
+
else if (link.keyOwner === 'self') {
|
|
100
|
+
link.selfKey || (link.selfKey = link.bucket.name + '_id');
|
|
101
|
+
link.otherKey || (link.otherKey = 'id');
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
graph.links = Object.assign(graph.links, links);
|
|
105
|
+
return graph;
|
|
106
|
+
}
|
|
107
|
+
static buildViews(builder, graph, tree, extend) {
|
|
108
|
+
const views = {
|
|
109
|
+
default: (0, bucket_model_convert_1.convertToView)(builder._model, 'default')
|
|
110
|
+
};
|
|
111
|
+
if (extend) {
|
|
112
|
+
const ext = tree.getSchema(extend);
|
|
113
|
+
Object.assign(views, ext.views);
|
|
114
|
+
}
|
|
115
|
+
for (const v in builder._views) {
|
|
116
|
+
views[v] = bucket_view_builder_1.BucketViewBuilder.build(builder._views[v], builder._model, graph, views);
|
|
117
|
+
}
|
|
118
|
+
return views;
|
|
119
|
+
}
|
|
120
|
+
static checkComposition(node, graph) {
|
|
121
|
+
Object.values(graph.links).forEach(link => {
|
|
122
|
+
if (link.rel === 'composition') {
|
|
123
|
+
if (link.pivotBucket) {
|
|
124
|
+
throw error_1.NesoiError.Builder.Bucket.CompositionWithPivotNotAllowed();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.BucketBuilder = BucketBuilder;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BucketAdapter } from './adapters/bucket_adapter';
|
|
2
|
+
import { $Bucket } from './bucket.schema';
|
|
3
|
+
export type BucketConfig<B extends $Bucket, Providers extends Record<string, any>> = {
|
|
4
|
+
/** Adapter used by this bucket to communicate with a data source */
|
|
5
|
+
adapter?: (schema: B, providers: Providers) => BucketAdapter<B['#data']>;
|
|
6
|
+
/** Settings for the app cache of this bucket */
|
|
7
|
+
cache?: {
|
|
8
|
+
/** Inner adapter used by the cache to manage cache entry data */
|
|
9
|
+
adapter?: BucketAdapter<B['#data']>;
|
|
10
|
+
/** Cache mode for each read method. Undefined on a method means no cache for that method. */
|
|
11
|
+
mode?: {
|
|
12
|
+
/** Cache mode for `get`:
|
|
13
|
+
* - **one**: Update/delete the object, then return
|
|
14
|
+
* - **past**: Update/delete the object and update all objects modified before it, then return
|
|
15
|
+
* - **all**: Update/reset the cache, then return
|
|
16
|
+
*/
|
|
17
|
+
get?: 'one' | 'past' | 'all';
|
|
18
|
+
/** Cache mode for `index`:
|
|
19
|
+
* - **all**: Update/reset the cache, then return
|
|
20
|
+
*/
|
|
21
|
+
index?: 'all';
|
|
22
|
+
/** Cache mode for `query`:
|
|
23
|
+
* - **incremental**: Query ids only, then query data for modified entries only, save them and return
|
|
24
|
+
* - **all**: Update/reset the cache, then query the inner adapter and return
|
|
25
|
+
*/
|
|
26
|
+
query?: 'incremental' | 'all';
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AnyTrxNode } from "../../../engine/transaction/trx_node";
|
|
2
|
+
import { NesoiObj, NewOrOldObj } from "../../../engine/data/obj";
|
|
3
|
+
import { $Module, ViewName, ViewObj } from "../../../schema";
|
|
4
|
+
import { $Bucket } from './bucket.schema';
|
|
5
|
+
import { AnyBucketAdapter, BucketAdapter } from './adapters/bucket_adapter';
|
|
6
|
+
import { BucketConfig } from './bucket.config';
|
|
7
|
+
import { BucketGraph } from './graph/bucket_graph';
|
|
8
|
+
import { NQL_AnyQuery, NQL_Order, NQL_Pagination } from './query/nql.schema';
|
|
9
|
+
export declare class Bucket<M extends $Module, $ extends $Bucket> {
|
|
10
|
+
schema: $;
|
|
11
|
+
private config?;
|
|
12
|
+
providers: Record<string, any>;
|
|
13
|
+
private adapter;
|
|
14
|
+
private cache?;
|
|
15
|
+
graph: BucketGraph<M, $>;
|
|
16
|
+
private views;
|
|
17
|
+
constructor(schema: $, config?: BucketConfig<$, any> | undefined, providers?: Record<string, any>);
|
|
18
|
+
readOne<Obj = $['#data']>(trx: AnyTrxNode, id: (Obj & NesoiObj)['id']): Promise<Obj | undefined>;
|
|
19
|
+
readAll<Obj = $['#data']>(trx: AnyTrxNode, pagination?: NQL_Pagination, order?: NQL_Order<$['#fieldpath']>): Promise<Obj[]>;
|
|
20
|
+
viewOne<V extends ViewName<$>, Obj extends ViewObj<$, V>>(trx: AnyTrxNode, id: (Obj & NesoiObj)['id'], view: V): Promise<Obj | undefined>;
|
|
21
|
+
viewAll<V extends ViewName<$>, Obj extends ViewObj<$, V>>(trx: AnyTrxNode, view: V, pagination?: NQL_Pagination, order?: NQL_Order<$['#fieldpath']>): Promise<Obj[]>;
|
|
22
|
+
buildOne<V extends ViewName<$>, Obj extends ViewObj<$, V>>(trx: AnyTrxNode, obj: $['#data'], view: V): Promise<Obj>;
|
|
23
|
+
buildAll<V extends ViewName<$>, Obj extends ViewObj<$, V>>(trx: AnyTrxNode, objs: $['#data'][], view: V): Promise<Obj[]>;
|
|
24
|
+
put<Obj = $['#data']>(trx: AnyTrxNode, obj: NewOrOldObj<Obj & NesoiObj>): Promise<Obj>;
|
|
25
|
+
delete(trx: AnyTrxNode, id: $['#data']['id']): Promise<void>;
|
|
26
|
+
deleteMany(trx: AnyTrxNode, ids: $['#data']['id'][]): Promise<void>;
|
|
27
|
+
query<V extends ViewName<$>, Obj extends ViewObj<$, V>>(trx: AnyTrxNode, query: NQL_AnyQuery, pagination?: NQL_Pagination, view?: V): Promise<Obj[]>;
|
|
28
|
+
static getQueryMeta(bucket: AnyBucket): {
|
|
29
|
+
bucket: $Bucket;
|
|
30
|
+
scope: string;
|
|
31
|
+
avgTime: number;
|
|
32
|
+
};
|
|
33
|
+
static getQueryRunner(bucket: AnyBucket): AnyBucketAdapter["nql"];
|
|
34
|
+
static getAdapter(bucket: AnyBucket): BucketAdapter<NesoiObj>;
|
|
35
|
+
}
|
|
36
|
+
export type AnyBucket = Bucket<$Module, $Bucket>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { $BucketViewField, $BucketViewFields } from './view/bucket_view.schema';
|
|
2
|
+
import { BucketViewFieldBuilder, BucketViewFieldBuilderTree } from './view/bucket_view_field.builder';
|
|
3
|
+
export type $BucketViewFieldsInfer<Builder extends BucketViewFieldBuilderTree> = Builder extends (...args: any[]) => $BucketViewFields ? ReturnType<Builder> : {
|
|
4
|
+
[K in keyof Builder]: Builder[K] extends BucketViewFieldBuilderTree ? ($BucketViewField & {
|
|
5
|
+
'#data': $BucketViewFieldsInfer<Builder[K]>;
|
|
6
|
+
}) : Builder[K] extends BucketViewFieldBuilder<any, any, any> ? $BucketViewField & {
|
|
7
|
+
'#data': Builder[K] extends BucketViewFieldBuilder<infer X, any> ? X : never;
|
|
8
|
+
} : never;
|
|
9
|
+
};
|
|
10
|
+
export type $BucketViewDataInfer<Builder extends BucketViewFieldBuilderTree> = {
|
|
11
|
+
[K in keyof Builder]: Builder[K] extends BucketViewFieldBuilderTree ? $BucketViewDataInfer<Builder[K]> : Builder[K] extends BucketViewFieldBuilder<infer X, any> ? X : never;
|
|
12
|
+
};
|
|
13
|
+
export type $BucketViewFieldBuilderInfer<Data> = {
|
|
14
|
+
[K in keyof Data]: BucketViewFieldBuilder<Data[K], any>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* [Fieldpaths]
|
|
18
|
+
*
|
|
19
|
+
* The code below works but is very slow.
|
|
20
|
+
* It's here for reference and should be deleted in the future.
|
|
21
|
+
* It's been replaced by a generic Fieldpath on the builder.
|
|
22
|
+
*/
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* [Fieldpaths]
|
|
5
|
+
*
|
|
6
|
+
* The code below works but is very slow.
|
|
7
|
+
* It's here for reference and should be deleted in the future.
|
|
8
|
+
* It's been replaced by a generic Fieldpath on the builder.
|
|
9
|
+
*/
|
|
10
|
+
// type IsAnyOrUnknown<T> = Exclude<any extends T ? true : false, true> extends never ? true : false
|
|
11
|
+
// type $BucketFieldpathInferStep<
|
|
12
|
+
// Data extends Record<string, Record<string, any> | any[]>
|
|
13
|
+
// > = MergeUnion<{
|
|
14
|
+
// [P in keyof Data]:
|
|
15
|
+
// // If the prefixed object is any or unknown, ignore it
|
|
16
|
+
// IsAnyOrUnknown<Data[P]> extends true ? never
|
|
17
|
+
// : NonNullable<Data[P]> extends object ?
|
|
18
|
+
// // If the prefixed object is a list, return
|
|
19
|
+
// // an object where the key ends with '*' and it's
|
|
20
|
+
// // a single element of the list
|
|
21
|
+
// NonNullable<Data[P]> extends any[] ? { [_ in `${P & string}*`]: ListItem<Data[P]> }
|
|
22
|
+
// // If the prefixed object is a dict, return
|
|
23
|
+
// // an object where the key ends with '*' and it's
|
|
24
|
+
// // a single element of the dict
|
|
25
|
+
// : string extends keyof NonNullable<Data[P]> ? { [_ in `${P & string}*`]: DictItem<Data[P]> }
|
|
26
|
+
// // If it's an object, add it to the union
|
|
27
|
+
// // based on the type
|
|
28
|
+
// : {
|
|
29
|
+
// [K in keyof NonNullable<Data[P]>]:
|
|
30
|
+
// IsAnyOrUnknown<NonNullable<Data[P][K]>> extends true
|
|
31
|
+
// // any
|
|
32
|
+
// ? {[_ in `${P & string}${K & string}`]: any}
|
|
33
|
+
// : NonNullable<Data[P][K]> extends any[]
|
|
34
|
+
// // array (prop and prop.*)
|
|
35
|
+
// ? (
|
|
36
|
+
// {[_ in `${P & string}${K & string}`]: ObjItem<Data[P], K>}
|
|
37
|
+
// | { [_ in `${P & string}${K & string}.*`]: ListItem<Data[P][K]> }
|
|
38
|
+
// )
|
|
39
|
+
// // dict (prop and prop.*)
|
|
40
|
+
// : string extends keyof NonNullable<Data[P][K]>
|
|
41
|
+
// ? (
|
|
42
|
+
// {[_ in `${P & string}${K & string}`]: ObjItem<Data[P], K>}
|
|
43
|
+
// | { [_ in `${P & string}${K & string}.*`]: DictItem<Data[P][K]> }
|
|
44
|
+
// )
|
|
45
|
+
// // simple type
|
|
46
|
+
// : {[_ in `${P & string}${K & string}`]: ObjItem<Data[P], K>}
|
|
47
|
+
// }[keyof NonNullable<Data[P]>]
|
|
48
|
+
// // Primitive
|
|
49
|
+
// : never
|
|
50
|
+
// // : { [_ in (P extends `${infer X}.` ? X : P)]: Data[P] }
|
|
51
|
+
// }[keyof Data]>
|
|
52
|
+
// type $BucketFieldpathInferNext<
|
|
53
|
+
// Data,
|
|
54
|
+
// ObjectFields extends object = {
|
|
55
|
+
// [K in keyof Data as (
|
|
56
|
+
// // Exclude injected keys, to avoid duplicate nexts
|
|
57
|
+
// Data[`${K & string}.*` & keyof Data] extends never ?
|
|
58
|
+
// // any/unknown, not an object
|
|
59
|
+
// IsAnyOrUnknown<Data[K]> extends true ?
|
|
60
|
+
// never
|
|
61
|
+
// : NonNullable<Data[K]> extends object ?
|
|
62
|
+
// NonNullable<Data[K]> extends NesoiDate ? never
|
|
63
|
+
// : `${K & string}.`
|
|
64
|
+
// : never
|
|
65
|
+
// : never
|
|
66
|
+
// )]: Data[K]
|
|
67
|
+
// }
|
|
68
|
+
// > = ObjectFields[keyof ObjectFields] extends never ? never : ObjectFields
|
|
69
|
+
// /**
|
|
70
|
+
// * Infer the #fieldpaths from a type
|
|
71
|
+
// */
|
|
72
|
+
// export type $BucketFieldpathInfer<
|
|
73
|
+
// Data extends Record<string, any>,
|
|
74
|
+
// Input extends Record<string, any> = { '': Data },
|
|
75
|
+
// Step extends object = $BucketFieldpathInferStep<Input>,
|
|
76
|
+
// Next extends Record<string, any> = $BucketFieldpathInferNext<Step>
|
|
77
|
+
// // > = {
|
|
78
|
+
// // step: Step,
|
|
79
|
+
// // // next: Next
|
|
80
|
+
// // next: Next extends never ? never : $BucketFieldpathInfer<any, Next>
|
|
81
|
+
// // }
|
|
82
|
+
// > = MergeUnion<{
|
|
83
|
+
// step: Step,
|
|
84
|
+
// next: Next extends never ? never : $BucketFieldpathInfer<any, Next>
|
|
85
|
+
// }['step'|'next']>
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Bucket = void 0;
|
|
4
|
+
const error_1 = require("../../../engine/data/error");
|
|
5
|
+
const bucket_view_1 = require("./view/bucket_view");
|
|
6
|
+
const memory_bucket_adapter_1 = require("./adapters/memory.bucket_adapter");
|
|
7
|
+
const bucket_cache_1 = require("./cache/bucket_cache");
|
|
8
|
+
const log_1 = require("../../../engine/util/log");
|
|
9
|
+
const bucket_graph_1 = require("./graph/bucket_graph");
|
|
10
|
+
class Bucket {
|
|
11
|
+
constructor(schema, config, providers = {}) {
|
|
12
|
+
this.schema = schema;
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.providers = providers;
|
|
15
|
+
// Config
|
|
16
|
+
this.adapter = this.config?.adapter?.(schema, providers) || new memory_bucket_adapter_1.MemoryBucketAdapter(schema, {});
|
|
17
|
+
// Graph
|
|
18
|
+
this.graph = new bucket_graph_1.BucketGraph(this);
|
|
19
|
+
// Views
|
|
20
|
+
const views = {};
|
|
21
|
+
for (const v in schema.views) {
|
|
22
|
+
views[v] = new bucket_view_1.BucketView(this, schema.views[v]);
|
|
23
|
+
}
|
|
24
|
+
this.views = views;
|
|
25
|
+
// Cache
|
|
26
|
+
if (this.config?.cache) {
|
|
27
|
+
this.cache = new bucket_cache_1.BucketCache(this.schema.name, this.adapter, this.config.cache);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Get
|
|
31
|
+
async readOne(trx, id) {
|
|
32
|
+
if (typeof id !== 'string' && typeof id !== 'number') {
|
|
33
|
+
throw error_1.NesoiError.Bucket.InvalidId({ bucket: this.schema.alias, id });
|
|
34
|
+
}
|
|
35
|
+
log_1.Log.debug('bucket', this.schema.name, `Get id=${id}`);
|
|
36
|
+
const raw = this.cache
|
|
37
|
+
? await this.cache.get(trx, id)
|
|
38
|
+
: await this.adapter.get(trx, id);
|
|
39
|
+
if (!raw)
|
|
40
|
+
return undefined;
|
|
41
|
+
return raw;
|
|
42
|
+
}
|
|
43
|
+
async readAll(trx, pagination, order) {
|
|
44
|
+
log_1.Log.debug('bucket', this.schema.name, 'Index');
|
|
45
|
+
const raws = this.cache
|
|
46
|
+
? await this.cache.index(trx)
|
|
47
|
+
: await this.adapter.index(trx);
|
|
48
|
+
return raws;
|
|
49
|
+
}
|
|
50
|
+
async viewOne(trx, id, view) {
|
|
51
|
+
if (typeof id !== 'string' && typeof id !== 'number') {
|
|
52
|
+
throw error_1.NesoiError.Bucket.InvalidId({ bucket: this.schema.alias, id });
|
|
53
|
+
}
|
|
54
|
+
log_1.Log.debug('bucket', this.schema.name, `View id=${id}, v=${view}`);
|
|
55
|
+
const obj = await this.readOne(trx, id);
|
|
56
|
+
if (!obj) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
return this.buildOne(trx, obj, view);
|
|
60
|
+
}
|
|
61
|
+
async viewAll(trx, view, pagination, order) {
|
|
62
|
+
log_1.Log.debug('bucket', this.schema.name, `View all, v=${view}`);
|
|
63
|
+
const objs = await this.readAll(trx);
|
|
64
|
+
return this.buildAll(trx, objs, view);
|
|
65
|
+
}
|
|
66
|
+
async buildOne(trx, obj, view) {
|
|
67
|
+
if (!(view in this.views)) {
|
|
68
|
+
throw error_1.NesoiError.Bucket.ViewNotFound({ bucket: this.schema.alias, view: view });
|
|
69
|
+
}
|
|
70
|
+
return this.views[view].parse(trx, obj);
|
|
71
|
+
}
|
|
72
|
+
async buildAll(trx, objs, view) {
|
|
73
|
+
return Promise.all(objs.map(obj => this.buildOne(trx, obj, view)));
|
|
74
|
+
}
|
|
75
|
+
// Put
|
|
76
|
+
async put(trx, obj) {
|
|
77
|
+
log_1.Log.debug('bucket', this.schema.name, `Put id=${obj['id'] || 'new'}`, obj);
|
|
78
|
+
const raw = await this.adapter.put(trx, obj);
|
|
79
|
+
return raw;
|
|
80
|
+
}
|
|
81
|
+
// Delete
|
|
82
|
+
async delete(trx, id) {
|
|
83
|
+
if (typeof id !== 'string' && typeof id !== 'number') {
|
|
84
|
+
throw error_1.NesoiError.Bucket.InvalidId({ bucket: this.schema.alias, id });
|
|
85
|
+
}
|
|
86
|
+
log_1.Log.debug('bucket', this.schema.name, `Delete id=${id}`);
|
|
87
|
+
await this.adapter.delete(trx, id);
|
|
88
|
+
}
|
|
89
|
+
async deleteMany(trx, ids) {
|
|
90
|
+
log_1.Log.debug('bucket', this.schema.name, `Delete Many ids=${ids}`);
|
|
91
|
+
await this.adapter.deleteMany(trx, ids);
|
|
92
|
+
}
|
|
93
|
+
// Query
|
|
94
|
+
async query(trx, query, pagination, view) {
|
|
95
|
+
log_1.Log.trace('bucket', this.schema.name, 'Query', query);
|
|
96
|
+
const v = (view ? this.views[view] : null) || this.views['default'];
|
|
97
|
+
if (!v) {
|
|
98
|
+
throw error_1.NesoiError.Bucket.Query.ViewNotFound(this.schema.name, view || 'default');
|
|
99
|
+
}
|
|
100
|
+
const raws = this.cache
|
|
101
|
+
? await this.cache.query(trx, v.schema, query, pagination)
|
|
102
|
+
: await this.adapter.query(trx, query, pagination);
|
|
103
|
+
if (!raws.length)
|
|
104
|
+
return [];
|
|
105
|
+
if (view) {
|
|
106
|
+
return this.buildAll(trx, raws, view);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return raws;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
static getQueryMeta(bucket) {
|
|
113
|
+
return {
|
|
114
|
+
...bucket.adapter.getQueryMeta(),
|
|
115
|
+
bucket: bucket.schema
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
static getQueryRunner(bucket) {
|
|
119
|
+
return bucket.adapter.nql;
|
|
120
|
+
}
|
|
121
|
+
static getAdapter(bucket) {
|
|
122
|
+
return bucket.adapter;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Bucket = Bucket;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { $BucketGraph } from './graph/bucket_graph.schema';
|
|
2
|
+
import { $BucketViews } from './view/bucket_view.schema';
|
|
3
|
+
import { $BucketModel } from './model/bucket_model.schema';
|
|
4
|
+
import { NesoiObj } from "../../../engine/data/obj";
|
|
5
|
+
import { $Dependency } from "../../../engine/dependency";
|
|
6
|
+
export declare class $Bucket {
|
|
7
|
+
module: string;
|
|
8
|
+
name: string;
|
|
9
|
+
alias: string;
|
|
10
|
+
model: $BucketModel;
|
|
11
|
+
graph: $BucketGraph;
|
|
12
|
+
views: $BucketViews;
|
|
13
|
+
extended?: $Dependency | undefined;
|
|
14
|
+
$t: "bucket";
|
|
15
|
+
'#data': NesoiObj;
|
|
16
|
+
'#composition': Record<string, {
|
|
17
|
+
bucket: $Bucket;
|
|
18
|
+
many: boolean;
|
|
19
|
+
optional: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
'#fieldpath': {};
|
|
22
|
+
'#defaults': Record<string, any>;
|
|
23
|
+
constructor(module: string, name: string, alias: string, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, extended?: $Dependency | undefined);
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$Bucket = void 0;
|
|
4
|
+
class $Bucket {
|
|
5
|
+
constructor(module, name, alias, model, graph, views, extended) {
|
|
6
|
+
this.module = module;
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.alias = alias;
|
|
9
|
+
this.model = model;
|
|
10
|
+
this.graph = graph;
|
|
11
|
+
this.views = views;
|
|
12
|
+
this.extended = extended;
|
|
13
|
+
this.$t = 'bucket';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.$Bucket = $Bucket;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NewOrOldObj } from "../../../engine/data/obj";
|
|
2
|
+
import { $Bucket } from './bucket.schema';
|
|
3
|
+
import { DeepPartialNullable } from "../../../engine/util/deep";
|
|
4
|
+
export type PutObj<$ extends $Bucket> = NewOrOldObj<$['#data']> & (keyof $['#composition'] extends never ? {} : {
|
|
5
|
+
'#composition': {
|
|
6
|
+
[K in keyof $['#composition']]: $['#composition'][K]['many'] extends true ? (PutObj<$['#composition'][K]['bucket']> | ($['#composition'][K]['optional'] extends true ? undefined : never))[] : PutObj<$['#composition'][K]['bucket']> | ($['#composition'][K]['optional'] extends true ? undefined : never);
|
|
7
|
+
};
|
|
8
|
+
});
|
|
9
|
+
export type CreateObj<$ extends $Bucket> = Omit<$['#data'], 'id' | keyof $['#defaults']> & {
|
|
10
|
+
[K in keyof $['#defaults']]?: $['#data'][K];
|
|
11
|
+
} & (string extends keyof $['#composition'] ? {} : keyof $['#composition'] extends never ? {} : {
|
|
12
|
+
'#composition': {
|
|
13
|
+
[K in keyof $['#composition']]: $['#composition'][K]['many'] extends true ? (PutObj<$['#composition'][K]['bucket']> | ($['#composition'][K]['optional'] extends true ? undefined : never))[] : PutObj<$['#composition'][K]['bucket']> | ($['#composition'][K]['optional'] extends true ? undefined : never);
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
export type ReplaceObj<$ extends $Bucket> = $['#data'] & (string extends keyof $['#composition'] ? {} : keyof $['#composition'] extends never ? {} : {
|
|
17
|
+
'#composition': {
|
|
18
|
+
[K in keyof $['#composition']]: $['#composition'][K]['many'] extends true ? ReplaceObj<$['#composition'][K]['bucket']>[] : ReplaceObj<$['#composition'][K]['bucket']>;
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
export type PatchObj<$ extends $Bucket> = DeepPartialNullable<$['#data']> & {
|
|
22
|
+
id: $['#data']['id'];
|
|
23
|
+
} & (string extends keyof $['#composition'] ? {} : keyof $['#composition'] extends never ? {} : {
|
|
24
|
+
'#composition'?: {
|
|
25
|
+
[K in keyof $['#composition']]?: $['#composition'][K]['many'] extends true ? PatchObj<$['#composition'][K]['bucket']>[] : Omit<PatchObj<$['#composition'][K]['bucket']>, 'id'>;
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
export type PatchResourceObj<$ extends $Bucket> = DeepPartialNullable<Omit<$['#data'], 'id'>> & (keyof $['#composition'] extends never ? {} : {
|
|
29
|
+
'#composition'?: {
|
|
30
|
+
[K in keyof $['#composition']]?: $['#composition'][K]['many'] extends true ? PatchObj<$['#composition'][K]['bucket']>[] : PatchResourceObj<$['#composition'][K]['bucket']>;
|
|
31
|
+
};
|
|
32
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BucketConfig } from '../bucket.config';
|
|
2
|
+
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
3
|
+
import { NesoiObj } from "../../../../engine/data/obj";
|
|
4
|
+
import { AnyBucketAdapter } from '../adapters/bucket_adapter';
|
|
5
|
+
import { $BucketView } from '../view/bucket_view.schema';
|
|
6
|
+
import { NQL_AnyQuery, NQL_Pagination } from '../query/nql.schema';
|
|
7
|
+
export type BucketCacheSync<T> = {
|
|
8
|
+
obj: T;
|
|
9
|
+
updateEpoch: number;
|
|
10
|
+
};
|
|
11
|
+
export declare class BucketCacheEntry<Obj extends NesoiObj> {
|
|
12
|
+
id: Obj['id'];
|
|
13
|
+
obj: Obj;
|
|
14
|
+
updateEpoch: number;
|
|
15
|
+
syncEpoch: number;
|
|
16
|
+
constructor(id: Obj['id'], obj: Obj, updateEpoch: number, syncEpoch: number);
|
|
17
|
+
}
|
|
18
|
+
export declare class BucketCache<Obj extends NesoiObj> {
|
|
19
|
+
private bucketName;
|
|
20
|
+
private outerAdapter;
|
|
21
|
+
private config;
|
|
22
|
+
private lastUpdateEpoch?;
|
|
23
|
+
private lastSyncEpoch?;
|
|
24
|
+
private lastHash?;
|
|
25
|
+
private innerAdapter;
|
|
26
|
+
constructor(bucketName: string, outerAdapter: AnyBucketAdapter, config: NonNullable<BucketConfig<any, any>['cache']>);
|
|
27
|
+
get(trx: AnyTrxNode, id: NesoiObj['id']): Promise<any>;
|
|
28
|
+
index(trx: AnyTrxNode): Promise<any[]>;
|
|
29
|
+
query(trx: AnyTrxNode, view: $BucketView, query: NQL_AnyQuery, pagination?: NQL_Pagination): Promise<any[]>;
|
|
30
|
+
private syncOne;
|
|
31
|
+
private syncOneAndPast;
|
|
32
|
+
private syncAll;
|
|
33
|
+
private syncQuery;
|
|
34
|
+
}
|
|
35
|
+
export type AnyBucketCache = BucketCache<any>;
|