@xyo-network/archivist-memory 2.91.0 → 2.91.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/MemoryArchivist.d.cts +5 -8
- package/dist/browser/MemoryArchivist.d.cts.map +1 -1
- package/dist/browser/MemoryArchivist.d.mts +5 -8
- package/dist/browser/MemoryArchivist.d.mts.map +1 -1
- package/dist/browser/MemoryArchivist.d.ts +5 -8
- package/dist/browser/MemoryArchivist.d.ts.map +1 -1
- package/dist/browser/index.cjs +9 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +10 -3
- package/dist/browser/index.js.map +1 -1
- package/dist/node/MemoryArchivist.d.cts +5 -8
- package/dist/node/MemoryArchivist.d.cts.map +1 -1
- package/dist/node/MemoryArchivist.d.mts +5 -8
- package/dist/node/MemoryArchivist.d.mts.map +1 -1
- package/dist/node/MemoryArchivist.d.ts +5 -8
- package/dist/node/MemoryArchivist.d.ts.map +1 -1
- package/dist/node/index.cjs +9 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +10 -3
- package/dist/node/index.js.map +1 -1
- package/package.json +12 -12
- package/src/MemoryArchivist.ts +15 -9
|
@@ -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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -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
86
|
async allHandler() {
|
|
86
|
-
const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((
|
|
87
|
+
const all = (0, import_lodash.compact)(await Promise.all(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() {
|
|
@@ -124,10 +125,16 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
|
|
|
124
125
|
async insertHandler(payloads) {
|
|
125
126
|
const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
|
|
126
127
|
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
127
|
-
return this.insertPayloadIntoCache(payload, hash);
|
|
128
|
+
return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
|
|
128
129
|
}));
|
|
129
130
|
return insertedPayloads;
|
|
130
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));
|
|
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);
|
|
@@ -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\
|
|
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 async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(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 = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return 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): 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","ArchivistNextQuerySchema","allHandler","all","compact","Promise","dump","map","item","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","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","creatableModule"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -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
61
|
async allHandler() {
|
|
61
|
-
const all = compact(await Promise.all(this.cache.dump().map((
|
|
62
|
+
const all = compact(await Promise.all(this.cache.dump().map(([, item]) => item.value)));
|
|
62
63
|
return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
|
|
63
64
|
}
|
|
64
65
|
clearHandler() {
|
|
@@ -99,10 +100,16 @@ var MemoryArchivist = class extends AbstractArchivist {
|
|
|
99
100
|
async insertHandler(payloads) {
|
|
100
101
|
const pairs = await PayloadBuilder.hashPairs(payloads);
|
|
101
102
|
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
102
|
-
return this.insertPayloadIntoCache(payload, hash);
|
|
103
|
+
return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
|
|
103
104
|
}));
|
|
104
105
|
return insertedPayloads;
|
|
105
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));
|
|
112
|
+
}
|
|
106
113
|
insertPayloadIntoCache(payload, hash, index = 0) {
|
|
107
114
|
const withMeta = addStorageMeta(payload, index);
|
|
108
115
|
this.cache.set(hash, withMeta);
|
|
@@ -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 async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(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 = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return 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): 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","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","Promise","dump","map","item","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","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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,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[];
|
|
@@ -27,10 +24,10 @@ export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyCo
|
|
|
27
24
|
protected allHandler(): Promise<PayloadWithMeta[]>;
|
|
28
25
|
protected clearHandler(): void | Promise<void>;
|
|
29
26
|
protected commitHandler(): Promise<WithMeta<BoundWitness>[]>;
|
|
30
|
-
protected deleteHandler(hashes: Hash[]): Promise<
|
|
31
|
-
protected getHandler(hashes:
|
|
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;
|
|
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;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,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;cAW9D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOhG,OAAO,CAAC,sBAAsB;CAM/B"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -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
85
|
async allHandler() {
|
|
85
|
-
const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((
|
|
86
|
+
const all = (0, import_lodash.compact)(await Promise.all(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() {
|
|
@@ -125,10 +126,16 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
|
|
|
125
126
|
async insertHandler(payloads) {
|
|
126
127
|
const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
|
|
127
128
|
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
128
|
-
return this.insertPayloadIntoCache(payload, hash);
|
|
129
|
+
return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
|
|
129
130
|
}));
|
|
130
131
|
return insertedPayloads;
|
|
131
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));
|
|
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);
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -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\
|
|
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 async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(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 = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return 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): 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","ArchivistNextQuerySchema","allHandler","all","compact","Promise","dump","map","item","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","nextHandler","options","limit","previous","startIndex","findIndex","$hash","slice","index","withMeta","addStorageMeta","set","configSchemas","ArchivistConfigSchema","creatableModule"]}
|
package/dist/node/index.js
CHANGED
|
@@ -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
60
|
async allHandler() {
|
|
60
|
-
const all = compact(await Promise.all(this.cache.dump().map((
|
|
61
|
+
const all = compact(await Promise.all(this.cache.dump().map(([, item]) => item.value)));
|
|
61
62
|
return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
|
|
62
63
|
}
|
|
63
64
|
clearHandler() {
|
|
@@ -100,10 +101,16 @@ var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
|
|
|
100
101
|
async insertHandler(payloads) {
|
|
101
102
|
const pairs = await PayloadBuilder.hashPairs(payloads);
|
|
102
103
|
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
103
|
-
return this.insertPayloadIntoCache(payload, hash);
|
|
104
|
+
return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash);
|
|
104
105
|
}));
|
|
105
106
|
return insertedPayloads;
|
|
106
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));
|
|
113
|
+
}
|
|
107
114
|
insertPayloadIntoCache(payload, hash, index = 0) {
|
|
108
115
|
const withMeta = addStorageMeta(payload, index);
|
|
109
116
|
this.cache.set(hash, withMeta);
|
package/dist/node/index.js.map
CHANGED
|
@@ -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 async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(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 = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return 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): 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","ArchivistNextQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","ArchivistNextQuerySchema","allHandler","all","compact","Promise","dump","map","item","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","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.
|
|
14
|
-
"@xylabs/hex": "^3.0.
|
|
15
|
-
"@xylabs/lodash": "^3.0.
|
|
16
|
-
"@xylabs/promise": "^3.0.
|
|
17
|
-
"@xyo-network/archivist-abstract": "~2.91.
|
|
18
|
-
"@xyo-network/archivist-model": "~2.91.
|
|
19
|
-
"@xyo-network/boundwitness-model": "~2.91.
|
|
20
|
-
"@xyo-network/module-model": "~2.91.
|
|
21
|
-
"@xyo-network/payload-builder": "~2.91.
|
|
22
|
-
"@xyo-network/payload-model": "~2.91.
|
|
13
|
+
"@xylabs/assert": "^3.0.2",
|
|
14
|
+
"@xylabs/hex": "^3.0.2",
|
|
15
|
+
"@xylabs/lodash": "^3.0.2",
|
|
16
|
+
"@xylabs/promise": "^3.0.2",
|
|
17
|
+
"@xyo-network/archivist-abstract": "~2.91.1",
|
|
18
|
+
"@xyo-network/archivist-model": "~2.91.1",
|
|
19
|
+
"@xyo-network/boundwitness-model": "~2.91.1",
|
|
20
|
+
"@xyo-network/module-model": "~2.91.1",
|
|
21
|
+
"@xyo-network/payload-builder": "~2.91.1",
|
|
22
|
+
"@xyo-network/payload-model": "~2.91.1",
|
|
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.
|
|
28
|
+
"@xyo-network/account": "~2.91.1",
|
|
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.
|
|
70
|
+
"version": "2.91.1",
|
|
71
71
|
"type": "module"
|
|
72
72
|
}
|
package/src/MemoryArchivist.ts
CHANGED
|
@@ -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
75
|
protected override async allHandler(): Promise<PayloadWithMeta[]> {
|
|
77
|
-
const all = compact(await Promise.all(this.cache.dump().map((
|
|
76
|
+
const all = compact(await Promise.all(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<
|
|
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:
|
|
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
|
|
@@ -129,13 +128,20 @@ export class MemoryArchivist<
|
|
|
129
128
|
const pairs = await PayloadBuilder.hashPairs(payloads)
|
|
130
129
|
const insertedPayloads = await Promise.all(
|
|
131
130
|
pairs.map(([payload, hash]) => {
|
|
132
|
-
return this.insertPayloadIntoCache(payload, hash)
|
|
131
|
+
return this.cache.get(hash) ?? this.insertPayloadIntoCache(payload, hash)
|
|
133
132
|
}),
|
|
134
133
|
)
|
|
135
134
|
|
|
136
135
|
return insertedPayloads
|
|
137
136
|
}
|
|
138
137
|
|
|
138
|
+
protected override async nextHandler(options?: ArchivistNextOptions): Promise<PayloadWithMeta[]> {
|
|
139
|
+
const { limit, previous } = options ?? {}
|
|
140
|
+
const all = sortByStorageMeta(compact(await Promise.all(this.cache.dump().map((value) => value[1].value))))
|
|
141
|
+
const startIndex = previous ? all.findIndex((value) => value.$hash === previous) + 1 : 0
|
|
142
|
+
return removeStorageMeta(all.slice(startIndex, limit ? startIndex + limit : undefined))
|
|
143
|
+
}
|
|
144
|
+
|
|
139
145
|
private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {
|
|
140
146
|
const withMeta = addStorageMeta(payload, index)
|
|
141
147
|
this.cache.set(hash, withMeta)
|