@xyo-network/archivist-abstract 3.5.2 → 3.6.0-rc.2

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.
@@ -1,4 +1,4 @@
1
- import type { Hash } from '@xylabs/hex';
1
+ import { type Hash } from '@xylabs/hex';
2
2
  import type { Promisable, PromisableArray } from '@xylabs/promise';
3
3
  import type { AccountInstance } from '@xyo-network/account-model';
4
4
  import type { ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions, ArchivistParams, AttachableArchivistInstance } from '@xyo-network/archivist-model';
@@ -6,7 +6,7 @@ import type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-
6
6
  import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
7
7
  import { AbstractModuleInstance } from '@xyo-network/module-abstract';
8
8
  import type { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model';
9
- import type { Payload, PayloadWithMeta, Schema, WithMeta } from '@xyo-network/payload-model';
9
+ import type { Payload, Schema } from '@xyo-network/payload-model';
10
10
  export interface ActionConfig {
11
11
  emitEvents?: boolean;
12
12
  }
@@ -27,41 +27,41 @@ export declare abstract class AbstractArchivist<TParams extends ArchivistParams
27
27
  get queries(): string[];
28
28
  get requireAllParents(): boolean;
29
29
  protected get storeParentReads(): boolean;
30
- all(): PromisableArray<WithMeta<Payload>>;
30
+ all(): PromisableArray<Payload>;
31
31
  allQuery(account: AccountInstance): Promise<ModuleQueryResult>;
32
32
  clear(): Promisable<void>;
33
33
  clearQuery(account: AccountInstance): Promise<ModuleQueryResult>;
34
- commit(): Promisable<WithMeta<BoundWitness>[]>;
34
+ commit(): Promisable<BoundWitness[]>;
35
35
  commitQuery(account: AccountInstance): Promise<ModuleQueryResult>;
36
36
  delete(hashes: Hash[]): Promise<Hash[]>;
37
37
  deleteQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult>;
38
- get(hashes: Hash[]): Promise<WithMeta<Payload>[]>;
38
+ get(hashes: Hash[]): Promise<Payload[]>;
39
39
  getQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult>;
40
- insert(payloads: Payload[]): Promise<WithMeta<Payload>[]>;
40
+ insert(payloads: Payload[]): Promise<Payload[]>;
41
41
  insertQuery(payloads: Payload[], account?: AccountInstance): Promise<ModuleQueryResult>;
42
- next(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]>;
42
+ next(options?: ArchivistNextOptions): Promise<Payload[]>;
43
43
  nextQuery(options?: ArchivistNextOptions, account?: AccountInstance): Promise<ModuleQueryResult>;
44
44
  protected allHandler(): PromisableArray<Payload>;
45
45
  protected clearHandler(): Promisable<void>;
46
- protected commitHandler(): Promisable<WithMeta<BoundWitness>[]>;
46
+ protected commitHandler(): Promisable<BoundWitness[]>;
47
47
  protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash>;
48
48
  protected deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]>;
49
- protected getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]>;
50
- protected getFromParents(hashes: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]>;
49
+ protected getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[Payload[], Hash[]]>;
50
+ protected getFromParents(hashes: Hash[]): Promise<[Payload[], Hash[]]>;
51
51
  protected getHandler(_hashes: Hash[]): Promisable<Payload[]>;
52
- protected getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]>;
52
+ protected getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<Payload[]>;
53
53
  protected head(): Promisable<Payload | undefined>;
54
- protected insertHandler(_payloads: WithMeta<Payload>[]): Promise<WithMeta<Payload>[]>;
55
- protected insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]): Promise<WithMeta<{
54
+ protected insertHandler(_payloads: Payload[]): Promise<Payload[]>;
55
+ protected insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]): Promise<({
56
56
  schema: string;
57
- } & import("@xyo-network/payload-model").PayloadFields>[]>;
58
- protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<WithMeta<Payload>[]>;
59
- protected nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]>;
60
- protected nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]>;
57
+ } & import("@xyo-network/payload-model").PayloadFields)[]>;
58
+ protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]>;
59
+ protected nextHandler(_options?: ArchivistNextOptions): Promisable<Payload[]>;
60
+ protected nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<Payload[]>;
61
61
  protected parentArchivists(): Promise<ArchivistParentInstances>;
62
62
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
63
- protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]>;
64
- protected writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]>;
63
+ protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<Payload[]>;
64
+ protected writeToParents(payloads: Payload[]): Promise<Payload[]>;
65
65
  private resolveArchivists;
66
66
  }
