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,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { AnyTrxNode } from '~/engine/transaction/trx_node';
|
|
3
|
+
// import { NesoiObj } from '~/engine/data/obj';
|
|
4
|
+
// import { NesoiError } from '~/engine/data/error';
|
|
5
|
+
// import { Tree } from '~/engine/data/tree';
|
|
6
|
+
// import { $BucketView } from '../view/bucket_view.schema';
|
|
7
|
+
// import { BucketQuery } from '../query/bucket_query';
|
|
8
|
+
// import { BucketAdapter } from './bucket_adapter';
|
|
9
|
+
// import { MemoryBucketAdapter } from './memory.bucket_adapter';
|
|
10
|
+
// /**
|
|
11
|
+
// * This is a slow implementation of the query engine for a Memory Bucket.
|
|
12
|
+
// *
|
|
13
|
+
// * It goes through all objects and applies all rules. If one returns false,
|
|
14
|
+
// * it skips and goes to the next.
|
|
15
|
+
// */
|
|
16
|
+
// export class MemoryBucketQuery extends BucketQuery {
|
|
17
|
+
// async run<Obj extends NesoiObj, V extends $BucketView>(
|
|
18
|
+
// adapter: BucketAdapter<Obj>,
|
|
19
|
+
// trx: AnyTrxNode,
|
|
20
|
+
// view: V,
|
|
21
|
+
// query: $BucketQuery,
|
|
22
|
+
// pagination?: NQL_Pagination
|
|
23
|
+
// ) {
|
|
24
|
+
// const filtered: Obj[] = [];
|
|
25
|
+
// await this.parse(trx, view, query);
|
|
26
|
+
// const memory = adapter as MemoryBucketAdapter<Obj>;
|
|
27
|
+
// for (const id in memory.data) {
|
|
28
|
+
// const obj = (memory.data as any)[id] as Obj;
|
|
29
|
+
// const match = await this.checkObj(view, obj, query);
|
|
30
|
+
// if (match) {
|
|
31
|
+
// filtered.push(obj);
|
|
32
|
+
// }
|
|
33
|
+
// }
|
|
34
|
+
// return filtered;
|
|
35
|
+
// }
|
|
36
|
+
// private async checkObj<Obj extends NesoiObj, V extends $BucketView>(
|
|
37
|
+
// view: V,
|
|
38
|
+
// obj: Obj,
|
|
39
|
+
// query: $BucketQuery
|
|
40
|
+
// ) {
|
|
41
|
+
// for (const term of query.or) {
|
|
42
|
+
// const match = ('$t' in term) && term.$t === 'bucket.query.rule'
|
|
43
|
+
// ? await this.applyRule(view, obj, term)
|
|
44
|
+
// : await this.checkObj(view, obj, term);
|
|
45
|
+
// if (match) {
|
|
46
|
+
// return true;
|
|
47
|
+
// }
|
|
48
|
+
// }
|
|
49
|
+
// for (const term of query.and) {
|
|
50
|
+
// const match = ('$t' in term) && term.$t === 'bucket.query.rule'
|
|
51
|
+
// ? await this.applyRule(view, obj, term)
|
|
52
|
+
// : await this.checkObj(view, obj, term);
|
|
53
|
+
// if (!match) {
|
|
54
|
+
// return false;
|
|
55
|
+
// }
|
|
56
|
+
// }
|
|
57
|
+
// return true;
|
|
58
|
+
// }
|
|
59
|
+
// private async applyRule<Obj extends NesoiObj, V extends $BucketView>(
|
|
60
|
+
// view: V,
|
|
61
|
+
// obj: Obj,
|
|
62
|
+
// rule: $BucketQueryRule
|
|
63
|
+
// ) {
|
|
64
|
+
// const field = rule.viewField;
|
|
65
|
+
// const objVal = Tree.get(obj, rule.path);
|
|
66
|
+
// let res;
|
|
67
|
+
// switch (field.type) {
|
|
68
|
+
// case 'id':
|
|
69
|
+
// res = await this.applyIdRule(objVal, rule); break;
|
|
70
|
+
// case 'int':
|
|
71
|
+
// case 'float':
|
|
72
|
+
// res = await this.applyNumberRule(objVal, rule); break;
|
|
73
|
+
// case 'string':
|
|
74
|
+
// res = await this.applyStringRule(objVal, rule); break;
|
|
75
|
+
// case 'boolean':
|
|
76
|
+
// res = await this.applyBooleanRule(objVal, rule); break;
|
|
77
|
+
// // TODO
|
|
78
|
+
// // case 'list':
|
|
79
|
+
// // return this.applyListRule(objVal, rule);
|
|
80
|
+
// // case 'obj':
|
|
81
|
+
// // return this.applyObjRule(objVal, rule);
|
|
82
|
+
// }
|
|
83
|
+
// if (rule.not) {
|
|
84
|
+
// res = !res;
|
|
85
|
+
// }
|
|
86
|
+
// return res;
|
|
87
|
+
// }
|
|
88
|
+
// private async applyIdRule(
|
|
89
|
+
// objVal: number|string,
|
|
90
|
+
// rule: $BucketQueryRule
|
|
91
|
+
// ) {
|
|
92
|
+
// switch (rule.op) {
|
|
93
|
+
// case '==':
|
|
94
|
+
// if (typeof rule.parsedValue !== 'number' && typeof rule.parsedValue !== 'string')
|
|
95
|
+
// throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'id');
|
|
96
|
+
// return objVal === rule.parsedValue;
|
|
97
|
+
// case 'in':
|
|
98
|
+
// if (!Array.isArray(rule.parsedValue))
|
|
99
|
+
// throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'id[]');
|
|
100
|
+
// return (rule.parsedValue as (number|string)[]).includes(objVal);
|
|
101
|
+
// case 'present':
|
|
102
|
+
// return (objVal !== undefined) === rule.parsedValue;
|
|
103
|
+
// }
|
|
104
|
+
// }
|
|
105
|
+
// private async applyNumberRule(
|
|
106
|
+
// objVal: number | number[],
|
|
107
|
+
// rule: $BucketQueryRule
|
|
108
|
+
// ) {
|
|
109
|
+
// const isNumber = typeof objVal === 'number';
|
|
110
|
+
// const isNumberList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'number');
|
|
111
|
+
// if (!isNumber && !isNumberList) {
|
|
112
|
+
// return false;
|
|
113
|
+
// }
|
|
114
|
+
// switch (rule.op) {
|
|
115
|
+
// case '<':
|
|
116
|
+
// return (objVal as number) < (rule.parsedValue as number);
|
|
117
|
+
// case '<=':
|
|
118
|
+
// return (objVal as number) <= (rule.parsedValue as number);
|
|
119
|
+
// case '>':
|
|
120
|
+
// return (objVal as number) > (rule.parsedValue as number);
|
|
121
|
+
// case '>=':
|
|
122
|
+
// return (objVal as number) >= (rule.parsedValue as number);
|
|
123
|
+
// case '==':
|
|
124
|
+
// return (objVal as number) === (rule.parsedValue as number);
|
|
125
|
+
// case 'in':
|
|
126
|
+
// return (rule.parsedValue as number[]).includes(objVal as number);
|
|
127
|
+
// case 'contains':
|
|
128
|
+
// return (rule.parsedValue as boolean[]).includes(rule.parsedValue as boolean);
|
|
129
|
+
// case 'contains_any':
|
|
130
|
+
// return (rule.parsedValue as boolean[]).some(v => (rule.parsedValue as boolean[]).includes(v));
|
|
131
|
+
// case 'present':
|
|
132
|
+
// return (objVal !== undefined) === rule.parsedValue;
|
|
133
|
+
// }
|
|
134
|
+
// }
|
|
135
|
+
// private async applyStringRule(
|
|
136
|
+
// objVal: string | string[],
|
|
137
|
+
// rule: $BucketQueryRule
|
|
138
|
+
// ) {
|
|
139
|
+
// const isString = typeof objVal === 'string';
|
|
140
|
+
// const isStringList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'string');
|
|
141
|
+
// if (!isString && !isStringList) {
|
|
142
|
+
// return false;
|
|
143
|
+
// }
|
|
144
|
+
// switch (rule.op) {
|
|
145
|
+
// case '==':
|
|
146
|
+
// if (rule.case_sensitive) {
|
|
147
|
+
// return objVal === rule.parsedValue;
|
|
148
|
+
// }
|
|
149
|
+
// return (objVal as string).toLowerCase() === (rule.parsedValue as string).toLowerCase()
|
|
150
|
+
// case 'contains':
|
|
151
|
+
// if (rule.case_sensitive) {
|
|
152
|
+
// return objVal.includes(rule.parsedValue as string);
|
|
153
|
+
// }
|
|
154
|
+
// return (objVal as string).toLowerCase().includes((rule.parsedValue as string).toLowerCase());
|
|
155
|
+
// case 'contains_any':
|
|
156
|
+
// if (rule.case_sensitive) {
|
|
157
|
+
// return (rule.parsedValue as string[]).some(v => objVal.includes(v.toString()));
|
|
158
|
+
// }
|
|
159
|
+
// return (rule.parsedValue as string[])
|
|
160
|
+
// .map(o => o.toString().toLowerCase())
|
|
161
|
+
// .some(v => objVal.includes(v.toString()));
|
|
162
|
+
// case 'in':
|
|
163
|
+
// return (rule.parsedValue as string|string[]).includes(objVal as string);
|
|
164
|
+
// case 'present':
|
|
165
|
+
// return (objVal !== undefined) === rule.parsedValue;
|
|
166
|
+
// }
|
|
167
|
+
// }
|
|
168
|
+
// private async applyBooleanRule(
|
|
169
|
+
// objVal: boolean | boolean[],
|
|
170
|
+
// rule: $BucketQueryRule
|
|
171
|
+
// ) {
|
|
172
|
+
// const isBoolean = typeof objVal === 'boolean';
|
|
173
|
+
// const isBooleanList = Array.isArray(objVal) && !objVal.some(v => typeof v !== 'boolean');
|
|
174
|
+
// if (!isBoolean && !isBooleanList) {
|
|
175
|
+
// return false;
|
|
176
|
+
// }
|
|
177
|
+
// switch (rule.op) {
|
|
178
|
+
// case '==':
|
|
179
|
+
// return objVal === rule.parsedValue;
|
|
180
|
+
// case 'in':
|
|
181
|
+
// return (rule.parsedValue as boolean[]).includes(objVal as boolean);
|
|
182
|
+
// case 'contains':
|
|
183
|
+
// return (objVal as boolean[]).includes(rule.parsedValue as boolean);
|
|
184
|
+
// case 'contains_any':
|
|
185
|
+
// return (rule.parsedValue as boolean[]).some(v => (objVal as boolean[]).includes(v));
|
|
186
|
+
// case 'present':
|
|
187
|
+
// return (objVal !== undefined) === rule.parsedValue;
|
|
188
|
+
// }
|
|
189
|
+
// }
|
|
190
|
+
// // private async applyObjRule<Obj extends NesoiObj, V extends $BucketView>(
|
|
191
|
+
// // objVal: Record<string, any>,
|
|
192
|
+
// // rule: $BucketQueryRule
|
|
193
|
+
// // ) {
|
|
194
|
+
// // if (typeof objVal !== 'object' && !Array.isArray(objVal)) {
|
|
195
|
+
// // return false;
|
|
196
|
+
// // }
|
|
197
|
+
// // switch (rule.op) {
|
|
198
|
+
// // // case '==':
|
|
199
|
+
// // // if (typeof rule.parsedValue !== 'object' && !Array.isArray(rule.parsedValue))
|
|
200
|
+
// // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
|
|
201
|
+
// // // return objVal === rule.parsedValue;
|
|
202
|
+
// // case 'contains':
|
|
203
|
+
// // if (typeof rule.parsedValue !== 'string')
|
|
204
|
+
// // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'string');
|
|
205
|
+
// // return Object.keys(objVal).includes(rule.parsedValue);
|
|
206
|
+
// // // case 'contains_any':
|
|
207
|
+
// // // if (!Array.isArray(rule.parsedValue))
|
|
208
|
+
// // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
|
|
209
|
+
// // // return rule.parsedValue.some(v => Object.keys(objVal).includes(v));
|
|
210
|
+
// // // case 'in':
|
|
211
|
+
// // // if (!Array.isArray(rule.parsedValue))
|
|
212
|
+
// // // throw NesoiError.Bucket.Query.InvalidRuleValueType(rule.path, 'object');
|
|
213
|
+
// // // return (rule.parsedValue as Record<string, any>[]).includes(objVal);
|
|
214
|
+
// // case 'present':
|
|
215
|
+
// // return objVal !== undefined;
|
|
216
|
+
// // }
|
|
217
|
+
// // }
|
|
218
|
+
// }
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NQLRunner } from '../query/nql_engine';
|
|
2
|
+
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
3
|
+
import { NQL_Part } from '../query/nql.schema';
|
|
4
|
+
import { MemoryBucketAdapter } from "../../..";
|
|
5
|
+
type Obj = Record<string, any>;
|
|
6
|
+
type Objs = Record<string, Obj>;
|
|
7
|
+
export declare class MemoryNQLRunner extends NQLRunner {
|
|
8
|
+
protected adapter?: MemoryBucketAdapter<any>;
|
|
9
|
+
constructor();
|
|
10
|
+
bind(adapter: MemoryBucketAdapter<any>): void;
|
|
11
|
+
run(trx: AnyTrxNode, part: NQL_Part, params: Obj): Promise<Objs>;
|
|
12
|
+
/**
|
|
13
|
+
* Goes through each rule keeping a scoped white and black list to avoid
|
|
14
|
+
* testing objects unnecessarily. Returns a dict of results by id.
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
private filter;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryNQLRunner = void 0;
|
|
4
|
+
const nql_engine_1 = require("../query/nql_engine");
|
|
5
|
+
const tree_1 = require("../../../../engine/data/tree");
|
|
6
|
+
class MemoryNQLRunner extends nql_engine_1.NQLRunner {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
}
|
|
10
|
+
bind(adapter) {
|
|
11
|
+
this.adapter = adapter;
|
|
12
|
+
}
|
|
13
|
+
async run(trx, part, params) {
|
|
14
|
+
if (!this.adapter) {
|
|
15
|
+
throw new Error('No adapter bound to NQL Runner');
|
|
16
|
+
}
|
|
17
|
+
const data = this.adapter.data;
|
|
18
|
+
return this.filter(part, data, params);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Goes through each rule keeping a scoped white and black list to avoid
|
|
22
|
+
* testing objects unnecessarily. Returns a dict of results by id.
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
filter(part, objs, params) {
|
|
26
|
+
const _union = (union, objs, params) => {
|
|
27
|
+
// console.log(`::UNION (objs: ${Object.keys(objs)})\n`)
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const inter of union.inters) {
|
|
30
|
+
// Pass `out` as blacklist: if already found, can be skipped
|
|
31
|
+
const black = out;
|
|
32
|
+
const interOut = _inter(inter, objs, params, black);
|
|
33
|
+
Object.assign(out, interOut);
|
|
34
|
+
}
|
|
35
|
+
// console.log(' -> union out\n', out);
|
|
36
|
+
return out;
|
|
37
|
+
};
|
|
38
|
+
const _inter = (inter, objs, params, black = {}) => {
|
|
39
|
+
// console.log(`::INTER (objs: ${Object.keys(objs)}, black: ${Object.keys(black)})\n`)
|
|
40
|
+
// Create white set, which will be modified by rules running on this union
|
|
41
|
+
const white = new Set(Object.keys(objs));
|
|
42
|
+
let out = {};
|
|
43
|
+
for (const rule of inter.rules) {
|
|
44
|
+
// <Union>
|
|
45
|
+
if ('inters' in rule) {
|
|
46
|
+
if (!_union(rule, objs, objs))
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// <Rule>
|
|
50
|
+
else {
|
|
51
|
+
const ruleOut = _rule(rule, objs, params, black, white);
|
|
52
|
+
out = ruleOut;
|
|
53
|
+
}
|
|
54
|
+
if (white.size == 0)
|
|
55
|
+
break;
|
|
56
|
+
// console.log(` -> white: ${Array.from(white.values())}\n`)
|
|
57
|
+
}
|
|
58
|
+
// console.log(` -> inter out: ${Object.keys(out)}\n`)
|
|
59
|
+
return out;
|
|
60
|
+
};
|
|
61
|
+
const _rule = (rule, objs, params, black, white) => {
|
|
62
|
+
// console.log(`::RULE (objs: ${Object.keys(objs)}, black: ${Object.keys(black)}, white: ${Array.from(white.values())})\n`)
|
|
63
|
+
const out = {};
|
|
64
|
+
for (const id in objs) {
|
|
65
|
+
if (!white.has(id)) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (id in black) {
|
|
69
|
+
white.delete(id);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const obj = objs[id];
|
|
73
|
+
let match = _obj(rule, obj, params);
|
|
74
|
+
// console.log(` -> match: ${match}\n`)
|
|
75
|
+
if (rule.not) {
|
|
76
|
+
match = !match;
|
|
77
|
+
}
|
|
78
|
+
if (!match) {
|
|
79
|
+
white.delete(id);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (obj !== undefined) {
|
|
83
|
+
if (rule.select) {
|
|
84
|
+
out[obj.id] = obj[rule.select];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
out[obj.id] = obj;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// console.log(` -> rule out: ${Object.keys(out)}\n`)
|
|
92
|
+
return out;
|
|
93
|
+
};
|
|
94
|
+
const _obj = (rule, obj, params) => {
|
|
95
|
+
// console.log(`::OBJ (obj: ${obj.id})\n`)
|
|
96
|
+
const fieldValue = tree_1.Tree.get(obj, rule.fieldpath);
|
|
97
|
+
// Value is undefined, only 'present' rule applies
|
|
98
|
+
if (fieldValue === undefined) {
|
|
99
|
+
if (rule.op === 'present') {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Fieldpath is a spread, apply rule to each item
|
|
105
|
+
if (rule.fieldpath.includes('.*')) {
|
|
106
|
+
for (const item of fieldValue) {
|
|
107
|
+
if (_obj(rule, item, params))
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
let queryValue;
|
|
113
|
+
// Value is a subquery, run union
|
|
114
|
+
if ('subquery' in rule.value) {
|
|
115
|
+
const subOut = _union(rule.value.subquery, objs, params);
|
|
116
|
+
const subList = Object.values(subOut);
|
|
117
|
+
// Subquery operator is for a list, filter
|
|
118
|
+
if (rule.op === 'in' || rule.op === 'contains_any') {
|
|
119
|
+
queryValue = subList;
|
|
120
|
+
}
|
|
121
|
+
// Subquery operator is for a single item, pick first
|
|
122
|
+
else {
|
|
123
|
+
queryValue = subList[0];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if ('param' in rule.value) {
|
|
127
|
+
if (Array.isArray(rule.value.param)) {
|
|
128
|
+
queryValue = rule.value.param.map(p => params[p]);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
queryValue = params[rule.value.param];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if ('static' in rule.value) {
|
|
135
|
+
queryValue = rule.value.static;
|
|
136
|
+
}
|
|
137
|
+
// console.log({fieldpath: rule.fieldpath, op: rule.op, fieldValue, queryValue});
|
|
138
|
+
// Check each operation
|
|
139
|
+
// (Compatible operations and types have already been validated)
|
|
140
|
+
if (rule.op === '<') {
|
|
141
|
+
return fieldValue < queryValue;
|
|
142
|
+
}
|
|
143
|
+
if (rule.op === '<=') {
|
|
144
|
+
return fieldValue <= queryValue;
|
|
145
|
+
}
|
|
146
|
+
if (rule.op === '==') {
|
|
147
|
+
if (rule.case_i) {
|
|
148
|
+
return fieldValue.toLowerCase() === queryValue.toLowerCase();
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return fieldValue === queryValue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (rule.op === '>') {
|
|
155
|
+
return fieldValue > queryValue;
|
|
156
|
+
}
|
|
157
|
+
if (rule.op === '>=') {
|
|
158
|
+
return fieldValue >= queryValue;
|
|
159
|
+
}
|
|
160
|
+
if (rule.op === 'in') {
|
|
161
|
+
if (typeof fieldValue === 'object' && !Array.isArray(fieldValue)) {
|
|
162
|
+
return fieldValue in queryValue;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return queryValue.includes(fieldValue);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (rule.op === 'contains') {
|
|
169
|
+
if (typeof fieldValue === 'string') {
|
|
170
|
+
if (rule.case_i) {
|
|
171
|
+
return fieldValue.toLowerCase().includes(queryValue.toLowerCase());
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return fieldValue.includes(queryValue);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
if (rule.case_i) {
|
|
179
|
+
return Object.keys(fieldValue).some(f => f.toLowerCase().includes(queryValue.toLowerCase()));
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return queryValue in fieldValue;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (rule.op === 'contains_any') {
|
|
187
|
+
if (typeof fieldValue === 'string') {
|
|
188
|
+
if (rule.case_i) {
|
|
189
|
+
return queryValue.some(q => fieldValue.toLowerCase().includes(q.toLowerCase()));
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
return queryValue.some(q => fieldValue.includes(q));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
if (rule.case_i) {
|
|
197
|
+
return queryValue.some(q => Object.keys(q).some(k => fieldValue.toLowerCase().includes(q.toLowerCase())));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return queryValue.some(q => q in fieldValue);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (rule.op === 'present') {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
return false;
|
|
208
|
+
};
|
|
209
|
+
return _union(part.union, objs, params);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.MemoryNQLRunner = MemoryNQLRunner;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BucketAdapterConfig } from './bucket_adapter';
|
|
2
|
+
import { MemoryBucketAdapter } from './memory.bucket_adapter';
|
|
3
|
+
import { $Bucket } from '../bucket.schema';
|
|
4
|
+
import { NesoiObj } from "../../../../engine/data/obj";
|
|
5
|
+
import { AnyTrxNode } from "../../../../engine/transaction/trx_node";
|
|
6
|
+
import { NQL_AnyQuery, NQL_Pagination } from '../query/nql.schema';
|
|
7
|
+
export declare class SlowMemoryBucketAdapter<Obj extends NesoiObj> extends MemoryBucketAdapter<Obj> {
|
|
8
|
+
schema: $Bucket;
|
|
9
|
+
protected timeout: number;
|
|
10
|
+
constructor(schema: $Bucket, timeout: number, data?: Record<Obj['id'], Obj>, config?: BucketAdapterConfig);
|
|
11
|
+
private wrap;
|
|
12
|
+
index(trx: AnyTrxNode): Promise<Obj[]>;
|
|
13
|
+
get(trx: AnyTrxNode, id: Obj['id']): Promise<Awaited<Record<Obj["id"], Obj>[Obj["id"]]>>;
|
|
14
|
+
query<MetadataOnly extends boolean>(trx: AnyTrxNode, query: NQL_AnyQuery, pagination?: NQL_Pagination, config?: {
|
|
15
|
+
metadataOnly: MetadataOnly;
|
|
16
|
+
}): Promise<MetadataOnly extends true ? {
|
|
17
|
+
id: Obj['id'];
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
}[] : Obj[]>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlowMemoryBucketAdapter = void 0;
|
|
4
|
+
const memory_bucket_adapter_1 = require("./memory.bucket_adapter");
|
|
5
|
+
class SlowMemoryBucketAdapter extends memory_bucket_adapter_1.MemoryBucketAdapter {
|
|
6
|
+
constructor(schema, timeout, data = {}, config) {
|
|
7
|
+
super(schema, data, config);
|
|
8
|
+
this.schema = schema;
|
|
9
|
+
this.timeout = timeout;
|
|
10
|
+
}
|
|
11
|
+
wrap(scale, fn) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
setTimeout(() => {
|
|
14
|
+
fn()
|
|
15
|
+
.then(resolve)
|
|
16
|
+
.catch(reject);
|
|
17
|
+
}, this.timeout * scale);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/* Read operations */
|
|
21
|
+
index(trx) {
|
|
22
|
+
return this.wrap(5, () => super.index(trx));
|
|
23
|
+
}
|
|
24
|
+
get(trx, id) {
|
|
25
|
+
return this.wrap(1, () => super.get(trx, id));
|
|
26
|
+
}
|
|
27
|
+
async query(trx, query, pagination, config) {
|
|
28
|
+
return this.wrap(3, () => super.query(trx, query, pagination, config));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.SlowMemoryBucketAdapter = SlowMemoryBucketAdapter;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { $Module, $Space, BucketName } from "../../../schema";
|
|
2
|
+
import { BucketGraphDef } from './graph/bucket_graph.builder';
|
|
3
|
+
import { $BucketView, $BucketViews } from './view/bucket_view.schema';
|
|
4
|
+
import { BucketViewDef } from './view/bucket_view.builder';
|
|
5
|
+
import { $Bucket } from './bucket.schema';
|
|
6
|
+
import { BucketModelDef } from './model/bucket_model.builder';
|
|
7
|
+
import { $BucketModelFields } from './model/bucket_model.schema';
|
|
8
|
+
import { $BucketViewDataInfer, $BucketViewFieldsInfer } from './bucket.infer';
|
|
9
|
+
import { $BucketGraphLinksInfer } from './graph/bucket_graph.infer';
|
|
10
|
+
import { $BucketGraph } from './graph/bucket_graph.schema';
|
|
11
|
+
import { $Dependency, ResolvedBuilderNode } from "../../../engine/dependency";
|
|
12
|
+
import { ModuleTree } from "../../../engine/tree";
|
|
13
|
+
import { BucketFieldpathInfer, BucketModelInfer } from './model/bucket_model.infer';
|
|
14
|
+
import { Overlay } from "../../../engine/util/type";
|
|
15
|
+
import { $Constants } from '../constants/constants.schema';
|
|
16
|
+
import { NesoiObj } from "../../../engine/data/obj";
|
|
17
|
+
export declare class BucketBuilder<Space extends $Space, Module extends $Module, Bucket extends $Bucket = Omit<$Bucket, 'views'> & {
|
|
18
|
+
views: {};
|
|
19
|
+
}> {
|
|
20
|
+
private module;
|
|
21
|
+
private name;
|
|
22
|
+
$b: "bucket";
|
|
23
|
+
private _alias?;
|
|
24
|
+
private _model;
|
|
25
|
+
private _graph;
|
|
26
|
+
private _views;
|
|
27
|
+
private _extend?;
|
|
28
|
+
constructor(module: string, name: string);
|
|
29
|
+
as(alias: string): this;
|
|
30
|
+
extend<N extends Exclude<BucketName<Module>, Bucket['name']>>(name: N): BucketBuilder<Space, Module, Module["buckets"][N]>;
|
|
31
|
+
model<Def extends BucketModelDef<Space, Module>, Obj = BucketModelInfer<Def>, Fieldpath extends {} = BucketFieldpathInfer<Def>>($: Def): BucketBuilder<Space, Overlay<Module, {
|
|
32
|
+
buckets: Overlay<Module["buckets"], { [K in Bucket["name"]]: Overlay<Bucket, {
|
|
33
|
+
'#data': Obj & NesoiObj;
|
|
34
|
+
'#fieldpath': Fieldpath;
|
|
35
|
+
}>; }>;
|
|
36
|
+
}>, Overlay<Bucket, {
|
|
37
|
+
'#data': Obj & NesoiObj;
|
|
38
|
+
'#fieldpath': Fieldpath;
|
|
39
|
+
}>>;
|
|
40
|
+
graph<Def extends BucketGraphDef<Module, Bucket>>($: Def): BucketBuilder<Space, Module, Overlay<Bucket, {
|
|
41
|
+
graph: Overlay<Bucket["graph"], {
|
|
42
|
+
links: $BucketGraphLinksInfer<ReturnType<Def>>;
|
|
43
|
+
}>;
|
|
44
|
+
}>>;
|
|
45
|
+
view<ViewName extends string, Def extends BucketViewDef<Space, Module, Bucket>>(name: ViewName, $: Def): BucketBuilder<Space, Module, Bucket & {
|
|
46
|
+
views: { [K in ViewName]: $BucketView & {
|
|
47
|
+
"#data": $BucketViewDataInfer<ReturnType<Def>>;
|
|
48
|
+
fields: $BucketViewFieldsInfer<ReturnType<Def>>;
|
|
49
|
+
}; };
|
|
50
|
+
}>;
|
|
51
|
+
static build(node: BucketBuilderNode, tree: ModuleTree): $Bucket;
|
|
52
|
+
static mergeModelEnums(fields: $BucketModelFields, constants: $Constants): void;
|
|
53
|
+
static buildGraph(node: BucketBuilderNode, tree: ModuleTree, extend?: $Dependency): $BucketGraph;
|
|
54
|
+
static buildViews(builder: AnyBucketBuilder, graph: $BucketGraph, tree: ModuleTree, extend?: $Dependency): $BucketViews;
|
|
55
|
+
static checkComposition(node: BucketBuilderNode, graph: $BucketGraph): void;
|
|
56
|
+
}
|
|
57
|
+
export type AnyBucketBuilder = BucketBuilder<any, any>;
|
|
58
|
+
export type BucketBuilderNode = ResolvedBuilderNode & {
|
|
59
|
+
builder: AnyBucketBuilder;
|
|
60
|
+
schema?: $Bucket;
|
|
61
|
+
};
|