@xyo-network/archivist-memory 2.91.0 → 2.91.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,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -79,11 +79,12 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
79
79
  import_archivist_model.ArchivistClearQuerySchema,
80
80
  import_archivist_model.ArchivistInsertQuerySchema,
81
81
  import_archivist_model.ArchivistCommitQuerySchema,
82
+ import_archivist_model.ArchivistNextQuerySchema,
82
83
  ...super.queries
83
84
  ];
84
85
  }
85
- async allHandler() {
86
- const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value)));
86
+ allHandler() {
87
+ const all = (0, import_lodash.compact)(this.cache.dump().map(([, item]) => item.value));
87
88
  return (0, import_archivist_abstract.sortByStorageMeta)(all).map((payload) => (0, import_archivist_abstract.removeStorageMeta)(payload));
88
89
  }
89
90
  clearHandler() {
@@ -123,16 +124,22 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
123
124
  }
124
125
  async insertHandler(payloads) {
125
126
  const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
126
- const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
127
- return this.insertPayloadIntoCache(payload, hash);
128
- }));
129
- return insertedPayloads;
127
+ const insertedPayloads = pairs.map(([payload, hash]) => {
128
+ return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
129
+ });
130
+ return (0, import_archivist_abstract.removeStorageMeta)(insertedPayloads);
131
+ }
132
+ async nextHandler(options) {
133
+ const { limit, previous } = options ?? {};
134
+ const all = (0, import_archivist_abstract.sortByStorageMeta)((0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value))));
135
+ const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0;
136
+ return (0, import_archivist_abstract.removeStorageMeta)(all.slice(startIndex, limit ? startIndex + limit : void 0));
130
137
  }
131
138
  insertPayloadIntoCache(payload, hash, index = 0) {
132
139
  const withMeta = (0, import_archivist_abstract.addStorageMeta)(payload, index);
133
140
  this.cache.set(hash, withMeta);
134
141
  this.bodyHashIndex.set(withMeta.$hash, hash);
135
- return payload;
142
+ return withMeta;
136
143
  }
137
144
  };
138
145
  MemoryArchivist = _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta, WithStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistNextQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override allHandler(): Promisable<PayloadWithMeta[]> {\n const all = compact(this.cache.dump().map(([, item]) => item.value))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<Hash[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n })\n\n return removeStorageMeta(insertedPayloads)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {\n const { limit, previous } = options ?? {}\n const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))\n const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0\n return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): WithStorageMeta<PayloadWithMeta> {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return withMeta\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","ArchivistNextQuerySchema","allHandler","all","compact","dump","map","item","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","creatableModule"]}
@@ -6,7 +6,7 @@ import { assertEx } from "@xylabs/assert";
6
6
  import { compact } from "@xylabs/lodash";
7
7
  import { fulfilled } from "@xylabs/promise";
8
8
  import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from "@xyo-network/archivist-abstract";
9
- import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
9
+ import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from "@xyo-network/archivist-model";
10
10
  import { creatableModule } from "@xyo-network/module-model";
11
11
  import { PayloadBuilder } from "@xyo-network/payload-builder";
12
12
  import { LRUCache } from "lru-cache";
@@ -54,11 +54,12 @@ var MemoryArchivist = class extends AbstractArchivist {
54
54
  ArchivistClearQuerySchema,
55
55
  ArchivistInsertQuerySchema,
56
56
  ArchivistCommitQuerySchema,
57
+ ArchivistNextQuerySchema,
57
58
  ...super.queries
58
59
  ];
59
60
  }
60
- async allHandler() {
61
- const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)));
61
+ allHandler() {
62
+ const all = compact(this.cache.dump().map(([, item]) => item.value));
62
63
  return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
63
64
  }
64
65
  clearHandler() {
@@ -98,16 +99,22 @@ var MemoryArchivist = class extends AbstractArchivist {
98
99
  }
99
100
  async insertHandler(payloads) {
100
101
  const pairs = await PayloadBuilder.hashPairs(payloads);
101
- const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
102
- return this.insertPayloadIntoCache(payload, hash);
103
- }));
104
- return insertedPayloads;
102
+ const insertedPayloads = pairs.map(([payload, hash]) => {
103
+ return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
104
+ });
105
+ return removeStorageMeta(insertedPayloads);
106
+ }
107
+ async nextHandler(options) {
108
+ const { limit, previous } = options ?? {};
109
+ const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))));
110
+ const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0;
111
+ return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : void 0));
105
112
  }
