@xyo-network/module-abstract 2.75.15 → 2.75.16
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/docs.json +358 -358
- package/package.json +25 -25
- package/dist/browser/AbstractModule.cjs +0 -775
- package/dist/browser/AbstractModule.cjs.map +0 -1
- package/dist/browser/AbstractModule.js +0 -756
- package/dist/browser/AbstractModule.js.map +0 -1
- package/dist/browser/AbstractModuleInstance.cjs +0 -817
- package/dist/browser/AbstractModuleInstance.cjs.map +0 -1
- package/dist/browser/AbstractModuleInstance.js +0 -798
- package/dist/browser/AbstractModuleInstance.js.map +0 -1
- package/dist/browser/BaseEmitter.cjs +0 -68
- package/dist/browser/BaseEmitter.cjs.map +0 -1
- package/dist/browser/BaseEmitter.js +0 -49
- package/dist/browser/BaseEmitter.js.map +0 -1
- package/dist/browser/Error.cjs +0 -68
- package/dist/browser/Error.cjs.map +0 -1
- package/dist/browser/Error.js +0 -49
- package/dist/browser/Error.js.map +0 -1
- package/dist/browser/QueryValidator/ModuleConfigQueryValidator.cjs +0 -83
- package/dist/browser/QueryValidator/ModuleConfigQueryValidator.cjs.map +0 -1
- package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js +0 -64
- package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js.map +0 -1
- package/dist/browser/QueryValidator/QueryValidator.cjs +0 -19
- package/dist/browser/QueryValidator/QueryValidator.cjs.map +0 -1
- package/dist/browser/QueryValidator/QueryValidator.js +0 -1
- package/dist/browser/QueryValidator/QueryValidator.js.map +0 -1
- package/dist/browser/QueryValidator/SupportedQueryValidator.cjs +0 -47
- package/dist/browser/QueryValidator/SupportedQueryValidator.cjs.map +0 -1
- package/dist/browser/QueryValidator/SupportedQueryValidator.js +0 -28
- package/dist/browser/QueryValidator/SupportedQueryValidator.js.map +0 -1
- package/dist/browser/QueryValidator/index.cjs +0 -108
- package/dist/browser/QueryValidator/index.cjs.map +0 -1
- package/dist/browser/QueryValidator/index.js +0 -87
- package/dist/browser/QueryValidator/index.js.map +0 -1
- package/dist/node/AbstractModule.js +0 -799
- package/dist/node/AbstractModule.js.map +0 -1
- package/dist/node/AbstractModule.mjs +0 -776
- package/dist/node/AbstractModule.mjs.map +0 -1
- package/dist/node/AbstractModuleInstance.js +0 -840
- package/dist/node/AbstractModuleInstance.js.map +0 -1
- package/dist/node/AbstractModuleInstance.mjs +0 -817
- package/dist/node/AbstractModuleInstance.mjs.map +0 -1
- package/dist/node/BaseEmitter.js +0 -71
- package/dist/node/BaseEmitter.js.map +0 -1
- package/dist/node/BaseEmitter.mjs +0 -48
- package/dist/node/BaseEmitter.mjs.map +0 -1
- package/dist/node/Error.js +0 -71
- package/dist/node/Error.js.map +0 -1
- package/dist/node/Error.mjs +0 -48
- package/dist/node/Error.mjs.map +0 -1
- package/dist/node/QueryValidator/ModuleConfigQueryValidator.js +0 -94
- package/dist/node/QueryValidator/ModuleConfigQueryValidator.js.map +0 -1
- package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs +0 -71
- package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs.map +0 -1
- package/dist/node/QueryValidator/QueryValidator.js +0 -19
- package/dist/node/QueryValidator/QueryValidator.js.map +0 -1
- package/dist/node/QueryValidator/QueryValidator.mjs +0 -1
- package/dist/node/QueryValidator/QueryValidator.mjs.map +0 -1
- package/dist/node/QueryValidator/SupportedQueryValidator.js +0 -51
- package/dist/node/QueryValidator/SupportedQueryValidator.js.map +0 -1
- package/dist/node/QueryValidator/SupportedQueryValidator.mjs +0 -27
- package/dist/node/QueryValidator/SupportedQueryValidator.mjs.map +0 -1
- package/dist/node/QueryValidator/index.js +0 -120
- package/dist/node/QueryValidator/index.js.map +0 -1
- package/dist/node/QueryValidator/index.mjs +0 -93
- package/dist/node/QueryValidator/index.mjs.map +0 -1
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/QueryValidator/SupportedQueryValidator.ts
|
|
22
|
-
var SupportedQueryValidator_exports = {};
|
|
23
|
-
__export(SupportedQueryValidator_exports, {
|
|
24
|
-
SupportedQueryValidator: () => SupportedQueryValidator,
|
|
25
|
-
isQuerySupportedByModule: () => isQuerySupportedByModule
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(SupportedQueryValidator_exports);
|
|
28
|
-
var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
29
|
-
var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
|
|
30
|
-
const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
31
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
32
|
-
return mod.queries.includes(schema);
|
|
33
|
-
}, "isQuerySupportedByModule");
|
|
34
|
-
var SupportedQueryValidator = class {
|
|
35
|
-
static {
|
|
36
|
-
__name(this, "SupportedQueryValidator");
|
|
37
|
-
}
|
|
38
|
-
mod;
|
|
39
|
-
constructor(mod) {
|
|
40
|
-
this.mod = mod;
|
|
41
|
-
this.queryable = (query, payloads) => {
|
|
42
|
-
return isQuerySupportedByModule(this.mod, query, payloads);
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
queryable;
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=SupportedQueryValidator.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/QueryValidator/SupportedQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Module, ModuleQuery } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return mod.queries.includes(schema)\n}\n\nexport class SupportedQueryValidator implements QueryValidator {\n constructor(protected readonly mod: Module) {}\n queryable: Queryable = (query, payloads) => {\n return isQuerySupportedByModule(this.mod, query, payloads)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;kCAA4D;AAMrD,IAAMA,2BAA2B,8BACtCC,KACAC,OACAC,aAAAA;AAEA,QAAMC,UAAUC,qDAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,QAAMI,UAAU,MAAMH,QAAQI,SAAQ,GAAID;AAC1C,SAAON,IAAIQ,QAAQC,SAASH,MAAAA;AAC9B,GARwC;AAUjC,IAAMI,0BAAN,MAAMA;EAhBb,OAgBaA;;;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;","names":["isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
|
-
// src/QueryValidator/SupportedQueryValidator.ts
|
|
5
|
-
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
|
|
6
|
-
var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
|
|
7
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
8
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
9
|
-
return mod.queries.includes(schema);
|
|
10
|
-
}, "isQuerySupportedByModule");
|
|
11
|
-
var SupportedQueryValidator = class {
|
|
12
|
-
static {
|
|
13
|
-
__name(this, "SupportedQueryValidator");
|
|
14
|
-
}
|
|
15
|
-
mod;
|
|
16
|
-
constructor(mod) {
|
|
17
|
-
this.mod = mod;
|
|
18
|
-
this.queryable = (query, payloads) => {
|
|
19
|
-
return isQuerySupportedByModule(this.mod, query, payloads);
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
queryable;
|
|
23
|
-
};
|
|
24
|
-
export {
|
|
25
|
-
SupportedQueryValidator,
|
|
26
|
-
isQuerySupportedByModule
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=SupportedQueryValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/QueryValidator/SupportedQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Module, ModuleQuery } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return mod.queries.includes(schema)\n}\n\nexport class SupportedQueryValidator implements QueryValidator {\n constructor(protected readonly mod: Module) {}\n queryable: Queryable = (query, payloads) => {\n return isQuerySupportedByModule(this.mod, query, payloads)\n }\n}\n"],"mappings":";;;;AAAA,SAA4BA,gCAAgC;AAMrD,IAAMC,2BAA2B,8BACtCC,KACAC,OACAC,aAAAA;AAEA,QAAMC,UAAUC,yBAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,QAAMI,UAAU,MAAMH,QAAQI,SAAQ,GAAID;AAC1C,SAAON,IAAIQ,QAAQC,SAASH,MAAAA;AAC9B,GARwC;AAUjC,IAAMI,0BAAN,MAAMA;EAhBb,OAgBaA;;;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;","names":["QueryBoundWitnessWrapper","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/QueryValidator/index.ts
|
|
22
|
-
var QueryValidator_exports = {};
|
|
23
|
-
__export(QueryValidator_exports, {
|
|
24
|
-
ModuleConfigQueryValidator: () => ModuleConfigQueryValidator,
|
|
25
|
-
SupportedQueryValidator: () => SupportedQueryValidator,
|
|
26
|
-
isQuerySupportedByModule: () => isQuerySupportedByModule
|
|
27
|
-
});
|
|
28
|
-
module.exports = __toCommonJS(QueryValidator_exports);
|
|
29
|
-
|
|
30
|
-
// src/QueryValidator/ModuleConfigQueryValidator.ts
|
|
31
|
-
var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
32
|
-
var delimiter = "";
|
|
33
|
-
var ModuleConfigQueryValidator = class {
|
|
34
|
-
static {
|
|
35
|
-
__name(this, "ModuleConfigQueryValidator");
|
|
36
|
-
}
|
|
37
|
-
allowed = {};
|
|
38
|
-
disallowed = {};
|
|
39
|
-
hasAllowedRules;
|
|
40
|
-
hasDisallowedRules;
|
|
41
|
-
hasRules;
|
|
42
|
-
constructor(config) {
|
|
43
|
-
if (config?.security?.allowed) {
|
|
44
|
-
Object.entries(config.security?.allowed).forEach(([schema, addresses]) => {
|
|
45
|
-
this.allowed[schema] = addresses.map(toAddressesString);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
if (config?.security?.disallowed) {
|
|
49
|
-
Object.entries(config.security?.disallowed).forEach(([schema, addresses]) => {
|
|
50
|
-
this.disallowed[schema] = addresses.map(toAddressesString);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
this.hasAllowedRules = Object.keys(this.allowed).length > 0;
|
|
54
|
-
this.hasDisallowedRules = Object.keys(this.disallowed).length > 0;
|
|
55
|
-
this.hasRules = this.hasAllowedRules || this.hasDisallowedRules;
|
|
56
|
-
}
|
|
57
|
-
queryable = async (query, payloads) => {
|
|
58
|
-
if (!this.hasRules)
|
|
59
|
-
return true;
|
|
60
|
-
const addresses = query.addresses;
|
|
61
|
-
if (!addresses.length)
|
|
62
|
-
return false;
|
|
63
|
-
const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
64
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
65
|
-
return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses);
|
|
66
|
-
};
|
|
67
|
-
queryAllowed = (schema, addresses) => {
|
|
68
|
-
if (!this.hasAllowedRules)
|
|
69
|
-
return true;
|
|
70
|
-
if (addresses.length > 1) {
|
|
71
|
-
const signatories = toAddressesString(addresses);
|
|
72
|
-
const validCosigners = this.allowed?.[schema]?.includes(signatories);
|
|
73
|
-
if (validCosigners)
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
return addresses.every((address) => this.allowed?.[schema]?.includes(address) || false);
|
|
77
|
-
};
|
|
78
|
-
queryDisallowed = (schema, addresses) => {
|
|
79
|
-
if (!this.hasDisallowedRules)
|
|
80
|
-
return false;
|
|
81
|
-
return addresses.some((address) => this.disallowed?.[schema]?.includes(address));
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
var toAddressesString = /* @__PURE__ */ __name((addresses) => {
|
|
85
|
-
return Array.isArray(addresses) ? addresses.sort().map((address) => address.toLowerCase()).join(delimiter) : addresses.toLowerCase();
|
|
86
|
-
}, "toAddressesString");
|
|
87
|
-
|
|
88
|
-
// src/QueryValidator/SupportedQueryValidator.ts
|
|
89
|
-
var import_boundwitness_builder2 = require("@xyo-network/boundwitness-builder");
|
|
90
|
-
var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
|
|
91
|
-
const wrapper = import_boundwitness_builder2.QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
92
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
93
|
-
return mod.queries.includes(schema);
|
|
94
|
-
}, "isQuerySupportedByModule");
|
|
95
|
-
var SupportedQueryValidator = class {
|
|
96
|
-
static {
|
|
97
|
-
__name(this, "SupportedQueryValidator");
|
|
98
|
-
}
|
|
99
|
-
mod;
|
|
100
|
-
constructor(mod) {
|
|
101
|
-
this.mod = mod;
|
|
102
|
-
this.queryable = (query, payloads) => {
|
|
103
|
-
return isQuerySupportedByModule(this.mod, query, payloads);
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
queryable;
|
|
107
|
-
};
|
|
108
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/QueryValidator/index.ts","../../../src/QueryValidator/ModuleConfigQueryValidator.ts","../../../src/QueryValidator/SupportedQueryValidator.ts"],"sourcesContent":["export * from './ModuleConfigQueryValidator'\nexport * from './QueryValidator'\nexport * from './SupportedQueryValidator'\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Address } from '@xyo-network/core'\nimport { AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQuery, SchemaString } from '@xyo-network/module-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport type SortedPipedAddressesString = string\n\nconst delimiter = ''\n\nexport class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleConfig>> implements QueryValidator {\n protected allowed: Record<SchemaString, SortedPipedAddressesString[]> = {}\n protected disallowed: Record<SchemaString, Address[]> = {}\n protected readonly hasAllowedRules: boolean\n protected readonly hasDisallowedRules: boolean\n protected readonly hasRules: boolean\n\n constructor(config?: TConfig) {\n if (config?.security?.allowed) {\n Object.entries(config.security?.allowed).forEach(([schema, addresses]) => {\n this.allowed[schema] = addresses.map(toAddressesString)\n })\n }\n if (config?.security?.disallowed) {\n Object.entries(config.security?.disallowed).forEach(([schema, addresses]) => {\n this.disallowed[schema] = addresses.map(toAddressesString)\n })\n }\n this.hasAllowedRules = Object.keys(this.allowed).length > 0\n this.hasDisallowedRules = Object.keys(this.disallowed).length > 0\n this.hasRules = this.hasAllowedRules || this.hasDisallowedRules\n }\n\n queryable: Queryable = async (query, payloads) => {\n if (!this.hasRules) return true\n const addresses = query.addresses\n if (!addresses.length) return false\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses)\n }\n\n protected queryAllowed = (schema: SchemaString, addresses: string[]): boolean => {\n if (!this.hasAllowedRules) return true\n // All cosigners must sign\n if (addresses.length > 1) {\n const signatories = toAddressesString(addresses)\n const validCosigners = this.allowed?.[schema]?.includes(signatories)\n if (validCosigners) return true\n }\n // OR all signers have to be allowed individually\n return addresses.every((address) => this.allowed?.[schema]?.includes(address) || false)\n }\n protected queryDisallowed = (schema: SchemaString, addresses: string[]): boolean => {\n if (!this.hasDisallowedRules) return false\n return addresses.some((address) => this.disallowed?.[schema]?.includes(address))\n }\n}\n\n// TODO: Handle 0x prefix\nconst toAddressesString = (addresses: string | CosigningAddressSet): SortedPipedAddressesString => {\n return Array.isArray(addresses)\n ? addresses\n .sort()\n .map((address) => address.toLowerCase())\n .join(delimiter)\n : addresses.toLowerCase()\n}\n","import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Module, ModuleQuery } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return mod.queries.includes(schema)\n}\n\nexport class SupportedQueryValidator implements QueryValidator {\n constructor(protected readonly mod: Module) {}\n queryable: Queryable = (query, payloads) => {\n return isQuerySupportedByModule(this.mod, query, payloads)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,kCAAyC;AAQzC,IAAMA,YAAY;AAEX,IAAMC,6BAAN,MAAMA;EAVb,OAUaA;;;EACDC,UAA8D,CAAC;EAC/DC,aAA8C,CAAC;EACtCC;EACAC;EACAC;EAEnBC,YAAYC,QAAkB;AAC5B,QAAIA,QAAQC,UAAUP,SAAS;AAC7BQ,aAAOC,QAAQH,OAAOC,UAAUP,OAAAA,EAASU,QAAQ,CAAC,CAACC,QAAQC,SAAAA,MAAU;AACnE,aAAKZ,QAAQW,MAAAA,IAAUC,UAAUC,IAAIC,iBAAAA;MACvC,CAAA;IACF;AACA,QAAIR,QAAQC,UAAUN,YAAY;AAChCO,aAAOC,QAAQH,OAAOC,UAAUN,UAAAA,EAAYS,QAAQ,CAAC,CAACC,QAAQC,SAAAA,MAAU;AACtE,aAAKX,WAAWU,MAAAA,IAAUC,UAAUC,IAAIC,iBAAAA;MAC1C,CAAA;IACF;AACA,SAAKZ,kBAAkBM,OAAOO,KAAK,KAAKf,OAAO,EAAEgB,SAAS;AAC1D,SAAKb,qBAAqBK,OAAOO,KAAK,KAAKd,UAAU,EAAEe,SAAS;AAChE,SAAKZ,WAAW,KAAKF,mBAAmB,KAAKC;EAC/C;EAEAc,YAAuB,OAAOC,OAAOC,aAAAA;AACnC,QAAI,CAAC,KAAKf;AAAU,aAAO;AAC3B,UAAMQ,YAAYM,MAAMN;AACxB,QAAI,CAACA,UAAUI;AAAQ,aAAO;AAC9B,UAAMI,UAAUC,qDAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,UAAMR,UAAU,MAAMS,QAAQG,SAAQ,GAAIZ;AAC1C,WAAO,KAAKa,aAAab,QAAQC,SAAAA,KAAc,CAAC,KAAKa,gBAAgBd,QAAQC,SAAAA;EAC/E;EAEUY,eAAe,CAACb,QAAsBC,cAAAA;AAC9C,QAAI,CAAC,KAAKV;AAAiB,aAAO;AAElC,QAAIU,UAAUI,SAAS,GAAG;AACxB,YAAMU,cAAcZ,kBAAkBF,SAAAA;AACtC,YAAMe,iBAAiB,KAAK3B,UAAUW,MAAAA,GAASiB,SAASF,WAAAA;AACxD,UAAIC;AAAgB,eAAO;IAC7B;AAEA,WAAOf,UAAUiB,MAAM,CAACC,YAAY,KAAK9B,UAAUW,MAAAA,GAASiB,SAASE,OAAAA,KAAY,KAAA;EACnF;EACUL,kBAAkB,CAACd,QAAsBC,cAAAA;AACjD,QAAI,CAAC,KAAKT;AAAoB,aAAO;AACrC,WAAOS,UAAUmB,KAAK,CAACD,YAAY,KAAK7B,aAAaU,MAAAA,GAASiB,SAASE,OAAAA,CAAAA;EACzE;AACF;AAGA,IAAMhB,oBAAoB,wBAACF,cAAAA;AACzB,SAAOoB,MAAMC,QAAQrB,SAAAA,IACjBA,UACGsB,KAAI,EACJrB,IAAI,CAACiB,YAAYA,QAAQK,YAAW,CAAA,EACpCC,KAAKtC,SAAAA,IACRc,UAAUuB,YAAW;AAC3B,GAP0B;;;AC5D1B,IAAAE,+BAA4D;AAMrD,IAAMC,2BAA2B,8BACtCC,KACAC,OACAC,aAAAA;AAEA,QAAMC,UAAUC,sDAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,QAAMI,UAAU,MAAMH,QAAQI,SAAQ,GAAID;AAC1C,SAAON,IAAIQ,QAAQC,SAASH,MAAAA;AAC9B,GARwC;AAUjC,IAAMI,0BAAN,MAAMA;EAhBb,OAgBaA;;;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;","names":["delimiter","ModuleConfigQueryValidator","allowed","disallowed","hasAllowedRules","hasDisallowedRules","hasRules","constructor","config","security","Object","entries","forEach","schema","addresses","map","toAddressesString","keys","length","queryable","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryAllowed","queryDisallowed","signatories","validCosigners","includes","every","address","some","Array","isArray","sort","toLowerCase","join","import_boundwitness_builder","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
|
-
// src/QueryValidator/ModuleConfigQueryValidator.ts
|
|
5
|
-
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
|
|
6
|
-
var delimiter = "";
|
|
7
|
-
var ModuleConfigQueryValidator = class {
|
|
8
|
-
static {
|
|
9
|
-
__name(this, "ModuleConfigQueryValidator");
|
|
10
|
-
}
|
|
11
|
-
allowed = {};
|
|
12
|
-
disallowed = {};
|
|
13
|
-
hasAllowedRules;
|
|
14
|
-
hasDisallowedRules;
|
|
15
|
-
hasRules;
|
|
16
|
-
constructor(config) {
|
|
17
|
-
if (config?.security?.allowed) {
|
|
18
|
-
Object.entries(config.security?.allowed).forEach(([schema, addresses]) => {
|
|
19
|
-
this.allowed[schema] = addresses.map(toAddressesString);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
if (config?.security?.disallowed) {
|
|
23
|
-
Object.entries(config.security?.disallowed).forEach(([schema, addresses]) => {
|
|
24
|
-
this.disallowed[schema] = addresses.map(toAddressesString);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
this.hasAllowedRules = Object.keys(this.allowed).length > 0;
|
|
28
|
-
this.hasDisallowedRules = Object.keys(this.disallowed).length > 0;
|
|
29
|
-
this.hasRules = this.hasAllowedRules || this.hasDisallowedRules;
|
|
30
|
-
}
|
|
31
|
-
queryable = async (query, payloads) => {
|
|
32
|
-
if (!this.hasRules)
|
|
33
|
-
return true;
|
|
34
|
-
const addresses = query.addresses;
|
|
35
|
-
if (!addresses.length)
|
|
36
|
-
return false;
|
|
37
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
38
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
39
|
-
return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses);
|
|
40
|
-
};
|
|
41
|
-
queryAllowed = (schema, addresses) => {
|
|
42
|
-
if (!this.hasAllowedRules)
|
|
43
|
-
return true;
|
|
44
|
-
if (addresses.length > 1) {
|
|
45
|
-
const signatories = toAddressesString(addresses);
|
|
46
|
-
const validCosigners = this.allowed?.[schema]?.includes(signatories);
|
|
47
|
-
if (validCosigners)
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
return addresses.every((address) => this.allowed?.[schema]?.includes(address) || false);
|
|
51
|
-
};
|
|
52
|
-
queryDisallowed = (schema, addresses) => {
|
|
53
|
-
if (!this.hasDisallowedRules)
|
|
54
|
-
return false;
|
|
55
|
-
return addresses.some((address) => this.disallowed?.[schema]?.includes(address));
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
var toAddressesString = /* @__PURE__ */ __name((addresses) => {
|
|
59
|
-
return Array.isArray(addresses) ? addresses.sort().map((address) => address.toLowerCase()).join(delimiter) : addresses.toLowerCase();
|
|
60
|
-
}, "toAddressesString");
|
|
61
|
-
|
|
62
|
-
// src/QueryValidator/SupportedQueryValidator.ts
|
|
63
|
-
import { QueryBoundWitnessWrapper as QueryBoundWitnessWrapper2 } from "@xyo-network/boundwitness-builder";
|
|
64
|
-
var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
|
|
65
|
-
const wrapper = QueryBoundWitnessWrapper2.parseQuery(query, payloads);
|
|
66
|
-
const schema = (await wrapper.getQuery()).schema;
|
|
67
|
-
return mod.queries.includes(schema);
|
|
68
|
-
}, "isQuerySupportedByModule");
|
|
69
|
-
var SupportedQueryValidator = class {
|
|
70
|
-
static {
|
|
71
|
-
__name(this, "SupportedQueryValidator");
|
|
72
|
-
}
|
|
73
|
-
mod;
|
|
74
|
-
constructor(mod) {
|
|
75
|
-
this.mod = mod;
|
|
76
|
-
this.queryable = (query, payloads) => {
|
|
77
|
-
return isQuerySupportedByModule(this.mod, query, payloads);
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
queryable;
|
|
81
|
-
};
|
|
82
|
-
export {
|
|
83
|
-
ModuleConfigQueryValidator,
|
|
84
|
-
SupportedQueryValidator,
|
|
85
|
-
isQuerySupportedByModule
|
|
86
|
-
};
|
|
87
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/QueryValidator/ModuleConfigQueryValidator.ts","../../../src/QueryValidator/SupportedQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Address } from '@xyo-network/core'\nimport { AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQuery, SchemaString } from '@xyo-network/module-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport type SortedPipedAddressesString = string\n\nconst delimiter = ''\n\nexport class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleConfig>> implements QueryValidator {\n protected allowed: Record<SchemaString, SortedPipedAddressesString[]> = {}\n protected disallowed: Record<SchemaString, Address[]> = {}\n protected readonly hasAllowedRules: boolean\n protected readonly hasDisallowedRules: boolean\n protected readonly hasRules: boolean\n\n constructor(config?: TConfig) {\n if (config?.security?.allowed) {\n Object.entries(config.security?.allowed).forEach(([schema, addresses]) => {\n this.allowed[schema] = addresses.map(toAddressesString)\n })\n }\n if (config?.security?.disallowed) {\n Object.entries(config.security?.disallowed).forEach(([schema, addresses]) => {\n this.disallowed[schema] = addresses.map(toAddressesString)\n })\n }\n this.hasAllowedRules = Object.keys(this.allowed).length > 0\n this.hasDisallowedRules = Object.keys(this.disallowed).length > 0\n this.hasRules = this.hasAllowedRules || this.hasDisallowedRules\n }\n\n queryable: Queryable = async (query, payloads) => {\n if (!this.hasRules) return true\n const addresses = query.addresses\n if (!addresses.length) return false\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses)\n }\n\n protected queryAllowed = (schema: SchemaString, addresses: string[]): boolean => {\n if (!this.hasAllowedRules) return true\n // All cosigners must sign\n if (addresses.length > 1) {\n const signatories = toAddressesString(addresses)\n const validCosigners = this.allowed?.[schema]?.includes(signatories)\n if (validCosigners) return true\n }\n // OR all signers have to be allowed individually\n return addresses.every((address) => this.allowed?.[schema]?.includes(address) || false)\n }\n protected queryDisallowed = (schema: SchemaString, addresses: string[]): boolean => {\n if (!this.hasDisallowedRules) return false\n return addresses.some((address) => this.disallowed?.[schema]?.includes(address))\n }\n}\n\n// TODO: Handle 0x prefix\nconst toAddressesString = (addresses: string | CosigningAddressSet): SortedPipedAddressesString => {\n return Array.isArray(addresses)\n ? addresses\n .sort()\n .map((address) => address.toLowerCase())\n .join(delimiter)\n : addresses.toLowerCase()\n}\n","import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { Module, ModuleQuery } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { Queryable, QueryValidator } from './QueryValidator'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQuery>(query, payloads)\n const schema = (await wrapper.getQuery()).schema\n return mod.queries.includes(schema)\n}\n\nexport class SupportedQueryValidator implements QueryValidator {\n constructor(protected readonly mod: Module) {}\n queryable: Queryable = (query, payloads) => {\n return isQuerySupportedByModule(this.mod, query, payloads)\n }\n}\n"],"mappings":";;;;AAAA,SAASA,gCAAgC;AAQzC,IAAMC,YAAY;AAEX,IAAMC,6BAAN,MAAMA;EAVb,OAUaA;;;EACDC,UAA8D,CAAC;EAC/DC,aAA8C,CAAC;EACtCC;EACAC;EACAC;EAEnBC,YAAYC,QAAkB;AAC5B,QAAIA,QAAQC,UAAUP,SAAS;AAC7BQ,aAAOC,QAAQH,OAAOC,UAAUP,OAAAA,EAASU,QAAQ,CAAC,CAACC,QAAQC,SAAAA,MAAU;AACnE,aAAKZ,QAAQW,MAAAA,IAAUC,UAAUC,IAAIC,iBAAAA;MACvC,CAAA;IACF;AACA,QAAIR,QAAQC,UAAUN,YAAY;AAChCO,aAAOC,QAAQH,OAAOC,UAAUN,UAAAA,EAAYS,QAAQ,CAAC,CAACC,QAAQC,SAAAA,MAAU;AACtE,aAAKX,WAAWU,MAAAA,IAAUC,UAAUC,IAAIC,iBAAAA;MAC1C,CAAA;IACF;AACA,SAAKZ,kBAAkBM,OAAOO,KAAK,KAAKf,OAAO,EAAEgB,SAAS;AAC1D,SAAKb,qBAAqBK,OAAOO,KAAK,KAAKd,UAAU,EAAEe,SAAS;AAChE,SAAKZ,WAAW,KAAKF,mBAAmB,KAAKC;EAC/C;EAEAc,YAAuB,OAAOC,OAAOC,aAAAA;AACnC,QAAI,CAAC,KAAKf;AAAU,aAAO;AAC3B,UAAMQ,YAAYM,MAAMN;AACxB,QAAI,CAACA,UAAUI;AAAQ,aAAO;AAC9B,UAAMI,UAAUC,yBAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,UAAMR,UAAU,MAAMS,QAAQG,SAAQ,GAAIZ;AAC1C,WAAO,KAAKa,aAAab,QAAQC,SAAAA,KAAc,CAAC,KAAKa,gBAAgBd,QAAQC,SAAAA;EAC/E;EAEUY,eAAe,CAACb,QAAsBC,cAAAA;AAC9C,QAAI,CAAC,KAAKV;AAAiB,aAAO;AAElC,QAAIU,UAAUI,SAAS,GAAG;AACxB,YAAMU,cAAcZ,kBAAkBF,SAAAA;AACtC,YAAMe,iBAAiB,KAAK3B,UAAUW,MAAAA,GAASiB,SAASF,WAAAA;AACxD,UAAIC;AAAgB,eAAO;IAC7B;AAEA,WAAOf,UAAUiB,MAAM,CAACC,YAAY,KAAK9B,UAAUW,MAAAA,GAASiB,SAASE,OAAAA,KAAY,KAAA;EACnF;EACUL,kBAAkB,CAACd,QAAsBC,cAAAA;AACjD,QAAI,CAAC,KAAKT;AAAoB,aAAO;AACrC,WAAOS,UAAUmB,KAAK,CAACD,YAAY,KAAK7B,aAAaU,MAAAA,GAASiB,SAASE,OAAAA,CAAAA;EACzE;AACF;AAGA,IAAMhB,oBAAoB,wBAACF,cAAAA;AACzB,SAAOoB,MAAMC,QAAQrB,SAAAA,IACjBA,UACGsB,KAAI,EACJrB,IAAI,CAACiB,YAAYA,QAAQK,YAAW,CAAA,EACpCC,KAAKtC,SAAAA,IACRc,UAAUuB,YAAW;AAC3B,GAP0B;;;AC5D1B,SAA4BE,4BAAAA,iCAAgC;AAMrD,IAAMC,2BAA2B,8BACtCC,KACAC,OACAC,aAAAA;AAEA,QAAMC,UAAUC,0BAAyBC,WAAwBJ,OAAOC,QAAAA;AACxE,QAAMI,UAAU,MAAMH,QAAQI,SAAQ,GAAID;AAC1C,SAAON,IAAIQ,QAAQC,SAASH,MAAAA;AAC9B,GARwC;AAUjC,IAAMI,0BAAN,MAAMA;EAhBb,OAgBaA;;;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;","names":["QueryBoundWitnessWrapper","delimiter","ModuleConfigQueryValidator","allowed","disallowed","hasAllowedRules","hasDisallowedRules","hasRules","constructor","config","security","Object","entries","forEach","schema","addresses","map","toAddressesString","keys","length","queryable","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryAllowed","queryDisallowed","signatories","validCosigners","includes","every","address","some","Array","isArray","sort","toLowerCase","join","QueryBoundWitnessWrapper","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
|