@xyo-network/module-abstract 2.92.10 → 2.93.0-rc.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/dist/browser/AbstractModule.d.cts +1 -2
- package/dist/browser/AbstractModule.d.cts.map +1 -1
- package/dist/browser/AbstractModule.d.mts +1 -2
- package/dist/browser/AbstractModule.d.mts.map +1 -1
- package/dist/browser/AbstractModule.d.ts +1 -2
- package/dist/browser/AbstractModule.d.ts.map +1 -1
- package/dist/browser/ResolveHelper.d.cts +14 -0
- package/dist/browser/ResolveHelper.d.cts.map +1 -0
- package/dist/browser/ResolveHelper.d.mts +14 -0
- package/dist/browser/ResolveHelper.d.mts.map +1 -0
- package/dist/browser/ResolveHelper.d.ts +14 -0
- package/dist/browser/ResolveHelper.d.ts.map +1 -0
- package/dist/browser/index.cjs +140 -94
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -0
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -0
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +108 -62
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AbstractModule.d.cts +1 -2
- package/dist/node/AbstractModule.d.cts.map +1 -1
- package/dist/node/AbstractModule.d.mts +1 -2
- package/dist/node/AbstractModule.d.mts.map +1 -1
- package/dist/node/AbstractModule.d.ts +1 -2
- package/dist/node/AbstractModule.d.ts.map +1 -1
- package/dist/node/ResolveHelper.d.cts +14 -0
- package/dist/node/ResolveHelper.d.cts.map +1 -0
- package/dist/node/ResolveHelper.d.mts +14 -0
- package/dist/node/ResolveHelper.d.mts.map +1 -0
- package/dist/node/ResolveHelper.d.ts +14 -0
- package/dist/node/ResolveHelper.d.ts.map +1 -0
- package/dist/node/index.cjs +140 -94
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -0
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +107 -62
- package/dist/node/index.js.map +1 -1
- package/package.json +28 -27
- package/src/AbstractModule.ts +27 -66
- package/src/ResolveHelper.ts +96 -0
- package/src/index.ts +1 -0
package/dist/node/index.cjs
CHANGED
|
@@ -31,6 +31,7 @@ __export(src_exports, {
|
|
|
31
31
|
BaseEmitter: () => BaseEmitter,
|
|
32
32
|
ModuleConfigQueryValidator: () => ModuleConfigQueryValidator,
|
|
33
33
|
ModuleErrorBuilder: () => ModuleErrorBuilder,
|
|
34
|
+
ResolveHelper: () => ResolveHelper,
|
|
34
35
|
SupportedQueryValidator: () => SupportedQueryValidator,
|
|
35
36
|
isQuerySupportedByModule: () => isQuerySupportedByModule
|
|
36
37
|
});
|
|
@@ -51,7 +52,7 @@ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
|
51
52
|
var import_boundwitness_wrapper3 = require("@xyo-network/boundwitness-wrapper");
|
|
52
53
|
var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
|
|
53
54
|
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
54
|
-
var
|
|
55
|
+
var import_module_model2 = require("@xyo-network/module-model");
|
|
55
56
|
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
56
57
|
var import_payload_builder2 = require("@xyo-network/payload-builder");
|
|
57
58
|
var import_query_payload_plugin = require("@xyo-network/query-payload-plugin");
|
|
@@ -252,27 +253,95 @@ var _SupportedQueryValidator = class _SupportedQueryValidator {
|
|
|
252
253
|
__name(_SupportedQueryValidator, "SupportedQueryValidator");
|
|
253
254
|
var SupportedQueryValidator = _SupportedQueryValidator;
|
|
254
255
|
|
|
256
|
+
// src/ResolveHelper.ts
|
|
257
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
258
|
+
var _ResolveHelper = class _ResolveHelper {
|
|
259
|
+
static async resolve(config, idOrFilter = "*", { required = "log", ...options } = {}) {
|
|
260
|
+
const { dead = false, upResolver, downResolver } = config;
|
|
261
|
+
const childOptions = {
|
|
262
|
+
...options,
|
|
263
|
+
required: false
|
|
264
|
+
};
|
|
265
|
+
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
266
|
+
const up = direction === "up" || direction === "all";
|
|
267
|
+
const down = direction === "down" || direction === "all";
|
|
268
|
+
let result;
|
|
269
|
+
if (idOrFilter === "*") {
|
|
270
|
+
if (dead) {
|
|
271
|
+
return [];
|
|
272
|
+
}
|
|
273
|
+
return [
|
|
274
|
+
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
275
|
+
...up ? await upResolver.resolve("*", childOptions) : []
|
|
276
|
+
].filter(import_module_model.duplicateModules);
|
|
277
|
+
} else {
|
|
278
|
+
switch (typeof idOrFilter) {
|
|
279
|
+
case "string": {
|
|
280
|
+
if (dead) {
|
|
281
|
+
return void 0;
|
|
282
|
+
}
|
|
283
|
+
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
default: {
|
|
287
|
+
if (dead) {
|
|
288
|
+
return [];
|
|
289
|
+
}
|
|
290
|
+
const filter = idOrFilter;
|
|
291
|
+
result = [
|
|
292
|
+
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
293
|
+
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
294
|
+
].filter(import_module_model.duplicateModules);
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
this.validateRequiredResolve(required, result, idOrFilter);
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
static validateRequiredResolve(required, result, idOrFilter, logger) {
|
|
303
|
+
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
304
|
+
switch (required) {
|
|
305
|
+
case "warn": {
|
|
306
|
+
logger == null ? void 0 : logger.warn("resolve failed", idOrFilter);
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
case "log": {
|
|
310
|
+
logger == null ? void 0 : logger.log("resolve failed", idOrFilter);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
default: {
|
|
314
|
+
logger == null ? void 0 : logger.error("resolve failed", idOrFilter);
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
__name(_ResolveHelper, "ResolveHelper");
|
|
322
|
+
var ResolveHelper = _ResolveHelper;
|
|
323
|
+
|
|
255
324
|
// src/AbstractModule.ts
|
|
256
325
|
var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
257
326
|
downResolver = new import_module_resolver.CompositeModuleResolver();
|
|
258
327
|
upResolver = new import_module_resolver.CompositeModuleResolver();
|
|
259
328
|
_account = void 0;
|
|
260
329
|
_baseModuleQueryAccountPaths = {
|
|
261
|
-
[
|
|
262
|
-
[
|
|
263
|
-
[
|
|
264
|
-
[
|
|
265
|
-
[
|
|
266
|
-
[
|
|
330
|
+
[import_module_model2.ModuleAddressQuerySchema]: "1",
|
|
331
|
+
[import_module_model2.ModuleDescribeQuerySchema]: "4",
|
|
332
|
+
[import_module_model2.ModuleDiscoverQuerySchema]: "2",
|
|
333
|
+
[import_module_model2.ModuleManifestQuerySchema]: "5",
|
|
334
|
+
[import_module_model2.ModuleStateQuerySchema]: "6",
|
|
335
|
+
[import_module_model2.ModuleSubscribeQuerySchema]: "3"
|
|
267
336
|
};
|
|
268
337
|
_lastError;
|
|
269
338
|
_queryAccounts = {
|
|
270
|
-
[
|
|
271
|
-
[
|
|
272
|
-
[
|
|
273
|
-
[
|
|
274
|
-
[
|
|
275
|
-
[
|
|
339
|
+
[import_module_model2.ModuleAddressQuerySchema]: void 0,
|
|
340
|
+
[import_module_model2.ModuleDescribeQuerySchema]: void 0,
|
|
341
|
+
[import_module_model2.ModuleDiscoverQuerySchema]: void 0,
|
|
342
|
+
[import_module_model2.ModuleManifestQuerySchema]: void 0,
|
|
343
|
+
[import_module_model2.ModuleStateQuerySchema]: void 0,
|
|
344
|
+
[import_module_model2.ModuleSubscribeQuerySchema]: void 0
|
|
276
345
|
};
|
|
277
346
|
_startPromise = void 0;
|
|
278
347
|
_started = void 0;
|
|
@@ -317,12 +386,12 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
317
386
|
}
|
|
318
387
|
get queries() {
|
|
319
388
|
return [
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
389
|
+
import_module_model2.ModuleDiscoverQuerySchema,
|
|
390
|
+
import_module_model2.ModuleAddressQuerySchema,
|
|
391
|
+
import_module_model2.ModuleSubscribeQuerySchema,
|
|
392
|
+
import_module_model2.ModuleDescribeQuerySchema,
|
|
393
|
+
import_module_model2.ModuleManifestQuerySchema,
|
|
394
|
+
import_module_model2.ModuleStateQuerySchema
|
|
326
395
|
];
|
|
327
396
|
}
|
|
328
397
|
get queryAccountPaths() {
|
|
@@ -370,7 +439,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
370
439
|
if (!this.configSchemas || this.configSchemas.length === 0) {
|
|
371
440
|
throw new Error(`Missing configSchema [${(_a = params == null ? void 0 : params.config) == null ? void 0 : _a.schema}][${this.name}]`);
|
|
372
441
|
}
|
|
373
|
-
(0, import_assert2.assertEx)(((_b = params == null ? void 0 : params.config) == null ? void 0 : _b.name) === void 0 || (0,
|
|
442
|
+
(0, import_assert2.assertEx)(((_b = params == null ? void 0 : params.config) == null ? void 0 : _b.name) === void 0 || (0, import_module_model2.isModuleName)(params.config.name), () => {
|
|
374
443
|
var _a2;
|
|
375
444
|
return `Invalid module name: ${(_a2 = params == null ? void 0 : params.config) == null ? void 0 : _a2.name}`;
|
|
376
445
|
});
|
|
@@ -403,7 +472,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
403
472
|
return await determineAccount(params, this.allowRandomAccount);
|
|
404
473
|
}
|
|
405
474
|
static factory(params) {
|
|
406
|
-
return
|
|
475
|
+
return import_module_model2.ModuleFactory.withParams(this, params);
|
|
407
476
|
}
|
|
408
477
|
_getRootFunction(funcName) {
|
|
409
478
|
let anyThis = this;
|
|
@@ -502,47 +571,30 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
502
571
|
];
|
|
503
572
|
return validators.every((validator) => validator(query, payloads));
|
|
504
573
|
}
|
|
505
|
-
async resolve(idOrFilter = "*",
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
let result;
|
|
514
|
-
if (idOrFilter === "*") {
|
|
515
|
-
if (this.dead) {
|
|
516
|
-
return [];
|
|
574
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
575
|
+
switch (typeof idOrFilter) {
|
|
576
|
+
case "string": {
|
|
577
|
+
return await ResolveHelper.resolve({
|
|
578
|
+
dead: this.dead,
|
|
579
|
+
downResolver: this.downResolver,
|
|
580
|
+
upResolver: this.upResolver
|
|
581
|
+
}, idOrFilter, options);
|
|
517
582
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
}
|
|
531
|
-
default: {
|
|
532
|
-
if (this.dead) {
|
|
533
|
-
return [];
|
|
534
|
-
}
|
|
535
|
-
const filter = idOrFilter;
|
|
536
|
-
result = [
|
|
537
|
-
...down ? await this.downResolver.resolve(filter, childOptions) : [],
|
|
538
|
-
...up ? await this.upResolver.resolve(filter, childOptions) : []
|
|
539
|
-
].filter(import_module_model.duplicateModules);
|
|
540
|
-
break;
|
|
541
|
-
}
|
|
583
|
+
case "object": {
|
|
584
|
+
return await ResolveHelper.resolve({
|
|
585
|
+
dead: this.dead,
|
|
586
|
+
downResolver: this.downResolver,
|
|
587
|
+
upResolver: this.upResolver
|
|
588
|
+
}, idOrFilter, options);
|
|
589
|
+
}
|
|
590
|
+
default: {
|
|
591
|
+
return await ResolveHelper.resolve({
|
|
592
|
+
dead: this.dead,
|
|
593
|
+
downResolver: this.downResolver,
|
|
594
|
+
upResolver: this.upResolver
|
|
595
|
+
}, idOrFilter, options);
|
|
542
596
|
}
|
|
543
597
|
}
|
|
544
|
-
this.validateRequiredResolve(required, result, idOrFilter);
|
|
545
|
-
return result;
|
|
546
598
|
}
|
|
547
599
|
start(_timeout) {
|
|
548
600
|
this._startPromise = this._startPromise ?? this.startHandler();
|
|
@@ -609,7 +661,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
609
661
|
}
|
|
610
662
|
_checkDead() {
|
|
611
663
|
if (this.dead) {
|
|
612
|
-
throw new
|
|
664
|
+
throw new import_module_model2.DeadModuleError(this.id, this._lastError);
|
|
613
665
|
}
|
|
614
666
|
}
|
|
615
667
|
_noOverride(functionName) {
|
|
@@ -670,7 +722,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
670
722
|
const description = {
|
|
671
723
|
address: this.address,
|
|
672
724
|
queries: this.queries,
|
|
673
|
-
schema:
|
|
725
|
+
schema: import_module_model2.ModuleDescriptionSchema
|
|
674
726
|
};
|
|
675
727
|
if ((_a = this.config) == null ? void 0 : _a.name) {
|
|
676
728
|
description.name = this.config.name;
|
|
@@ -684,7 +736,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
684
736
|
}
|
|
685
737
|
async discoverHandler(_maxDepth) {
|
|
686
738
|
var _a;
|
|
687
|
-
const config = this.config;
|
|
739
|
+
const config = await import_payload_builder2.PayloadBuilder.build(this.config);
|
|
688
740
|
const address = await new import_payload_builder2.PayloadBuilder({
|
|
689
741
|
schema: import_address_payload_plugin.AddressSchema
|
|
690
742
|
}).fields({
|
|
@@ -698,10 +750,10 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
698
750
|
query
|
|
699
751
|
}).build();
|
|
700
752
|
}));
|
|
701
|
-
const configSchema = {
|
|
753
|
+
const configSchema = await import_payload_builder2.PayloadBuilder.build({
|
|
702
754
|
config: config.schema,
|
|
703
755
|
schema: import_config_payload_plugin.ConfigSchema
|
|
704
|
-
};
|
|
756
|
+
});
|
|
705
757
|
return (0, import_lodash.compact)([
|
|
706
758
|
config,
|
|
707
759
|
configSchema,
|
|
@@ -736,8 +788,18 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
736
788
|
}
|
|
737
789
|
}
|
|
738
790
|
}
|
|
739
|
-
manifestHandler(_depth, _ignoreAddresses) {
|
|
791
|
+
async manifestHandler(_depth, _ignoreAddresses) {
|
|
740
792
|
const name = this.config.name ?? "Anonymous";
|
|
793
|
+
const children = await this.downResolver.resolve("*", {
|
|
794
|
+
direction: "down",
|
|
795
|
+
maxDepth: 1
|
|
796
|
+
});
|
|
797
|
+
const childAddressToName = {};
|
|
798
|
+
for (const child of children) {
|
|
799
|
+
if (child.address !== this.address) {
|
|
800
|
+
childAddressToName[child.address] = child.config.name ?? null;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
741
803
|
return {
|
|
742
804
|
config: {
|
|
743
805
|
name,
|
|
@@ -745,7 +807,8 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
745
807
|
},
|
|
746
808
|
schema: import_manifest_model.ModuleManifestPayloadSchema,
|
|
747
809
|
status: {
|
|
748
|
-
address: this.address
|
|
810
|
+
address: this.address,
|
|
811
|
+
children: childAddressToName
|
|
749
812
|
}
|
|
750
813
|
};
|
|
751
814
|
}
|
|
@@ -764,7 +827,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
764
827
|
{
|
|
765
828
|
address: address2,
|
|
766
829
|
previousHash: previousHash2,
|
|
767
|
-
schema:
|
|
830
|
+
schema: import_module_model2.AddressPreviousHashSchema
|
|
768
831
|
}
|
|
769
832
|
];
|
|
770
833
|
});
|
|
@@ -782,10 +845,10 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
782
845
|
const moduleAccountPreviousHash = previousHash ? {
|
|
783
846
|
address,
|
|
784
847
|
previousHash,
|
|
785
|
-
schema:
|
|
848
|
+
schema: import_module_model2.AddressPreviousHashSchema
|
|
786
849
|
} : {
|
|
787
850
|
address,
|
|
788
|
-
schema:
|
|
851
|
+
schema: import_module_model2.AddressPreviousHashSchema
|
|
789
852
|
};
|
|
790
853
|
return [
|
|
791
854
|
moduleAccount,
|
|
@@ -800,28 +863,28 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
800
863
|
(0, import_assert2.assertEx)(await this.queryable(query, payloads, queryConfig));
|
|
801
864
|
const resultPayloads = [];
|
|
802
865
|
switch (queryPayload.schema) {
|
|
803
|
-
case
|
|
866
|
+
case import_module_model2.ModuleManifestQuerySchema: {
|
|
804
867
|
resultPayloads.push(await this.manifestHandler(queryPayload.maxDepth));
|
|
805
868
|
break;
|
|
806
869
|
}
|
|
807
|
-
case
|
|
870
|
+
case import_module_model2.ModuleDiscoverQuerySchema: {
|
|
808
871
|
const { maxDepth } = queryPayload;
|
|
809
872
|
resultPayloads.push(...await this.discoverHandler(maxDepth));
|
|
810
873
|
break;
|
|
811
874
|
}
|
|
812
|
-
case
|
|
875
|
+
case import_module_model2.ModuleDescribeQuerySchema: {
|
|
813
876
|
resultPayloads.push(await this.describeHandler());
|
|
814
877
|
break;
|
|
815
878
|
}
|
|
816
|
-
case
|
|
879
|
+
case import_module_model2.ModuleAddressQuerySchema: {
|
|
817
880
|
resultPayloads.push(...await this.moduleAddressHandler());
|
|
818
881
|
break;
|
|
819
882
|
}
|
|
820
|
-
case
|
|
883
|
+
case import_module_model2.ModuleStateQuerySchema: {
|
|
821
884
|
resultPayloads.push(...await this.stateHandler());
|
|
822
885
|
break;
|
|
823
886
|
}
|
|
824
|
-
case
|
|
887
|
+
case import_module_model2.ModuleSubscribeQuerySchema: {
|
|
825
888
|
this.subscribeHandler();
|
|
826
889
|
break;
|
|
827
890
|
}
|
|
@@ -886,7 +949,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
886
949
|
}, true) && valid
|
|
887
950
|
);
|
|
888
951
|
}
|
|
889
|
-
if (!(0,
|
|
952
|
+
if (!(0, import_module_model2.serializableField)(value)) {
|
|
890
953
|
(_b = this.logger) == null ? void 0 : _b.warn(`Fields that are not serializable to JSON are not allowed in config [${parents == null ? void 0 : parents.join(".")}.${key}]`);
|
|
891
954
|
return false;
|
|
892
955
|
}
|
|
@@ -901,24 +964,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
901
964
|
}
|
|
902
965
|
}, true);
|
|
903
966
|
}
|
|
904
|
-
validateRequiredResolve(required, result, idOrFilter) {
|
|
905
|
-
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
906
|
-
switch (required) {
|
|
907
|
-
case "warn": {
|
|
908
|
-
this.logger.warn("resolve failed", idOrFilter);
|
|
909
|
-
break;
|
|
910
|
-
}
|
|
911
|
-
case "log": {
|
|
912
|
-
this.logger.log("resolve failed", idOrFilter);
|
|
913
|
-
break;
|
|
914
|
-
}
|
|
915
|
-
default: {
|
|
916
|
-
this.logger.error("resolve failed", idOrFilter);
|
|
917
|
-
break;
|
|
918
|
-
}
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
967
|
};
|
|
923
968
|
__name(_AbstractModule, "AbstractModule");
|
|
924
969
|
__publicField(_AbstractModule, "allowRandomAccount", true);
|
|
@@ -984,6 +1029,7 @@ var AbstractModuleInstance = _AbstractModuleInstance;
|
|
|
984
1029
|
BaseEmitter,
|
|
985
1030
|
ModuleConfigQueryValidator,
|
|
986
1031
|
ModuleErrorBuilder,
|
|
1032
|
+
ResolveHelper,
|
|
987
1033
|
SupportedQueryValidator,
|
|
988
1034
|
isQuerySupportedByModule
|
|
989
1035
|
});
|