@xyo-network/module-abstract 3.5.2 → 3.6.0-rc.10

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.
@@ -8,8 +8,7 @@ import { type BoundWitness, type QueryBoundWitness } from '@xyo-network/boundwit
8
8
  import type { ModuleManifestPayload } from '@xyo-network/manifest-model';
9
9
  import { BaseEmitter } from '@xyo-network/module-event-emitter';
10
10
  import type { AddressPayload, AddressPreviousHashPayload, ArchivingModuleConfig, AttachableModuleInstance, CreatableModule, CreatableModuleFactory, Labels, Module, ModuleConfig, ModuleDescriptionPayload, ModuleDetailsError, ModuleEventData, ModuleParams, ModuleQueryHandlerResult, ModuleQueryResult, ModuleResolverInstance, ModuleStatus } from '@xyo-network/module-model';
11
- import { ObjectResolverPriority } from '@xyo-network/module-model';
12
- import type { ModuleError, Payload, Query, Schema, WithMeta } from '@xyo-network/payload-model';
11
+ import type { ModuleError, Payload, Query, Schema } from '@xyo-network/payload-model';
13
12
  import type { WalletInstance } from '@xyo-network/wallet-model';
14
13
  import { LRUCache } from 'lru-cache';
15
14
  import type { Queryable } from './QueryValidator/index.ts';
@@ -23,11 +22,49 @@ export declare abstract class AbstractModule<TParams extends ModuleParams = Modu
23
22
  static readonly uniqueName: string;
24
23
  protected static privateConstructorKey: string;
25
24
  protected _account: AccountInstance;
26
- protected _cachedManifests: LRUCache<number, (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/manifest-model").ModuleManifest & {
25
+ protected _cachedManifests: LRUCache<number, import("@xylabs/object").DeepRestrictToStringKeys<{
27
26
  schema: "network.xyo.module.manifest";
28
- }) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/manifest-model").ModuleManifest & {
27
+ config: {
28
+ accountPath?: string | undefined;
29
+ features?: string[] | undefined;
30
+ labels?: {
31
+ [x: string]: string | undefined;
32
+ } | undefined;
33
+ language?: string | undefined;
34
+ name: string;
35
+ os?: string | undefined;
36
+ schema: string;
37
+ };
38
+ lazyStart?: boolean | undefined;
39
+ status?: {
40
+ address: Address;
41
+ children?: {
42
+ [x: Lowercase<string>]: string | null;
43
+ } | undefined;
44
+ } | undefined;
45
+ description?: string | undefined;
46
+ }> | import("@xylabs/object").DeepRestrictToStringKeys<{
29
47
  schema: "network.xyo.node.manifest";
30
- }), unknown>;
48
+ config: {
49
+ accountPath?: string | undefined;
50
+ features?: string[] | undefined;
51
+ labels?: {
52
+ [x: string]: string | undefined;
53
+ } | undefined;
54
+ language?: string | undefined;
55
+ name: string;
56
+ os?: string | undefined;
57
+ schema: string;
58
+ };
59
+ lazyStart?: boolean | undefined;
60
+ status?: {
61
+ address: Address;
62
+ children?: {
63
+ [x: Lowercase<string>]: string | null;
64
+ } | undefined;
65
+ } | undefined;
66
+ description?: string | undefined;
67
+ }>, unknown>;
31
68
  protected _lastError?: ModuleDetailsError;
32
69
  protected _startPromise: Promisable<boolean> | undefined;
33
70
  protected _started: Promisable<boolean> | undefined;
@@ -50,7 +87,7 @@ export declare abstract class AbstractModule<TParams extends ModuleParams = Modu
50
87
  get id(): string;
51
88
  get logger(): Logger;
52
89
  get modName(): string | undefined;
53
- get priority(): ObjectResolverPriority;
90
+ get priority(): 2;
54
91
  get queries(): Schema[];
55
92
  get status(): ModuleStatus;
56
93
  get timestamp(): boolean;
@@ -85,10 +122,10 @@ export declare abstract class AbstractModule<TParams extends ModuleParams = Modu
85
122
  protected archivistInstance(required: true): Promise<ArchivistInstance>;
86
123
  protected bindHashes(hashes: Hash[], schema: Schema[], account?: AccountInstance): PromiseEx<unknown, AccountInstance>;
87
124
  protected bindHashesInternal(hashes: Hash[], schema: Schema[], account?: AccountInstance): Promise<BoundWitness>;
88
- protected bindQuery<T extends Query>(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): PromiseEx<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]], AccountInstance>;
89
- protected bindQueryInternal<T extends Query>(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): Promise<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]]>;
90
- protected bindQueryResult<T extends Query>(query: WithMeta<T>, payloads: Payload[], additionalWitnesses?: AccountInstance[], errors?: ModuleError[]): Promise<ModuleQueryResult>;
91
- protected generateConfigAndAddress(_maxDepth?: number): Promise<Payload[]>;
125
+ protected bindQuery<T extends Query>(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance>;
126
+ protected bindQueryInternal<T extends Query>(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): Promise<[QueryBoundWitness, Payload[], Payload[]]>;
127
+ protected bindQueryResult<T extends Query>(query: T, payloads: Payload[], additionalWitnesses?: AccountInstance[], errors?: ModuleError[]): Promise<ModuleQueryResult>;
128
+ protected generateConfigAndAddress(_maxDepth?: number): Promisable<Payload[]>;
92
129
  protected generateDescribe(): Promise<ModuleDescriptionPayload>;
93
130
  /** @deprecated use archivistInstance() instead */
94
131
  protected getArchivist(): Promise<ArchivistInstance | undefined>;
@@ -101,7 +138,7 @@ export declare abstract class AbstractModule<TParams extends ModuleParams = Modu
101
138
  protected stopHandler(_timeout?: number): Promisable<boolean>;
102
139
  protected subscribeHandler(): void;
103
140
  protected validateConfig(config?: unknown, parents?: string[]): boolean;
104
- protected abstract certifyParents(): Promise<WithMeta<Payload>[]>;
141
+ protected abstract certifyParents(): Promise<Payload[]>;
105
142
  protected abstract storeToArchivists(payloads: Payload[]): Promise<Payload[]>;
106
143
  }
107
144
  //# sourceMappingURL=AbstractModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractModule.d.ts","sourceRoot":"","sources":["../../src/AbstractModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractModule.d.ts","sourceRoot":"","sources":["../../src/AbstractModule.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { ModuleManifestPayload } from '@xyo-network/manifest-model';
6
6
  import type { AddressPayload, AddressPreviousHashPayload, AttachableModuleInstance, ModuleEventData, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleNameResolver, ModuleParams, ModuleQueryResult, ObjectFilterOptions } from '@xyo-network/module-model';
7
7
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
8
8
  import type { NodeInstance } from '@xyo-network/node-model';
9
- import type { Payload, Query, WithMeta } from '@xyo-network/payload-model';
9
+ import type { Payload, Query } from '@xyo-network/payload-model';
10
10
  import { AbstractModule } from './AbstractModule.ts';
