@xyo-network/module-abstract 2.75.0 → 2.75.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.
Files changed (88) hide show
  1. package/dist/browser/AbstractModule.d.cts +84 -0
  2. package/dist/browser/AbstractModule.d.cts.map +1 -0
  3. package/dist/browser/AbstractModule.js +16 -182
  4. package/dist/browser/AbstractModule.js.map +1 -1
  5. package/dist/browser/AbstractModuleInstance.d.cts +14 -0
  6. package/dist/browser/AbstractModuleInstance.d.cts.map +1 -0
  7. package/dist/browser/AbstractModuleInstance.js +4 -738
  8. package/dist/browser/AbstractModuleInstance.js.map +1 -1
  9. package/dist/browser/BaseEmitter.d.cts +17 -0
  10. package/dist/browser/BaseEmitter.d.cts.map +1 -0
  11. package/dist/browser/BaseEmitter.js +2 -4
  12. package/dist/browser/BaseEmitter.js.map +1 -1
  13. package/dist/browser/Error.d.cts +15 -0
  14. package/dist/browser/Error.d.cts.map +1 -0
  15. package/dist/browser/Error.js +2 -4
  16. package/dist/browser/Error.js.map +1 -1
  17. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.d.cts +15 -0
  18. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.d.cts.map +1 -0
  19. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js +4 -6
  20. package/dist/browser/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
  21. package/dist/browser/QueryValidator/QueryValidator.d.cts +8 -0
  22. package/dist/browser/QueryValidator/QueryValidator.d.cts.map +1 -0
  23. package/dist/browser/QueryValidator/SupportedQueryValidator.d.cts +22 -0
  24. package/dist/browser/QueryValidator/SupportedQueryValidator.d.cts.map +1 -0
  25. package/dist/browser/QueryValidator/SupportedQueryValidator.js +3 -5
  26. package/dist/browser/QueryValidator/SupportedQueryValidator.js.map +1 -1
  27. package/dist/browser/QueryValidator/index.d.cts +4 -0
  28. package/dist/browser/QueryValidator/index.d.cts.map +1 -0
  29. package/dist/browser/QueryValidator/index.js +3 -86
  30. package/dist/browser/QueryValidator/index.js.map +1 -1
  31. package/dist/browser/index.d.cts +6 -0
  32. package/dist/browser/index.d.cts.map +1 -0
  33. package/dist/browser/index.js +5 -782
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/docs.json +42701 -0
  36. package/dist/node/AbstractModule.d.cts +84 -0
  37. package/dist/node/AbstractModule.d.cts.map +1 -0
  38. package/dist/node/AbstractModule.js +240 -56
  39. package/dist/node/AbstractModule.js.map +1 -1
  40. package/dist/node/AbstractModule.mjs +232 -48
  41. package/dist/node/AbstractModule.mjs.map +1 -1
  42. package/dist/node/AbstractModuleInstance.d.cts +14 -0
  43. package/dist/node/AbstractModuleInstance.d.cts.map +1 -0
  44. package/dist/node/AbstractModuleInstance.js +757 -6
  45. package/dist/node/AbstractModuleInstance.js.map +1 -1
  46. package/dist/node/AbstractModuleInstance.mjs +757 -6
  47. package/dist/node/AbstractModuleInstance.mjs.map +1 -1
  48. package/dist/node/BaseEmitter.d.cts +17 -0
  49. package/dist/node/BaseEmitter.d.cts.map +1 -0
  50. package/dist/node/BaseEmitter.js +6 -5
  51. package/dist/node/BaseEmitter.js.map +1 -1
  52. package/dist/node/BaseEmitter.mjs +6 -5
  53. package/dist/node/BaseEmitter.mjs.map +1 -1
  54. package/dist/node/Error.d.cts +15 -0
  55. package/dist/node/Error.d.cts.map +1 -0
  56. package/dist/node/Error.js +6 -5
  57. package/dist/node/Error.js.map +1 -1
  58. package/dist/node/Error.mjs +6 -5
  59. package/dist/node/Error.mjs.map +1 -1
  60. package/dist/node/QueryValidator/ModuleConfigQueryValidator.d.cts +15 -0
  61. package/dist/node/QueryValidator/ModuleConfigQueryValidator.d.cts.map +1 -0
  62. package/dist/node/QueryValidator/ModuleConfigQueryValidator.js +23 -14
  63. package/dist/node/QueryValidator/ModuleConfigQueryValidator.js.map +1 -1
  64. package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs +23 -14
  65. package/dist/node/QueryValidator/ModuleConfigQueryValidator.mjs.map +1 -1
  66. package/dist/node/QueryValidator/QueryValidator.d.cts +8 -0
  67. package/dist/node/QueryValidator/QueryValidator.d.cts.map +1 -0
  68. package/dist/node/QueryValidator/QueryValidator.js +2 -0
  69. package/dist/node/QueryValidator/QueryValidator.js.map +1 -1
  70. package/dist/node/QueryValidator/SupportedQueryValidator.d.cts +22 -0
  71. package/dist/node/QueryValidator/SupportedQueryValidator.d.cts.map +1 -0
  72. package/dist/node/QueryValidator/SupportedQueryValidator.js +7 -6
  73. package/dist/node/QueryValidator/SupportedQueryValidator.js.map +1 -1
  74. package/dist/node/QueryValidator/SupportedQueryValidator.mjs +7 -6
  75. package/dist/node/QueryValidator/SupportedQueryValidator.mjs.map +1 -1
  76. package/dist/node/QueryValidator/index.d.cts +4 -0
  77. package/dist/node/QueryValidator/index.d.cts.map +1 -0
  78. package/dist/node/QueryValidator/index.js +100 -7
  79. package/dist/node/QueryValidator/index.js.map +1 -1
  80. package/dist/node/QueryValidator/index.mjs +92 -3
  81. package/dist/node/QueryValidator/index.mjs.map +1 -1
  82. package/dist/node/index.d.cts +6 -0
  83. package/dist/node/index.d.cts.map +1 -0
  84. package/dist/node/index.js +811 -11
  85. package/dist/node/index.js.map +1 -1
  86. package/dist/node/index.mjs +799 -5
  87. package/dist/node/index.mjs.map +1 -1
  88. package/package.json +26 -26
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/QueryValidator/ModuleConfigQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { AddressString, 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, AddressString[]> = {}\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"],"mappings":";;AAAA,SAASA,gCAAgC;AAOzC,MAAMC,YAAY;AAEX,MAAMC,2BAAAA;EATb,OASaA;;;EACDC,UAA8D,CAAC;EAC/DC,aAAoD,CAAC;EAC5CC;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,UAAUvB,yBAAyBwB,WAAwBH,OAAOC,QAAAA;AACxE,UAAMR,UAAU,MAAMS,QAAQE,SAAQ,GAAIX;AAC1C,WAAO,KAAKY,aAAaZ,QAAQC,SAAAA,KAAc,CAAC,KAAKY,gBAAgBb,QAAQC,SAAAA;EAC/E;EAEUW,eAAe,CAACZ,QAAsBC,cAAAA;AAC9C,QAAI,CAAC,KAAKV;AAAiB,aAAO;AAElC,QAAIU,UAAUI,SAAS,GAAG;AACxB,YAAMS,cAAcX,kBAAkBF,SAAAA;AACtC,YAAMc,iBAAiB,KAAK1B,UAAUW,MAAAA,GAASgB,SAASF,WAAAA;AACxD,UAAIC;AAAgB,eAAO;IAC7B;AAEA,WAAOd,UAAUgB,MAAM,CAACC,YAAY,KAAK7B,UAAUW,MAAAA,GAASgB,SAASE,OAAAA,KAAY,KAAA;EACnF;EACUL,kBAAkB,CAACb,QAAsBC,cAAAA;AACjD,QAAI,CAAC,KAAKT;AAAoB,aAAO;AACrC,WAAOS,UAAUkB,KAAK,CAACD,YAAY,KAAK5B,aAAaU,MAAAA,GAASgB,SAASE,OAAAA,CAAAA;EACzE;AACF;AAGA,MAAMf,oBAAoB,wBAACF,cAAAA;AACzB,SAAOmB,MAAMC,QAAQpB,SAAAA,IACjBA,UACGqB,KAAI,EACJpB,IAAI,CAACgB,YAAYA,QAAQK,YAAW,CAAA,EACpCC,KAAKrC,SAAAA,IACRc,UAAUsB,YAAW;AAC3B,GAP0B;","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","parseQuery","getQuery","queryAllowed","queryDisallowed","signatories","validCosigners","includes","every","address","some","Array","isArray","sort","toLowerCase","join"]}
1
+ {"version":3,"sources":["../../../src/QueryValidator/ModuleConfigQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { AddressString, 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, AddressString[]> = {}\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"],"mappings":";;;;AAAA,SAASA,gCAAgC;AAOzC,IAAMC,YAAY;AAEX,IAAMC,8BAAN,MAAMA,4BAAAA;EACDC,UAA8D,CAAC;EAC/DC,aAAoD,CAAC;EAC5CC;EACAC;EACAC;EAEnBC,YAAYC,QAAkB;AAhBhC;AAiBI,SAAIA,sCAAQC,aAARD,mBAAkBN,SAAS;AAC7BQ,aAAOC,SAAQH,YAAOC,aAAPD,mBAAiBN,OAAAA,EAASU,QAAQ,CAAC,CAACC,QAAQC,SAAAA,MAAU;AACnE,aAAKZ,QAAQW,MAAAA,IAAUC,UAAUC,IAAIC,iBAAAA;MACvC,CAAA;IACF;AACA,SAAIR,sCAAQC,aAARD,mBAAkBL,YAAY;AAChCO,aAAOC,SAAQH,YAAOC,aAAPD,mBAAiBL,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;AAzClD;AA0CI,QAAI,CAAC,KAAKV;AAAiB,aAAO;AAElC,QAAIU,UAAUI,SAAS,GAAG;AACxB,YAAMU,cAAcZ,kBAAkBF,SAAAA;AACtC,YAAMe,kBAAiB,gBAAK3B,YAAL,mBAAeW,YAAf,mBAAwBiB,SAASF;AACxD,UAAIC;AAAgB,eAAO;IAC7B;AAEA,WAAOf,UAAUiB,MAAM,CAACC,YAAAA;AAlD5B,UAAAC,KAAAC;AAkDwC,eAAAA,OAAAD,MAAA,KAAK/B,YAAL,gBAAA+B,IAAepB,YAAf,gBAAAqB,IAAwBJ,SAASE,aAAY;KAAA;EACnF;EACUL,kBAAkB,CAACd,QAAsBC,cAAAA;AACjD,QAAI,CAAC,KAAKT;AAAoB,aAAO;AACrC,WAAOS,UAAUqB,KAAK,CAACH,YAAAA;AAtD3B;AAsDuC,8BAAK7B,eAAL,mBAAkBU,YAAlB,mBAA2BiB,SAASE;KAAAA;EACzE;AACF;AA/Ca/B;AAAN,IAAMA,6BAAN;AAkDP,IAAMe,oBAAoB,wBAACF,cAAAA;AACzB,SAAOsB,MAAMC,QAAQvB,SAAAA,IACjBA,UACGwB,KAAI,EACJvB,IAAI,CAACiB,YAAYA,QAAQO,YAAW,CAAA,EACpCC,KAAKxC,SAAAA,IACRc,UAAUyB,YAAW;AAC3B,GAP0B;","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","_a","_b","some","Array","isArray","sort","toLowerCase","join"]}
@@ -0,0 +1,8 @@
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
2
+ import { Payload } from '@xyo-network/payload-model';
3
+ import { Promisable } from '@xyo-network/promise';
4
+ export type Queryable<T extends QueryBoundWitness = QueryBoundWitness> = (query: T, payloads?: Payload[]) => Promisable<boolean>;
5
+ export interface QueryValidator<T extends QueryBoundWitness = QueryBoundWitness> {
6
+ queryable: Queryable<T>;
7
+ }
8
+ //# sourceMappingURL=QueryValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryValidator.d.ts","sourceRoot":"","sources":["../../../src/QueryValidator/QueryValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;AAEhI,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAC7E,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CACxB"}
@@ -12,6 +12,8 @@ var __copyProps = (to, from, except, desc) => {
12
12
  return to;
13
13
  };
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/QueryValidator/QueryValidator.ts
15
17
  var QueryValidator_exports = {};