106
113
  insertPayloadIntoCache(payload, hash, index = 0) {
107
114
  const withMeta = addStorageMeta(payload, index);
108
115
  this.cache.set(hash, withMeta);
109
116
  this.bodyHashIndex.set(withMeta.$hash, hash);
110
- return payload;
117
+ return withMeta;
111
118
  }
112
119
  };
113
120
  MemoryArchivist = _ts_decorate([
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","creatableModule"]}
1
+ {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta, WithStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistNextQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override allHandler(): Promisable<PayloadWithMeta[]> {\n const all = compact(this.cache.dump().map(([, item]) => item.value))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<Hash[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n })\n\n return removeStorageMeta(insertedPayloads)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {\n const { limit, previous } = options ?? {}\n const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))\n const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0\n return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): WithStorageMeta<PayloadWithMeta> {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return withMeta\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","ArchivistNextQuerySchema","allHandler","all","compact","dump","map","item","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","creatableModule"]}
@@ -1,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1,7 +1,7 @@
1
1
  import { Hash } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { AbstractArchivist } from '@xyo-network/archivist-abstract';
4
- import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
3
+ import { AbstractArchivist, WithStorageMeta } from '@xyo-network/archivist-abstract';
4
+ import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData, ArchivistNextOptions } from '@xyo-network/archivist-model';
5
5
  import { BoundWitness } from '@xyo-network/boundwitness-model';
6
6
  import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
7
7
  import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
@@ -12,9 +12,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
12
12
  max?: number;
13
13
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema'];
14
14
  }>;
15
- type WithStorageMeta<T extends Payload> = T & {
16
- _sequence: bigint;
17
- };
18
15
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
19
16
  export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
20
17
  static configSchemas: string[];
@@ -24,13 +21,13 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
24
21
  get cache(): LRUCache<string, WithStorageMeta<PayloadWithMeta>, unknown>;
25
22
  get max(): number;
26
23
  get queries(): string[];
27
- protected allHandler(): Promise<PayloadWithMeta[]>;
24
+ protected allHandler(): Promisable<PayloadWithMeta[]>;
28
25
  protected clearHandler(): void | Promise<void>;
29
26
  protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
30
- protected deleteHandler(hashes: Hash[]): Promise<string[]>;
31
- protected getHandler(hashes: string[]): Promisable<PayloadWithMeta[]>;
27
+ protected deleteHandler(hashes: Hash[]): Promise<Hash[]>;
28
+ protected getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]>;
32
29
  protected insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]>;
30
+ protected nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]>;
33
31
  private insertPayloadIntoCache;
34
32
  }
35
- export {};
36
33
  //# sourceMappingURL=MemoryArchivist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAC1I,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aAUnB;cAEkB,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;cAK3C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;cAWpD,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAanD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;cAS9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -78,11 +78,12 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
78
78
  import_archivist_model.ArchivistClearQuerySchema,
79
79
  import_archivist_model.ArchivistInsertQuerySchema,
80
80
  import_archivist_model.ArchivistCommitQuerySchema,
81
+ import_archivist_model.ArchivistNextQuerySchema,
81
82
  ...super.queries
82
83
  ];
83
84
  }
84
- async allHandler() {
85
- const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value)));
85
+ allHandler() {
86
+ const all = (0, import_lodash.compact)(this.cache.dump().map(([, item]) => item.value));
86
87
  return (0, import_archivist_abstract.sortByStorageMeta)(all).map((payload) => (0, import_archivist_abstract.removeStorageMeta)(payload));
87
88
  }
88
89
  clearHandler() {
@@ -124,16 +125,22 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
124
125
  }
125
126
  async insertHandler(payloads) {
126
127
  const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
127
- const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
128
- return this.insertPayloadIntoCache(payload, hash);
129
- }));
130
- return insertedPayloads;
128
+ const insertedPayloads = pairs.map(([payload, hash]) => {
129
+ return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
130
+ });
131
+ return (0, import_archivist_abstract.removeStorageMeta)(insertedPayloads);
132
+ }
133
+ async nextHandler(options) {
134
+ const { limit, previous } = options ?? {};
135
+ const all = (0, import_archivist_abstract.sortByStorageMeta)((0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value))));
136
+ const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0;
137
+ return (0, import_archivist_abstract.removeStorageMeta)(all.slice(startIndex, limit ? startIndex + limit : void 0));
131
138
  }
132
139
  insertPayloadIntoCache(payload, hash, index = 0) {
133
140
  const withMeta = (0, import_archivist_abstract.addStorageMeta)(payload, index);
134
141
  this.cache.set(hash, withMeta);
135
142
  this.bodyHashIndex.set(withMeta.$hash, hash);
136
- return payload;
143
+ return withMeta;
137
144
  }