67
67
  //# sourceMappingURL=AbstractArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAOV,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAEpB,eAAe,EAEf,2BAA2B,EAC5B,MAAM,8BAA8B,CAAA;AAarC,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EACV,YAAY,EAAgC,wBAAwB,EAAE,iBAAiB,EACxF,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,EACV,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAC3C,MAAM,4BAA4B,CAAA;AAInC,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAC1C;AAED,8BAAsB,iBAAiB,CACrC,OAAO,SAAS,eAAe,GAAG,eAAe,EACjD,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAEtE,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;IACpE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAkD;IAClG,gBAAyB,mBAAmB,EAAE,MAAM,CAAwB;IAC5E,gBAAyB,UAAU,SAAgE;IACnG,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IAEpD,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,IAAI,iBAAiB,YAEpB;IAED,SAAS,KAAK,gBAAgB,YAE7B;IAED,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAQnC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKpE,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC;IAQnB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtE,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;IAQxC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKjE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQvC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKlF,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAQjD,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK/E,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IASzD,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKvF,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAQlE,SAAS,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtG,SAAS,CAAC,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;IAIhD,SAAS,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC;IAI1C,SAAS,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;IAI/D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC;cAI/C,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAYxE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;cAiBnG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAgBtF,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAI5C,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAkDnG,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAIjD,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;cAIrE,kBAAkB,CAAC,CAAC,SAAS,wBAAwB,GAAG,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;;;cAiBhH,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAiB1G,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;cAIvE,cAAc,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;cAKpG,gBAAgB;cASP,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;cA2DpB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAIzF,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAWjE,iBAAiB;CAuBhC"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export * from './AbstractArchivist.ts';
2
- export * from './StorageMeta.ts';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -40,7 +40,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
40
40
  this._noOverride("all");
41
41
  return this.busy(async () => {
42
42
  await this.started("throw");
43
- return await PayloadBuilder.build(await this.allHandler());
43
+ return PayloadBuilder.omitStorageMeta(await this.allHandler());
44
44
  });
45
45
  }
46
46
  async allQuery(account) {
@@ -93,7 +93,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
93
93
  this._noOverride("get");
94
94
  return await this.busy(async () => {
95
95
  await this.started("throw");
96
- return await PayloadBuilder.build(await this.getWithConfig(hashes));
96
+ return await this.getWithConfig(hashes);
97
97
  });
98
98
  }
99
99
  async getQuery(hashes, account) {
@@ -221,7 +221,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
221
221
  if (this.storeParentReads) {
222
222
  await this.insertWithConfig(parentFoundPayloads);
223
223
  }
224
- return await PayloadBuilder.build([
224
+ return PayloadBuilder.omitStorageMeta([
225
225
  ...foundPayloads,
226
226
  ...parentFoundPayloads
227
227
  ]);
@@ -245,11 +245,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
245
245
  async insertWithConfig(payloads, config) {
246
246
  const emitEvents = config?.emitEvents ?? true;
247
247
  const writeToParents = config?.writeToParents ?? true;
248
- const payloadsWithMeta = await PayloadBuilder.build(payloads, {
249
- stamp: false,
250
- validate: true
251
- });
252
- const insertedPayloads = await this.insertHandler(payloadsWithMeta);
248
+ const insertedPayloads = await this.insertHandler(payloads);
253
249
  if (writeToParents) {
254
250
  await this.writeToParents(insertedPayloads);
255
251
  }
@@ -259,14 +255,14 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
259
255
  payloads: insertedPayloads
260
256
  });
261
257
  }
262
- return insertedPayloads;
258
+ return PayloadBuilder.omitStorageMeta(insertedPayloads);
263
259
  }
264
260
  nextHandler(_options) {
265
261
  throw new Error(NOT_IMPLEMENTED);
266
262
  }
267
263
  async nextWithConfig(options, _config) {
268
264
  const foundPayloads = await this.nextHandler(options);
269
- return await PayloadBuilder.build(foundPayloads);
265
+ return PayloadBuilder.omitStorageMeta(foundPayloads);
270
266
  }
271
267
  async parentArchivists() {
272
268
  this._parentArchivists = this._parentArchivists ?? {
@@ -278,10 +274,6 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
278
274
  }
279
275
  async queryHandler(query, payloads, queryConfig) {
280
276
  const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery(query, payloads);
281
- const builtQuery = await PayloadBuilder.build(query, {
282
- stamp: false,
283
- validate: true
284
- });
285
277
  const queryPayload = await wrappedQuery.getQuery();
286
278
  assertEx(await this.queryable(query, payloads, queryConfig));
287
279
  const resultPayloads = [];
@@ -329,7 +321,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
329
321
  const result = await super.queryHandler(query, payloads);
330
322
  if (this.config.storeQueries) {
331
323
  await this.insertHandler([
332
- builtQuery
324
+ query
333
325
  ]);
334
326
  }
335
327
  return result;
@@ -337,10 +329,10 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
337
329
  }
338
330
  if (this.config.storeQueries) {
339
331
  await this.insertHandler([
340
- builtQuery
332
+ query
341
333
  ]);
342
334
  }
343
- return resultPayloads;
335
+ return PayloadBuilder.omitStorageMeta(resultPayloads);
344
336
  }
