@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.
Files changed (66) hide show
  1. package/dist/docs.json +358 -358
  2. package/package.json +25 -25
  3. package/dist/browser/AbstractModule.cjs +0 -775
  4. package/dist/browser/AbstractModule.cjs.map +0 -1
  5. package/dist/browser/AbstractModule.js +0 -756
  6. package/dist/browser/AbstractModule.js.map +0 -1
  7. package/dist/browser/AbstractModuleInstance.cjs +0 -817
  8. package/dist/browser/AbstractModuleInstance.cjs.map +0 -1
  9. package/dist/browser/AbstractModuleInstance.js +0 -798
  10. package/dist/browser/AbstractModuleInstance.js.map +0 -1
  11. package/dist/browser/BaseEmitter.cjs +0 -68
  12. package/dist/browser/BaseEmitter.cjs.map +0 -1
  13. package/dist/browser/BaseEmitter.js +0 -49
  14. package/dist/browser/BaseEmitter.js.map +0 -1
  15. package/dist/browser/Error.cjs +0 -68
  16. package/dist/browser/Error.cjs.map +0 -1
  17. package/dist/browser/Error.js +0 -49
  18. package/dist/browser/Error.js.map +0 -1
  19. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.cjs +0 -83
  20. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.cjs.map +0 -1
  21. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js +0 -64
  22. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js.map +0 -1
  23. package/dist/browser/QueryValidator/QueryValidator.cjs +0 -19
  24. package/dist/browser/QueryValidator/QueryValidator.cjs.map +0 -1
  25. package/dist/browser/QueryValidator/QueryValidator.js +0 -1
  26. package/dist/browser/QueryValidator/QueryValidator.js.map +0 -1
  27. package/dist/browser/QueryValidator/SupportedQueryValidator.cjs +0 -47
  28. package/dist/browser/QueryValidator/SupportedQueryValidator.cjs.map +0 -1
  29. package/dist/browser/QueryValidator/SupportedQueryValidator.js +0 -28
  30. package/dist/browser/QueryValidator/SupportedQueryValidator.js.map +0 -1
  31. package/dist/browser/QueryValidator/index.cjs +0 -108
  32. package/dist/browser/QueryValidator/index.cjs.map +0 -1
  33. package/dist/browser/QueryValidator/index.js +0 -87
  34. package/dist/browser/QueryValidator/index.js.map +0 -1
  35. package/dist/node/AbstractModule.js +0 -799
  36. package/dist/node/AbstractModule.js.map +0 -1
  37. package/dist/node/AbstractModule.mjs +0 -776
  38. package/dist/node/AbstractModule.mjs.map +0 -1
  39. package/dist/node/AbstractModuleInstance.js +0 -840
  40. package/dist/node/AbstractModuleInstance.js.map +0 -1
  41. package/dist/node/AbstractModuleInstance.mjs +0 -817
  42. package/dist/node/AbstractModuleInstance.mjs.map +0 -1
  43. package/dist/node/BaseEmitter.js +0 -71
  44. package/dist/node/BaseEmitter.js.map +0 -1
  45. package/dist/node/BaseEmitter.mjs +0 -48
  46. package/dist/node/BaseEmitter.mjs.map +0 -1
  47. package/dist/node/Error.js +0 -71
  48. package/dist/node/Error.js.map +0 -1
  49. package/dist/node/Error.mjs +0 -48
  50. package/dist/node/Error.mjs.map +0 -1
  51. package/dist/node/QueryValidator/ModuleConfigQueryValidator.js +0 -94
  52. package/dist/node/QueryValidator/ModuleConfigQueryValidator.js.map +0 -1
  53. package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs +0 -71
  54. package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs.map +0 -1
  55. package/dist/node/QueryValidator/QueryValidator.js +0 -19
  56. package/dist/node/QueryValidator/QueryValidator.js.map +0 -1
  57. package/dist/node/QueryValidator/QueryValidator.mjs +0 -1
  58. package/dist/node/QueryValidator/QueryValidator.mjs.map +0 -1
  59. package/dist/node/QueryValidator/SupportedQueryValidator.js +0 -51
  60. package/dist/node/QueryValidator/SupportedQueryValidator.js.map +0 -1
  61. package/dist/node/QueryValidator/SupportedQueryValidator.mjs +0 -27
  62. package/dist/node/QueryValidator/SupportedQueryValidator.mjs.map +0 -1
  63. package/dist/node/QueryValidator/index.js +0 -120
  64. package/dist/node/QueryValidator/index.js.map +0 -1
  65. package/dist/node/QueryValidator/index.mjs +0 -93
  66. 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"]}