138
145
  };
139
146
  __name(_MemoryArchivist, "MemoryArchivist");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta, WithStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistNextQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override allHandler(): Promisable<PayloadWithMeta[]> {\n const all = compact(this.cache.dump().map(([, item]) => item.value))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<Hash[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n })\n\n return removeStorageMeta(insertedPayloads)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {\n const { limit, previous } = options ?? {}\n const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))\n const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0\n return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): WithStorageMeta<PayloadWithMeta> {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return withMeta\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","ArchivistNextQuerySchema","allHandler","all","compact","dump","map","item","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","configSchemas","ArchivistConfigSchema","creatableModule"]}
@@ -11,7 +11,7 @@ import { assertEx } from "@xylabs/assert";
11
11
  import { compact } from "@xylabs/lodash";
12
12
  import { fulfilled } from "@xylabs/promise";
13
13
  import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from "@xyo-network/archivist-abstract";
14
- import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
14
+ import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from "@xyo-network/archivist-model";
15
15
  import { creatableModule } from "@xyo-network/module-model";
16
16
  import { PayloadBuilder } from "@xyo-network/payload-builder";
17
17
  import { LRUCache } from "lru-cache";
@@ -53,11 +53,12 @@ var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
53
53
  ArchivistClearQuerySchema,
54
54
  ArchivistInsertQuerySchema,
55
55
  ArchivistCommitQuerySchema,
56
+ ArchivistNextQuerySchema,
56
57
  ...super.queries
57
58
  ];
58
59
  }
59
- async allHandler() {
60
- const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)));
60
+ allHandler() {
61
+ const all = compact(this.cache.dump().map(([, item]) => item.value));
61
62
  return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
62
63
  }
63
64
  clearHandler() {
@@ -99,16 +100,22 @@ var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
99
100
  }
100
101
  async insertHandler(payloads) {
101
102
  const pairs = await PayloadBuilder.hashPairs(payloads);
102
- const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
103
- return this.insertPayloadIntoCache(payload, hash);
104
- }));
105
- return insertedPayloads;
103
+ const insertedPayloads = pairs.map(([payload, hash]) => {
104
+ return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
105
+ });
106
+ return removeStorageMeta(insertedPayloads);
107
+ }
108
+ async nextHandler(options) {
109
+ const { limit, previous } = options ?? {};
110
+ const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))));
111
+ const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0;
112
+ return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : void 0));
106
113
  }
107
114
  insertPayloadIntoCache(payload, hash, index = 0) {
108
115
  const withMeta = addStorageMeta(payload, index);
109
116
  this.cache.set(hash, withMeta);
110
117
  this.bodyHashIndex.set(withMeta.$hash, hash);
111
- return payload;
118
+ return withMeta;
112
119
  }
113
120
  };
114
121
  __name(_MemoryArchivist, "MemoryArchivist");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta, WithStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistNextQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override allHandler(): Promisable<PayloadWithMeta[]> {\n const all = compact(this.cache.dump().map(([, item]) => item.value))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<Hash[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n })\n\n return removeStorageMeta(insertedPayloads)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {\n const { limit, previous } = options ?? {}\n const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))\n const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0\n return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): WithStorageMeta<PayloadWithMeta> {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return withMeta\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","ArchivistNextQuerySchema","allHandler","all","compact","dump","map","item","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","configSchemas","ArchivistConfigSchema","creatableModule"]}
package/package.json CHANGED
@@ -10,22 +10,22 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.0.0",
14
- "@xylabs/hex": "^3.0.0",
15
- "@xylabs/lodash": "^3.0.0",
16
- "@xylabs/promise": "^3.0.0",
17
- "@xyo-network/archivist-abstract": "~2.91.0",
18
- "@xyo-network/archivist-model": "~2.91.0",
19
- "@xyo-network/boundwitness-model": "~2.91.0",
20
- "@xyo-network/module-model": "~2.91.0",
21
- "@xyo-network/payload-builder": "~2.91.0",
22
- "@xyo-network/payload-model": "~2.91.0",
13
+ "@xylabs/assert": "^3.0.3",
14
+ "@xylabs/hex": "^3.0.3",
15
+ "@xylabs/lodash": "^3.0.3",
16
+ "@xylabs/promise": "^3.0.3",
17
+ "@xyo-network/archivist-abstract": "~2.91.2",
18
+ "@xyo-network/archivist-model": "~2.91.2",
19
+ "@xyo-network/boundwitness-model": "~2.91.2",
20
+ "@xyo-network/module-model": "~2.91.2",
21
+ "@xyo-network/payload-builder": "~2.91.2",
22
+ "@xyo-network/payload-model": "~2.91.2",
23
23
  "lru-cache": "^10.2.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@xylabs/ts-scripts-yarn3": "^3.4.1",
27
27
  "@xylabs/tsconfig": "^3.4.1",
28
- "@xyo-network/account": "~2.91.0",
28
+ "@xyo-network/account": "~2.91.2",
29
29
  "typescript": "^5.3.3"
30
30
  },