11
11
  export declare abstract class AbstractModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData> extends AbstractModule<TParams, TEventData> implements AttachableModuleInstance<TParams, TEventData>, ModuleNameResolver {
12
12
  static readonly uniqueName: string;
@@ -23,7 +23,7 @@ export declare abstract class AbstractModuleInstance<TParams extends ModuleParam
23
23
  get root(): this;
24
24
  get upResolver(): CompositeModuleResolver<import("@xyo-network/module-resolver").CompositeModuleResolverParams>;
25
25
  addParent(mod: ModuleInstance): void;
26
- certifyParents(): Promise<WithMeta<Payload>[]>;
26
+ certifyParents(): Promise<Payload[]>;
27
27
  manifest(maxDepth?: number): Promise<ModuleManifestPayload>;
28
28
  manifestQuery(account: AccountInstance, maxDepth?: number): Promise<ModuleQueryResult<ModuleManifestPayload>>;
29
29
  moduleAddress(): Promise<(AddressPayload | AddressPreviousHashPayload)[]>;
@@ -42,14 +42,14 @@ export declare abstract class AbstractModuleInstance<TParams extends ModuleParam
42
42
  resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
43
43
  resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
44
44
  siblings(): Promise<ModuleInstance[]>;
45
- state(): Promise<({
46
- schema: string;
47
- } & import("@xyo-network/payload-model").PayloadFields)[]>;
45
+ state(): Promise<import("@xylabs/object").DeepRestrictToStringKeys<{
46
+ schema: import("@xyo-network/payload-model").Schema;
47
+ }>[]>;
48
48
  stateQuery(account: AccountInstance): Promise<ModuleQueryResult>;
49
49
  subscribe(_queryAccount?: AccountInstance): void;
50
50
  protected manifestHandler(maxDepth?: number, _ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
51
51
  protected resolveArchivingArchivists(): Promise<ArchivistInstance[]>;
52
- protected sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(queryPayload: T, payloads?: P[], account?: AccountInstance): Promise<WithMeta<R>[]>;
52
+ protected sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(queryPayload: T, payloads?: P[], account?: AccountInstance): Promise<R[]>;
53
53
  protected sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(queryPayload: T, payloads?: P[], account?: AccountInstance): Promise<ModuleQueryResult<R>>;
54
54
  protected storeToArchivists(payloads: Payload[]): Promise<Payload[]>;
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractModuleInstance.d.ts","sourceRoot":"","sources":["../../src/AbstractModuleInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractModuleInstance.d.ts","sourceRoot":"","sources":["../../src/AbstractModuleInstance.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,17 @@
1
1
  import type { Hash } from '@xylabs/hex';
2
2
  import type { JsonValue } from '@xylabs/object';
3
3
  import { PayloadBuilder } from '@xyo-network/payload-builder';
4
- import type { ModuleError, WithMeta } from '@xyo-network/payload-model';
5
- export declare class ModuleErrorBuilder extends PayloadBuilder<ModuleError> {
4
+ import type { ModuleError, WithOptionalSources } from '@xyo-network/payload-model';
5
+ export declare class ModuleErrorBuilder extends PayloadBuilder<WithOptionalSources<ModuleError>> {
6
6
  _details?: JsonValue;
7
7
  _message?: string;
8
8
  _name?: string;
9
9
  _query?: Hash;
10
- _sources?: Hash[];
11
10
  constructor();
12
- build(): Promise<WithMeta<ModuleError>>;
11
+ build(): WithOptionalSources<ModuleError>;
13
12
  details(details?: JsonValue): this;
14
13
  message(message: string): this;
15
14
  name(name: string): this;
16
15
  query(query: Hash): this;
17
- sources(sources: Hash[]): this;
18
16
  }
19
17
  //# sourceMappingURL=Error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGvE,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAA;;IAKR,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAYhD,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS;IAK3B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,KAAK,CAAC,KAAK,EAAE,IAAI;IAKjB,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;CAIxB"}
1
+ {"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGlF,qBAAa,kBAAmB,SAAQ,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtF,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,IAAI,CAAA;;IAKJ,KAAK,IAAI,mBAAmB,CAAC,WAAW,CAAC;IAUlD,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS;IAK3B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,KAAK,CAAC,KAAK,EAAE,IAAI;CAIlB"}
@@ -2,14 +2,7 @@ import type { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
2
  import type { Module } from '@xyo-network/module-model';
3
3
  import type { Payload } from '@xyo-network/payload-model';
4
4
  import type { Queryable, QueryValidator } from './QueryValidator.ts';
5
- export declare const isQuerySupportedByModule: <T extends QueryBoundWitness = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
6
- additional?: import("@xylabs/hex").Hash[];
7
- query: import("@xylabs/hex").Hash;
8
- resultSet?: string;
9
- schema: import("@xyo-network/boundwitness-model").QueryBoundWitnessSchema;
10
- }, "schema"> & {
11
- schema: "network.xyo.boundwitness";
12
- }>(mod: Module, query: T, payloads?: Payload[]) => Promise<boolean>;
5
+ export declare const isQuerySupportedByModule: <T extends QueryBoundWitness = import("@xyo-network/boundwitness-model").UnsignedQueryBoundWitness>(mod: Module, query: T, payloads?: Payload[]) => Promise<boolean>;
13
6
  export declare class SupportedQueryValidator implements QueryValidator {
14
7
  protected readonly mod: Module;
15
8
  constructor(mod: Module);
@@ -1 +1 @@
1
- {"version":3,"file":"SupportedQueryValidator.d.ts","sourceRoot":"","sources":["../../../src/QueryValidator/SupportedQueryValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpE,eAAO,MAAM,wBAAwB,GAAU,CAAC,SAAS,iBAAiB;;;;;;;QACnE,MAAM,SACJ,CAAC,aACG,OAAO,EAAE,KACnB,OAAO,CAAC,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"}
1
+ {"version":3,"file":"SupportedQueryValidator.d.ts","sourceRoot":"","sources":["../../../src/QueryValidator/SupportedQueryValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpE,eAAO,MAAM,wBAAwB,GAAU,CAAC,SAAS,iBAAiB,6EACnE,MAAM,SACJ,CAAC,aACG,OAAO,EAAE,KACnB,OAAO,CAAC,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"}
@@ -58,7 +58,6 @@ var ModuleErrorBuilder = class extends PayloadBuilder {
58
58
  _message;
59
59
  _name;
60
60
  _query;
61
- _sources;
62
61
  constructor() {
63
62
  super({
64
63
  schema: ModuleErrorSchema
@@ -69,9 +68,7 @@ var ModuleErrorBuilder = class extends PayloadBuilder {
69
68
  details: this._details,
70
69
  message: this._message,
71
70
  name: this._name,
72
- query: this._query,
73
- schema: ModuleErrorSchema,
74
- sources: this._sources
71
+ query: this._query
75
72
  });
76
73
  return super.build();
77
74
  }
@@ -91,10 +88,6 @@ var ModuleErrorBuilder = class extends PayloadBuilder {
91
88
  this._query = query;
92
89
  return this;
93
90
  }
94
- sources(sources) {
95
- this._sources = sources;
96
- return this;
97
- }
98
91
  };
99
92
 
100
93
  // src/QueryValidator/ModuleConfigQueryValidator.ts
@@ -367,7 +360,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
367
360
  async query(query, payloads, queryConfig) {
368
361
  this._checkDead();
369
362
  this._noOverride("query");
370
- const sourceQuery = await PayloadBuilder2.build(assertEx2(isQueryBoundWitness(query) ? query : void 0, () => "Unable to parse query"));
363
+ const sourceQuery = assertEx2(isQueryBoundWitness(query) ? query : void 0, () => "Unable to parse query");
371
364
  return await this.busy(async () => {
372
365
  const resultPayloads = [];
373
366
  const errorPayloads = [];
@@ -385,9 +378,11 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
385
378
  await handleErrorAsync(ex, async (err) => {
386
379
  const error = err;
387
380
  this._lastError = error;
388
- errorPayloads.push(await new ModuleErrorBuilder().sources([
389
- sourceQuery.$hash
390
- ]).name(this.modName ?? "<Unknown>").query(sourceQuery.schema).details(error.details).message(error.message).build());
381
+ errorPayloads.push(new ModuleErrorBuilder().meta({
382
+ $sources: [
383
+ await PayloadBuilder2.dataHash(sourceQuery)
384
+ ]
385
+ }).name(this.modName ?? "<Unknown>").query(sourceQuery.schema).details(error.details).message(error.message).build());
391
386
  });
392
387
  }
393
388
  if (this.timestamp) {
@@ -538,57 +533,50 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
538
533
  account,
539
534
  ...additionalSigners
540
535
  ].filter(exists);
541
- const builder = await new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query);
542
- let additional = [];
543
- if (this.config.certify) {
544
- additional = await this.certifyParents();
545
- await builder.additional(additional);
546
- }
536
+ const builder = new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query);
547
537
  const [bw, payloadsOut, errors] = await builder.build();
548
538
  return [
549
539
  bw,
550
540
  [
551
- ...payloadsOut,
552
- ...additional
541
+ ...payloadsOut
553
542
  ],
554
543
  errors
555
544
  ];
556
545
  }
557
546
  async bindQueryResult(query, payloads, additionalWitnesses = [], errors) {
558
- const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(query.$hash);
547
+ const queryDataHash = await PayloadBuilder2.dataHash(query);
548
+ const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(queryDataHash);
559
549
  const witnesses = [
560
550
  this.account,
561
551
  ...additionalWitnesses
562
552
  ].filter(exists);
563
553
  builder.signers(witnesses);
564
554
  const result = [
565
- (await builder.build())[0],
566
- await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))),
567
- await Promise.all((errors ?? [])?.map((error) => PayloadBuilder2.build(error)))
555
+ PayloadBuilder2.omitPrivateStorageMeta((await builder.build())[0]),
556
+ PayloadBuilder2.omitPrivateStorageMeta(payloads),
557
+ PayloadBuilder2.omitPrivateStorageMeta(errors ?? [])
568
558
  ];
569
559
  if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
570
560
  forget(this.storeToArchivists(result.flat()));
571
561
  }
572
562
  return result;
573
563
  }
574
- async generateConfigAndAddress(_maxDepth) {
575
- const config = await PayloadBuilder2.build(this.config);
576
- const address = await new PayloadBuilder2({
577
- schema: AddressSchema
578
- }).fields({
564
+ generateConfigAndAddress(_maxDepth) {
565
+ const config = this.config;
566
+ const address = {
567
+ schema: AddressSchema,
579
568
  address: this.address
580
- }).build();
581
- const queries = await Promise.all(this.queries.map(async (query) => {
582
- return await new PayloadBuilder2({
583
- schema: QuerySchema
584
- }).fields({
569
+ };
570
+ const queries = this.queries.map((query) => {
571
+ return {
572
+ schema: QuerySchema,
585
573
  query
586
- }).build();
587
- }));
588
- const configSchema = await PayloadBuilder2.build({
574
+ };
575
+ });
576
+ const configSchema = {
589
577
  config: config.schema,
590
578
  schema: ConfigSchema
591
- });
579
+ };
592
580
  return [
593
581
  config,
594
582
  configSchema,
@@ -653,7 +641,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
653
641
  }
654
642
  async queryHandler(query, payloads, queryConfig) {
655
643
  await this.started("throw");
656
- const wrapper = await QueryBoundWitnessWrapper3.parseQuery(query, payloads);
644
+ const wrapper = QueryBoundWitnessWrapper3.parseQuery(query, payloads);
657
645
  const queryPayload = await wrapper.getQuery();
658
646
  assertEx2(await this.queryable(query, payloads, queryConfig));
659
647
  const resultPayloads = [];
@@ -678,7 +666,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
678
666
  throw new Error(`Unsupported Query [${queryPayload.schema}]`);
679
667
  }
680
668
  }
681
- return resultPayloads;
669
+ return PayloadBuilder2.omitPrivateStorageMeta(resultPayloads);
682
670
  }
683
671
  async startHandler() {
684
672
  this.validateConfig();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractModule.ts","../../src/determineAccount.ts","../../src/Error.ts","../../src/QueryValidator/ModuleConfigQueryValidator.ts","../../src/QueryValidator/SupportedQueryValidator.ts","../../src/AbstractModuleInstance.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport { assertEx } from '@xylabs/assert'\nimport { handleError, handleErrorAsync } from '@xylabs/error'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address, Hash } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport {\n ConsoleLogger, IdLogger, LogLevel,\n} from '@xylabs/logger'\nimport { Base, globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport { PromiseEx } from '@xylabs/promise'\nimport { Account } from '@xyo-network/account'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitnessBuilder, QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport {\n type BoundWitness, isQueryBoundWitness, type QueryBoundWitness,\n} from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { ConfigPayload } from '@xyo-network/config-payload-plugin'\nimport { ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-event-emitter'\nimport type {\n AddressPayload,\n AddressPreviousHashPayload,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n CreatableModule,\n CreatableModuleFactory,\n Labels,\n Module,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescriptionPayload,\n ModuleDetailsError,\n ModuleEventData,\n ModuleParams,\n ModuleQueriedEventArgs,\n ModuleQueries,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStatus,\n} from '@xyo-network/module-model'\nimport {\n AddressPreviousHashSchema,\n AddressSchema,\n DeadModuleError,\n isModuleName,\n isSerializable,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleDescriptionSchema,\n ModuleFactory,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n ModuleSubscribeQuerySchema,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n ModuleError, Payload, Query, Schema, WithMeta,\n} from '@xyo-network/payload-model'\nimport type { QueryPayload } from '@xyo-network/query-payload-plugin'\nimport { QuerySchema } from '@xyo-network/query-payload-plugin'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { determineAccount } from './determineAccount.ts'\nimport { ModuleErrorBuilder } from './Error.ts'\nimport type { Queryable } from './QueryValidator/index.ts'\nimport { ModuleConfigQueryValidator, SupportedQueryValidator } from './QueryValidator/index.ts'\n\nconst MODULE_NOT_STARTED = 'Module not Started' as const\nexport abstract class AbstractModule<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends BaseEmitter<TParams, TEventData>\n implements Module<TParams, TEventData> {\n static readonly allowRandomAccount: boolean = true\n static readonly configSchemas: Schema[] = [ModuleConfigSchema]\n static readonly defaultConfigSchema: Schema = ModuleConfigSchema\n static override defaultLogger: Logger = new ConsoleLogger(LogLevel.warn)\n static enableLazyLoad = false\n static readonly labels: Labels = {}\n static override readonly uniqueName = globallyUnique('AbstractModule', AbstractModule, 'xyo')\n\n protected static privateConstructorKey = Date.now().toString()\n\n protected _account: AccountInstance\n\n // cache manifest based on maxDepth\n protected _cachedManifests = new LRUCache<number, ModuleManifestPayload>({ max: 10, ttl: 1000 * 60 * 5 })\n\n protected _lastError?: ModuleDetailsError\n\n protected _startPromise: Promisable<boolean> | undefined = undefined\n protected _started: Promisable<boolean> | undefined = undefined\n protected readonly moduleConfigQueryValidator: Queryable\n protected readonly supportedQueryValidator: Queryable\n\n private _busyCount = 0\n private _logger: Logger | undefined = undefined\n private _status: ModuleStatus = 'stopped'\n\n constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {\n assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n // Clone params to prevent mutation of the incoming object\n const mutatedParams = { ...params } as TParams\n super(mutatedParams)\n\n this._account = account\n\n this.supportedQueryValidator = new SupportedQueryValidator(this as Module).queryable\n this.moduleConfigQueryValidator = new ModuleConfigQueryValidator(mutatedParams?.config).queryable\n }\n\n get account() {\n return assertEx(this._account, () => 'Missing account')\n }\n\n get additionalSigners(): AccountInstance[] {\n return this.params.additionalSigners ?? []\n }\n\n get address() {\n return this._account?.address\n }\n\n get allowAnonymous() {\n return !!this.config.security?.allowAnonymous\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.config.archiving\n }\n\n get archivist() {\n return this.config.archivist\n }\n\n get config(): TParams['config'] {\n return this.params.config\n }\n\n get dead() {\n return this.status === 'dead'\n }\n\n get ephemeralQueryAccountEnabled(): boolean {\n return !!this.params.ephemeralQueryAccountEnabled\n }\n\n get id() {\n return this.modName ?? this.address\n }\n\n override get logger() {\n const consoleLogger = this.config.consoleLogger\n this._logger\n = (this._logger ?? consoleLogger) ? new ConsoleLogger(consoleLogger) : (this.params?.logger ?? AbstractModule.defaultLogger ?? Base.defaultLogger)\n return this._logger\n }\n\n get modName() {\n return this.config.name\n }\n\n get priority() {\n return ObjectResolverPriority.Normal\n }\n\n get queries(): Schema[] {\n return [ModuleAddressQuerySchema, ModuleSubscribeQuerySchema, ModuleManifestQuerySchema, ModuleStateQuerySchema]\n }\n\n get status() {\n return this._status\n }\n\n get timestamp() {\n return this.config.timestamp ?? false\n }\n\n protected set status(value: ModuleStatus) {\n if (this._status !== 'dead') {\n this._status = value\n }\n }\n\n abstract get downResolver(): ModuleResolverInstance\n\n abstract get upResolver(): ModuleResolverInstance\n\n static _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n static _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n static async create<TModule extends AttachableModuleInstance>(\n this: CreatableModule<TModule>,\n params: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] },\n ) {\n this._noOverride('create')\n if (!this.configSchemas || this.configSchemas.length === 0) {\n throw new Error(`Missing configSchema [${params?.config?.schema}][${this.name}]`)\n }\n\n if (!this.defaultConfigSchema) {\n throw new Error(`Missing defaultConfigSchema [${params?.config?.schema}][${this.name}]`)\n }\n\n assertEx(params?.config?.name === undefined || isModuleName(params.config.name), () => `Invalid module name: ${params?.config?.name}`)\n\n const { account } = params ?? {}\n\n const schema: Schema = params?.config?.schema ?? this.defaultConfigSchema\n const allowedSchemas: Schema[] = this.configSchemas\n\n assertEx(allowedSchemas.includes(schema), () => `Bad Config Schema [Received ${schema}] [Expected ${JSON.stringify(allowedSchemas)}]`)\n const mutatedConfig: TModule['params']['config'] = { ...params?.config, schema } as TModule['params']['config']\n params?.logger?.debug(`config: ${JSON.stringify(mutatedConfig, null, 2)}`)\n const mutatedParams: TModule['params'] = { ...params, config: mutatedConfig } as TModule['params']\n\n const activeLogger = params?.logger ?? AbstractModule.defaultLogger\n const generatedAccount = await AbstractModule.determineAccount({ account })\n const address = generatedAccount.address\n mutatedParams.logger = activeLogger ? new IdLogger(activeLogger, () => `0x${address}`) : undefined\n\n const newModule = new this(AbstractModule.privateConstructorKey, mutatedParams, generatedAccount, address)\n\n if (!AbstractModule.enableLazyLoad) {\n await newModule.start?.()\n }\n return newModule\n }\n\n static async determineAccount(params: {\n account?: AccountInstance | 'random'\n accountPath?: string\n wallet?: WalletInstance\n }): Promise<AccountInstance> {\n return await determineAccount(params, this.allowRandomAccount)\n }\n\n static factory<TModule extends AttachableModuleInstance>(\n this: CreatableModule<TModule>,\n params: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] },\n ): CreatableModuleFactory<TModule> {\n return ModuleFactory.withParams(this, params)\n }\n\n _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, mod: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, mod: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n override emit<TEventName extends keyof TEventData = keyof TEventData, TEventArgs extends TEventData[TEventName] = TEventData[TEventName]>(\n eventName: TEventName,\n eventArgs: TEventArgs,\n ) {\n return super.emit(eventName, eventArgs)\n }\n\n previousHash(): Promisable<string | undefined> {\n this._checkDead()\n return this.account.previousHash\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryResult> {\n this._checkDead()\n this._noOverride('query')\n const sourceQuery = await PayloadBuilder.build(assertEx(isQueryBoundWitness(query) ? query : undefined, () => 'Unable to parse query'))\n return await this.busy(async () => {\n const resultPayloads: Payload[] = []\n const errorPayloads: ModuleError[] = []\n const queryAccount = this.ephemeralQueryAccountEnabled ? await Account.random() : undefined\n\n try {\n await this.started('throw')\n if (!this.allowAnonymous && query.addresses.length === 0) {\n throw new Error(`Anonymous Queries not allowed, but running anyway [${this.modName}], [${this.address}]`)\n }\n if (queryConfig?.allowedQueries) {\n assertEx(queryConfig?.allowedQueries.includes(sourceQuery.schema), () => `Query not allowed [${sourceQuery.schema}]`)\n }\n resultPayloads.push(...(await this.queryHandler(sourceQuery, payloads, queryConfig)))\n } catch (ex) {\n await handleErrorAsync(ex, async (err) => {\n const error = err as ModuleDetailsError\n this._lastError = error\n // this.status = 'dead'\n errorPayloads.push(\n await new ModuleErrorBuilder()\n .sources([sourceQuery.$hash])\n .name(this.modName ?? '<Unknown>')\n .query(sourceQuery.schema)\n .details(error.details)\n .message(error.message)\n .build(),\n )\n })\n }\n if (this.timestamp) {\n const timestamp = { schema: 'network.xyo.timestamp', timestamp: Date.now() }\n resultPayloads.push(timestamp)\n }\n const result = await this.bindQueryResult(sourceQuery, resultPayloads, queryAccount ? [queryAccount] : [], errorPayloads)\n const args: ModuleQueriedEventArgs = {\n mod: this, payloads, query: sourceQuery, result,\n }\n await this.emit('moduleQueried', args)\n return result\n })\n }\n\n async queryable<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<boolean> {\n if (this.dead) {\n return false\n }\n if (!(await this.started('warn'))) return false\n const configValidator\n = queryConfig ? new ModuleConfigQueryValidator(Object.assign({}, this.config, queryConfig)).queryable : this.moduleConfigQueryValidator\n const validators = [this.supportedQueryValidator, configValidator]\n\n const results = await Promise.all(validators.map(validator => validator(query, payloads)))\n for (const result of results) {\n if (!result) {\n return false\n }\n }\n return true\n }\n\n start(_timeout?: number): Promisable<boolean> {\n // using promise as mutex\n this._startPromise = this._startPromise ?? this.startHandler()\n const result = this._startPromise\n this.status = result ? 'started' : 'dead'\n return result\n }\n\n async started(notStartedAction: 'error' | 'throw' | 'warn' | 'log' | 'none' = 'log', tryStart = true): Promise<boolean> {\n const started = await this._started\n if (started === true) {\n return true\n }\n if (!started) {\n // using promise as mutex\n this._started = (async () => {\n if (tryStart) {\n try {\n await this.start()\n return true\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.warn(`Autostart of Module Failed: ${error.message})`)\n this._started = undefined\n })\n }\n }\n switch (notStartedAction) {\n case 'throw': {\n throw new Error(`${MODULE_NOT_STARTED} [${this.address}]`)\n }\n case 'warn': {\n this.logger?.warn(MODULE_NOT_STARTED)\n break\n }\n case 'error': {\n this.logger?.error(MODULE_NOT_STARTED)\n break\n }\n case 'none': {\n break\n }\n default: {\n this.logger?.log(MODULE_NOT_STARTED)\n break\n }\n }\n return false\n })()\n }\n if (!this._started) {\n throw 'Failed to create start promise'\n }\n return await this._started\n }\n\n async stop(_timeout?: number): Promise<boolean> {\n return await this.busy(async () => {\n const result = await this.stopHandler()\n this._started = undefined\n this._startPromise = undefined\n this.status = result ? 'stopped' : 'dead'\n return result\n })\n }\n\n protected _checkDead() {\n if (this.dead) {\n throw new DeadModuleError(this.id, this._lastError)\n }\n }\n\n protected _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n protected async archivistInstance(): Promise<ArchivistInstance | undefined>\n protected async archivistInstance(required: true): Promise<ArchivistInstance>\n protected async archivistInstance(required = false): Promise<ArchivistInstance | undefined> {\n const archivist = this.archivist\n if (!archivist) {\n if (required) {\n throw new Error('No archivist specified')\n }\n return undefined\n }\n const resolved = (await this.upResolver.resolve(archivist)) ?? (await this.downResolver.resolve(archivist))\n if (required) {\n assertEx(resolved, () => `Unable to resolve archivist [${archivist}]`)\n }\n return resolved ? asArchivistInstance(resolved, () => `Specified archivist is not an Archivist [${archivist}]`) : undefined\n }\n\n protected bindHashes(hashes: Hash[], schema: Schema[], account?: AccountInstance) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx((resolve) => {\n const result = this.bindHashesInternal(hashes, schema, account)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindHashesInternal(hashes: Hash[], schema: Schema[], account: AccountInstance = this.account): Promise<BoundWitness> {\n const builder = new BoundWitnessBuilder().hashes(hashes, schema).signer(account)\n const result = (await builder.build())[0]\n this.logger?.debug(`result: ${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account?: AccountInstance,\n additionalSigners?: AccountInstance[],\n ): PromiseEx<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account, additionalSigners)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = [],\n ): Promise<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]]> {\n const accounts = [account, ...additionalSigners].filter(exists)\n const builder = await new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query)\n\n let additional: WithMeta<Payload>[] = []\n if (this.config.certify) {\n additional = await this.certifyParents()\n await builder.additional(additional)\n }\n const [bw, payloadsOut, errors] = await builder.build()\n return [bw, [...payloadsOut, ...additional], errors]\n }\n\n protected async bindQueryResult<T extends Query>(\n query: WithMeta<T>,\n payloads: Payload[],\n additionalWitnesses: AccountInstance[] = [],\n errors?: ModuleError[],\n ): Promise<ModuleQueryResult> {\n const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(query.$hash)\n const witnesses = [this.account, ...additionalWitnesses].filter(exists)\n builder.signers(witnesses)\n const result: ModuleQueryResult = [\n (await builder.build())[0],\n await Promise.all(payloads.map(payload => PayloadBuilder.build(payload))),\n await Promise.all((errors ?? [])?.map(error => PayloadBuilder.build(error))),\n ]\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n protected async generateConfigAndAddress(_maxDepth?: number): Promise<Payload[]> {\n const config = await PayloadBuilder.build(this.config)\n const address = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: this.address }).build()\n const queries = await Promise.all(\n this.queries.map(async (query) => {\n return await new PayloadBuilder<QueryPayload>({ schema: QuerySchema }).fields({ query }).build()\n }),\n )\n const configSchema = await PayloadBuilder.build<ConfigPayload>({\n config: config.schema,\n schema: ConfigSchema,\n })\n return ([config, configSchema, address, ...queries]).filter(exists)\n }\n\n protected async generateDescribe(): Promise<ModuleDescriptionPayload> {\n const description: ModuleDescriptionPayload = {\n address: this.address,\n queries: this.queries,\n schema: ModuleDescriptionSchema,\n }\n if (this.config?.name) {\n description.name = this.modName\n }\n\n const discover = await this.generateConfigAndAddress()\n\n description.children = (\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? []\n ).filter(exists)\n\n return description\n }\n\n /** @deprecated use archivistInstance() instead */\n protected async getArchivist(): Promise<ArchivistInstance | undefined> {\n return await this.archivistInstance()\n }\n\n protected isAllowedArchivingQuery(schema: Schema): boolean {\n const queries = this.archiving?.queries\n if (queries) {\n return queries.includes(schema)\n }\n return true\n }\n\n protected manifestHandler(_maxDepth: number = 1, _ignoreAddresses: Address[] = []): Promisable<ModuleManifestPayload> {\n throw new Error('Not supported')\n }\n\n protected moduleAddressHandler(): Promisable<(AddressPreviousHashPayload | AddressPayload)[]> {\n const address = this.address\n const name = this.modName\n const previousHash = this.address\n const moduleAccount = name\n ? {\n address, name, schema: AddressSchema,\n }\n : { address, schema: AddressSchema }\n const moduleAccountPreviousHash = previousHash\n ? {\n address, previousHash, schema: AddressPreviousHashSchema,\n }\n : { address, schema: AddressSchema }\n return [moduleAccount, moduleAccountPreviousHash]\n }\n\n protected async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n await this.started('throw')\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case ModuleManifestQuerySchema: {\n resultPayloads.push(await this.manifestHandler(queryPayload.maxDepth))\n break\n }\n case ModuleAddressQuerySchema: {\n resultPayloads.push(...(await this.moduleAddressHandler()))\n break\n }\n case ModuleStateQuerySchema: {\n resultPayloads.push(...(await this.stateHandler()))\n break\n }\n case ModuleSubscribeQuerySchema: {\n this.subscribeHandler()\n break\n }\n default: {\n throw new Error(`Unsupported Query [${(queryPayload as Payload).schema}]`)\n }\n }\n return resultPayloads\n }\n\n protected async startHandler(): Promise<boolean> {\n this.validateConfig()\n await Promise.resolve()\n this._started = true\n return true\n }\n\n protected async stateHandler(): Promise<Payload[]> {\n return [await this.manifestHandler(), ...(await this.generateConfigAndAddress()), await this.generateDescribe()]\n }\n\n protected stopHandler(_timeout?: number): Promisable<boolean> {\n this._started = undefined\n return true\n }\n\n protected subscribeHandler() {\n return\n }\n\n protected validateConfig(config?: unknown, parents: string[] = []): boolean {\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(config ?? this.config ?? {}).reduce((valid, [key, value]) => {\n switch (typeof value) {\n case 'function': {\n this.logger?.warn(`Fields of type function not allowed in config [${parents?.join('.')}.${key}]`)\n return false\n }\n case 'object': {\n if (Array.isArray(value)) {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n value.reduce((valid, value) => {\n return this.validateConfig(value, [...parents, key]) && valid\n }, true) && valid\n )\n }\n\n if (!isSerializable(value)) {\n this.logger?.warn(`Fields that are not serializable to JSON are not allowed in config [${parents?.join('.')}.${key}]`)\n return false\n }\n return value ? this.validateConfig(value, [...parents, key]) && valid : true\n }\n default: {\n return valid\n }\n }\n }, true)\n }\n\n protected abstract certifyParents(): Promise<WithMeta<Payload>[]>\n protected abstract storeToArchivists(payloads: Payload[]): Promise<Payload[]>\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\n\nexport interface DetermineAccountFromAccountParams {\n account: AccountInstance | 'random'\n}\n\nexport interface DetermineAccountFromWalletParams {\n accountPath?: string\n wallet: WalletInstance\n}\n\nexport interface DetermineRandomParams {}\n\nexport type DetermineAccountParams = DetermineAccountFromAccountParams | DetermineAccountFromWalletParams | DetermineRandomParams\n\nconst isDetermineAccountFromAccountParams = (params: DetermineAccountParams): params is DetermineAccountFromAccountParams => {\n assertEx(!(params as DetermineAccountFromWalletParams).accountPath, () => 'accountPath may not be provided when account is provided')\n return !!(params as DetermineAccountFromAccountParams).account\n}\n\nconst isDetermineAccountFromWalletParams = (params: DetermineAccountParams): params is DetermineAccountFromWalletParams => {\n return !!(params as DetermineAccountFromWalletParams).wallet\n}\n\nexport async function determineAccount(params: DetermineAccountParams, allowRandomAccount = true): Promise<AccountInstance> {\n if (isDetermineAccountFromAccountParams(params)) {\n if (params.account === 'random') {\n assertEx(allowRandomAccount, () => 'Random address not allowed')\n return await Account.random()\n }\n return params.account\n }\n\n if (isDetermineAccountFromWalletParams(params)) {\n return assertEx(\n params.accountPath ? await params.wallet.derivePath(params.accountPath) : params.wallet,\n () => 'Failed to derive account from path',\n )\n }\n\n // this should eventually be removed/thrown\n console.warn('AbstractModule.determineAccount: No account or wallet provided - Creating Random account')\n return await Account.random()\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { ModuleError, WithMeta } from '@xyo-network/payload-model'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\n\nexport class ModuleErrorBuilder extends PayloadBuilder<ModuleError> {\n _details?: JsonValue\n _message?: string\n _name?: string\n _query?: Hash\n _sources?: Hash[]\n constructor() {\n super({ schema: ModuleErrorSchema })\n }\n\n override build(): Promise<WithMeta<ModuleError>> {\n this.fields({\n details: this._details,\n message: this._message,\n name: this._name,\n query: this._query,\n schema: ModuleErrorSchema,\n sources: this._sources,\n })\n return super.build()\n }\n\n details(details?: JsonValue) {\n this._details = details\n return this\n }\n\n message(message: string) {\n this._message = message\n return this\n }\n\n name(name: string) {\n this._name = name\n return this\n }\n\n query(query: Hash) {\n this._query = query\n return this\n }\n\n sources(sources: Hash[]) {\n this._sources = sources\n return this\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQueries,\n} from '@xyo-network/module-model'\nimport type { Schema } from '@xyo-network/payload-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport type SortedPipedAddressesString = string\n\nconst delimiter = ''\n\nexport class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleConfig>> implements QueryValidator {\n protected allowed: Record<Schema, SortedPipedAddressesString[]> = {}\n protected disallowed: Record<Schema, SortedPipedAddressesString[]> = {}\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 for (const [schema, addresses] of Object.entries(config.security?.allowed)) {\n this.allowed[schema] = addresses.map(toAddressesString)\n }\n }\n if (config?.security?.disallowed) {\n for (const [schema, addresses] of Object.entries(config.security?.disallowed)) {\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 === 0) return false\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(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: Schema, addresses: Address[]): 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\n protected queryDisallowed = (schema: Schema, 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 type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Module, ModuleQueries } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(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","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport type {\n AddressPayload,\n AddressPreviousHashPayload,\n AttachableModuleInstance,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleNameResolver,\n ModuleParams,\n ModuleQueryResult,\n ModuleStateQuery,\n ObjectFilterOptions,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport {\n duplicateModules,\n isAddressModuleFilter,\n isNameModuleFilter,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n resolveAddressToInstance,\n resolveAll,\n resolveAllDown,\n resolveAllUp,\n ResolveHelper,\n resolveLocalNameToInstance,\n resolvePathToInstance,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\nimport type {\n Payload, Query, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport { AbstractModule } from './AbstractModule.ts'\n\nexport abstract class AbstractModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends AbstractModule<TParams, TEventData>\n implements AttachableModuleInstance<TParams, TEventData>, ModuleNameResolver {\n static override readonly uniqueName = globallyUnique('AbstractModuleInstance', AbstractModuleInstance, 'xyo')\n\n // switches between old and new resolution system\n static readonly useNewResolver = false\n\n private _downResolver?: CompositeModuleResolver\n private _parents: NodeInstance[] = []\n private _privateResolver?: CompositeModuleResolver\n private _upResolver?: CompositeModuleResolver\n\n constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {\n assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n // Clone params to prevent mutation of the incoming object\n const mutatedParams = { ...params } as TParams\n const addToResolvers = mutatedParams.addToResolvers ?? true\n super(privateConstructorKey, mutatedParams, account)\n if (addToResolvers) {\n this.upResolver.add(this)\n this.downResolver.add(this)\n }\n }\n\n get downResolver() {\n this._downResolver\n = this._downResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._downResolver\n }\n\n override get modName() {\n return super.modName\n }\n\n get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers ?? ResolveHelper.transformers\n }\n\n get privateResolver() {\n this._privateResolver\n = this._privateResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._privateResolver\n }\n\n get root() {\n return this\n }\n\n get upResolver() {\n this._upResolver\n = this._upResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._upResolver\n }\n\n addParent(mod: ModuleInstance) {\n const existingEntry = this._parents.find(parent => parent.address === mod.address)\n if (!existingEntry) {\n this._parents.push(asNodeInstance(mod, 'Only NodeInstances can be parents'))\n }\n }\n\n async certifyParents(): Promise<WithMeta<Payload>[]> {\n const parents = await this.parents()\n return (\n await Promise.all(\n parents.map(async (parent) => {\n const [bw, payloads, errors] = await parent.certifyQuery(this.address)\n return errors.length === 0 ? [bw, ...payloads] : []\n }),\n )\n ).flat()\n }\n\n manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n this._checkDead()\n return this.busy(async () => {\n return await this.manifestHandler(maxDepth)\n })\n }\n\n async manifestQuery(account: AccountInstance, maxDepth?: number): Promise<ModuleQueryResult<ModuleManifestPayload>> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return await this.sendQueryRaw<ModuleManifestQuery, Payload, ModuleManifestPayload>(queryPayload, undefined, account)\n }\n\n moduleAddress(): Promise<(AddressPayload | AddressPreviousHashPayload)[]> {\n this._checkDead()\n return this.busy(async () => {\n return await this.moduleAddressHandler()\n })\n }\n\n parents(): Promisable<NodeInstance[]> {\n return this._parents\n }\n\n privateChildren(): Promisable<ModuleInstance[]> {\n return []\n }\n\n publicChildren(): Promisable<ModuleInstance[]> {\n return []\n }\n\n removeParent(address: Address) {\n this._parents = this._parents.filter(item => item.address !== address)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n if (AbstractModuleInstance.useNewResolver) {\n if (idOrFilter === '*') {\n const { maxDepth = 10, direction } = options\n if (direction === 'down') {\n return (await resolveAllDown(this, maxDepth)) as T[]\n }\n if (direction === 'up') {\n return (await resolveAllUp(this, maxDepth)) as T[]\n }\n return (await resolveAll(this, maxDepth)) as T[]\n } else if (typeof idOrFilter === 'string') {\n return (await resolvePathToInstance(this, idOrFilter, true)) as T | undefined\n } else {\n if (isNameModuleFilter(idOrFilter)) {\n return (await Promise.all(idOrFilter.name.map(async id => await resolveLocalNameToInstance(this, id)))).filter(exists) as T[]\n } else if (isAddressModuleFilter(idOrFilter)) {\n return (await Promise.all(idOrFilter.address.map(async id => await resolveAddressToInstance(this, id)))).filter(exists) as T[]\n } else {\n throw new TypeError('Invalid filter')\n }\n }\n } else {\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return await ResolveHelper.resolve(config, idOrFilter, options)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return await ResolveHelper.resolve(config, idOrFilter, options)\n }\n case 'object': {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter(mod => mod.address !== this.address)\n }\n default: {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter(mod => mod.address !== this.address)\n }\n }\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promise<Address | undefined> {\n const { direction = 'all' } = options ?? {}\n switch (direction) {\n case 'down': {\n return this.downResolver.resolveIdentifier(id, options)\n }\n default: {\n const mutatedOptions = { ...options, direction: 'all' } as ObjectFilterOptions\n return this.upResolver.resolveIdentifier(id, mutatedOptions)\n }\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n return (\n (await this.privateResolver.resolve(id, options))\n ?? (await this.upResolver.resolve(id, options))\n ?? (await this.downResolver.resolve(id, options))\n )\n }\n\n async siblings(): Promise<ModuleInstance[]> {\n return (await Promise.all((await this.parents()).map(parent => parent.publicChildren()))).flat().filter(duplicateModules)\n }\n\n /* override start(_timeout?: number): Promisable<boolean> {\n if (this.parents.length === 0) {\n this.logger.warn(`Module is being started without being attached to a parent: ${this.id} [${this.address}]`)\n }\n return super.start()\n } */\n\n state() {\n this._checkDead()\n return this.busy(async () => {\n return await this.stateHandler()\n })\n }\n\n async stateQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n subscribe(_queryAccount?: AccountInstance) {\n this._checkDead()\n return this.subscribeHandler()\n }\n\n protected override async manifestHandler(maxDepth: number = 1, _ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const cachedResult = this._cachedManifests.get(maxDepth)\n if (cachedResult) {\n return cachedResult\n }\n const modName = this.modName ?? '<Anonymous>'\n const children = await this.publicChildren()\n const childAddressToName: Record<Address, ModuleName | null> = {}\n for (const child of children) {\n if (child.address !== this.address) {\n childAddressToName[child.address] = child.modName ?? null\n }\n }\n const result = {\n config: { name: modName, ...this.config },\n schema: ModuleManifestPayloadSchema,\n status: { address: this.address, children: childAddressToName },\n }\n this._cachedManifests.set(maxDepth, result)\n return result\n }\n\n protected async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolved = await Promise.all(archivists.map(archivist => this.resolve(archivist)))\n return (resolved.map(mod => asArchivistInstance(mod))).filter(exists)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<WithMeta<R>[]> {\n const queryResults = await this.sendQueryRaw(queryPayload, payloads, account)\n const [, resultPayloads, errors] = queryResults\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (errors && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw errors[0]\n }\n\n return resultPayloads as WithMeta<R>[]\n }\n\n protected async sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<ModuleQueryResult<R>> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads, account, this.additionalSigners)\n\n // Send them off\n return (await this.query(query[0], query[1])) as ModuleQueryResult<R>\n }\n\n protected async storeToArchivists(payloads: Payload[]): Promise<Payload[]> {\n try {\n const archivists = await this.resolveArchivingArchivists()\n return (\n await Promise.all(\n archivists.map((archivist) => {\n return archivist.insert?.(payloads)\n }),\n )\n ).map(([bw]) => bw)\n } catch (ex) {\n const error = ex as Error\n this.logger.error(`Error storing to archivists: ${error.message}`)\n return []\n }\n }\n}\n"],"mappings":"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","names":["assertEx","handleError","handleErrorAsync","exists","forget","ConsoleLogger","IdLogger","LogLevel","Base","globallyUnique","PromiseEx","Account","asArchivistInstance","BoundWitnessBuilder","QueryBoundWitnessBuilder","isQueryBoundWitness","QueryBoundWitnessWrapper","ConfigSchema","BaseEmitter","AddressPreviousHashSchema","AddressSchema","DeadModuleError","isModuleName","isSerializable","ModuleAddressQuerySchema","ModuleConfigSchema","ModuleDescriptionSchema","ModuleFactory","ModuleManifestQuerySchema","ModuleStateQuerySchema","ModuleSubscribeQuerySchema","ObjectResolverPriority","PayloadBuilder","QuerySchema","LRUCache","assertEx","Account","isDetermineAccountFromAccountParams","params","assertEx","accountPath","account","isDetermineAccountFromWalletParams","wallet","determineAccount","allowRandomAccount","Account","random","derivePath","console","warn","PayloadBuilder","ModuleErrorSchema","ModuleErrorBuilder","PayloadBuilder","_details","_message","_name","_query","_sources","constructor","schema","ModuleErrorSchema","build","fields","details","message","name","query","sources","QueryBoundWitnessWrapper","delimiter","ModuleConfigQueryValidator","allowed","disallowed","hasAllowedRules","hasDisallowedRules","hasRules","constructor","config","security","schema","addresses","Object","entries","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","MODULE_NOT_STARTED","AbstractModule","BaseEmitter","allowRandomAccount","configSchemas","ModuleConfigSchema","defaultConfigSchema","defaultLogger","ConsoleLogger","LogLevel","warn","enableLazyLoad","labels","uniqueName","globallyUnique","privateConstructorKey","Date","now","toString","_account","_cachedManifests","LRUCache","max","ttl","_lastError","_startPromise","undefined","_started","moduleConfigQueryValidator","supportedQueryValidator","_busyCount","_logger","_status","constructor","params","account","assertEx","mutatedParams","SupportedQueryValidator","queryable","ModuleConfigQueryValidator","config","additionalSigners","address","allowAnonymous","security","allowNameResolution","archiving","archivist","dead","status","ephemeralQueryAccountEnabled","id","modName","logger","consoleLogger","Base","name","priority","ObjectResolverPriority","Normal","queries","ModuleAddressQuerySchema","ModuleSubscribeQuerySchema","ModuleManifestQuerySchema","ModuleStateQuerySchema","timestamp","value","_getRootFunction","funcName","anyThis","__proto__","_noOverride","functionName","thisFunc","rootFunc","create","length","Error","schema","isModuleName","allowedSchemas","includes","JSON","stringify","mutatedConfig","debug","activeLogger","generatedAccount","determineAccount","IdLogger","newModule","start","factory","ModuleFactory","withParams","busy","closure","args","mod","emit","eventName","eventArgs","previousHash","_checkDead","query","payloads","queryConfig","sourceQuery","PayloadBuilder","build","isQueryBoundWitness","resultPayloads","errorPayloads","queryAccount","Account","random","started","addresses","allowedQueries","push","queryHandler","ex","handleErrorAsync","err","error","ModuleErrorBuilder","sources","$hash","details","message","result","bindQueryResult","configValidator","Object","assign","validators","results","Promise","all","map","validator","_timeout","startHandler","notStartedAction","tryStart","handleError","log","stop","stopHandler","DeadModuleError","archivistInstance","required","resolved","upResolver","resolve","downResolver","asArchivistInstance","bindHashes","hashes","PromiseEx","bindHashesInternal","builder","BoundWitnessBuilder","signer","bindQuery","bindQueryInternal","accounts","filter","exists","QueryBoundWitnessBuilder","signers","additional","certify","certifyParents","bw","payloadsOut","errors","additionalWitnesses","witnesses","payload","isAllowedArchivingQuery","forget","storeToArchivists","flat","generateConfigAndAddress","_maxDepth","AddressSchema","fields","QuerySchema","configSchema","ConfigSchema","generateDescribe","description","ModuleDescriptionSchema","discover","children","getArchivist","manifestHandler","_ignoreAddresses","moduleAddressHandler","moduleAccount","moduleAccountPreviousHash","AddressPreviousHashSchema","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","maxDepth","stateHandler","subscribeHandler","validateConfig","parents","entries","reduce","valid","key","join","Array","isArray","isSerializable","assertEx","exists","globallyUnique","asArchivistInstance","ModuleManifestPayloadSchema","duplicateModules","isAddressModuleFilter","isNameModuleFilter","ModuleManifestQuerySchema","ModuleStateQuerySchema","resolveAddressToInstance","resolveAll","resolveAllDown","resolveAllUp","ResolveHelper","resolveLocalNameToInstance","resolvePathToInstance","CompositeModuleResolver","asNodeInstance","AbstractModuleInstance","AbstractModule","uniqueName","globallyUnique","useNewResolver","_downResolver","_parents","_privateResolver","_upResolver","constructor","privateConstructorKey","params","account","assertEx","mutatedParams","addToResolvers","upResolver","add","downResolver","CompositeModuleResolver","allowNameResolution","moduleIdentifierTransformers","root","modName","ResolveHelper","transformers","privateResolver","addParent","mod","existingEntry","find","parent","address","push","asNodeInstance","certifyParents","parents","Promise","all","map","bw","payloads","errors","certifyQuery","length","flat","manifest","maxDepth","_checkDead","busy","manifestHandler","manifestQuery","queryPayload","schema","ModuleManifestQuerySchema","undefined","sendQueryRaw","moduleAddress","moduleAddressHandler","privateChildren","publicChildren","removeParent","filter","item","resolve","idOrFilter","options","direction","resolveAllDown","resolveAllUp","resolveAll","resolvePathToInstance","isNameModuleFilter","name","id","resolveLocalNameToInstance","exists","isAddressModuleFilter","resolveAddressToInstance","TypeError","config","dead","logger","resolveIdentifier","mutatedOptions","resolvePrivate","siblings","duplicateModules","state","stateHandler","stateQuery","ModuleStateQuerySchema","subscribe","_queryAccount","subscribeHandler","_ignoreAddresses","cachedResult","_cachedManifests","get","children","childAddressToName","child","result","ModuleManifestPayloadSchema","status","set","resolveArchivingArchivists","archivists","archiving","resolved","archivist","asArchivistInstance","sendQuery","queryResults","resultPayloads","query","bindQuery","additionalSigners","storeToArchivists","insert","ex","error","message"]}
1
+ {"version":3,"sources":["../../src/AbstractModule.ts","../../src/determineAccount.ts","../../src/Error.ts","../../src/QueryValidator/ModuleConfigQueryValidator.ts","../../src/QueryValidator/SupportedQueryValidator.ts","../../src/AbstractModuleInstance.ts"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport { assertEx } from '@xylabs/assert'\nimport { handleError, handleErrorAsync } from '@xylabs/error'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address, Hash } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport {\n ConsoleLogger, IdLogger, LogLevel,\n} from '@xylabs/logger'\nimport { Base, globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport { PromiseEx } from '@xylabs/promise'\nimport { Account } from '@xyo-network/account'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitnessBuilder, QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport {\n type BoundWitness, isQueryBoundWitness, type QueryBoundWitness,\n} from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { ConfigPayload } from '@xyo-network/config-payload-plugin'\nimport { ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-event-emitter'\nimport type {\n AddressPayload,\n AddressPreviousHashPayload,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n CreatableModule,\n CreatableModuleFactory,\n Labels,\n Module,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescriptionPayload,\n ModuleDetailsError,\n ModuleEventData,\n ModuleParams,\n ModuleQueriedEventArgs,\n ModuleQueries,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStatus,\n} from '@xyo-network/module-model'\nimport {\n AddressPreviousHashSchema,\n AddressSchema,\n DeadModuleError,\n isModuleName,\n isSerializable,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleDescriptionSchema,\n ModuleFactory,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n ModuleSubscribeQuerySchema,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n ModuleError, Payload, Query, Schema,\n} from '@xyo-network/payload-model'\nimport { QuerySchema } from '@xyo-network/query-payload-plugin'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { determineAccount } from './determineAccount.ts'\nimport { ModuleErrorBuilder } from './Error.ts'\nimport type { Queryable } from './QueryValidator/index.ts'\nimport { ModuleConfigQueryValidator, SupportedQueryValidator } from './QueryValidator/index.ts'\n\nconst MODULE_NOT_STARTED = 'Module not Started' as const\nexport abstract class AbstractModule<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends BaseEmitter<TParams, TEventData>\n implements Module<TParams, TEventData> {\n static readonly allowRandomAccount: boolean = true\n static readonly configSchemas: Schema[] = [ModuleConfigSchema]\n static readonly defaultConfigSchema: Schema = ModuleConfigSchema\n static override defaultLogger: Logger = new ConsoleLogger(LogLevel.warn)\n static enableLazyLoad = false\n static readonly labels: Labels = {}\n static override readonly uniqueName = globallyUnique('AbstractModule', AbstractModule, 'xyo')\n\n protected static privateConstructorKey = Date.now().toString()\n\n protected _account: AccountInstance\n\n // cache manifest based on maxDepth\n protected _cachedManifests = new LRUCache<number, ModuleManifestPayload>({ max: 10, ttl: 1000 * 60 * 5 })\n\n protected _lastError?: ModuleDetailsError\n\n protected _startPromise: Promisable<boolean> | undefined = undefined\n protected _started: Promisable<boolean> | undefined = undefined\n protected readonly moduleConfigQueryValidator: Queryable\n protected readonly supportedQueryValidator: Queryable\n\n private _busyCount = 0\n private _logger: Logger | undefined = undefined\n private _status: ModuleStatus = 'stopped'\n\n constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {\n assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n // Clone params to prevent mutation of the incoming object\n const mutatedParams = { ...params } as TParams\n super(mutatedParams)\n\n this._account = account\n\n this.supportedQueryValidator = new SupportedQueryValidator(this as Module).queryable\n this.moduleConfigQueryValidator = new ModuleConfigQueryValidator(mutatedParams?.config).queryable\n }\n\n get account() {\n return assertEx(this._account, () => 'Missing account')\n }\n\n get additionalSigners(): AccountInstance[] {\n return this.params.additionalSigners ?? []\n }\n\n get address() {\n return this._account?.address\n }\n\n get allowAnonymous() {\n return !!this.config.security?.allowAnonymous\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.config.archiving\n }\n\n get archivist() {\n return this.config.archivist\n }\n\n get config(): TParams['config'] {\n return this.params.config\n }\n\n get dead() {\n return this.status === 'dead'\n }\n\n get ephemeralQueryAccountEnabled(): boolean {\n return !!this.params.ephemeralQueryAccountEnabled\n }\n\n get id() {\n return this.modName ?? this.address\n }\n\n override get logger() {\n const consoleLogger = this.config.consoleLogger\n this._logger\n = (this._logger ?? consoleLogger) ? new ConsoleLogger(consoleLogger) : (this.params?.logger ?? AbstractModule.defaultLogger ?? Base.defaultLogger)\n return this._logger\n }\n\n get modName() {\n return this.config.name\n }\n\n get priority() {\n return ObjectResolverPriority.Normal\n }\n\n get queries(): Schema[] {\n return [ModuleAddressQuerySchema, ModuleSubscribeQuerySchema, ModuleManifestQuerySchema, ModuleStateQuerySchema]\n }\n\n get status() {\n return this._status\n }\n\n get timestamp() {\n return this.config.timestamp ?? false\n }\n\n protected set status(value: ModuleStatus) {\n if (this._status !== 'dead') {\n this._status = value\n }\n }\n\n abstract get downResolver(): ModuleResolverInstance\n\n abstract get upResolver(): ModuleResolverInstance\n\n static _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n static _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n static async create<TModule extends AttachableModuleInstance>(\n this: CreatableModule<TModule>,\n params: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] },\n ) {\n this._noOverride('create')\n if (!this.configSchemas || this.configSchemas.length === 0) {\n throw new Error(`Missing configSchema [${params?.config?.schema}][${this.name}]`)\n }\n\n if (!this.defaultConfigSchema) {\n throw new Error(`Missing defaultConfigSchema [${params?.config?.schema}][${this.name}]`)\n }\n\n assertEx(params?.config?.name === undefined || isModuleName(params.config.name), () => `Invalid module name: ${params?.config?.name}`)\n\n const { account } = params ?? {}\n\n const schema: Schema = params?.config?.schema ?? this.defaultConfigSchema\n const allowedSchemas: Schema[] = this.configSchemas\n\n assertEx(allowedSchemas.includes(schema), () => `Bad Config Schema [Received ${schema}] [Expected ${JSON.stringify(allowedSchemas)}]`)\n const mutatedConfig: TModule['params']['config'] = { ...params?.config, schema } as TModule['params']['config']\n params?.logger?.debug(`config: ${JSON.stringify(mutatedConfig, null, 2)}`)\n const mutatedParams: TModule['params'] = { ...params, config: mutatedConfig } as TModule['params']\n\n const activeLogger = params?.logger ?? AbstractModule.defaultLogger\n const generatedAccount = await AbstractModule.determineAccount({ account })\n const address = generatedAccount.address\n mutatedParams.logger = activeLogger ? new IdLogger(activeLogger, () => `0x${address}`) : undefined\n\n const newModule = new this(AbstractModule.privateConstructorKey, mutatedParams, generatedAccount, address)\n\n if (!AbstractModule.enableLazyLoad) {\n await newModule.start?.()\n }\n return newModule\n }\n\n static async determineAccount(params: {\n account?: AccountInstance | 'random'\n accountPath?: string\n wallet?: WalletInstance\n }): Promise<AccountInstance> {\n return await determineAccount(params, this.allowRandomAccount)\n }\n\n static factory<TModule extends AttachableModuleInstance>(\n this: CreatableModule<TModule>,\n params: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] },\n ): CreatableModuleFactory<TModule> {\n return ModuleFactory.withParams(this, params)\n }\n\n _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, mod: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, mod: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n override emit<TEventName extends keyof TEventData = keyof TEventData, TEventArgs extends TEventData[TEventName] = TEventData[TEventName]>(\n eventName: TEventName,\n eventArgs: TEventArgs,\n ) {\n return super.emit(eventName, eventArgs)\n }\n\n previousHash(): Promisable<string | undefined> {\n this._checkDead()\n return this.account.previousHash\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryResult> {\n this._checkDead()\n this._noOverride('query')\n const sourceQuery = assertEx(isQueryBoundWitness(query) ? query : undefined, () => 'Unable to parse query')\n return await this.busy(async () => {\n const resultPayloads: Payload[] = []\n const errorPayloads: ModuleError[] = []\n const queryAccount = this.ephemeralQueryAccountEnabled ? await Account.random() : undefined\n\n try {\n await this.started('throw')\n if (!this.allowAnonymous && query.addresses.length === 0) {\n throw new Error(`Anonymous Queries not allowed, but running anyway [${this.modName}], [${this.address}]`)\n }\n if (queryConfig?.allowedQueries) {\n assertEx(queryConfig?.allowedQueries.includes(sourceQuery.schema), () => `Query not allowed [${sourceQuery.schema}]`)\n }\n resultPayloads.push(...(await this.queryHandler(sourceQuery, payloads, queryConfig)))\n } catch (ex) {\n await handleErrorAsync(ex, async (err) => {\n const error = err as ModuleDetailsError\n this._lastError = error\n // this.status = 'dead'\n errorPayloads.push(\n new ModuleErrorBuilder()\n .meta({ $sources: [await PayloadBuilder.dataHash(sourceQuery)] })\n .name(this.modName ?? '<Unknown>')\n .query(sourceQuery.schema)\n .details(error.details)\n .message(error.message)\n .build(),\n )\n })\n }\n if (this.timestamp) {\n const timestamp = { schema: 'network.xyo.timestamp', timestamp: Date.now() }\n resultPayloads.push(timestamp)\n }\n const result = await this.bindQueryResult(sourceQuery, resultPayloads, queryAccount ? [queryAccount] : [], errorPayloads)\n const args: ModuleQueriedEventArgs = {\n mod: this, payloads, query: sourceQuery, result,\n }\n await this.emit('moduleQueried', args)\n return result\n })\n }\n\n async queryable<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<boolean> {\n if (this.dead) {\n return false\n }\n if (!(await this.started('warn'))) return false\n const configValidator\n = queryConfig ? new ModuleConfigQueryValidator(Object.assign({}, this.config, queryConfig)).queryable : this.moduleConfigQueryValidator\n const validators = [this.supportedQueryValidator, configValidator]\n\n const results = await Promise.all(validators.map(validator => validator(query, payloads)))\n for (const result of results) {\n if (!result) {\n return false\n }\n }\n return true\n }\n\n start(_timeout?: number): Promisable<boolean> {\n // using promise as mutex\n this._startPromise = this._startPromise ?? this.startHandler()\n const result = this._startPromise\n this.status = result ? 'started' : 'dead'\n return result\n }\n\n async started(notStartedAction: 'error' | 'throw' | 'warn' | 'log' | 'none' = 'log', tryStart = true): Promise<boolean> {\n const started = await this._started\n if (started === true) {\n return true\n }\n if (!started) {\n // using promise as mutex\n this._started = (async () => {\n if (tryStart) {\n try {\n await this.start()\n return true\n } catch (ex) {\n handleError(ex, (error) => {\n this.logger?.warn(`Autostart of Module Failed: ${error.message})`)\n this._started = undefined\n })\n }\n }\n switch (notStartedAction) {\n case 'throw': {\n throw new Error(`${MODULE_NOT_STARTED} [${this.address}]`)\n }\n case 'warn': {\n this.logger?.warn(MODULE_NOT_STARTED)\n break\n }\n case 'error': {\n this.logger?.error(MODULE_NOT_STARTED)\n break\n }\n case 'none': {\n break\n }\n default: {\n this.logger?.log(MODULE_NOT_STARTED)\n break\n }\n }\n return false\n })()\n }\n if (!this._started) {\n throw 'Failed to create start promise'\n }\n return await this._started\n }\n\n async stop(_timeout?: number): Promise<boolean> {\n return await this.busy(async () => {\n const result = await this.stopHandler()\n this._started = undefined\n this._startPromise = undefined\n this.status = result ? 'stopped' : 'dead'\n return result\n })\n }\n\n protected _checkDead() {\n if (this.dead) {\n throw new DeadModuleError(this.id, this._lastError)\n }\n }\n\n protected _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n protected async archivistInstance(): Promise<ArchivistInstance | undefined>\n protected async archivistInstance(required: true): Promise<ArchivistInstance>\n protected async archivistInstance(required = false): Promise<ArchivistInstance | undefined> {\n const archivist = this.archivist\n if (!archivist) {\n if (required) {\n throw new Error('No archivist specified')\n }\n return undefined\n }\n const resolved = (await this.upResolver.resolve(archivist)) ?? (await this.downResolver.resolve(archivist))\n if (required) {\n assertEx(resolved, () => `Unable to resolve archivist [${archivist}]`)\n }\n return resolved ? asArchivistInstance(resolved, () => `Specified archivist is not an Archivist [${archivist}]`) : undefined\n }\n\n protected bindHashes(hashes: Hash[], schema: Schema[], account?: AccountInstance) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx((resolve) => {\n const result = this.bindHashesInternal(hashes, schema, account)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindHashesInternal(hashes: Hash[], schema: Schema[], account: AccountInstance = this.account): Promise<BoundWitness> {\n const builder = new BoundWitnessBuilder().hashes(hashes, schema).signer(account)\n const result: BoundWitness = (await builder.build())[0]\n this.logger?.debug(`result: ${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account?: AccountInstance,\n additionalSigners?: AccountInstance[],\n ): PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account, additionalSigners)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = [],\n ): Promise<[QueryBoundWitness, Payload[], Payload[]]> {\n const accounts = [account, ...additionalSigners].filter(exists)\n const builder = new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query)\n\n const [bw, payloadsOut, errors] = await builder.build()\n return [bw, [...payloadsOut], errors]\n }\n\n protected async bindQueryResult<T extends Query>(\n query: T,\n payloads: Payload[],\n additionalWitnesses: AccountInstance[] = [],\n errors?: ModuleError[],\n ): Promise<ModuleQueryResult> {\n const queryDataHash = await PayloadBuilder.dataHash(query)\n const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(queryDataHash)\n const witnesses = [this.account, ...additionalWitnesses].filter(exists)\n builder.signers(witnesses)\n const result: ModuleQueryResult = [\n PayloadBuilder.omitPrivateStorageMeta((await builder.build())[0]),\n PayloadBuilder.omitPrivateStorageMeta(payloads),\n PayloadBuilder.omitPrivateStorageMeta(errors ?? []),\n ]\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n protected generateConfigAndAddress(_maxDepth?: number): Promisable<Payload[]> {\n const config = this.config\n const address: AddressPayload = { schema: AddressSchema, address: this.address }\n const queries = this.queries.map((query) => {\n return { schema: QuerySchema, query }\n })\n const configSchema: ConfigPayload = {\n config: config.schema,\n schema: ConfigSchema,\n }\n return ([config, configSchema, address, ...queries]).filter(exists)\n }\n\n protected async generateDescribe(): Promise<ModuleDescriptionPayload> {\n const description: ModuleDescriptionPayload = {\n address: this.address,\n queries: this.queries,\n schema: ModuleDescriptionSchema,\n }\n if (this.config?.name) {\n description.name = this.modName\n }\n\n const discover = await this.generateConfigAndAddress()\n\n description.children = (\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? []\n ).filter(exists)\n\n return description\n }\n\n /** @deprecated use archivistInstance() instead */\n protected async getArchivist(): Promise<ArchivistInstance | undefined> {\n return await this.archivistInstance()\n }\n\n protected isAllowedArchivingQuery(schema: Schema): boolean {\n const queries = this.archiving?.queries\n if (queries) {\n return queries.includes(schema)\n }\n return true\n }\n\n protected manifestHandler(_maxDepth: number = 1, _ignoreAddresses: Address[] = []): Promisable<ModuleManifestPayload> {\n throw new Error('Not supported')\n }\n\n protected moduleAddressHandler(): Promisable<(AddressPreviousHashPayload | AddressPayload)[]> {\n const address = this.address\n const name = this.modName\n const previousHash = this.address\n const moduleAccount = name\n ? {\n address, name, schema: AddressSchema,\n }\n : { address, schema: AddressSchema }\n const moduleAccountPreviousHash = previousHash\n ? {\n address, previousHash, schema: AddressPreviousHashSchema,\n }\n : { address, schema: AddressSchema }\n return [moduleAccount, moduleAccountPreviousHash]\n }\n\n protected async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n await this.started('throw')\n const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case ModuleManifestQuerySchema: {\n resultPayloads.push(await this.manifestHandler(queryPayload.maxDepth))\n break\n }\n case ModuleAddressQuerySchema: {\n resultPayloads.push(...(await this.moduleAddressHandler()))\n break\n }\n case ModuleStateQuerySchema: {\n resultPayloads.push(...(await this.stateHandler()))\n break\n }\n case ModuleSubscribeQuerySchema: {\n this.subscribeHandler()\n break\n }\n default: {\n throw new Error(`Unsupported Query [${(queryPayload as Payload).schema}]`)\n }\n }\n return PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n }\n\n protected async startHandler(): Promise<boolean> {\n this.validateConfig()\n await Promise.resolve()\n this._started = true\n return true\n }\n\n protected async stateHandler(): Promise<Payload[]> {\n return [await this.manifestHandler(), ...(await this.generateConfigAndAddress()), await this.generateDescribe()]\n }\n\n protected stopHandler(_timeout?: number): Promisable<boolean> {\n this._started = undefined\n return true\n }\n\n protected subscribeHandler() {\n return\n }\n\n protected validateConfig(config?: unknown, parents: string[] = []): boolean {\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(config ?? this.config ?? {}).reduce((valid, [key, value]) => {\n switch (typeof value) {\n case 'function': {\n this.logger?.warn(`Fields of type function not allowed in config [${parents?.join('.')}.${key}]`)\n return false\n }\n case 'object': {\n if (Array.isArray(value)) {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n value.reduce((valid, value) => {\n return this.validateConfig(value, [...parents, key]) && valid\n }, true) && valid\n )\n }\n\n if (!isSerializable(value)) {\n this.logger?.warn(`Fields that are not serializable to JSON are not allowed in config [${parents?.join('.')}.${key}]`)\n return false\n }\n return value ? this.validateConfig(value, [...parents, key]) && valid : true\n }\n default: {\n return valid\n }\n }\n }, true)\n }\n\n protected abstract certifyParents(): Promise<Payload[]>\n protected abstract storeToArchivists(payloads: Payload[]): Promise<Payload[]>\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Account } from '@xyo-network/account'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\n\nexport interface DetermineAccountFromAccountParams {\n account: AccountInstance | 'random'\n}\n\nexport interface DetermineAccountFromWalletParams {\n accountPath?: string\n wallet: WalletInstance\n}\n\nexport interface DetermineRandomParams {}\n\nexport type DetermineAccountParams = DetermineAccountFromAccountParams | DetermineAccountFromWalletParams | DetermineRandomParams\n\nconst isDetermineAccountFromAccountParams = (params: DetermineAccountParams): params is DetermineAccountFromAccountParams => {\n assertEx(!(params as DetermineAccountFromWalletParams).accountPath, () => 'accountPath may not be provided when account is provided')\n return !!(params as DetermineAccountFromAccountParams).account\n}\n\nconst isDetermineAccountFromWalletParams = (params: DetermineAccountParams): params is DetermineAccountFromWalletParams => {\n return !!(params as DetermineAccountFromWalletParams).wallet\n}\n\nexport async function determineAccount(params: DetermineAccountParams, allowRandomAccount = true): Promise<AccountInstance> {\n if (isDetermineAccountFromAccountParams(params)) {\n if (params.account === 'random') {\n assertEx(allowRandomAccount, () => 'Random address not allowed')\n return await Account.random()\n }\n return params.account\n }\n\n if (isDetermineAccountFromWalletParams(params)) {\n return assertEx(\n params.accountPath ? await params.wallet.derivePath(params.accountPath) : params.wallet,\n () => 'Failed to derive account from path',\n )\n }\n\n // this should eventually be removed/thrown\n console.warn('AbstractModule.determineAccount: No account or wallet provided - Creating Random account')\n return await Account.random()\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { ModuleError, WithOptionalSources } from '@xyo-network/payload-model'\nimport { ModuleErrorSchema } from '@xyo-network/payload-model'\n\nexport class ModuleErrorBuilder extends PayloadBuilder<WithOptionalSources<ModuleError>> {\n _details?: JsonValue\n _message?: string\n _name?: string\n _query?: Hash\n constructor() {\n super({ schema: ModuleErrorSchema })\n }\n\n override build(): WithOptionalSources<ModuleError> {\n this.fields({\n details: this._details,\n message: this._message,\n name: this._name,\n query: this._query,\n })\n return super.build()\n }\n\n details(details?: JsonValue) {\n this._details = details\n return this\n }\n\n message(message: string) {\n this._message = message\n return this\n }\n\n name(name: string) {\n this._name = name\n return this\n }\n\n query(query: Hash) {\n this._query = query\n return this\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQueries,\n} from '@xyo-network/module-model'\nimport type { Schema } from '@xyo-network/payload-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport type SortedPipedAddressesString = string\n\nconst delimiter = ''\n\nexport class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleConfig>> implements QueryValidator {\n protected allowed: Record<Schema, SortedPipedAddressesString[]> = {}\n protected disallowed: Record<Schema, SortedPipedAddressesString[]> = {}\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 for (const [schema, addresses] of Object.entries(config.security?.allowed)) {\n this.allowed[schema] = addresses.map(toAddressesString)\n }\n }\n if (config?.security?.disallowed) {\n for (const [schema, addresses] of Object.entries(config.security?.disallowed)) {\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 === 0) return false\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(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: Schema, addresses: Address[]): 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\n protected queryDisallowed = (schema: Schema, 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 type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Module, ModuleQueries } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n mod: Module,\n query: T,\n payloads?: Payload[],\n): Promise<boolean> => {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(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","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport type {\n AddressPayload,\n AddressPreviousHashPayload,\n AttachableModuleInstance,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleNameResolver,\n ModuleParams,\n ModuleQueryResult,\n ModuleStateQuery,\n ObjectFilterOptions,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport {\n duplicateModules,\n isAddressModuleFilter,\n isNameModuleFilter,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n resolveAddressToInstance,\n resolveAll,\n resolveAllDown,\n resolveAllUp,\n ResolveHelper,\n resolveLocalNameToInstance,\n resolvePathToInstance,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\nimport type { Payload, Query } from '@xyo-network/payload-model'\n\nimport { AbstractModule } from './AbstractModule.ts'\n\nexport abstract class AbstractModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends AbstractModule<TParams, TEventData>\n implements AttachableModuleInstance<TParams, TEventData>, ModuleNameResolver {\n static override readonly uniqueName = globallyUnique('AbstractModuleInstance', AbstractModuleInstance, 'xyo')\n\n // switches between old and new resolution system\n static readonly useNewResolver = false\n\n private _downResolver?: CompositeModuleResolver\n private _parents: NodeInstance[] = []\n private _privateResolver?: CompositeModuleResolver\n private _upResolver?: CompositeModuleResolver\n\n constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {\n assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n // Clone params to prevent mutation of the incoming object\n const mutatedParams = { ...params } as TParams\n const addToResolvers = mutatedParams.addToResolvers ?? true\n super(privateConstructorKey, mutatedParams, account)\n if (addToResolvers) {\n this.upResolver.add(this)\n this.downResolver.add(this)\n }\n }\n\n get downResolver() {\n this._downResolver\n = this._downResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._downResolver\n }\n\n override get modName() {\n return super.modName\n }\n\n get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers ?? ResolveHelper.transformers\n }\n\n get privateResolver() {\n this._privateResolver\n = this._privateResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._privateResolver\n }\n\n get root() {\n return this\n }\n\n get upResolver() {\n this._upResolver\n = this._upResolver\n ?? new CompositeModuleResolver({\n allowNameResolution: this.allowNameResolution,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n root: this,\n })\n return this._upResolver\n }\n\n addParent(mod: ModuleInstance) {\n const existingEntry = this._parents.find(parent => parent.address === mod.address)\n if (!existingEntry) {\n this._parents.push(asNodeInstance(mod, 'Only NodeInstances can be parents'))\n }\n }\n\n async certifyParents(): Promise<Payload[]> {\n const parents = await this.parents()\n return (\n await Promise.all(\n parents.map(async (parent) => {\n const [bw, payloads, errors] = await parent.certifyQuery(this.address)\n return errors.length === 0 ? [bw, ...payloads] : []\n }),\n )\n ).flat()\n }\n\n manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n this._checkDead()\n return this.busy(async () => {\n return await this.manifestHandler(maxDepth)\n })\n }\n\n async manifestQuery(account: AccountInstance, maxDepth?: number): Promise<ModuleQueryResult<ModuleManifestPayload>> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return await this.sendQueryRaw<ModuleManifestQuery, Payload, ModuleManifestPayload>(queryPayload, undefined, account)\n }\n\n moduleAddress(): Promise<(AddressPayload | AddressPreviousHashPayload)[]> {\n this._checkDead()\n return this.busy(async () => {\n return await this.moduleAddressHandler()\n })\n }\n\n parents(): Promisable<NodeInstance[]> {\n return this._parents\n }\n\n privateChildren(): Promisable<ModuleInstance[]> {\n return []\n }\n\n publicChildren(): Promisable<ModuleInstance[]> {\n return []\n }\n\n removeParent(address: Address) {\n this._parents = this._parents.filter(item => item.address !== address)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n if (AbstractModuleInstance.useNewResolver) {\n if (idOrFilter === '*') {\n const { maxDepth = 10, direction } = options\n if (direction === 'down') {\n return (await resolveAllDown(this, maxDepth)) as T[]\n }\n if (direction === 'up') {\n return (await resolveAllUp(this, maxDepth)) as T[]\n }\n return (await resolveAll(this, maxDepth)) as T[]\n } else if (typeof idOrFilter === 'string') {\n return (await resolvePathToInstance(this, idOrFilter, true)) as T | undefined\n } else {\n if (isNameModuleFilter(idOrFilter)) {\n return (await Promise.all(idOrFilter.name.map(async id => await resolveLocalNameToInstance(this, id)))).filter(exists) as T[]\n } else if (isAddressModuleFilter(idOrFilter)) {\n return (await Promise.all(idOrFilter.address.map(async id => await resolveAddressToInstance(this, id)))).filter(exists) as T[]\n } else {\n throw new TypeError('Invalid filter')\n }\n }\n } else {\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return await ResolveHelper.resolve(config, idOrFilter, options)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return await ResolveHelper.resolve(config, idOrFilter, options)\n }\n case 'object': {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter(mod => mod.address !== this.address)\n }\n default: {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter(mod => mod.address !== this.address)\n }\n }\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promise<Address | undefined> {\n const { direction = 'all' } = options ?? {}\n switch (direction) {\n case 'down': {\n return this.downResolver.resolveIdentifier(id, options)\n }\n default: {\n const mutatedOptions = { ...options, direction: 'all' } as ObjectFilterOptions\n return this.upResolver.resolveIdentifier(id, mutatedOptions)\n }\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n return (\n (await this.privateResolver.resolve(id, options))\n ?? (await this.upResolver.resolve(id, options))\n ?? (await this.downResolver.resolve(id, options))\n )\n }\n\n async siblings(): Promise<ModuleInstance[]> {\n return (await Promise.all((await this.parents()).map(parent => parent.publicChildren()))).flat().filter(duplicateModules)\n }\n\n /* override start(_timeout?: number): Promisable<boolean> {\n if (this.parents.length === 0) {\n this.logger.warn(`Module is being started without being attached to a parent: ${this.id} [${this.address}]`)\n }\n return super.start()\n } */\n\n state() {\n this._checkDead()\n return this.busy(async () => {\n return await this.stateHandler()\n })\n }\n\n async stateQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n subscribe(_queryAccount?: AccountInstance) {\n this._checkDead()\n return this.subscribeHandler()\n }\n\n protected override async manifestHandler(maxDepth: number = 1, _ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const cachedResult = this._cachedManifests.get(maxDepth)\n if (cachedResult) {\n return cachedResult\n }\n const modName = this.modName ?? '<Anonymous>'\n const children = await this.publicChildren()\n const childAddressToName: Record<Address, ModuleName | null> = {}\n for (const child of children) {\n if (child.address !== this.address) {\n childAddressToName[child.address] = child.modName ?? null\n }\n }\n const result = {\n config: { name: modName, ...this.config },\n schema: ModuleManifestPayloadSchema,\n status: { address: this.address, children: childAddressToName },\n }\n this._cachedManifests.set(maxDepth, result)\n return result\n }\n\n protected async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolved = await Promise.all(archivists.map(archivist => this.resolve(archivist)))\n return (resolved.map(mod => asArchivistInstance(mod))).filter(exists)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<R[]> {\n const queryResults = await this.sendQueryRaw(queryPayload, payloads, account)\n const [, resultPayloads, errors] = queryResults\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (errors && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw errors[0]\n }\n\n return resultPayloads as R[]\n }\n\n protected async sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<ModuleQueryResult<R>> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads, account, this.additionalSigners)\n\n // Send them off\n return (await this.query(query[0], query[1])) as ModuleQueryResult<R>\n }\n\n protected async storeToArchivists(payloads: Payload[]): Promise<Payload[]> {\n try {\n const archivists = await this.resolveArchivingArchivists()\n return (\n await Promise.all(\n archivists.map((archivist) => {\n return archivist.insert?.(payloads)\n }),\n )\n ).map(([bw]) => bw)\n } catch (ex) {\n const error = ex as Error\n this.logger.error(`Error storing to archivists: ${error.message}`)\n return []\n }\n }\n}\n"],"mappings":"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","names":["assertEx","handleError","handleErrorAsync","exists","forget","ConsoleLogger","IdLogger","LogLevel","Base","globallyUnique","PromiseEx","Account","asArchivistInstance","BoundWitnessBuilder","QueryBoundWitnessBuilder","isQueryBoundWitness","QueryBoundWitnessWrapper","ConfigSchema","BaseEmitter","AddressPreviousHashSchema","AddressSchema","DeadModuleError","isModuleName","isSerializable","ModuleAddressQuerySchema","ModuleConfigSchema","ModuleDescriptionSchema","ModuleFactory","ModuleManifestQuerySchema","ModuleStateQuerySchema","ModuleSubscribeQuerySchema","ObjectResolverPriority","PayloadBuilder","QuerySchema","LRUCache","assertEx","Account","isDetermineAccountFromAccountParams","params","assertEx","accountPath","account","isDetermineAccountFromWalletParams","wallet","determineAccount","allowRandomAccount","Account","random","derivePath","console","warn","PayloadBuilder","ModuleErrorSchema","ModuleErrorBuilder","PayloadBuilder","_details","_message","_name","_query","constructor","schema","ModuleErrorSchema","build","fields","details","message","name","query","QueryBoundWitnessWrapper","delimiter","ModuleConfigQueryValidator","allowed","disallowed","hasAllowedRules","hasDisallowedRules","hasRules","constructor","config","security","schema","addresses","Object","entries","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","MODULE_NOT_STARTED","AbstractModule","BaseEmitter","allowRandomAccount","configSchemas","ModuleConfigSchema","defaultConfigSchema","defaultLogger","ConsoleLogger","LogLevel","warn","enableLazyLoad","labels","uniqueName","globallyUnique","privateConstructorKey","Date","now","toString","_account","_cachedManifests","LRUCache","max","ttl","_lastError","_startPromise","undefined","_started","moduleConfigQueryValidator","supportedQueryValidator","_busyCount","_logger","_status","constructor","params","account","assertEx","mutatedParams","SupportedQueryValidator","queryable","ModuleConfigQueryValidator","config","additionalSigners","address","allowAnonymous","security","allowNameResolution","archiving","archivist","dead","status","ephemeralQueryAccountEnabled","id","modName","logger","consoleLogger","Base","name","priority","ObjectResolverPriority","Normal","queries","ModuleAddressQuerySchema","ModuleSubscribeQuerySchema","ModuleManifestQuerySchema","ModuleStateQuerySchema","timestamp","value","_getRootFunction","funcName","anyThis","__proto__","_noOverride","functionName","thisFunc","rootFunc","create","length","Error","schema","isModuleName","allowedSchemas","includes","JSON","stringify","mutatedConfig","debug","activeLogger","generatedAccount","determineAccount","IdLogger","newModule","start","factory","ModuleFactory","withParams","busy","closure","args","mod","emit","eventName","eventArgs","previousHash","_checkDead","query","payloads","queryConfig","sourceQuery","isQueryBoundWitness","resultPayloads","errorPayloads","queryAccount","Account","random","started","addresses","allowedQueries","push","queryHandler","ex","handleErrorAsync","err","error","ModuleErrorBuilder","meta","$sources","PayloadBuilder","dataHash","details","message","build","result","bindQueryResult","configValidator","Object","assign","validators","results","Promise","all","map","validator","_timeout","startHandler","notStartedAction","tryStart","handleError","log","stop","stopHandler","DeadModuleError","archivistInstance","required","resolved","upResolver","resolve","downResolver","asArchivistInstance","bindHashes","hashes","PromiseEx","bindHashesInternal","builder","BoundWitnessBuilder","signer","bindQuery","bindQueryInternal","accounts","filter","exists","QueryBoundWitnessBuilder","signers","bw","payloadsOut","errors","additionalWitnesses","queryDataHash","witnesses","omitPrivateStorageMeta","isAllowedArchivingQuery","forget","storeToArchivists","flat","generateConfigAndAddress","_maxDepth","AddressSchema","QuerySchema","configSchema","ConfigSchema","generateDescribe","description","ModuleDescriptionSchema","discover","children","payload","getArchivist","manifestHandler","_ignoreAddresses","moduleAddressHandler","moduleAccount","moduleAccountPreviousHash","AddressPreviousHashSchema","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","maxDepth","stateHandler","subscribeHandler","validateConfig","parents","entries","reduce","valid","key","join","Array","isArray","isSerializable","assertEx","exists","globallyUnique","asArchivistInstance","ModuleManifestPayloadSchema","duplicateModules","isAddressModuleFilter","isNameModuleFilter","ModuleManifestQuerySchema","ModuleStateQuerySchema","resolveAddressToInstance","resolveAll","resolveAllDown","resolveAllUp","ResolveHelper","resolveLocalNameToInstance","resolvePathToInstance","CompositeModuleResolver","asNodeInstance","AbstractModuleInstance","AbstractModule","uniqueName","globallyUnique","useNewResolver","_downResolver","_parents","_privateResolver","_upResolver","constructor","privateConstructorKey","params","account","assertEx","mutatedParams","addToResolvers","upResolver","add","downResolver","CompositeModuleResolver","allowNameResolution","moduleIdentifierTransformers","root","modName","ResolveHelper","transformers","privateResolver","addParent","mod","existingEntry","find","parent","address","push","asNodeInstance","certifyParents","parents","Promise","all","map","bw","payloads","errors","certifyQuery","length","flat","manifest","maxDepth","_checkDead","busy","manifestHandler","manifestQuery","queryPayload","schema","ModuleManifestQuerySchema","undefined","sendQueryRaw","moduleAddress","moduleAddressHandler","privateChildren","publicChildren","removeParent","filter","item","resolve","idOrFilter","options","direction","resolveAllDown","resolveAllUp","resolveAll","resolvePathToInstance","isNameModuleFilter","name","id","resolveLocalNameToInstance","exists","isAddressModuleFilter","resolveAddressToInstance","TypeError","config","dead","logger","resolveIdentifier","mutatedOptions","resolvePrivate","siblings","duplicateModules","state","stateHandler","stateQuery","ModuleStateQuerySchema","subscribe","_queryAccount","subscribeHandler","_ignoreAddresses","cachedResult","_cachedManifests","get","children","childAddressToName","child","result","ModuleManifestPayloadSchema","status","set","resolveArchivingArchivists","archivists","archiving","resolved","archivist","asArchivistInstance","sendQuery","queryResults","resultPayloads","query","bindQuery","additionalSigners","storeToArchivists","insert","ex","error","message"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/module-abstract",
3
- "version": "3.5.2",
3
+ "version": "3.6.0-rc.10",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,40 +29,41 @@
29
29
  "module": "dist/neutral/index.mjs",
30
30
  "types": "dist/neutral/index.d.ts",
31
31
  "dependencies": {
32
- "@xylabs/assert": "^4.4.9",
33
- "@xylabs/error": "^4.4.9",
34
- "@xylabs/exists": "^4.4.9",
35
- "@xylabs/forget": "^4.4.9",
36
- "@xylabs/hex": "^4.4.9",
37
- "@xylabs/logger": "^4.4.9",
38
- "@xylabs/object": "^4.4.9",
39
- "@xylabs/promise": "^4.4.9",
40
- "@xyo-network/account": "^3.5.2",
41
- "@xyo-network/account-model": "^3.5.2",
42
- "@xyo-network/archivist-model": "^3.5.2",
43
- "@xyo-network/boundwitness-builder": "^3.5.2",
44
- "@xyo-network/boundwitness-model": "^3.5.2",
45
- "@xyo-network/boundwitness-wrapper": "^3.5.2",
46
- "@xyo-network/config-payload-plugin": "^3.5.2",
47
- "@xyo-network/manifest-model": "^3.5.2",
48
- "@xyo-network/module-event-emitter": "^3.5.2",
49
- "@xyo-network/module-model": "^3.5.2",
50
- "@xyo-network/module-resolver": "^3.5.2",
51
- "@xyo-network/node-model": "^3.5.2",
52
- "@xyo-network/payload-builder": "^3.5.2",
53
- "@xyo-network/payload-model": "^3.5.2",
54
- "@xyo-network/query-payload-plugin": "^3.5.2",
55
- "@xyo-network/wallet-model": "^3.5.2",
32
+ "@xylabs/assert": "^4.4.21",
33
+ "@xylabs/error": "^4.4.21",
34
+ "@xylabs/exists": "^4.4.21",
35
+ "@xylabs/forget": "^4.4.21",
36
+ "@xylabs/hex": "^4.4.21",
37
+ "@xylabs/logger": "^4.4.21",
38
+ "@xylabs/object": "^4.4.21",
39
+ "@xylabs/promise": "^4.4.21",
40
+ "@xyo-network/account": "^3.6.0-rc.10",
41
+ "@xyo-network/account-model": "^3.6.0-rc.10",
42
+ "@xyo-network/archivist-model": "^3.6.0-rc.10",
43
+ "@xyo-network/boundwitness-builder": "^3.6.0-rc.10",
44
+ "@xyo-network/boundwitness-model": "^3.6.0-rc.10",
45
+ "@xyo-network/boundwitness-wrapper": "^3.6.0-rc.10",
46
+ "@xyo-network/config-payload-plugin": "^3.6.0-rc.10",
47
+ "@xyo-network/manifest-model": "^3.6.0-rc.10",
48
+ "@xyo-network/module-event-emitter": "^3.6.0-rc.10",
49
+ "@xyo-network/module-model": "^3.6.0-rc.10",
50
+ "@xyo-network/module-resolver": "^3.6.0-rc.10",
51
+ "@xyo-network/node-model": "^3.6.0-rc.10",
52
+ "@xyo-network/payload-builder": "^3.6.0-rc.10",
53
+ "@xyo-network/payload-model": "^3.6.0-rc.10",
54
+ "@xyo-network/query-payload-plugin": "^3.6.0-rc.10",
55
+ "@xyo-network/wallet-model": "^3.6.0-rc.10",
56
56
  "lru-cache": "^11.0.2"
57
57
  },
58
58
  "devDependencies": {
59
- "@xylabs/ts-scripts-yarn3": "^4.2.4",
60
- "@xylabs/tsconfig": "^4.2.4",
61
- "@xylabs/vitest-extended": "^4.4.9",
59
+ "@xylabs/ts-scripts-yarn3": "^4.2.6",
60
+ "@xylabs/tsconfig": "^4.2.6",
61
+ "@xylabs/vitest-extended": "^4.4.21",
62
62
  "typescript": "^5.7.2",
63
- "vitest": "^2.1.5"
63
+ "vitest": "^2.1.8"
64
64
  },
65
65
  "publishConfig": {
66
66
  "access": "public"
67
- }
67
+ },
68
+ "stableVersion": "3.5.2"
68
69
  }
@@ -64,9 +64,8 @@ import {
64
64
  } from '@xyo-network/module-model'
65
65
  import { PayloadBuilder } from '@xyo-network/payload-builder'
66
66
  import type {
67
- ModuleError, Payload, Query, Schema, WithMeta,
67
+ ModuleError, Payload, Query, Schema,
68
68
  } from '@xyo-network/payload-model'
69
- import type { QueryPayload } from '@xyo-network/query-payload-plugin'
70
69
  import { QuerySchema } from '@xyo-network/query-payload-plugin'
71
70
  import type { WalletInstance } from '@xyo-network/wallet-model'
72
71
  import { LRUCache } from 'lru-cache'
@@ -316,7 +315,7 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
316
315
  ): Promise<ModuleQueryResult> {
317
316
  this._checkDead()
318
317
  this._noOverride('query')
319
- const sourceQuery = await PayloadBuilder.build(assertEx(isQueryBoundWitness(query) ? query : undefined, () => 'Unable to parse query'))
318
+ const sourceQuery = assertEx(isQueryBoundWitness(query) ? query : undefined, () => 'Unable to parse query')
320
319
  return await this.busy(async () => {
321
320
  const resultPayloads: Payload[] = []
322
321
  const errorPayloads: ModuleError[] = []
@@ -337,8 +336,8 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
337
336
  this._lastError = error
338
337
  // this.status = 'dead'
339
338
  errorPayloads.push(
340
- await new ModuleErrorBuilder()
341
- .sources([sourceQuery.$hash])
339
+ new ModuleErrorBuilder()
340
+ .meta({ $sources: [await PayloadBuilder.dataHash(sourceQuery)] })
342
341
  .name(this.modName ?? '<Unknown>')
343
342
  .query(sourceQuery.schema)
344
343
  .details(error.details)
@@ -490,7 +489,7 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
490
489
 
491
490
  protected async bindHashesInternal(hashes: Hash[], schema: Schema[], account: AccountInstance = this.account): Promise<BoundWitness> {
492
491
  const builder = new BoundWitnessBuilder().hashes(hashes, schema).signer(account)
493
- const result = (await builder.build())[0]
492
+ const result: BoundWitness = (await builder.build())[0]
494
493
  this.logger?.debug(`result: ${JSON.stringify(result, null, 2)}`)
495
494
  return result
496
495
  }
@@ -500,9 +499,9 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
500
499
  payloads?: Payload[],
501
500
  account?: AccountInstance,
502
501
  additionalSigners?: AccountInstance[],
503
- ): PromiseEx<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]], AccountInstance> {
502
+ ): PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance> {
504
503
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
505
- return new PromiseEx<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]], AccountInstance>(async (resolve) => {
504
+ return new PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance>(async (resolve) => {
506
505
  const result = await this.bindQueryInternal(query, payloads, account, additionalSigners)
507
506
  resolve?.(result)
508
507
  return result
@@ -514,32 +513,28 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
514
513
  payloads?: Payload[],
515
514
  account: AccountInstance = this.account,
516
515
  additionalSigners: AccountInstance[] = [],
517
- ): Promise<[WithMeta<QueryBoundWitness>, WithMeta<Payload>[], WithMeta<Payload>[]]> {
516
+ ): Promise<[QueryBoundWitness, Payload[], Payload[]]> {
518
517
  const accounts = [account, ...additionalSigners].filter(exists)
519
- const builder = await new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query)
518
+ const builder = new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query)
520
519
 
521
- let additional: WithMeta<Payload>[] = []
522
- if (this.config.certify) {
523
- additional = await this.certifyParents()
524
- await builder.additional(additional)
525
- }
526
520
  const [bw, payloadsOut, errors] = await builder.build()
527
- return [bw, [...payloadsOut, ...additional], errors]
521
+ return [bw, [...payloadsOut], errors]
528
522
  }
529
523
 
530
524
  protected async bindQueryResult<T extends Query>(
531
- query: WithMeta<T>,
525
+ query: T,
532
526
  payloads: Payload[],
533
527
  additionalWitnesses: AccountInstance[] = [],
534
528
  errors?: ModuleError[],
535
529
  ): Promise<ModuleQueryResult> {
536
- const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(query.$hash)
530
+ const queryDataHash = await PayloadBuilder.dataHash(query)
531
+ const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(queryDataHash)
537
532
  const witnesses = [this.account, ...additionalWitnesses].filter(exists)
538
533
  builder.signers(witnesses)
539
534
  const result: ModuleQueryResult = [
540
- (await builder.build())[0],
541
- await Promise.all(payloads.map(payload => PayloadBuilder.build(payload))),
542
- await Promise.all((errors ?? [])?.map(error => PayloadBuilder.build(error))),
535
+ PayloadBuilder.omitPrivateStorageMeta((await builder.build())[0]),
536
+ PayloadBuilder.omitPrivateStorageMeta(payloads),
537
+ PayloadBuilder.omitPrivateStorageMeta(errors ?? []),
543
538
  ]
544
539
  if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
545
540
  forget(this.storeToArchivists(result.flat()))
@@ -547,18 +542,16 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
547
542
  return result
548
543
  }
549
544
 
550
- protected async generateConfigAndAddress(_maxDepth?: number): Promise<Payload[]> {
551
- const config = await PayloadBuilder.build(this.config)
552
- const address = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: this.address }).build()
553
- const queries = await Promise.all(
554
- this.queries.map(async (query) => {
555
- return await new PayloadBuilder<QueryPayload>({ schema: QuerySchema }).fields({ query }).build()
556
- }),
557
- )
558
- const configSchema = await PayloadBuilder.build<ConfigPayload>({
545
+ protected generateConfigAndAddress(_maxDepth?: number): Promisable<Payload[]> {
546
+ const config = this.config
547
+ const address: AddressPayload = { schema: AddressSchema, address: this.address }
548
+ const queries = this.queries.map((query) => {
549
+ return { schema: QuerySchema, query }
550
+ })
551
+ const configSchema: ConfigPayload = {
559
552
  config: config.schema,
560
553
  schema: ConfigSchema,
561
- })
554
+ }
562
555
  return ([config, configSchema, address, ...queries]).filter(exists)
563
556
  }
564
557
 
@@ -624,7 +617,7 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
624
617
  queryConfig?: TConfig,
625
618
  ): Promise<ModuleQueryHandlerResult> {
626
619
  await this.started('throw')
627
- const wrapper = await QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)
620
+ const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)
628
621
  const queryPayload = await wrapper.getQuery()
629
622
  assertEx(await this.queryable(query, payloads, queryConfig))
630
623
  const resultPayloads: Payload[] = []
@@ -649,7 +642,7 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
649
642
  throw new Error(`Unsupported Query [${(queryPayload as Payload).schema}]`)
650
643
  }
651
644
  }
652
- return resultPayloads
645
+ return PayloadBuilder.omitPrivateStorageMeta(resultPayloads)
653
646
  }
654
647
 
655
648
  protected async startHandler(): Promise<boolean> {
@@ -703,6 +696,6 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
703
696
  }, true)
704
697
  }
705
698
 
706
- protected abstract certifyParents(): Promise<WithMeta<Payload>[]>
699
+ protected abstract certifyParents(): Promise<Payload[]>
707
700
  protected abstract storeToArchivists(payloads: Payload[]): Promise<Payload[]>
708
701
  }
@@ -43,9 +43,7 @@ import {
43
43
  import { CompositeModuleResolver } from '@xyo-network/module-resolver'
44
44
  import type { NodeInstance } from '@xyo-network/node-model'
45
45
  import { asNodeInstance } from '@xyo-network/node-model'
46
- import type {
47
- Payload, Query, WithMeta,
48
- } from '@xyo-network/payload-model'
46
+ import type { Payload, Query } from '@xyo-network/payload-model'
49
47
 
50
48
  import { AbstractModule } from './AbstractModule.ts'
51
49
 
@@ -126,7 +124,7 @@ export abstract class AbstractModuleInstance<TParams extends ModuleParams = Modu
126
124
  }
127
125
  }
128
126
 
129
- async certifyParents(): Promise<WithMeta<Payload>[]> {
127
+ async certifyParents(): Promise<Payload[]> {
130
128
  const parents = await this.parents()
131
129
  return (
132
130
  await Promise.all(
@@ -319,7 +317,7 @@ export abstract class AbstractModuleInstance<TParams extends ModuleParams = Modu
319
317
  queryPayload: T,
320
318
  payloads?: P[],
321
319
  account?: AccountInstance,
322
- ): Promise<WithMeta<R>[]> {
320
+ ): Promise<R[]> {
323
321
  const queryResults = await this.sendQueryRaw(queryPayload, payloads, account)
324
322
  const [, resultPayloads, errors] = queryResults
325
323
 
@@ -330,7 +328,7 @@ export abstract class AbstractModuleInstance<TParams extends ModuleParams = Modu
330
328
  throw errors[0]
331
329
  }
332
330
 
333
- return resultPayloads as WithMeta<R>[]
331
+ return resultPayloads as R[]
334
332
  }
335
333
 
336
334
  protected async sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(
package/src/Error.ts CHANGED
@@ -1,27 +1,24 @@
1
1
  import type { Hash } from '@xylabs/hex'
2
2
  import type { JsonValue } from '@xylabs/object'
3
3
  import { PayloadBuilder } from '@xyo-network/payload-builder'
4
- import type { ModuleError, WithMeta } from '@xyo-network/payload-model'
4
+ import type { ModuleError, WithOptionalSources } from '@xyo-network/payload-model'
5
5
  import { ModuleErrorSchema } from '@xyo-network/payload-model'
6
6
 
7
- export class ModuleErrorBuilder extends PayloadBuilder<ModuleError> {
7
+ export class ModuleErrorBuilder extends PayloadBuilder<WithOptionalSources<ModuleError>> {
8
8
  _details?: JsonValue
9
9
  _message?: string
10
10
  _name?: string
11
11
  _query?: Hash
12
- _sources?: Hash[]
13
12
  constructor() {
14
13
  super({ schema: ModuleErrorSchema })
15
14
  }
16
15
 
17
- override build(): Promise<WithMeta<ModuleError>> {
16
+ override build(): WithOptionalSources<ModuleError> {
18
17
  this.fields({
19
18
  details: this._details,
20
19
  message: this._message,
21
20
  name: this._name,
22
21
  query: this._query,
23
- schema: ModuleErrorSchema,
24
- sources: this._sources,
25
22
  })
26
23
  return super.build()
27
24
  }
@@ -45,9 +42,4 @@ export class ModuleErrorBuilder extends PayloadBuilder<ModuleError> {
45
42
  this._query = query
46
43
  return this
47
44
  }
48
-
49
- sources(sources: Hash[]) {
50
- this._sources = sources
51
- return this
52
- }
53
45
  }
@@ -65,8 +65,8 @@ export class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleCo
65
65
  const toAddressesString = (addresses: string | CosigningAddressSet): SortedPipedAddressesString => {
66
66
  return Array.isArray(addresses)
67
67
  ? addresses
68
- .sort()
69
- .map(address => address.toLowerCase())
70
- .join(delimiter)
68
+ .sort()
69
+ .map(address => address.toLowerCase())
70
+ .join(delimiter)
71
71
  : addresses.toLowerCase()
72
72
  }