nesoi 3.2.9 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/lib/bundler/browser/browser.app.d.ts +32 -0
- package/lib/bundler/browser/browser.app.js +51 -0
- package/lib/bundler/browser/browser.bundler.d.ts +5 -0
- package/lib/bundler/browser/browser.bundler.js +27 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.d.ts +13 -0
- package/lib/bundler/browser/stages/8_replace_nesoi_for_browser_stage.js +74 -0
- package/lib/bundler/distributed/distributed.app.config.d.ts +43 -0
- package/lib/{engine/apps → bundler}/distributed/distributed.app.config.js +1 -1
- package/lib/{engine/apps → bundler}/distributed/distributed.app.d.ts +14 -14
- package/lib/{engine/apps → bundler}/distributed/distributed.app.js +8 -3
- package/lib/{compiler/apps/distributed/distributed_compiler.d.ts → bundler/distributed/distributed.bundler.d.ts} +7 -7
- package/lib/{compiler/apps/distributed/distributed_compiler.js → bundler/distributed/distributed.bundler.js} +11 -11
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.d.ts +14 -20
- package/lib/{engine/apps → bundler}/distributed/distributed_node.app.js +18 -50
- package/lib/bundler/distributed/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/distributed/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/2_build_typescript_stage.js +7 -7
- package/lib/bundler/distributed/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/3_copy_types_stage.js +7 -7
- package/lib/bundler/distributed/stages/4_dump_modules_stage.d.ts +16 -0
- package/lib/{compiler/apps → bundler}/distributed/stages/4_dump_modules_stage.js +5 -5
- package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.js +3 -3
- package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.js +3 -3
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.d.ts +13 -13
- package/lib/{engine/apps → bundler}/monolyth/monolyth.app.js +13 -10
- package/lib/{compiler/apps/monolyth/monolyth_compiler.d.ts → bundler/monolyth/monolyth.bundler.d.ts} +9 -7
- package/lib/{compiler/apps/monolyth/monolyth_compiler.js → bundler/monolyth/monolyth.bundler.js} +13 -12
- package/lib/bundler/monolyth/stages/1_mkdir_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/1_mkdir_stage.js +6 -6
- package/lib/bundler/monolyth/stages/2_build_typescript_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/2_build_typescript_stage.js +8 -7
- package/lib/bundler/monolyth/stages/3_copy_types_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/3_copy_types_stage.js +7 -7
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/4_dump_modules_stage.js +29 -16
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/5_copy_static_stage.js +7 -7
- package/lib/bundler/monolyth/stages/6_dump_cli_stage.d.ts +15 -0
- package/lib/{compiler/apps → bundler}/monolyth/stages/6_dump_cli_stage.js +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.d.ts +4 -4
- package/lib/{compiler/apps → bundler}/monolyth/stages/7_dump_package_json_stage.js +14 -11
- package/lib/compiler/compiler.d.ts +1 -6
- package/lib/compiler/compiler.js +1 -1
- package/lib/compiler/elements/bucket.element.d.ts +2 -1
- package/lib/compiler/elements/bucket.element.js +16 -21
- package/lib/compiler/elements/cached.element.d.ts +1 -1
- package/lib/compiler/elements/cached.element.js +2 -2
- package/lib/compiler/elements/constants.element.d.ts +1 -1
- package/lib/compiler/elements/constants.element.js +2 -0
- package/lib/compiler/elements/controller.element.js +3 -3
- package/lib/compiler/elements/element.d.ts +6 -13
- package/lib/compiler/elements/element.js +11 -9
- package/lib/compiler/elements/externals.element.js +2 -2
- package/lib/compiler/elements/job.element.d.ts +1 -1
- package/lib/compiler/elements/job.element.js +1 -1
- package/lib/compiler/elements/machine.element.d.ts +2 -2
- package/lib/compiler/elements/machine.element.js +7 -7
- package/lib/compiler/elements/message.element.d.ts +1 -1
- package/lib/compiler/elements/message.element.js +26 -26
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/elements/resource.element.d.ts +1 -1
- package/lib/compiler/elements/resource.element.js +9 -9
- package/lib/compiler/elements/topic.element.js +1 -1
- package/lib/compiler/error.d.ts +1 -5
- package/lib/compiler/error.js +3 -15
- package/lib/compiler/helpers/dump_helpers.d.ts +1 -1
- package/lib/compiler/helpers/dump_helpers.js +1 -1
- package/lib/compiler/index.d.ts +1 -3
- package/lib/compiler/index.js +15 -7
- package/lib/compiler/module.js +12 -12
- package/lib/compiler/progressive.d.ts +3 -4
- package/lib/compiler/progressive.js +3 -4
- package/lib/compiler/stages/2_treeshake_stage.js +4 -0
- package/lib/compiler/stages/3_extract_ts_stage.js +7 -7
- package/lib/compiler/stages/4_build_schemas_stage.js +3 -16
- package/lib/compiler/stages/6_build_elements_stage.js +1 -1
- package/lib/compiler/stages/7_dump_stage.js +35 -10
- package/lib/compiler/typescript/bridge/extract.js +24 -0
- package/lib/compiler/typescript/bridge/inject.js +18 -3
- package/lib/compiler/typescript/bridge/organize.d.ts +4 -0
- package/lib/compiler/typescript/bridge/organize.js +41 -22
- package/lib/compiler/typescript/error.d.ts +2 -83
- package/lib/compiler/typescript/error.js +6 -219
- package/lib/compiler/typescript/parser.js +3 -3
- package/lib/compiler/typescript/source.d.ts +2 -2
- package/lib/compiler/typescript/transformers/app_inject.transformer.js +13 -4
- package/lib/compiler/typescript/typescript_compiler.d.ts +3 -3
- package/lib/compiler/typescript/typescript_compiler.js +2 -2
- package/lib/elements/blocks/block.builder.d.ts +7 -4
- package/lib/elements/blocks/block.builder.js +24 -13
- package/lib/elements/blocks/block.js +2 -2
- package/lib/elements/blocks/block.schema.d.ts +12 -9
- package/lib/elements/blocks/block.schema.js +2 -2
- package/lib/elements/blocks/job/internal/machine_job.builder.d.ts +6 -5
- package/lib/elements/blocks/job/internal/machine_job.builder.js +3 -3
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +11 -10
- package/lib/elements/blocks/job/internal/resource_job.builder.js +9 -6
- package/lib/elements/blocks/job/internal/resource_job.js +3 -6
- package/lib/elements/blocks/job/job.builder.d.ts +5 -5
- package/lib/elements/blocks/job/job.builder.js +7 -7
- package/lib/elements/blocks/job/job.js +1 -1
- package/lib/elements/blocks/job/job.schema.d.ts +5 -5
- package/lib/elements/blocks/job/job.schema.js +3 -3
- package/lib/elements/blocks/machine/machine.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine.builder.js +12 -9
- package/lib/elements/blocks/machine/machine.js +7 -7
- package/lib/elements/blocks/machine/machine.schema.d.ts +23 -23
- package/lib/elements/blocks/machine/machine.schema.js +9 -9
- package/lib/elements/blocks/machine/machine_state.builder.d.ts +1 -0
- package/lib/elements/blocks/machine/machine_state.builder.js +31 -29
- package/lib/elements/blocks/machine/machine_transition.builder.d.ts +2 -2
- package/lib/elements/blocks/machine/machine_transition.builder.js +8 -8
- package/lib/elements/blocks/queue/queue.builder.d.ts +3 -3
- package/lib/elements/blocks/queue/queue.builder.js +3 -3
- package/lib/elements/blocks/queue/queue.schema.d.ts +6 -6
- package/lib/elements/blocks/queue/queue.schema.js +3 -3
- package/lib/elements/blocks/resource/resource.builder.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.builder.js +37 -40
- package/lib/elements/blocks/resource/resource.d.ts +2 -2
- package/lib/elements/blocks/resource/resource.js +10 -18
- package/lib/elements/blocks/resource/resource.schema.d.ts +15 -15
- package/lib/elements/blocks/resource/resource.schema.js +8 -8
- package/lib/elements/blocks/topic/topic.builder.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.builder.js +4 -4
- package/lib/elements/blocks/topic/topic.d.ts +2 -2
- package/lib/elements/blocks/topic/topic.js +7 -7
- package/lib/elements/blocks/topic/topic.schema.d.ts +6 -6
- package/lib/elements/blocks/topic/topic.schema.js +3 -3
- package/lib/elements/edge/controller/adapters/cli.controller_adapter.js +1 -1
- package/lib/elements/edge/controller/adapters/controller_adapter.d.ts +2 -2
- package/lib/elements/edge/controller/adapters/controller_adapter.js +2 -2
- package/lib/elements/edge/controller/controller.builder.d.ts +14 -13
- package/lib/elements/edge/controller/controller.builder.js +52 -42
- package/lib/elements/edge/controller/controller.d.ts +3 -3
- package/lib/elements/edge/controller/controller.js +12 -12
- package/lib/elements/edge/controller/controller.schema.d.ts +17 -16
- package/lib/elements/edge/controller/controller.schema.js +11 -11
- package/lib/elements/edge/externals/externals.builder.d.ts +8 -13
- package/lib/elements/edge/externals/externals.builder.js +43 -11
- package/lib/elements/edge/externals/externals.schema.d.ts +8 -7
- package/lib/elements/edge/externals/externals.schema.js +5 -3
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.d.ts +45 -0
- package/lib/elements/entities/bucket/adapters/browserdb.bucket_adapter.js +164 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.d.ts +30 -0
- package/lib/elements/entities/bucket/adapters/browserdb.service.js +97 -0
- package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +6 -1
- package/lib/elements/entities/bucket/adapters/bucket_adapter.js +7 -6
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.d.ts +1 -1
- package/lib/elements/entities/bucket/adapters/json.bucket_adapter.js +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +1 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +14 -13
- package/lib/elements/entities/bucket/adapters/memory.nql.js +41 -35
- package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -8
- package/lib/elements/entities/bucket/bucket.builder.js +19 -34
- package/lib/elements/entities/bucket/bucket.d.ts +2 -2
- package/lib/elements/entities/bucket/bucket.infer.d.ts +5 -5
- package/lib/elements/entities/bucket/bucket.js +19 -17
- package/lib/elements/entities/bucket/bucket.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/bucket.schema.js +2 -2
- package/lib/elements/entities/bucket/cache/bucket_cache.js +14 -2
- package/lib/elements/entities/bucket/graph/bucket_graph.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph.js +101 -29
- package/lib/elements/entities/bucket/graph/bucket_graph.schema.d.ts +3 -3
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.js +5 -3
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.js +2 -2
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +3 -6
- package/lib/elements/entities/bucket/model/bucket_model.d.ts +13 -0
- package/lib/elements/entities/bucket/model/bucket_model.js +93 -0
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +4 -8
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +0 -68
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +12 -4
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +30 -33
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_compiler.d.ts +8 -4
- package/lib/elements/entities/bucket/query/nql_compiler.js +44 -38
- package/lib/elements/entities/bucket/query/nql_engine.d.ts +1 -1
- package/lib/elements/entities/bucket/query/nql_engine.js +5 -2
- package/lib/elements/entities/bucket/view/bucket_view.builder.d.ts +2 -2
- package/lib/elements/entities/bucket/view/bucket_view.js +113 -81
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +9 -8
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +8 -10
- package/lib/elements/entities/constants/constants.builder.d.ts +3 -3
- package/lib/elements/entities/constants/constants.builder.js +8 -8
- package/lib/elements/entities/constants/constants.schema.d.ts +8 -3
- package/lib/elements/entities/constants/constants.schema.js +7 -2
- package/lib/elements/entities/message/message.infer.d.ts +1 -5
- package/lib/elements/entities/message/message.js +2 -7
- package/lib/elements/entities/message/message.schema.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +7 -5
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +18 -3
- package/lib/elements/entities/message/template/message_template_field.builder.js +49 -30
- package/lib/elements/entities/message/template/message_template_parser.js +2 -2
- package/lib/engine/{apps → app}/app.config.d.ts +11 -5
- package/lib/engine/{apps → app}/app.config.js +2 -2
- package/lib/engine/{apps → app}/app.d.ts +3 -2
- package/lib/engine/{apps → app}/app.js +3 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.client.js +1 -1
- package/lib/engine/{apps/distributed → app}/inc/inc.server.js +3 -3
- package/lib/engine/{apps/distributed → app}/inc/sandbox.js +1 -1
- package/lib/engine/{apps → app}/inline.app.d.ts +2 -12
- package/lib/engine/{apps → app}/inline.app.js +37 -34
- package/lib/engine/auth/authn.d.ts +10 -12
- package/lib/engine/auth/zero.authn_provider.d.ts +3 -4
- package/lib/engine/auth/zero.authn_provider.js +0 -1
- package/lib/engine/builder.d.ts +28 -0
- package/lib/engine/builder.js +99 -0
- package/lib/engine/cli/cli.js +3 -2
- package/lib/engine/cli/ui.js +1 -0
- package/lib/engine/daemon.d.ts +28 -25
- package/lib/engine/daemon.js +37 -8
- package/lib/engine/data/error.d.ts +37 -3
- package/lib/engine/data/error.js +58 -16
- package/lib/engine/data/file.d.ts +1 -0
- package/lib/engine/data/file.js +4 -0
- package/lib/engine/dependency.d.ts +53 -81
- package/lib/engine/dependency.js +246 -120
- package/lib/engine/module.d.ts +18 -48
- package/lib/engine/module.js +78 -158
- package/lib/engine/space.d.ts +2 -2
- package/lib/engine/space.js +6 -6
- package/lib/engine/transaction/nodes/bucket.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/bucket.trx_node.js +66 -43
- package/lib/engine/transaction/nodes/bucket_query.trx_node.d.ts +10 -4
- package/lib/engine/transaction/nodes/bucket_query.trx_node.js +56 -45
- package/lib/engine/transaction/nodes/external.trx_node.d.ts +15 -0
- package/lib/engine/transaction/nodes/external.trx_node.js +53 -0
- package/lib/engine/transaction/nodes/job.trx_node.d.ts +7 -3
- package/lib/engine/transaction/nodes/job.trx_node.js +49 -29
- package/lib/engine/transaction/nodes/machine.trx_node.js +6 -6
- package/lib/engine/transaction/nodes/queue.trx_node.js +3 -3
- package/lib/engine/transaction/nodes/resource.trx_node.d.ts +7 -4
- package/lib/engine/transaction/nodes/resource.trx_node.js +68 -51
- package/lib/engine/transaction/nodes/topic.trx_node.js +9 -9
- package/lib/engine/transaction/trx.d.ts +15 -12
- package/lib/engine/transaction/trx.js +19 -3
- package/lib/engine/transaction/trx_engine.config.d.ts +4 -4
- package/lib/engine/transaction/trx_engine.d.ts +25 -7
- package/lib/engine/transaction/trx_engine.js +67 -16
- package/lib/engine/transaction/trx_node.d.ts +25 -21
- package/lib/engine/transaction/trx_node.js +99 -57
- package/lib/engine/tree.d.ts +4 -16
- package/lib/engine/tree.js +87 -57
- package/lib/{compiler → engine}/treeshake.d.ts +32 -32
- package/lib/{compiler → engine}/treeshake.js +272 -242
- package/lib/engine/util/console.js +3 -0
- package/lib/engine/util/crypto.d.ts +4 -3
- package/lib/engine/util/crypto.js +15 -5
- package/lib/engine/util/hash.js +5 -0
- package/lib/engine/util/log.d.ts +6 -8
- package/lib/engine/util/log.js +1 -1
- package/lib/engine/util/name_helpers.d.ts +37 -0
- package/lib/{compiler/helpers → engine/util}/name_helpers.js +33 -0
- package/lib/engine/util/parse.d.ts +4 -3
- package/lib/engine/util/parse.js +13 -28
- package/lib/engine/util/path.d.ts +1 -0
- package/lib/engine/util/path.js +14 -0
- package/lib/engine/util/random.d.ts +4 -0
- package/lib/engine/util/random.js +31 -0
- package/lib/engine/util/type.d.ts +8 -0
- package/lib/schema.d.ts +1 -1
- package/package.json +4 -1
- package/tools/joaquin/bucket.js +1 -1
- package/tools/joaquin/job.js +1 -1
- package/tools/joaquin/message.js +1 -1
- package/tools/joaquin/mock.js +2 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/lib/compiler/apps/distributed/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/distributed/stages/4_dump_modules_stage.d.ts +0 -16
- package/lib/compiler/apps/monolyth/stages/1_mkdir_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/3_copy_types_stage.d.ts +0 -15
- package/lib/compiler/apps/monolyth/stages/6_dump_cli_stage.d.ts +0 -15
- package/lib/compiler/helpers/name_helpers.d.ts +0 -20
- package/lib/engine/apps/distributed/distributed.app.config.d.ts +0 -44
- package/lib/engine/apps/distributed/elements/distributed_job.d.ts +0 -7
- package/lib/engine/apps/distributed/elements/distributed_job.js +0 -11
- /package/lib/{compiler/apps → bundler}/distributed/stages/5_copy_static_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/6_dump_cli_stage.d.ts +0 -0
- /package/lib/{compiler/apps → bundler}/distributed/stages/7_dump_package_json_stage.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.client.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/inc.server.d.ts +0 -0
- /package/lib/engine/{apps/distributed → app}/inc/sandbox.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.d.ts +0 -0
- /package/lib/engine/{apps → app}/service.js +0 -0
|
@@ -56,7 +56,7 @@ class Bucket {
|
|
|
56
56
|
getQueryMeta() {
|
|
57
57
|
return {
|
|
58
58
|
...this.adapter.getQueryMeta(),
|
|
59
|
-
|
|
59
|
+
schema: this.schema
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
/* CRUD */
|
|
@@ -354,12 +354,12 @@ class Bucket {
|
|
|
354
354
|
_obj['#composition'] ?? (_obj['#composition'] = {});
|
|
355
355
|
(_a = _obj['#composition'])[_b = link.name] ?? (_a[_b] = []);
|
|
356
356
|
for (const linkObjItem of linkObj) {
|
|
357
|
-
const child = await trx.bucket(link.bucket.
|
|
357
|
+
const child = await trx.bucket(link.bucket.short).create(linkObjItem);
|
|
358
358
|
_obj['#composition'][link.name].push(child);
|
|
359
359
|
}
|
|
360
360
|
}
|
|
361
361
|
else {
|
|
362
|
-
const child = await trx.bucket(link.bucket.
|
|
362
|
+
const child = await trx.bucket(link.bucket.short).create(linkObj);
|
|
363
363
|
_obj['#composition'] ?? (_obj['#composition'] = {});
|
|
364
364
|
_obj['#composition'][link.name] = child;
|
|
365
365
|
}
|
|
@@ -472,11 +472,11 @@ class Bucket {
|
|
|
472
472
|
throw error_1.NesoiError.Bucket.CompositionValueShouldBeArray({ method: 'replace', bucket: this.schema.name, link: link.name });
|
|
473
473
|
}
|
|
474
474
|
for (const linkObjItem of linkObj) {
|
|
475
|
-
await trx.bucket(link.bucket.
|
|
475
|
+
await trx.bucket(link.bucket.short)[mode](linkObjItem);
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
478
|
else {
|
|
479
|
-
await trx.bucket(link.bucket.
|
|
479
|
+
await trx.bucket(link.bucket.short)[mode](linkObj);
|
|
480
480
|
}
|
|
481
481
|
}
|
|
482
482
|
return _obj;
|
|
@@ -525,12 +525,12 @@ class Bucket {
|
|
|
525
525
|
_obj['#composition'] ?? (_obj['#composition'] = {});
|
|
526
526
|
(_a = _obj['#composition'])[_b = link.name] ?? (_a[_b] = []);
|
|
527
527
|
for (const linkObjItem of linkObj) {
|
|
528
|
-
const child = await trx.bucket(link.bucket.
|
|
528
|
+
const child = await trx.bucket(link.bucket.short).put(linkObjItem);
|
|
529
529
|
_obj['#composition'][link.name].push(child);
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
else {
|
|
533
|
-
const child = await trx.bucket(link.bucket.
|
|
533
|
+
const child = await trx.bucket(link.bucket.short).put(linkObj);
|
|
534
534
|
_obj['#composition'] ?? (_obj['#composition'] = {});
|
|
535
535
|
_obj['#composition'][link.name] = child;
|
|
536
536
|
}
|
|
@@ -608,10 +608,10 @@ class Bucket {
|
|
|
608
608
|
if (!linked)
|
|
609
609
|
continue;
|
|
610
610
|
if (link.many) {
|
|
611
|
-
await trx.bucket(link.bucket.
|
|
611
|
+
await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
|
|
612
612
|
}
|
|
613
613
|
else {
|
|
614
|
-
await trx.bucket(link.bucket.
|
|
614
|
+
await trx.bucket(link.bucket.short).delete(linked.id);
|
|
615
615
|
}
|
|
616
616
|
}
|
|
617
617
|
// Delete the object itself
|
|
@@ -659,10 +659,10 @@ class Bucket {
|
|
|
659
659
|
if (!linked)
|
|
660
660
|
continue;
|
|
661
661
|
if (link.many) {
|
|
662
|
-
await trx.bucket(link.bucket.
|
|
662
|
+
await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
|
|
663
663
|
}
|
|
664
664
|
else {
|
|
665
|
-
await trx.bucket(link.bucket.
|
|
665
|
+
await trx.bucket(link.bucket.short).unsafe.delete(linked.id);
|
|
666
666
|
}
|
|
667
667
|
}
|
|
668
668
|
}
|
|
@@ -682,10 +682,10 @@ class Bucket {
|
|
|
682
682
|
if (!linked)
|
|
683
683
|
continue;
|
|
684
684
|
if (link.many) {
|
|
685
|
-
await trx.bucket(link.bucket.
|
|
685
|
+
await trx.bucket(link.bucket.short).unsafe.deleteMany(linked.map((l) => l.id));
|
|
686
686
|
}
|
|
687
687
|
else {
|
|
688
|
-
await trx.bucket(link.bucket.
|
|
688
|
+
await trx.bucket(link.bucket.short).unsafe.delete(linked.id);
|
|
689
689
|
}
|
|
690
690
|
}
|
|
691
691
|
}
|
|
@@ -738,12 +738,12 @@ class Bucket {
|
|
|
738
738
|
if (operation === 'create') {
|
|
739
739
|
obj[this.adapter.config.meta.created_at] = datetime_1.NesoiDatetime.now();
|
|
740
740
|
if (match) {
|
|
741
|
-
obj[this.adapter.config.meta.created_by] = match.user.id;
|
|
741
|
+
obj[this.adapter.config.meta.created_by] = match.provider + '.' + match.user.id;
|
|
742
742
|
}
|
|
743
743
|
}
|
|
744
744
|
obj[this.adapter.config.meta.updated_at] = datetime_1.NesoiDatetime.now();
|
|
745
745
|
if (match) {
|
|
746
|
-
obj[this.adapter.config.meta.updated_by] = match.user.id;
|
|
746
|
+
obj[this.adapter.config.meta.updated_by] = match.provider + '.' + match.user.id;
|
|
747
747
|
}
|
|
748
748
|
}
|
|
749
749
|
// Tenancy
|
|
@@ -751,6 +751,8 @@ class Bucket {
|
|
|
751
751
|
if (!this.schema.tenancy)
|
|
752
752
|
return;
|
|
753
753
|
const match = trx_node_1.TrxNode.getFirstUserMatch(trx, this.schema.tenancy);
|
|
754
|
+
if (!match)
|
|
755
|
+
return;
|
|
754
756
|
return this.schema.tenancy[match.provider]?.(match.user);
|
|
755
757
|
}
|
|
756
758
|
// Encryption
|
|
@@ -758,7 +760,7 @@ class Bucket {
|
|
|
758
760
|
for (const key in fields) {
|
|
759
761
|
const field = fields[key];
|
|
760
762
|
if (field.crypto) {
|
|
761
|
-
const key = trx.value(field.crypto.
|
|
763
|
+
const key = trx.value(field.crypto.value.short);
|
|
762
764
|
const val = tree_1.Tree.get(obj, field.path);
|
|
763
765
|
if (val !== undefined) {
|
|
764
766
|
const encrypted = await crypto_1.NesoiCrypto.encrypt(val, key);
|
|
@@ -774,7 +776,7 @@ class Bucket {
|
|
|
774
776
|
for (const key in fields) {
|
|
775
777
|
const field = fields[key];
|
|
776
778
|
if (field.crypto) {
|
|
777
|
-
const key = trx.value(field.crypto.
|
|
779
|
+
const key = trx.value(field.crypto.value.short);
|
|
778
780
|
const val = tree_1.Tree.get(obj, field.path);
|
|
779
781
|
if (val !== undefined) {
|
|
780
782
|
const encrypted = await crypto_1.NesoiCrypto.decrypt(val, key);
|
|
@@ -2,7 +2,7 @@ import { $BucketGraph } from './graph/bucket_graph.schema';
|
|
|
2
2
|
import { $BucketViews } from './view/bucket_view.schema';
|
|
3
3
|
import { $BucketModel } from './model/bucket_model.schema';
|
|
4
4
|
import { NesoiObj } from "../../../engine/data/obj";
|
|
5
|
-
import {
|
|
5
|
+
import { Tag } from "../../../engine/dependency";
|
|
6
6
|
import { $Module } from "../..";
|
|
7
7
|
import { NQL_Query } from './query/nql.schema';
|
|
8
8
|
export type $BucketTenancy<M extends $Module, B extends $Bucket> = {
|
|
@@ -20,7 +20,7 @@ export declare class $Bucket {
|
|
|
20
20
|
graph: $BucketGraph;
|
|
21
21
|
views: $BucketViews;
|
|
22
22
|
tenancy?: $BucketTenancy<any, any> | undefined;
|
|
23
|
-
|
|
23
|
+
extendsFrom?: Tag | undefined;
|
|
24
24
|
$t: "bucket";
|
|
25
25
|
'#data': NesoiObj;
|
|
26
26
|
'#composition': Record<string, {
|
|
@@ -31,5 +31,5 @@ export declare class $Bucket {
|
|
|
31
31
|
'#modelpath': {};
|
|
32
32
|
'#querypath': {};
|
|
33
33
|
'#defaults': Record<string, any>;
|
|
34
|
-
constructor(module: string, name: string, alias: string, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, tenancy?: $BucketTenancy<any, any> | undefined,
|
|
34
|
+
constructor(module: string, name: string, alias: string, model: $BucketModel, graph: $BucketGraph, views: $BucketViews, tenancy?: $BucketTenancy<any, any> | undefined, extendsFrom?: Tag | undefined);
|
|
35
35
|
}
|
|
@@ -6,7 +6,7 @@ exports.$Bucket = void 0;
|
|
|
6
6
|
* @subcategory Entity
|
|
7
7
|
* */
|
|
8
8
|
class $Bucket {
|
|
9
|
-
constructor(module, name, alias, model, graph, views, tenancy,
|
|
9
|
+
constructor(module, name, alias, model, graph, views, tenancy, extendsFrom) {
|
|
10
10
|
this.module = module;
|
|
11
11
|
this.name = name;
|
|
12
12
|
this.alias = alias;
|
|
@@ -14,7 +14,7 @@ class $Bucket {
|
|
|
14
14
|
this.graph = graph;
|
|
15
15
|
this.views = views;
|
|
16
16
|
this.tenancy = tenancy;
|
|
17
|
-
this.
|
|
17
|
+
this.extendsFrom = extendsFrom;
|
|
18
18
|
this.$t = 'bucket';
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -89,7 +89,13 @@ class BucketCache {
|
|
|
89
89
|
else if (mode === 'all') {
|
|
90
90
|
const { action, sync } = await this.syncAll(trx);
|
|
91
91
|
log_1.Log.debug('bucket', this.bucket.schema.name, `CACHE query.all, ${action}`);
|
|
92
|
-
const
|
|
92
|
+
const meta = this.innerAdapter.getQueryMeta();
|
|
93
|
+
const entries = (await this.innerAdapter.query(trx, query, pagination, params, undefined, {
|
|
94
|
+
module: this.bucket.schema.module,
|
|
95
|
+
runners: {
|
|
96
|
+
[meta.scope]: this.innerAdapter.nql
|
|
97
|
+
}
|
|
98
|
+
})).data;
|
|
93
99
|
data = [];
|
|
94
100
|
for (const e of entries) {
|
|
95
101
|
const { __update_epoch, __sync_epoch, ...obj } = e;
|
|
@@ -181,9 +187,15 @@ class BucketCache {
|
|
|
181
187
|
return { action: 'none', sync: [] };
|
|
182
188
|
}
|
|
183
189
|
// 2. Read ids from the inner adapter
|
|
190
|
+
const meta = this.innerAdapter.getQueryMeta();
|
|
184
191
|
const innerData = await this.innerAdapter.query(trx, {
|
|
185
192
|
'id in': outerMetadata.data.map(obj => obj.id)
|
|
186
|
-
}, undefined, undefined, undefined,
|
|
193
|
+
}, undefined, undefined, undefined, {
|
|
194
|
+
module: this.bucket.schema.module,
|
|
195
|
+
runners: {
|
|
196
|
+
[meta.scope]: this.innerAdapter.nql
|
|
197
|
+
}
|
|
198
|
+
});
|
|
187
199
|
// 3. Filter modified query results
|
|
188
200
|
const outerEpoch = {};
|
|
189
201
|
for (const i in outerMetadata.data) {
|
|
@@ -18,7 +18,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
|
|
|
18
18
|
* - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
|
|
19
19
|
* - `no_tenancy`: Don't apply tenancy rules (default: `false`)
|
|
20
20
|
*/
|
|
21
|
-
readLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['
|
|
21
|
+
readLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, options?: {
|
|
22
22
|
silent?: boolean;
|
|
23
23
|
no_tenancy?: boolean;
|
|
24
24
|
}): Promise<Obj | Obj[] | undefined>;
|
|
@@ -29,7 +29,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
|
|
|
29
29
|
* - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
|
|
30
30
|
* - `no_tenancy`: Don't apply tenancy rules (default: `false`)
|
|
31
31
|
*/
|
|
32
|
-
readManyLinks<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['
|
|
32
|
+
readManyLinks<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], Obj = LinkBucket['#data']>(trx: AnyTrxNode, objs: $['#data'][], link: LinkName, options?: {
|
|
33
33
|
silent?: boolean;
|
|
34
34
|
no_tenancy?: boolean;
|
|
35
35
|
}): Promise<Obj[] | Obj[][]>;
|
|
@@ -40,7 +40,7 @@ export declare class BucketGraph<M extends $Module, $ extends $Bucket> {
|
|
|
40
40
|
* - `silent`: If not found, returns undefined instead of raising an exception (default: `false`)
|
|
41
41
|
* - `no_tenancy`: Don't apply tenancy rules (default: `false`)
|
|
42
42
|
*/
|
|
43
|
-
viewLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['
|
|
43
|
+
viewLink<LinkName extends keyof $['graph']['links'], LinkBucketName extends $['graph']['links'][LinkName]['bucket']['short'], LinkBucket extends M['buckets'][LinkBucketName], V extends ViewName<LinkBucket>, Obj extends ViewObj<LinkBucket, V>>(trx: AnyTrxNode, obj: $['#data'], link: LinkName, view: V, options?: {
|
|
44
44
|
silent?: boolean;
|
|
45
45
|
no_tenancy?: boolean;
|
|
46
46
|
}): Promise<Obj | Obj[] | undefined>;
|
|
@@ -6,6 +6,8 @@ const log_1 = require("../../../../engine/util/log");
|
|
|
6
6
|
const error_1 = require("../../../../engine/data/error");
|
|
7
7
|
const memory_bucket_adapter_1 = require("../adapters/memory.bucket_adapter");
|
|
8
8
|
const bucket_cache_1 = require("../cache/bucket_cache");
|
|
9
|
+
const daemon_1 = require("../../../../engine/daemon");
|
|
10
|
+
const dependency_1 = require("../../../../engine/dependency");
|
|
9
11
|
/**
|
|
10
12
|
* @category Elements
|
|
11
13
|
* @subcategory Entity
|
|
@@ -31,14 +33,29 @@ class BucketGraph {
|
|
|
31
33
|
? undefined
|
|
32
34
|
: this.bucket.getTenancyQuery(trx);
|
|
33
35
|
// Query
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const links = await adapter.query(trx, {
|
|
36
|
+
const module = trx_node_1.TrxNode.getModule(trx);
|
|
37
|
+
const query = {
|
|
37
38
|
...schema.query,
|
|
38
39
|
'#and __tenancy__': tenancy
|
|
39
|
-
}
|
|
40
|
+
};
|
|
41
|
+
const params = [{ ...obj }];
|
|
42
|
+
const page = {
|
|
40
43
|
perPage: schema.many ? undefined : 1,
|
|
41
|
-
}
|
|
44
|
+
};
|
|
45
|
+
// External
|
|
46
|
+
let links;
|
|
47
|
+
if (schema.bucket.module !== module.name) {
|
|
48
|
+
links = await trx.bucket(schema.bucket.short)
|
|
49
|
+
.query(query)
|
|
50
|
+
.params(params)
|
|
51
|
+
.page(page);
|
|
52
|
+
}
|
|
53
|
+
// Internal
|
|
54
|
+
else {
|
|
55
|
+
const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
|
|
56
|
+
const adapter = otherBucket.cache || otherBucket.adapter;
|
|
57
|
+
links = await adapter.query(trx, query, page, params);
|
|
58
|
+
}
|
|
42
59
|
// Empty response
|
|
43
60
|
if (!schema.many && !schema.optional && !links.data.length) {
|
|
44
61
|
// silent = undefined
|
|
@@ -75,23 +92,41 @@ class BucketGraph {
|
|
|
75
92
|
? undefined
|
|
76
93
|
: this.bucket.getTenancyQuery(trx);
|
|
77
94
|
// Query
|
|
78
|
-
const
|
|
79
|
-
|
|
95
|
+
const module = trx_node_1.TrxNode.getModule(trx);
|
|
96
|
+
const query = {
|
|
97
|
+
...schema.query,
|
|
98
|
+
'#and __tenancy__': tenancy
|
|
99
|
+
};
|
|
100
|
+
const params = objs.map(obj => ({ ...obj }));
|
|
80
101
|
let tempAdapter;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
...schema.query,
|
|
88
|
-
'#and __tenancy__': tenancy
|
|
89
|
-
}, undefined, objs.map(obj => ({ ...obj })));
|
|
102
|
+
// External
|
|
103
|
+
if (schema.bucket.module !== module.name) {
|
|
104
|
+
const allLinks = await trx.bucket(schema.bucket.short)
|
|
105
|
+
.query(query)
|
|
106
|
+
.params(params)
|
|
107
|
+
.all();
|
|
90
108
|
const tempData = {};
|
|
91
|
-
for (const obj of allLinks
|
|
109
|
+
for (const obj of allLinks)
|
|
92
110
|
tempData[obj.id] = obj;
|
|
111
|
+
const otherBucket = await daemon_1.Daemon.getBucketMetadata(module.daemon, schema.bucket);
|
|
93
112
|
tempAdapter = new memory_bucket_adapter_1.MemoryBucketAdapter(otherBucket.schema, tempData);
|
|
94
113
|
}
|
|
114
|
+
// Internal
|
|
115
|
+
else {
|
|
116
|
+
const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
|
|
117
|
+
if (otherBucket.adapter instanceof memory_bucket_adapter_1.MemoryBucketAdapter) {
|
|
118
|
+
tempAdapter = otherBucket.cache || otherBucket.adapter;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const adapter = otherBucket.cache || otherBucket.adapter;
|
|
122
|
+
const allLinks = await adapter.query(trx, query, undefined, params);
|
|
123
|
+
const tempData = {};
|
|
124
|
+
for (const obj of allLinks.data)
|
|
125
|
+
tempData[obj.id] = obj;
|
|
126
|
+
tempAdapter = new memory_bucket_adapter_1.MemoryBucketAdapter(otherBucket.schema, tempData);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Query
|
|
95
130
|
const links = [];
|
|
96
131
|
for (const obj of objs) {
|
|
97
132
|
const result = tempAdapter instanceof bucket_cache_1.BucketCache
|
|
@@ -100,7 +135,18 @@ class BucketGraph {
|
|
|
100
135
|
}, [{ ...obj }], undefined)
|
|
101
136
|
: await tempAdapter.query(trx, schema.query, {
|
|
102
137
|
perPage: schema.many ? undefined : 1,
|
|
103
|
-
}, [{ ...obj }], undefined,
|
|
138
|
+
}, [{ ...obj }], undefined, {
|
|
139
|
+
module: schema.bucket.module,
|
|
140
|
+
runners: {
|
|
141
|
+
[tempAdapter.getQueryMeta().scope]: tempAdapter.nql
|
|
142
|
+
},
|
|
143
|
+
metadata: {
|
|
144
|
+
...tempAdapter.getQueryMeta(),
|
|
145
|
+
schema: tempAdapter.schema,
|
|
146
|
+
tag: schema.bucket,
|
|
147
|
+
meta: tempAdapter.config.meta
|
|
148
|
+
}
|
|
149
|
+
});
|
|
104
150
|
if (schema.many) {
|
|
105
151
|
links.push(result.data);
|
|
106
152
|
}
|
|
@@ -121,19 +167,28 @@ class BucketGraph {
|
|
|
121
167
|
async viewLink(trx, obj, link, view, options) {
|
|
122
168
|
log_1.Log.trace('bucket', this.bucketName, `Read link ${link}`);
|
|
123
169
|
const schema = this.schema.links[link];
|
|
124
|
-
const otherBucket = trx_node_1.TrxNode.getModule(trx).buckets[schema.bucket.refName];
|
|
125
170
|
const links = await this.readLink(trx, obj, link, options);
|
|
126
171
|
if (!links)
|
|
127
172
|
return undefined;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
173
|
+
const module = trx_node_1.TrxNode.getModule(trx);
|
|
174
|
+
// External
|
|
175
|
+
if (schema.bucket.module !== module.name) {
|
|
176
|
+
if (Array.isArray(links)) {
|
|
177
|
+
return trx.bucket(schema.bucket.short).buildMany(links, view);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return await trx.bucket(schema.bucket.short).buildOne(links, view);
|
|
132
181
|
}
|
|
133
|
-
return output;
|
|
134
182
|
}
|
|
183
|
+
// Internal
|
|
135
184
|
else {
|
|
136
|
-
|
|
185
|
+
const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
|
|
186
|
+
if (Array.isArray(links)) {
|
|
187
|
+
return await otherBucket.buildMany(trx, links, view);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
return await otherBucket.buildOne(trx, links, view);
|
|
191
|
+
}
|
|
137
192
|
}
|
|
138
193
|
}
|
|
139
194
|
/**
|
|
@@ -151,12 +206,29 @@ class BucketGraph {
|
|
|
151
206
|
? undefined
|
|
152
207
|
: this.bucket.getTenancyQuery(trx);
|
|
153
208
|
// Query
|
|
154
|
-
const
|
|
209
|
+
const module = trx_node_1.TrxNode.getModule(trx);
|
|
210
|
+
const query = {
|
|
155
211
|
...schema.query,
|
|
156
|
-
'#
|
|
157
|
-
}
|
|
212
|
+
'#and__tenancy__': tenancy
|
|
213
|
+
};
|
|
214
|
+
const params = [{ ...obj }];
|
|
215
|
+
const page = {
|
|
158
216
|
perPage: 1,
|
|
159
|
-
}
|
|
217
|
+
};
|
|
218
|
+
// External
|
|
219
|
+
let links;
|
|
220
|
+
if (schema.bucket.module !== module.name) {
|
|
221
|
+
links = await trx.bucket(schema.bucket.short)
|
|
222
|
+
.query(query)
|
|
223
|
+
.params(params)
|
|
224
|
+
.page(page);
|
|
225
|
+
}
|
|
226
|
+
// Internal
|
|
227
|
+
else {
|
|
228
|
+
const otherBucket = dependency_1.Tag.element(schema.bucket, trx);
|
|
229
|
+
const adapter = otherBucket.cache || otherBucket.adapter;
|
|
230
|
+
links = await adapter.query(trx, query, page, params);
|
|
231
|
+
}
|
|
160
232
|
return !!links.data.length;
|
|
161
233
|
}
|
|
162
234
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Tag } from "../../../../engine/dependency";
|
|
2
2
|
import { $Bucket } from '../bucket.schema';
|
|
3
3
|
import { NQL_AnyQuery } from '../query/nql.schema';
|
|
4
4
|
/**
|
|
@@ -8,7 +8,7 @@ import { NQL_AnyQuery } from '../query/nql.schema';
|
|
|
8
8
|
export declare class $BucketGraphLink {
|
|
9
9
|
name: string;
|
|
10
10
|
alias: string;
|
|
11
|
-
bucket:
|
|
11
|
+
bucket: Tag;
|
|
12
12
|
rel: 'aggregation' | 'composition';
|
|
13
13
|
many: boolean;
|
|
14
14
|
optional: boolean;
|
|
@@ -17,7 +17,7 @@ export declare class $BucketGraphLink {
|
|
|
17
17
|
$t: string;
|
|
18
18
|
'#bucket': $Bucket;
|
|
19
19
|
'#many': boolean;
|
|
20
|
-
constructor(name: string, alias: string, bucket:
|
|
20
|
+
constructor(name: string, alias: string, bucket: Tag, rel: 'aggregation' | 'composition', many: boolean, optional: boolean, keyOwner: 'self' | 'other' | 'pivot', query: NQL_AnyQuery);
|
|
21
21
|
}
|
|
22
22
|
export type $BucketGraphLinks = {
|
|
23
23
|
[x: string]: $BucketGraphLink;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $Module } from "../../../../schema";
|
|
2
2
|
import { $BucketGraphLink } from './bucket_graph.schema';
|
|
3
3
|
import { BucketBuilderNode } from '../bucket.builder';
|
|
4
|
-
import {
|
|
4
|
+
import { Dependency } from "../../../../engine/dependency";
|
|
5
5
|
import { $Bucket } from '../bucket.schema';
|
|
6
6
|
import { NQL_AnyQuery, NQL_Query } from '../query/nql.schema';
|
|
7
7
|
/**
|
|
@@ -30,7 +30,7 @@ export declare class BucketGraphLinkBuilder<Module extends $Module, SelfBucket e
|
|
|
30
30
|
private alias?;
|
|
31
31
|
'#other': OtherBucket;
|
|
32
32
|
private _optional;
|
|
33
|
-
constructor(bucket:
|
|
33
|
+
constructor(bucket: Dependency, rel: 'aggregation' | 'composition', query: NQL_AnyQuery, many: boolean, alias?: string | undefined);
|
|
34
34
|
as(alias: string): this;
|
|
35
35
|
get optional(): this;
|
|
36
36
|
static build(node: BucketBuilderNode, builder: BucketGraphLinkBuilder<any, any, any>, name: string): $BucketGraphLink;
|
|
@@ -25,10 +25,12 @@ class BucketGraphLinkFactory {
|
|
|
25
25
|
return self;
|
|
26
26
|
}
|
|
27
27
|
one(bucket, query) {
|
|
28
|
-
|
|
28
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'bucket', bucket);
|
|
29
|
+
return new BucketGraphLinkBuilder(new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true }), this.type, query, false, this.alias);
|
|
29
30
|
}
|
|
30
31
|
many(bucket, query) {
|
|
31
|
-
|
|
32
|
+
const tag = dependency_1.Tag.fromNameOrShort(this.module, 'bucket', bucket);
|
|
33
|
+
return new BucketGraphLinkBuilder(new dependency_1.Dependency(this.module, tag, { compile: true, runtime: true }), this.type, query, true, this.alias);
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
exports.BucketGraphLinkFactory = BucketGraphLinkFactory;
|
|
@@ -57,7 +59,7 @@ class BucketGraphLinkBuilder {
|
|
|
57
59
|
return this;
|
|
58
60
|
}
|
|
59
61
|
static build(node, builder, name) {
|
|
60
|
-
return new bucket_graph_schema_1.$BucketGraphLink(name, builder.alias || name, builder.bucket, builder.rel, builder.many, builder._optional, this.inferKeyOwner(builder.query), builder.query);
|
|
62
|
+
return new bucket_graph_schema_1.$BucketGraphLink(name, builder.alias || name, builder.bucket.tag, builder.rel, builder.many, builder._optional, this.inferKeyOwner(builder.query), builder.query);
|
|
61
63
|
}
|
|
62
64
|
static inferKeyOwner(query) {
|
|
63
65
|
const keyOwner = 'self';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { $Module, $Space } from "../../../../schema";
|
|
2
2
|
import { $BucketModel } from './bucket_model.schema';
|
|
3
3
|
import { BucketModelFieldBuilder, BucketModelFieldBuilders, BucketModelFieldFactory } from './bucket_model_field.builder';
|
|
4
|
+
import { ModuleTree } from "../../../../engine/tree";
|
|
4
5
|
/**
|
|
5
6
|
* @category Builders
|
|
6
7
|
* @subcategory Entity
|
|
@@ -10,7 +11,7 @@ export declare class BucketModelBuilder<Module extends $Module> {
|
|
|
10
11
|
constructor(module: string);
|
|
11
12
|
private builders;
|
|
12
13
|
fields(builders: BucketModelFieldBuilders<Module>): this;
|
|
13
|
-
static build(builder: BucketModelBuilder<any
|
|
14
|
+
static build(builder: BucketModelBuilder<any>, tree: ModuleTree): $BucketModel;
|
|
14
15
|
}
|
|
15
16
|
export type BucketModelDef<Space extends $Space, Module extends $Module> = ($: BucketModelFieldFactory<Space, Module>) => {
|
|
16
17
|
id: BucketModelFieldBuilder<Module, any, any, any, any, any>;
|
|
@@ -20,8 +20,8 @@ class BucketModelBuilder {
|
|
|
20
20
|
return this;
|
|
21
21
|
}
|
|
22
22
|
// Build
|
|
23
|
-
static build(builder) {
|
|
24
|
-
const fields = bucket_model_field_builder_1.BucketModelFieldBuilder.buildChildren(builder.module, builder.builders);
|
|
23
|
+
static build(builder, tree) {
|
|
24
|
+
const fields = bucket_model_field_builder_1.BucketModelFieldBuilder.buildChildren(tree, builder.module, builder.builders);
|
|
25
25
|
return new bucket_model_schema_1.$BucketModel(fields.schema, fields.defaults, fields.hasFileField, fields.hasEncryptedField);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -8,7 +8,6 @@ const message_template_schema_1 = require("../../message/template/message_templa
|
|
|
8
8
|
const bucket_graph_schema_1 = require("../graph/bucket_graph.schema");
|
|
9
9
|
const bucket_view_field_builder_1 = require("../view/bucket_view_field.builder");
|
|
10
10
|
const message_schema_1 = require("../../message/message.schema");
|
|
11
|
-
const dependency_1 = require("../../../../engine/dependency");
|
|
12
11
|
/**
|
|
13
12
|
* @category Elements
|
|
14
13
|
* @subcategory Entity
|
|
@@ -28,7 +27,8 @@ function convertToView(model, name, fields = model.fields, path, depth = 0) {
|
|
|
28
27
|
}
|
|
29
28
|
return viewFields;
|
|
30
29
|
};
|
|
31
|
-
|
|
30
|
+
const v = new bucket_view_schema_1.$BucketView(name, convertFields(fields));
|
|
31
|
+
return v;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* @category Elements
|
|
@@ -37,10 +37,7 @@ function convertToView(model, name, fields = model.fields, path, depth = 0) {
|
|
|
37
37
|
function convertToMessage(module, model, name, alias, include = [], exclude = [], optional = []) {
|
|
38
38
|
const convertField = (field) => {
|
|
39
39
|
return new message_template_schema_1.$MessageTemplateField(field.type, field.name, field.alias, field.path, field.path, optional.includes(field.path) ? false : field.required, undefined, false, [], {
|
|
40
|
-
enum: field.meta?.enum
|
|
41
|
-
options: field.meta.enum.options,
|
|
42
|
-
dep: field.meta.enum.dep ? new dependency_1.$Dependency(module, 'constants', `${field.meta.enum.dep.module}::${field.meta.enum.dep.name}`) : undefined
|
|
43
|
-
} : undefined
|
|
40
|
+
enum: field.meta?.enum
|
|
44
41
|
}, field.children ? convertFields(field.children, include, exclude, optional) : undefined);
|
|
45
42
|
};
|
|
46
43
|
const convertFields = (fields, include = [], exclude = [], optional = [], root = '') => {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { $Module, $Bucket } from "../../..";
|
|
2
|
+
import { BucketAdapterConfig } from '../adapters/bucket_adapter';
|
|
3
|
+
/**
|
|
4
|
+
* @category Elements
|
|
5
|
+
* @subcategory Entity
|
|
6
|
+
* */
|
|
7
|
+
export declare class BucketModel<M extends $Module, $ extends $Bucket> {
|
|
8
|
+
private config?;
|
|
9
|
+
private alias;
|
|
10
|
+
private schema;
|
|
11
|
+
constructor(bucket: $Bucket, config?: BucketAdapterConfig | undefined);
|
|
12
|
+
copy<T extends Record<string, any>>(obj: T): T;
|
|
13
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BucketModel = void 0;
|
|
4
|
+
const error_1 = require("../../../../engine/data/error");
|
|
5
|
+
/**
|
|
6
|
+
* @category Elements
|
|
7
|
+
* @subcategory Entity
|
|
8
|
+
* */
|
|
9
|
+
class BucketModel {
|
|
10
|
+
constructor(bucket, config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.alias = bucket.alias;
|
|
13
|
+
this.schema = bucket.model;
|
|
14
|
+
}
|
|
15
|
+
copy(obj) {
|
|
16
|
+
const meta = this.config?.meta || {
|
|
17
|
+
created_at: 'created_at',
|
|
18
|
+
created_by: 'created_by',
|
|
19
|
+
updated_at: 'updated_at',
|
|
20
|
+
updated_by: 'updated_by',
|
|
21
|
+
};
|
|
22
|
+
const copy = {};
|
|
23
|
+
let poll = Object.entries(this.schema.fields).map(([path, field]) => ({ path, obj, copy, field }));
|
|
24
|
+
while (poll.length) {
|
|
25
|
+
const next = [];
|
|
26
|
+
for (const entry of poll) {
|
|
27
|
+
const val = entry.obj[entry.path];
|
|
28
|
+
if (val === undefined) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (val === null) {
|
|
32
|
+
entry.copy[entry.path] = null;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (entry.field.type === 'list') {
|
|
36
|
+
if (!Array.isArray(val))
|
|
37
|
+
continue;
|
|
38
|
+
entry.copy[entry.path] = [];
|
|
39
|
+
next.push(...val.map((_, i) => ({
|
|
40
|
+
path: i.toString(),
|
|
41
|
+
obj: val,
|
|
42
|
+
copy: entry.copy[entry.path],
|
|
43
|
+
field: entry.field.children['#']
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
else if (entry.field.type === 'dict') {
|
|
47
|
+
if (typeof val !== 'object' || Array.isArray(val))
|
|
48
|
+
continue;
|
|
49
|
+
entry.copy[entry.path] = {};
|
|
50
|
+
next.push(...Object.keys(val).map((path) => ({
|
|
51
|
+
path,
|
|
52
|
+
obj: val,
|
|
53
|
+
copy: entry.copy[entry.path],
|
|
54
|
+
field: entry.field.children['#']
|
|
55
|
+
})));
|
|
56
|
+
}
|
|
57
|
+
else if (entry.field.type === 'obj') {
|
|
58
|
+
if (typeof val !== 'object' || Array.isArray(val))
|
|
59
|
+
continue;
|
|
60
|
+
entry.copy[entry.path] = {};
|
|
61
|
+
next.push(...Object.keys(entry.field.children).map(path => ({
|
|
62
|
+
path: path,
|
|
63
|
+
obj: val,
|
|
64
|
+
copy: entry.copy[entry.path],
|
|
65
|
+
field: entry.field.children[path]
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
68
|
+
else if (entry.field.type === 'union') {
|
|
69
|
+
// TODO: ??????????
|
|
70
|
+
entry.copy[entry.path] = entry.obj[entry.path];
|
|
71
|
+
}
|
|
72
|
+
else if (entry.field.type === 'enum') {
|
|
73
|
+
const v = entry.obj[entry.path];
|
|
74
|
+
const options = entry.field.meta.enum.options;
|
|
75
|
+
if (!(v in options)) {
|
|
76
|
+
throw error_1.NesoiError.Bucket.Model.InvalidEnum({ bucket: this.alias, value: v, options: Object.keys(options) });
|
|
77
|
+
}
|
|
78
|
+
entry.copy[entry.path] = entry.obj[entry.path];
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
entry.copy[entry.path] = entry.obj[entry.path];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
poll = next;
|
|
85
|
+
}
|
|
86
|
+
copy[meta.created_at] = obj[meta.created_at];
|
|
87
|
+
copy[meta.created_by] = obj[meta.created_by];
|
|
88
|
+
copy[meta.updated_at] = obj[meta.updated_at];
|
|
89
|
+
copy[meta.updated_by] = obj[meta.updated_by];
|
|
90
|
+
return copy;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.BucketModel = BucketModel;
|