31
31
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -67,6 +67,6 @@
67
67
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
68
68
  },
69
69
  "sideEffects": false,
70
- "version": "2.91.0",
70
+ "version": "2.91.2",
71
71
  "type": "module"
72
72
  }
@@ -2,7 +2,7 @@ import { assertEx } from '@xylabs/assert'
2
2
  import { Hash } from '@xylabs/hex'
3
3
  import { compact } from '@xylabs/lodash'
4
4
  import { fulfilled, Promisable } from '@xylabs/promise'
5
- import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'
5
+ import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta, WithStorageMeta } from '@xyo-network/archivist-abstract'
6
6
  import {
7
7
  ArchivistAllQuerySchema,
8
8
  ArchivistClearQuerySchema,
@@ -14,6 +14,8 @@ import {
14
14
  ArchivistInsertQuerySchema,
15
15
  ArchivistInstance,
16
16
  ArchivistModuleEventData,
17
+ ArchivistNextOptions,
18
+ ArchivistNextQuerySchema,
17
19
  } from '@xyo-network/archivist-model'
18
20
  import { BoundWitness } from '@xyo-network/boundwitness-model'
19
21
  import { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'
@@ -29,10 +31,6 @@ export type MemoryArchivistConfig = ArchivistConfig<{
29
31
  schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']
30
32
  }>
31
33
 
32
- type WithStorageMeta<T extends Payload> = T & {
33
- _sequence: bigint
34
- }
35
-
36
34
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =
37
35
  ModuleParams<TConfig>
38
36
  @creatableModule()
@@ -69,12 +67,13 @@ export class MemoryArchivist<
69
67
  ArchivistClearQuerySchema,
70
68
  ArchivistInsertQuerySchema,
71
69
  ArchivistCommitQuerySchema,
70
+ ArchivistNextQuerySchema,
72
71
  ...super.queries,
73
72
  ]
74
73
  }
75
74
 
76
- protected override async allHandler(): Promise<PayloadWithMeta[]> {
77
- const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))
75
+ protected override allHandler(): Promisable<PayloadWithMeta[]> {
76
+ const all = compact(this.cache.dump().map(([, item]) => item.value))
78
77
  return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))
79
78
  }
80
79
 
@@ -101,7 +100,7 @@ export class MemoryArchivist<
101
100
  return compact(settled.filter(fulfilled).map((result) => result.value))
102
101
  }
103
102
 
104
- protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {
103
+ protected override async deleteHandler(hashes: Hash[]): Promise<Hash[]> {
105
104
  const deletedHashes = compact(
106
105
  await Promise.all(
107
106
  hashes.map((hash) => {
@@ -112,7 +111,7 @@ export class MemoryArchivist<
112
111
  return deletedHashes
113
112
  }
114
113
 
115
- protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {
114
+ protected override getHandler(hashes: Hash[]): Promisable<PayloadWithMeta[]> {
116
115
  return compact(
117
116
  hashes.map((hash) => {
118
117
  const resolvedHash = this.bodyHashIndex.get(hash) ?? hash
@@ -127,19 +126,24 @@ export class MemoryArchivist<
127
126
 
128
127
  protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {
129
128
  const pairs = await PayloadBuilder.hashPairs(payloads)
130
- const insertedPayloads = await Promise.all(
131
- pairs.map(([payload, hash]) => {
132
- return this.insertPayloadIntoCache(payload, hash)
133
- }),
134
- )
129
+ const insertedPayloads = pairs.map(([payload, hash]) => {
130
+ return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)
131
+ })
132
+
133
+ return removeStorageMeta(insertedPayloads)
134
+ }
135
135
 
136
- return insertedPayloads
136
+ protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {
137
+ const { limit, previous } = options ?? {}
138
+ const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))
139
+ const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0
140
+ return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))
137
141
  }
138
142
 
139
- private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {
143
+ private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): WithStorageMeta<PayloadWithMeta> {
140
144
  const withMeta = addStorageMeta(payload, index)
141
145
  this.cache.set(hash, withMeta)
142
146
  this.bodyHashIndex.set(withMeta.$hash, hash)
143
- return payload
147
+ return withMeta
144
148
  }
145
149
  }