345
337
  async writeToParent(parent, payloads) {
346
338
  return await parent.insert(payloads);
@@ -372,39 +364,7 @@ var AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
372
364
  }, {});
373
365
  }
374
366
  };
375
-
376
- // src/StorageMeta.ts
377
- import { assertEx as assertEx2 } from "@xylabs/assert";
378
- var maxSequenceIndex = 10000000000n;
379
- var sequenceNumber = /* @__PURE__ */ __name((index) => {
380
- assertEx2(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`);
381
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index);
382
- }, "sequenceNumber");
383
- var addStorageMeta = /* @__PURE__ */ __name((payload, index = 0) => {
384
- return {
385
- ...payload,
386
- _sequence: sequenceNumber(index)
387
- };
388
- }, "addStorageMeta");
389
- var sortByStorageMeta = /* @__PURE__ */ __name((payloads, direction = 1) => {
390
- return payloads.sort((a, b) => a._sequence < b._sequence ? -direction : a._sequence > b._sequence ? direction : 0);
391
- }, "sortByStorageMeta");
392
- function removeStorageMeta(payload) {
393
- if (!payload) return;
394
- if (Array.isArray(payload)) {
395
- return payload.map((p) => removeStorageMeta(p));
396
- }
397
- const { ...noMeta } = payload;
398
- delete noMeta._sequence;
399
- return noMeta;
400
- }
401
- __name(removeStorageMeta, "removeStorageMeta");
402
367
  export {
403
- AbstractArchivist,
404
- addStorageMeta,
405
- maxSequenceIndex,
406
- removeStorageMeta,
407
- sequenceNumber,
408
- sortByStorageMeta
368
+ AbstractArchivist
409
369
  };
410
370
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address, Hash } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type {\n ArchivistAllQuery,\n ArchivistClearQuery,\n ArchivistCommitQuery,\n ArchivistDeleteQuery,\n ArchivistGetQuery,\n ArchivistInsertQuery,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuery,\n ArchivistParams,\n ArchivistQueries,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n ModuleConfig, ModuleIdentifier, ModuleName, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { duplicateModules } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, PayloadWithMeta, Schema, WithMeta,\n} from '@xyo-network/payload-model'\n\nconst NOT_IMPLEMENTED = 'Not implemented' as const\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends AbstractModuleInstance<TParams, TEventData>\n implements AttachableArchivistInstance<TParams, TEventData, Payload> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = ArchivistConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractArchivist', AbstractArchivist, 'xyo')\n private _lastInsertedPayload: Payload | undefined\n private _parentArchivists?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<WithMeta<Payload>> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(await this.allHandler())\n })\n }\n\n async allQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistAllQuery = { schema: ArchivistAllQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n async clearQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistClearQuery = { schema: ArchivistClearQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n commit(): Promisable<WithMeta<BoundWitness>[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async commitQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistCommitQuery = { schema: ArchivistCommitQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async delete(hashes: Hash[]): Promise<Hash[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async deleteQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistDeleteQuery = { hashes, schema: ArchivistDeleteQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async get(hashes: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(await this.getWithConfig(hashes))\n })\n }\n\n async getQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistGetQuery = { hashes, schema: ArchivistGetQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async insert(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n // make sure all incoming payloads have proper $hash and $meta\n return await this.insertWithConfig(payloads)\n })\n }\n\n async insertQuery(payloads: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistInsertQuery = { schema: ArchivistInsertQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n async next(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\n })\n }\n\n async nextQuery(options?: ArchivistNextOptions, account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistNextQuery = { schema: ArchivistNextQuerySchema, ...options }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected commitHandler(): Promisable<WithMeta<BoundWitness>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, mod: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n // throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter(hash => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parentArchivists())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: Hash[]): Promisable<Payload[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n && !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...foundPayloads, ...parentFoundPayloads])\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: WithMeta<Payload>[]): Promise<WithMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const payloadsWithMeta = await PayloadBuilder.build(payloads, { stamp: false, validate: true })\n const insertedPayloads = await this.insertHandler(payloadsWithMeta)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { mod: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\n }\n\n protected async parentArchivists() {\n this._parentArchivists = this._parentArchivists ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parentArchivists)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, { stamp: false, validate: true })\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, payloads)))\n break\n }\n case ArchivistNextQuerySchema: {\n resultPayloads.push(...(await this.nextHandler(queryPayload)))\n break\n }\n default: {\n const result = await super.queryHandler(query, payloads)\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const parents = await this.parentArchivists()\n return (\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n )\n ).filter(exists).flat()\n }\n\n private async resolveArchivists(archivists: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n () =>\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter(archivist =>\n archivistModules.map(mod => !(mod.address === archivist || mod.modName === archivist)))}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, mod) => {\n prev[mod.address] = asArchivistInstance(mod, () => {\n isArchivistInstance(mod, { log: console })\n return `Unable to cast resolved module to an archivist: [${mod.address}, ${mod.modName}, ${mod.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type {\n Payload, PayloadWithMeta, WithMeta,\n} from '@xyo-network/payload-model'\n\nexport interface StorageMeta {\n _sequence: bigint\n}\n\nexport type WithOptionalStorageMeta<T extends Payload> = T & Partial<StorageMeta>\n\nexport type WithStorageMeta<T extends Payload> = T & StorageMeta\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) }\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence\n ? -direction\n : a._sequence > b._sequence\n ? direction\n : 0)\n}\n\nexport function removeStorageMeta<T extends Payload>(payload: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T>\nexport function removeStorageMeta<T extends Payload>(payloads: WithOptionalStorageMeta<WithMeta<T>>[]): WithMeta<T>[]\nexport function removeStorageMeta<T extends Payload>(payload?: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T> | undefined\nexport function removeStorageMeta<T extends Payload>(payload?: WithOptionalStorageMeta<WithMeta<T>>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map(p => removeStorageMeta(p))\n }\n\n const { ...noMeta } = payload\n delete noMeta._sequence\n return noMeta\n}\n"],"mappings":"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","names":["assertEx","exists","globallyUnique","difference","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","AbstractModuleInstance","duplicateModules","PayloadBuilder","NOT_IMPLEMENTED","AbstractArchivist","AbstractModuleInstance","configSchemas","ArchivistConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","_lastInsertedPayload","_parentArchivists","queries","ArchivistGetQuerySchema","requireAllParents","config","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","build","allHandler","allQuery","account","queryPayload","schema","ArchivistAllQuerySchema","sendQueryRaw","undefined","clear","clearHandler","clearQuery","ArchivistClearQuerySchema","commit","commitHandler","commitQuery","ArchivistCommitQuerySchema","delete","hashes","deleteWithConfig","deleteQuery","ArchivistDeleteQuerySchema","get","getWithConfig","getQuery","insert","payloads","insertWithConfig","insertQuery","ArchivistInsertQuerySchema","next","options","nextWithConfig","nextQuery","ArchivistNextQuerySchema","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","mod","getFromParent","archivist","foundPairs","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","parentArchivists","read","remainingHashes","parentIndex","result","length","found","getHandler","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","payloadsWithMeta","stamp","validate","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","resultPayload","storeQueries","writeToParent","parent","Promise","exists","flat","archivists","archivistModules","resolve","address","name","duplicateModules","modName","reduce","prev","asArchivistInstance","isArchivistInstance","log","assertEx","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
1
+ {"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { type Address, type Hash } from '@xylabs/hex'\nimport { globallyUnique, omitBy } from '@xylabs/object'\nimport type { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type {\n ArchivistAllQuery,\n ArchivistClearQuery,\n ArchivistCommitQuery,\n ArchivistDeleteQuery,\n ArchivistGetQuery,\n ArchivistInsertQuery,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuery,\n ArchivistParams,\n ArchivistQueries,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n ModuleConfig, ModuleIdentifier, ModuleName, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { duplicateModules } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nconst NOT_IMPLEMENTED = 'Not implemented' as const\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends AbstractModuleInstance<TParams, TEventData>\n implements AttachableArchivistInstance<TParams, TEventData, Payload> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = ArchivistConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractArchivist', AbstractArchivist, 'xyo')\n private _lastInsertedPayload: Payload | undefined\n private _parentArchivists?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return PayloadBuilder.omitStorageMeta(await this.allHandler())\n })\n }\n\n async allQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistAllQuery = { schema: ArchivistAllQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n async clearQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistClearQuery = { schema: ArchivistClearQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async commitQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistCommitQuery = { schema: ArchivistCommitQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async delete(hashes: Hash[]): Promise<Hash[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async deleteQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistDeleteQuery = { hashes, schema: ArchivistDeleteQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async get(hashes: Hash[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async getQuery(hashes: Hash[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistGetQuery = { hashes, schema: ArchivistGetQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n async insertQuery(payloads: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistInsertQuery = { schema: ArchivistInsertQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n async next(options?: ArchivistNextOptions): Promise<Payload[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\n })\n }\n\n async nextQuery(options?: ArchivistNextOptions, account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ArchivistNextQuery = { schema: ArchivistNextQuerySchema, ...options }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, mod: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[Payload[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n // throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter(hash => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: Hash[]): Promise<[Payload[], Hash[]]> {\n const parents = Object.values((await this.parentArchivists())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n // NOTE: intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: Hash[]): Promisable<Payload[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<Payload[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: Payload[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n && !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return PayloadBuilder.omitStorageMeta([...foundPayloads, ...parentFoundPayloads])\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { mod: this, payloads: insertedPayloads })\n }\n\n return PayloadBuilder.omitStorageMeta(insertedPayloads)\n }\n\n protected nextHandler(_options?: ArchivistNextOptions): Promisable<Payload[]> {\n throw new Error(NOT_IMPLEMENTED)\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<Payload[]> {\n const foundPayloads = await this.nextHandler(options)\n return PayloadBuilder.omitStorageMeta(foundPayloads)\n }\n\n protected async parentArchivists() {\n this._parentArchivists = this._parentArchivists ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parentArchivists)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQueries>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, payloads)))\n break\n }\n case ArchivistNextQuerySchema: {\n resultPayloads.push(...(await this.nextHandler(queryPayload)))\n break\n }\n default: {\n const result = await super.queryHandler(query, payloads)\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n return PayloadBuilder.omitStorageMeta(resultPayloads)\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<Payload[]> {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parentArchivists()\n return (\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n )\n ).filter(exists).flat()\n }\n\n private async resolveArchivists(archivists: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n () =>\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter(archivist =>\n archivistModules.map(mod => !(mod.address === archivist || mod.modName === archivist)))}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, mod) => {\n prev[mod.address] = asArchivistInstance(mod, () => {\n isArchivistInstance(mod, { log: console })\n return `Unable to cast resolved module to an archivist: [${mod.address}, ${mod.modName}, ${mod.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["assertEx","exists","globallyUnique","difference","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","AbstractModuleInstance","duplicateModules","PayloadBuilder","NOT_IMPLEMENTED","AbstractArchivist","AbstractModuleInstance","configSchemas","ArchivistConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","_lastInsertedPayload","_parentArchivists","queries","ArchivistGetQuerySchema","requireAllParents","config","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","omitStorageMeta","allHandler","allQuery","account","queryPayload","schema","ArchivistAllQuerySchema","sendQueryRaw","undefined","clear","clearHandler","clearQuery","ArchivistClearQuerySchema","commit","commitHandler","commitQuery","ArchivistCommitQuerySchema","delete","hashes","deleteWithConfig","deleteQuery","ArchivistDeleteQuerySchema","get","getWithConfig","getQuery","insert","payloads","insertWithConfig","insertQuery","ArchivistInsertQuerySchema","next","options","nextWithConfig","nextQuery","ArchivistNextQuerySchema","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","mod","getFromParent","archivist","foundPairs","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","parentArchivists","read","remainingHashes","parentIndex","result","length","found","getHandler","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryable","resultPayloads","resultPayload","storeQueries","writeToParent","parent","Promise","exists","flat","archivists","archivistModules","resolve","address","name","duplicateModules","modName","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/archivist-abstract",
3
- "version": "3.5.2",
3
+ "version": "3.6.0-rc.2",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,20 +29,20 @@
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/exists": "^4.4.9",
34
- "@xylabs/hex": "^4.4.9",
35
- "@xylabs/object": "^4.4.9",
36
- "@xylabs/promise": "^4.4.9",
37
- "@xylabs/set": "^4.4.9",
38
- "@xyo-network/account-model": "^3.5.2",
39
- "@xyo-network/archivist-model": "^3.5.2",
40
- "@xyo-network/boundwitness-model": "^3.5.2",
41
- "@xyo-network/boundwitness-wrapper": "^3.5.2",
42
- "@xyo-network/module-abstract": "^3.5.2",
43
- "@xyo-network/module-model": "^3.5.2",
44
- "@xyo-network/payload-builder": "^3.5.2",
45
- "@xyo-network/payload-model": "^3.5.2"
32
+ "@xylabs/assert": "^4.4.12",
33
+ "@xylabs/exists": "^4.4.12",
34
+ "@xylabs/hex": "^4.4.12",
35
+ "@xylabs/object": "^4.4.12",
36
+ "@xylabs/promise": "^4.4.12",
37
+ "@xylabs/set": "^4.4.12",
38
+ "@xyo-network/account-model": "^3.6.0-rc.2",
39
+ "@xyo-network/archivist-model": "^3.6.0-rc.2",
40
+ "@xyo-network/boundwitness-model": "^3.6.0-rc.2",
41
+ "@xyo-network/boundwitness-wrapper": "^3.6.0-rc.2",
42
+ "@xyo-network/module-abstract": "^3.6.0-rc.2",
43
+ "@xyo-network/module-model": "^3.6.0-rc.2",
44
+ "@xyo-network/payload-builder": "^3.6.0-rc.2",
45
+ "@xyo-network/payload-model": "^3.6.0-rc.2"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@xylabs/ts-scripts-yarn3": "^4.2.4",
@@ -51,5 +51,6 @@
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
54
- }
54
+ },
55
+ "stableVersion": "3.5.2"
55
56
  }