16
18
  module.exports = __toCommonJS(QueryValidator_exports);
17
19
  //# sourceMappingURL=QueryValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/QueryValidator/QueryValidator.ts"],"sourcesContent":["import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type Queryable<T extends QueryBoundWitness = QueryBoundWitness> = (query: T, payloads?: Payload[]) => Promisable<boolean>\n\nexport interface QueryValidator<T extends QueryBoundWitness = QueryBoundWitness> {\n queryable: Queryable<T>\n}\n"],"mappings":";;;;;;;;;;;;;;AAMA;;","names":[]}
1
+ {"version":3,"sources":["../../../src/QueryValidator/QueryValidator.ts"],"sourcesContent":["import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type Queryable<T extends QueryBoundWitness = QueryBoundWitness> = (query: T, payloads?: Payload[]) => Promisable<boolean>\n\nexport interface QueryValidator<T extends QueryBoundWitness = QueryBoundWitness> {\n queryable: Queryable<T>\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAMA;;","names":[]}
@@ -0,0 +1,22 @@
1
+ import { Module } from '@xyo-network/module-model';
2
+ import { Payload } from '@xyo-network/payload-model';
3
+ import { Queryable, QueryValidator } from './QueryValidator';
4
+ export declare const isQuerySupportedByModule: <T extends import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
5
+ query: string;
6
+ resultSet?: string | undefined;
7
+ schema: "network.xyo.boundwitness";
8
+ }, "schema"> & {
9
+ schema: "network.xyo.boundwitness";
10
+ } = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
11
+ query: string;
12
+ resultSet?: string | undefined;
13
+ schema: "network.xyo.boundwitness";
14
+ }, "schema"> & {
15
+ schema: "network.xyo.boundwitness";
16
+ }>(mod: Module, query: T, payloads?: Payload[]) => Promise<boolean>;
17
+ export declare class SupportedQueryValidator implements QueryValidator {
18
+ protected readonly mod: Module;
19
+ constructor(mod: Module);
20
+ queryable: Queryable;
21
+ }
22
+ //# sourceMappingURL=SupportedQueryValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedQueryValidator.d.ts","sourceRoot":"","sources":["../../../src/QueryValidator/SupportedQueryValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAe,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE5D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;QAC9B,MAAM,uBAEA,OAAO,EAAE,KACnB,QAAQ,OAAO,CAIjB,CAAA;AAED,qBAAa,uBAAwB,YAAW,cAAc;IAChD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAC1C,SAAS,EAAE,SAAS,CAEnB;CACF"}
@@ -17,6 +17,8 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/QueryValidator/SupportedQueryValidator.ts
20
22
  var SupportedQueryValidator_exports = {};