@@ -1,7 +1,7 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
- import type { Address, Hash } from '@xylabs/hex'
4
- import { globallyUnique } from '@xylabs/object'
3
+ import { type Address, type Hash } from '@xylabs/hex'
4
+ import { globallyUnique, omitBy } from '@xylabs/object'
5
5
  import type { Promisable, PromisableArray } from '@xylabs/promise'
6
6
  import { difference } from '@xylabs/set'
7
7
  import type { AccountInstance } from '@xyo-network/account-model'
@@ -40,9 +40,7 @@ import type {
40
40
  } from '@xyo-network/module-model'
41
41
  import { duplicateModules } from '@xyo-network/module-model'
42
42
  import { PayloadBuilder } from '@xyo-network/payload-builder'
43
- import type {
44
- Payload, PayloadWithMeta, Schema, WithMeta,
45
- } from '@xyo-network/payload-model'
43
+ import type { Payload, Schema } from '@xyo-network/payload-model'
46
44
 
47
45
  const NOT_IMPLEMENTED = 'Not implemented' as const
48
46
 
@@ -84,11 +82,11 @@ export abstract class AbstractArchivist<
84
82
  return !!this.config?.storeParentReads
85
83
  }
86
84
 
87
- all(): PromisableArray<WithMeta<Payload>> {
85
+ all(): PromisableArray<Payload> {
88
86
  this._noOverride('all')
89
87
  return this.busy(async () => {
90
88
  await this.started('throw')
91
- return await PayloadBuilder.build(await this.allHandler())
89
+ return PayloadBuilder.omitStorageMeta(await this.allHandler())
92
90
  })
93
91
  }
94
92
 
@@ -110,7 +108,7 @@ export abstract class AbstractArchivist<
110
108
  return await this.sendQueryRaw(queryPayload, undefined, account)
111
109
  }
112
110
 
113
- commit(): Promisable<WithMeta<BoundWitness>[]> {
111
+ commit(): Promisable<BoundWitness[]> {
114
112
  this._noOverride('commit')
115
113
  return this.busy(async () => {
116
114
  await this.started('throw')
@@ -136,11 +134,11 @@ export abstract class AbstractArchivist<
136
134
  return await this.sendQueryRaw(queryPayload, undefined, account)
137
135
  }
138
136
 
139
- async get(hashes: Hash[]): Promise<WithMeta<Payload>[]> {
137
+ async get(hashes: Hash[]): Promise<Payload[]> {
140
138
  this._noOverride('get')
141
139
  return await this.busy(async () => {
142
140
  await this.started('throw')
143
- return await PayloadBuilder.build(await this.getWithConfig(hashes))
141
+ return await this.getWithConfig(hashes)
144
142
  })
145
143
  }
146
144
 
@@ -149,11 +147,10 @@ export abstract class AbstractArchivist<
149
147
  return await this.sendQueryRaw(queryPayload, undefined, account)
150
148
  }
151
149
 
152
- async insert(payloads: Payload[]): Promise<WithMeta<Payload>[]> {
150
+ async insert(payloads: Payload[]): Promise<Payload[]> {
153
151
  this._noOverride('insert')
154
152
  return await this.busy(async () => {
155
153
  await this.started('throw')
156
- // make sure all incoming payloads have proper $hash and $meta
157
154
  return await this.insertWithConfig(payloads)
158
155
  })
159
156
  }
@@ -163,7 +160,7 @@ export abstract class AbstractArchivist<
163
160
  return await this.sendQueryRaw(queryPayload, payloads, account)
164
161
  }
165
162
 
166
- async next(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {
163
+ async next(options?: ArchivistNextOptions): Promise<Payload[]> {
167
164
  this._noOverride('next')
168
165
  return await this.busy(async () => {
169
166
  await this.started('throw')
@@ -184,7 +181,7 @@ export abstract class AbstractArchivist<
184
181
  throw new Error(NOT_IMPLEMENTED)
185
182
  }
186
183
 
187
- protected commitHandler(): Promisable<WithMeta<BoundWitness>[]> {
184
+ protected commitHandler(): Promisable<BoundWitness[]> {
188
185
  throw new Error(NOT_IMPLEMENTED)
189
186
  }
190
187
 
@@ -204,7 +201,7 @@ export abstract class AbstractArchivist<
204
201
  return deletedHashes
205
202
  }
206
203
 
207
- protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {
204
+ protected async getFromParent(hashes: Hash[], archivist: ArchivistInstance): Promise<[Payload[], Hash[]]> {
208
205
  const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
209
206
  const askedFor = hashes.includes(hash)
210
207
  if (!askedFor) {
@@ -221,11 +218,11 @@ export abstract class AbstractArchivist<
221
218
  return [foundPayloads, notfound]
222
219
  }
223
220
 
224
- protected async getFromParents(hashes: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {
221
+ protected async getFromParents(hashes: Hash[]): Promise<[Payload[], Hash[]]> {
225
222
  const parents = Object.values((await this.parentArchivists())?.read ?? {})
226
223
  let remainingHashes = [...hashes]
227
224
  let parentIndex = 0
228
- let result: WithMeta<Payload>[] = []
225
+ let result: Payload[] = []
229
226
 
230
227
  // NOTE: intentionally doing this serially
231
228
  while (parentIndex < parents.length && remainingHashes.length > 0) {
@@ -241,7 +238,7 @@ export abstract class AbstractArchivist<
241
238
  throw new Error(NOT_IMPLEMENTED)
242
239
  }
243
240
 
244
- protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {
241
+ protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<Payload[]> {
245
242
  // Filter out duplicates
246
243
  const requestedHashes = new Set(hashes)
247
244
 
@@ -251,7 +248,7 @@ export abstract class AbstractArchivist<
251
248
  // Do not just blindly return what the archivist told us but
252
249
  // ensure to only return requested payloads and keep track of
253
250
  // the ones it did not find so we can ask the parents.
254
- const foundPayloads: PayloadWithMeta[] = []
251
+ const foundPayloads: Payload[] = []
255
252
  const foundHashes = new Set<Hash>()
256
253
 
257
254
  // NOTE: We are iterating over the returned result from the archivist
@@ -288,14 +285,14 @@ export abstract class AbstractArchivist<
288
285
  if (this.storeParentReads) {
289
286
  await this.insertWithConfig(parentFoundPayloads)
290
287
  }
291
- return await PayloadBuilder.build([...foundPayloads, ...parentFoundPayloads])
288
+ return PayloadBuilder.omitStorageMeta([...foundPayloads, ...parentFoundPayloads])
292
289
  }
293
290
 
294
291
  protected head(): Promisable<Payload | undefined> {
295
292
  return this._lastInsertedPayload
296
293
  }
297
294
 
298
- protected insertHandler(_payloads: WithMeta<Payload>[]): Promise<WithMeta<Payload>[]> {
295
+ protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {
299
296
  throw new Error(NOT_IMPLEMENTED)
300
297
  }
301
298
 
@@ -316,12 +313,11 @@ export abstract class AbstractArchivist<
316
313
  return result
317
314
  }
318
315
 
319
- protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<WithMeta<Payload>[]> {
316
+ protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {
320
317
  const emitEvents = config?.emitEvents ?? true
321
318
  const writeToParents = config?.writeToParents ?? true
322
319
 
323
- const payloadsWithMeta = await PayloadBuilder.build(payloads, { stamp: false, validate: true })
324
- const insertedPayloads = await this.insertHandler(payloadsWithMeta)
320
+ const insertedPayloads = await this.insertHandler(payloads)
325
321
 
326
322
  if (writeToParents) {
327
323
  await this.writeToParents(insertedPayloads)
@@ -330,16 +326,16 @@ export abstract class AbstractArchivist<
330
326
  await this.emit('inserted', { mod: this, payloads: insertedPayloads })
331
327
  }
332
328
 
333
- return insertedPayloads
329
+ return PayloadBuilder.omitStorageMeta(insertedPayloads)
334
330
  }
335
331
 
336
- protected nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {
332
+ protected nextHandler(_options?: ArchivistNextOptions): Promisable<Payload[]> {
337
333
  throw new Error(NOT_IMPLEMENTED)
338
334
  }
339
335
 
340
- protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {
336
+ protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<Payload[]> {
341
337
  const foundPayloads = await this.nextHandler(options)
342
- return await PayloadBuilder.build(foundPayloads)
338
+ return PayloadBuilder.omitStorageMeta(foundPayloads)
343
339
  }
344
340
 
345
341
  protected async parentArchivists() {
@@ -357,7 +353,6 @@ export abstract class AbstractArchivist<
357
353
  queryConfig?: TConfig,
358
354
  ): Promise<ModuleQueryHandlerResult> {
359
355
  const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQueries>(query, payloads)
360
- const builtQuery = await PayloadBuilder.build(query, { stamp: false, validate: true })
361
356
  const queryPayload = await wrappedQuery.getQuery()
362
357
  assertEx(await this.queryable(query, payloads, queryConfig))
363
358
  const resultPayloads: Payload[] = []
@@ -403,22 +398,22 @@ export abstract class AbstractArchivist<
403
398
  default: {
404
399
  const result = await super.queryHandler(query, payloads)
405
400
  if (this.config.storeQueries) {
406
- await this.insertHandler([builtQuery])
401
+ await this.insertHandler([query])
407
402
  }
408
403
  return result
409
404
  }
410
405
  }
411
406
  if (this.config.storeQueries) {
412
- await this.insertHandler([builtQuery])
407
+ await this.insertHandler([query])
413
408
  }
414
- return resultPayloads
409
+ return PayloadBuilder.omitStorageMeta(resultPayloads)
415
410
  }
416
411
 
417
- protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {
412
+ protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<Payload[]> {
418
413
  return await parent.insert(payloads)
419
414
  }
420
415
 
421
- protected async writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]> {
416
+ protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {
422
417
  const parents = await this.parentArchivists()
423
418
  return (
424
419
  await Promise.all(
package/src/index.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from './AbstractArchivist.ts'
2
- export * from './StorageMeta.ts'
@@ -1,16 +0,0 @@
1
- import type { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
2
- export interface StorageMeta {
3
- _sequence: bigint;
4
- }
5
- export type WithOptionalStorageMeta<T extends Payload> = T & Partial<StorageMeta>;
6
- export type WithStorageMeta<T extends Payload> = T & StorageMeta;
7
- export declare const maxSequenceIndex = 10000000000n;
8
- export declare const sequenceNumber: (index: number) => bigint;
9
- export declare const addStorageMeta: <T extends PayloadWithMeta>(payload: T, index?: number) => T & {
10
- _sequence: bigint;
11
- };
12
- export declare const sortByStorageMeta: <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction?: -1 | 1) => WithStorageMeta<T>[];
13
- export declare function removeStorageMeta<T extends Payload>(payload: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T>;
14
- export declare function removeStorageMeta<T extends Payload>(payloads: WithOptionalStorageMeta<WithMeta<T>>[]): WithMeta<T>[];
15
- export declare function removeStorageMeta<T extends Payload>(payload?: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T> | undefined;
16
- //# sourceMappingURL=StorageMeta.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageMeta.d.ts","sourceRoot":"","sources":["../../src/StorageMeta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAAE,eAAe,EAAE,QAAQ,EACnC,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEjF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG,WAAW,CAAA;AAEhE,eAAO,MAAM,gBAAgB,eAAkB,CAAA;AAE/C,eAAO,MAAM,cAAc,UAAW,MAAM,WAG3C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,eAAe,WAAW,CAAC;;CAEnE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,eAAe,YAAY,eAAe,CAAC,CAAC,CAAC,EAAE,cAAa,CAAC,CAAC,GAAG,CAAC,yBAO7G,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;AAChH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;AACrH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA"}
@@ -1,46 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type {
3
- Payload, PayloadWithMeta, WithMeta,
4
- } from '@xyo-network/payload-model'
5
-
6
- export interface StorageMeta {
7
- _sequence: bigint
8
- }
9
-
10
- export type WithOptionalStorageMeta<T extends Payload> = T & Partial<StorageMeta>
11
-
12
- export type WithStorageMeta<T extends Payload> = T & StorageMeta
13
-
14
- export const maxSequenceIndex = 10_000_000_000n
15
-
16
- export const sequenceNumber = (index: number) => {
17
- assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)
18
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)
19
- }
20
-
21
- export const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {
22
- return { ...payload, _sequence: sequenceNumber(index) }
23
- }
24
-
25
- export const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {
26
- return payloads.sort((a, b) =>
27
- a._sequence < b._sequence
28
- ? -direction
29
- : a._sequence > b._sequence
30
- ? direction
31
- : 0)
32
- }
33
-
34
- export function removeStorageMeta<T extends Payload>(payload: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T>
35
- export function removeStorageMeta<T extends Payload>(payloads: WithOptionalStorageMeta<WithMeta<T>>[]): WithMeta<T>[]
36
- export function removeStorageMeta<T extends Payload>(payload?: WithOptionalStorageMeta<WithMeta<T>>): WithMeta<T> | undefined
37
- export function removeStorageMeta<T extends Payload>(payload?: WithOptionalStorageMeta<WithMeta<T>>) {
38
- if (!payload) return
39
- if (Array.isArray(payload)) {
40
- return payload.map(p => removeStorageMeta(p))
41
- }
42
-
43
- const { ...noMeta } = payload
44
- delete noMeta._sequence
45
- return noMeta
46
- }