21
23
  __export(SupportedQueryValidator_exports, {
22
24
  SupportedQueryValidator: () => SupportedQueryValidator,
@@ -24,15 +26,12 @@ __export(SupportedQueryValidator_exports, {
24
26
  });
25
27
  module.exports = __toCommonJS(SupportedQueryValidator_exports);
26
28
  var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
27
- const isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
29
+ var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
28
30
  const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
29
31
  const schema = (await wrapper.getQuery()).schema;
30
32
  return mod.queries.includes(schema);
31
33
  }, "isQuerySupportedByModule");
32
- class SupportedQueryValidator {
33
- static {
34
- __name(this, "SupportedQueryValidator");
35
- }
34
+ var _SupportedQueryValidator = class _SupportedQueryValidator {
36
35
  mod;
37
36
  constructor(mod) {
38
37
  this.mod = mod;
@@ -41,7 +40,9 @@ class SupportedQueryValidator {
41
40
  };
42
41
  }
43
42
  queryable;
44
- }
43
+ };
44
+ __name(_SupportedQueryValidator, "SupportedQueryValidator");
45
+ var SupportedQueryValidator = _SupportedQueryValidator;
45
46
  // Annotate the CommonJS export names for ESM import in node:
46
47
  0 && (module.exports = {
47
48
  SupportedQueryValidator,
@@ -1 +1 @@
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;;;;;;AAAA,kCAA4D;AAMrD,MAAMA,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,MAAMI,wBAAAA;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
+ {"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,2BAAN,MAAMA,yBAAAA;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;AALaF;AAAN,IAAMA,0BAAN;","names":["isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
@@ -1,15 +1,14 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/QueryValidator/SupportedQueryValidator.ts
3
5
  import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
4
- const isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
6
+ var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
5
7
  const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
6
8
  const schema = (await wrapper.getQuery()).schema;
7
9
  return mod.queries.includes(schema);
8
10
  }, "isQuerySupportedByModule");
9
- class SupportedQueryValidator {
10
- static {
11
- __name(this, "SupportedQueryValidator");
12
- }
11
+ var _SupportedQueryValidator = class _SupportedQueryValidator {
13
12
  mod;
14
13
  constructor(mod) {
15
14
  this.mod = mod;
@@ -18,7 +17,9 @@ class SupportedQueryValidator {
18
17
  };
19
18
  }
20
19
  queryable;
21
- }
20
+ };
21
+ __name(_SupportedQueryValidator, "SupportedQueryValidator");
22
+ var SupportedQueryValidator = _SupportedQueryValidator;
22
23
  export {
23
24
  SupportedQueryValidator,
24
25
  isQuerySupportedByModule
@@ -1 +1 @@
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,MAAMC,2BAA2B,8BACtCC,KACAC,OACAC,aAAAA;AAEA,QAAMC,UAAUL,yBAAyBM,WAAwBH,OAAOC,QAAAA;AACxE,QAAMG,UAAU,MAAMF,QAAQG,SAAQ,GAAID;AAC1C,SAAOL,IAAIO,QAAQC,SAASH,MAAAA;AAC9B,GARwC;AAUjC,MAAMI,wBAAAA;EAhBb,OAgBaA;;;;EACXC,YAA+BV,KAAa;SAAbA,MAAAA;SAC/BW,YAAuB,CAACV,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CS;AAGF;","names":["QueryBoundWitnessWrapper","isQuerySupportedByModule","mod","query","payloads","wrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
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,2BAAN,MAAMA,yBAAAA;;EACXC,YAA+BX,KAAa;SAAbA,MAAAA;SAC/BY,YAAuB,CAACX,OAAOC,aAAAA;AAC7B,aAAOH,yBAAyB,KAAKC,KAAKC,OAAOC,QAAAA;IACnD;EAH6C;EAC7CU;AAGF;AALaF;AAAN,IAAMA,0BAAN;","names":["QueryBoundWitnessWrapper","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
@@ -0,0 +1,4 @@
1
+ export * from './ModuleConfigQueryValidator';
2
+ export * from './QueryValidator';
3
+ export * from './SupportedQueryValidator';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/QueryValidator/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA"}
@@ -3,6 +3,11 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
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
+ };
6
11
  var __copyProps = (to, from, except, desc) => {
7
12
  if (from && typeof from === "object" || typeof from === "function") {
8
13
  for (let key of __getOwnPropNames(from))
@@ -11,17 +16,105 @@ var __copyProps = (to, from, except, desc) => {
11
16
  }
12
17
  return to;
13
18
  };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/QueryValidator/index.ts
16
22
  var QueryValidator_exports = {};
23
+ __export(QueryValidator_exports, {
24
+ ModuleConfigQueryValidator: () => ModuleConfigQueryValidator,
25
+ SupportedQueryValidator: () => SupportedQueryValidator,
26
+ isQuerySupportedByModule: () => isQuerySupportedByModule
27
+ });
17
28
  module.exports = __toCommonJS(QueryValidator_exports);
18
- __reExport(QueryValidator_exports, require("./ModuleConfigQueryValidator"), module.exports);
19
- __reExport(QueryValidator_exports, require("./QueryValidator"), module.exports);
20
- __reExport(QueryValidator_exports, require("./SupportedQueryValidator"), module.exports);
29
+
30
+ // src/QueryValidator/ModuleConfigQueryValidator.ts
31
+ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
32
+ var delimiter = "";
33
+ var _ModuleConfigQueryValidator = class _ModuleConfigQueryValidator {
34
+ allowed = {};
35
+ disallowed = {};
36
+ hasAllowedRules;
37
+ hasDisallowedRules;
38
+ hasRules;
39
+ constructor(config) {
40
+ var _a, _b, _c, _d;
41
+ if ((_a = config == null ? void 0 : config.security) == null ? void 0 : _a.allowed) {
42
+ Object.entries((_b = config.security) == null ? void 0 : _b.allowed).forEach(([schema, addresses]) => {
43
+ this.allowed[schema] = addresses.map(toAddressesString);
44
+ });
45
+ }
46
+ if ((_c = config == null ? void 0 : config.security) == null ? void 0 : _c.disallowed) {
47
+ Object.entries((_d = config.security) == null ? void 0 : _d.disallowed).forEach(([schema, addresses]) => {
48
+ this.disallowed[schema] = addresses.map(toAddressesString);
49
+ });
50
+ }
51
+ this.hasAllowedRules = Object.keys(this.allowed).length > 0;
52
+ this.hasDisallowedRules = Object.keys(this.disallowed).length > 0;
53
+ this.hasRules = this.hasAllowedRules || this.hasDisallowedRules;
54
+ }
55
+ queryable = async (query, payloads) => {
56
+ if (!this.hasRules)
57
+ return true;
58
+ const addresses = query.addresses;
59
+ if (!addresses.length)
60
+ return false;
61
+ const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
62
+ const schema = (await wrapper.getQuery()).schema;
63
+ return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses);
64
+ };
65
+ queryAllowed = (schema, addresses) => {
66
+ var _a, _b;
67
+ if (!this.hasAllowedRules)
68
+ return true;
69
+ if (addresses.length > 1) {
70
+ const signatories = toAddressesString(addresses);
71
+ const validCosigners = (_b = (_a = this.allowed) == null ? void 0 : _a[schema]) == null ? void 0 : _b.includes(signatories);
72
+ if (validCosigners)
73
+ return true;
74
+ }
75
+ return addresses.every((address) => {
76
+ var _a2, _b2;
77
+ return ((_b2 = (_a2 = this.allowed) == null ? void 0 : _a2[schema]) == null ? void 0 : _b2.includes(address)) || false;
78
+ });
79
+ };
80
+ queryDisallowed = (schema, addresses) => {
81
+ if (!this.hasDisallowedRules)
82
+ return false;
83
+ return addresses.some((address) => {
84
+ var _a, _b;
85
+ return (_b = (_a = this.disallowed) == null ? void 0 : _a[schema]) == null ? void 0 : _b.includes(address);
86
+ });
87
+ };
88
+ };
89
+ __name(_ModuleConfigQueryValidator, "ModuleConfigQueryValidator");
90
+ var ModuleConfigQueryValidator = _ModuleConfigQueryValidator;
91
+ var toAddressesString = /* @__PURE__ */ __name((addresses) => {
92
+ return Array.isArray(addresses) ? addresses.sort().map((address) => address.toLowerCase()).join(delimiter) : addresses.toLowerCase();
93
+ }, "toAddressesString");
94
+
95
+ // src/QueryValidator/SupportedQueryValidator.ts
96
+ var import_boundwitness_builder2 = require("@xyo-network/boundwitness-builder");
97
+ var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
98
+ const wrapper = import_boundwitness_builder2.QueryBoundWitnessWrapper.parseQuery(query, payloads);
99
+ const schema = (await wrapper.getQuery()).schema;
100
+ return mod.queries.includes(schema);
101
+ }, "isQuerySupportedByModule");
102
+ var _SupportedQueryValidator = class _SupportedQueryValidator {
103
+ mod;
104
+ constructor(mod) {
105
+ this.mod = mod;
106
+ this.queryable = (query, payloads) => {
107
+ return isQuerySupportedByModule(this.mod, query, payloads);
108
+ };
109
+ }
110
+ queryable;
111
+ };
112
+ __name(_SupportedQueryValidator, "SupportedQueryValidator");
113
+ var SupportedQueryValidator = _SupportedQueryValidator;
21
114
  // Annotate the CommonJS export names for ESM import in node:
22
115
  0 && (module.exports = {
23
- ...require("./ModuleConfigQueryValidator"),
24
- ...require("./QueryValidator"),
25
- ...require("./SupportedQueryValidator")
116
+ ModuleConfigQueryValidator,
117
+ SupportedQueryValidator,
118
+ isQuerySupportedByModule
26
119
  });
27
120
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/QueryValidator/index.ts"],"sourcesContent":["export * from './ModuleConfigQueryValidator'\nexport * from './QueryValidator'\nexport * from './SupportedQueryValidator'\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;mCAAc,yCAAd;AACA,mCAAc,6BADd;AAEA,mCAAc,sCAFd;","names":[]}
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 { AddressString, 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, AddressString[]> = {}\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":"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","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","_a","_b","some","Array","isArray","sort","toLowerCase","join","import_boundwitness_builder","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
@@ -1,4 +1,93 @@
1
- export * from "./ModuleConfigQueryValidator";
2
- export * from "./QueryValidator";
3
- export * from "./SupportedQueryValidator";
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 _ModuleConfigQueryValidator {
8
+ allowed = {};
9
+ disallowed = {};
10
+ hasAllowedRules;
11
+ hasDisallowedRules;
12
+ hasRules;
13
+ constructor(config) {
14
+ var _a, _b, _c, _d;
15
+ if ((_a = config == null ? void 0 : config.security) == null ? void 0 : _a.allowed) {
16
+ Object.entries((_b = config.security) == null ? void 0 : _b.allowed).forEach(([schema, addresses]) => {
17
+ this.allowed[schema] = addresses.map(toAddressesString);
18
+ });
19
+ }
20
+ if ((_c = config == null ? void 0 : config.security) == null ? void 0 : _c.disallowed) {
21
+ Object.entries((_d = config.security) == null ? void 0 : _d.disallowed).forEach(([schema, addresses]) => {
22
+ this.disallowed[schema] = addresses.map(toAddressesString);
23
+ });
24
+ }
25
+ this.hasAllowedRules = Object.keys(this.allowed).length > 0;
26
+ this.hasDisallowedRules = Object.keys(this.disallowed).length > 0;
27
+ this.hasRules = this.hasAllowedRules || this.hasDisallowedRules;
28
+ }
29
+ queryable = async (query, payloads) => {
30
+ if (!this.hasRules)
31
+ return true;
32
+ const addresses = query.addresses;
33
+ if (!addresses.length)
34
+ return false;
35
+ const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
36
+ const schema = (await wrapper.getQuery()).schema;
37
+ return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses);
38
+ };
39
+ queryAllowed = (schema, addresses) => {
40
+ var _a, _b;
41
+ if (!this.hasAllowedRules)
42
+ return true;
43
+ if (addresses.length > 1) {
44
+ const signatories = toAddressesString(addresses);
45
+ const validCosigners = (_b = (_a = this.allowed) == null ? void 0 : _a[schema]) == null ? void 0 : _b.includes(signatories);
46
+ if (validCosigners)
47
+ return true;
48
+ }
49
+ return addresses.every((address) => {
50
+ var _a2, _b2;
51
+ return ((_b2 = (_a2 = this.allowed) == null ? void 0 : _a2[schema]) == null ? void 0 : _b2.includes(address)) || false;
52
+ });
53
+ };
54
+ queryDisallowed = (schema, addresses) => {
55
+ if (!this.hasDisallowedRules)
56
+ return false;
57
+ return addresses.some((address) => {
58
+ var _a, _b;
59
+ return (_b = (_a = this.disallowed) == null ? void 0 : _a[schema]) == null ? void 0 : _b.includes(address);
60
+ });
61
+ };
62
+ };
63
+ __name(_ModuleConfigQueryValidator, "ModuleConfigQueryValidator");
64
+ var ModuleConfigQueryValidator = _ModuleConfigQueryValidator;
65
+ var toAddressesString = /* @__PURE__ */ __name((addresses) => {
66
+ return Array.isArray(addresses) ? addresses.sort().map((address) => address.toLowerCase()).join(delimiter) : addresses.toLowerCase();
67
+ }, "toAddressesString");
68
+
69
+ // src/QueryValidator/SupportedQueryValidator.ts
70
+ import { QueryBoundWitnessWrapper as QueryBoundWitnessWrapper2 } from "@xyo-network/boundwitness-builder";
71
+ var isQuerySupportedByModule = /* @__PURE__ */ __name(async (mod, query, payloads) => {
72
+ const wrapper = QueryBoundWitnessWrapper2.parseQuery(query, payloads);
73
+ const schema = (await wrapper.getQuery()).schema;
74
+ return mod.queries.includes(schema);
75
+ }, "isQuerySupportedByModule");
76
+ var _SupportedQueryValidator = class _SupportedQueryValidator {
77
+ mod;
78
+ constructor(mod) {
79
+ this.mod = mod;
80
+ this.queryable = (query, payloads) => {
81
+ return isQuerySupportedByModule(this.mod, query, payloads);
82
+ };
83
+ }
84
+ queryable;
85
+ };
86
+ __name(_SupportedQueryValidator, "SupportedQueryValidator");
87
+ var SupportedQueryValidator = _SupportedQueryValidator;
88
+ export {
89
+ ModuleConfigQueryValidator,
90
+ SupportedQueryValidator,
91
+ isQuerySupportedByModule
92
+ };
4
93
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/QueryValidator/index.ts"],"sourcesContent":["export * from './ModuleConfigQueryValidator'\nexport * from './QueryValidator'\nexport * from './SupportedQueryValidator'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/QueryValidator/ModuleConfigQueryValidator.ts","../../../src/QueryValidator/SupportedQueryValidator.ts"],"sourcesContent":["import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { AddressString, 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, AddressString[]> = {}\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":"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","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","_a","_b","some","Array","isArray","sort","toLowerCase","join","QueryBoundWitnessWrapper","isQuerySupportedByModule","mod","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","schema","getQuery","queries","includes","SupportedQueryValidator","constructor","queryable"]}
@@ -0,0 +1,6 @@
1
+ export * from './AbstractModule';
2
+ export * from './AbstractModuleInstance';
3
+ export * from './BaseEmitter';
4
+ export * from './Error';
5
+ export * from './QueryValidator';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA"}