@xyo-network/archivist-memory 2.88.2 → 2.89.0-rc.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 +4 -4
- package/dist/browser/MemoryArchivist.d.cts.map +1 -1
- package/dist/browser/MemoryArchivist.d.mts +4 -4
- package/dist/browser/MemoryArchivist.d.mts.map +1 -1
- package/dist/browser/MemoryArchivist.d.ts +4 -4
- package/dist/browser/MemoryArchivist.d.ts.map +1 -1
- package/dist/browser/index.cjs +23 -12
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +23 -12
- package/dist/browser/index.js.map +1 -1
- package/dist/node/MemoryArchivist.d.cts +4 -4
- package/dist/node/MemoryArchivist.d.cts.map +1 -1
- package/dist/node/MemoryArchivist.d.mts +4 -4
- package/dist/node/MemoryArchivist.d.mts.map +1 -1
- package/dist/node/MemoryArchivist.d.ts +4 -4
- package/dist/node/MemoryArchivist.d.ts.map +1 -1
- package/dist/node/index.cjs +23 -12
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +23 -12
- package/dist/node/index.js.map +1 -1
- package/package.json +14 -13
- package/src/MemoryArchivist.ts +27 -11
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -34,7 +34,7 @@ var import_archivist_abstract = require("@xyo-network/archivist-abstract");
|
|
|
34
34
|
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
35
35
|
var import_hash = require("@xyo-network/hash");
|
|
36
36
|
var import_module_model = require("@xyo-network/module-model");
|
|
37
|
-
var
|
|
37
|
+
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
38
38
|
var import_lru_cache = require("lru-cache");
|
|
39
39
|
function _ts_decorate(decorators, target, key, desc) {
|
|
40
40
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -56,7 +56,14 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
|
|
|
56
56
|
MemoryArchivistConfigSchema,
|
|
57
57
|
import_archivist_model.ArchivistConfigSchema
|
|
58
58
|
];
|
|
59
|
+
_bodyHashIndex;
|
|
59
60
|
_cache;
|
|
61
|
+
get bodyHashIndex() {
|
|
62
|
+
this._bodyHashIndex = this._bodyHashIndex ?? new import_lru_cache.LRUCache({
|
|
63
|
+
max: this.max
|
|
64
|
+
});
|
|
65
|
+
return this._bodyHashIndex;
|
|
66
|
+
}
|
|
60
67
|
get cache() {
|
|
61
68
|
this._cache = this._cache ?? new import_lru_cache.LRUCache({
|
|
62
69
|
max: this.max
|
|
@@ -81,6 +88,7 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
|
|
|
81
88
|
}
|
|
82
89
|
clearHandler() {
|
|
83
90
|
this.cache.clear();
|
|
91
|
+
this.bodyHashIndex.clear();
|
|
84
92
|
return this.emit("cleared", {
|
|
85
93
|
module: this
|
|
86
94
|
});
|
|
@@ -111,22 +119,25 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
|
|
|
111
119
|
return deletedPairs.map(([hash]) => hash);
|
|
112
120
|
}
|
|
113
121
|
getHandler(hashes) {
|
|
114
|
-
return (0, import_lodash.compact)(hashes.map((hash) =>
|
|
122
|
+
return (0, import_lodash.compact)(hashes.map((hash) => {
|
|
123
|
+
const resolvedHash = this.bodyHashIndex.get(hash) ?? hash;
|
|
124
|
+
const result = this.cache.get(resolvedHash);
|
|
125
|
+
if (resolvedHash !== hash && !result) {
|
|
126
|
+
throw new Error("Missing referenced payload");
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}));
|
|
115
130
|
}
|
|
116
131
|
async insertHandler(payloads) {
|
|
117
|
-
const
|
|
118
|
-
|
|
132
|
+
const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
|
|
133
|
+
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
134
|
+
return this.insertPayloadIntoCache(payload, hash);
|
|
119
135
|
}));
|
|
120
136
|
return insertedPayloads;
|
|
121
137
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
...import_hash.PayloadHasher.hashFields(payload),
|
|
126
|
-
_hash: await wrapper.hashAsync(),
|
|
127
|
-
_timestamp: Date.now()
|
|
128
|
-
};
|
|
129
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta);
|
|
138
|
+
insertPayloadIntoCache(payload, hash) {
|
|
139
|
+
this.cache.set(hash, payload);
|
|
140
|
+
this.bodyHashIndex.set(payload.$hash, hash);
|
|
130
141
|
return payload;
|
|
131
142
|
}
|
|
132
143
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta } 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, 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, 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 allHandler(): PromisableArray<Payload> {\n return compact(this.cache.dump().map((value) => PayloadHasher.hashFields(value[1].value)))\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<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: string[]): Promise<string[]> {\n const payloadPairs: [string, Payload][] = await Promise.all(\n (await this.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n const deletedPairs: [string, Payload][] = compact(\n await Promise.all(\n payloadPairs.map<[string, Payload] | undefined>(([hash, payload]) => {\n return this.cache.delete(hash) ? [hash, payload] : undefined\n }),\n ),\n )\n return deletedPairs.map(([hash]) => hash)\n }\n\n protected override getHandler(hashes: string[]): Promisable<Payload[]> {\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 result\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {\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): PayloadWithMeta {\n this.cache.set(hash, payload)\n this.bodyHashIndex.set(payload.$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","compact","dump","map","value","PayloadHasher","hashFields","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","payloadPairs","all","get","payload","hashAsync","deletedPairs","hash","delete","undefined","getHandler","resolvedHash","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","set","$hash","creatableModule"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { AbstractArchivist } from "@xyo-network/archivist-abstract";
|
|
|
9
9
|
import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
|
|
10
10
|
import { PayloadHasher } from "@xyo-network/hash";
|
|
11
11
|
import { creatableModule } from "@xyo-network/module-model";
|
|
12
|
-
import {
|
|
12
|
+
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
13
13
|
import { LRUCache } from "lru-cache";
|
|
14
14
|
function _ts_decorate(decorators, target, key, desc) {
|
|
15
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -31,7 +31,14 @@ var MemoryArchivist = class extends AbstractArchivist {
|
|
|
31
31
|
MemoryArchivistConfigSchema,
|
|
32
32
|
ArchivistConfigSchema
|
|
33
33
|
];
|
|
34
|
+
_bodyHashIndex;
|
|
34
35
|
_cache;
|
|
36
|
+
get bodyHashIndex() {
|
|
37
|
+
this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache({
|
|
38
|
+
max: this.max
|
|
39
|
+
});
|
|
40
|
+
return this._bodyHashIndex;
|
|
41
|
+
}
|
|
35
42
|
get cache() {
|
|
36
43
|
this._cache = this._cache ?? new LRUCache({
|
|
37
44
|
max: this.max
|
|
@@ -56,6 +63,7 @@ var MemoryArchivist = class extends AbstractArchivist {
|
|
|
56
63
|
}
|
|
57
64
|
clearHandler() {
|
|
58
65
|
this.cache.clear();
|
|
66
|
+
this.bodyHashIndex.clear();
|
|
59
67
|
return this.emit("cleared", {
|
|
60
68
|
module: this
|
|
61
69
|
});
|
|
@@ -86,22 +94,25 @@ var MemoryArchivist = class extends AbstractArchivist {
|
|
|
86
94
|
return deletedPairs.map(([hash]) => hash);
|
|
87
95
|
}
|
|
88
96
|
getHandler(hashes) {
|
|
89
|
-
return compact(hashes.map((hash) =>
|
|
97
|
+
return compact(hashes.map((hash) => {
|
|
98
|
+
const resolvedHash = this.bodyHashIndex.get(hash) ?? hash;
|
|
99
|
+
const result = this.cache.get(resolvedHash);
|
|
100
|
+
if (resolvedHash !== hash && !result) {
|
|
101
|
+
throw new Error("Missing referenced payload");
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}));
|
|
90
105
|
}
|
|
91
106
|
async insertHandler(payloads) {
|
|
92
|
-
const
|
|
93
|
-
|
|
107
|
+
const pairs = await PayloadBuilder.hashPairs(payloads);
|
|
108
|
+
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
109
|
+
return this.insertPayloadIntoCache(payload, hash);
|
|
94
110
|
}));
|
|
95
111
|
return insertedPayloads;
|
|
96
112
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
...PayloadHasher.hashFields(payload),
|
|
101
|
-
_hash: await wrapper.hashAsync(),
|
|
102
|
-
_timestamp: Date.now()
|
|
103
|
-
};
|
|
104
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta);
|
|
113
|
+
insertPayloadIntoCache(payload, hash) {
|
|
114
|
+
this.cache.set(hash, payload);
|
|
115
|
+
this.bodyHashIndex.set(payload.$hash, hash);
|
|
105
116
|
return payload;
|
|
106
117
|
}
|
|
107
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta } 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, 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, 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 allHandler(): PromisableArray<Payload> {\n return compact(this.cache.dump().map((value) => PayloadHasher.hashFields(value[1].value)))\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<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: string[]): Promise<string[]> {\n const payloadPairs: [string, Payload][] = await Promise.all(\n (await this.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n const deletedPairs: [string, Payload][] = compact(\n await Promise.all(\n payloadPairs.map<[string, Payload] | undefined>(([hash, payload]) => {\n return this.cache.delete(hash) ? [hash, payload] : undefined\n }),\n ),\n )\n return deletedPairs.map(([hash]) => hash)\n }\n\n protected override getHandler(hashes: string[]): Promisable<Payload[]> {\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 result\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {\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): PayloadWithMeta {\n this.cache.set(hash, payload)\n this.bodyHashIndex.set(payload.$hash, hash)\n return payload\n }\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,iBAA8C;AACvD,SAASC,yBAAyB;AAClC,SACEC,yBACAC,2BACAC,4BAEAC,uBACAC,4BAEAC,kCAGK;AAEP,SAASC,qBAAqB;AAC9B,SAA0BC,uBAAqD;AAC/E,SAASC,sBAAsB;AAE/B,SAASC,gBAAgB;;;;;;;;;;;;AAGlB,IAAMC,8BAA2D;AAUjE,IAAMC,kBAAN,cAIGC,kBAAAA;SAAAA;;;EAGR,OAAgBC,gBAAgB;IAACH;IAA6BI;;EAEtDC;EACAC;EAER,IAAIC,gBAAgB;AAClB,SAAKF,iBAAiB,KAAKA,kBAAkB,IAAIG,SAAyB;MAAEC,KAAK,KAAKA;IAAI,CAAA;AAC1F,WAAO,KAAKJ;EACd;EAEA,IAAIK,QAAQ;AACV,SAAKJ,SAAS,KAAKA,UAAU,IAAIE,SAAkC;MAAEC,KAAK,KAAKA;IAAI,CAAA;AACnF,WAAO,KAAKH;EACd;EAEA,IAAIG,MAAM;AACR,WAAO,KAAKE,QAAQF,OAAO;EAC7B;EAEA,IAAaG,UAAU;AACrB,WAAO;MACLC;MACAC;MACAC;MACAC;MACAC;SACG,MAAML;;EAEb;EAEmBM,aAAuC;AACxD,WAAOC,QAAQ,KAAKT,MAAMU,KAAI,EAAGC,IAAI,CAACC,UAAUC,cAAcC,WAAWF,MAAM,CAAA,EAAGA,KAAK,CAAA,CAAA;EACzF;EAEmBG,eAAqC;AACtD,SAAKf,MAAMgB,MAAK;AAChB,SAAKnB,cAAcmB,MAAK;AACxB,WAAO,KAAKC,KAAK,WAAW;MAAEC,QAAQ;IAAK,CAAA;EAC7C;EAEA,MAAyBC,gBAAyC;AAChE,UAAMC,WAAWC,SAAS,MAAM,KAAKb,WAAU,GAAI,mBAAA;AACnD,UAAMc,UAAU,MAAMC,QAAQC,WAC5Bf,QACEgB,OAAOC,QAAQ,MAAM,KAAKC,QAAO,GAAIC,UAAU,CAAA,CAAE,GAAGjB,IAAI,OAAOkB,WAAAA;AAC7D,YAAMC,eAAqC;QACzCC,QAAQzB;MACV;AACA,YAAM0B,QAAQ,MAAM,KAAKC,UAAUH,cAAcV,QAAAA;AACjD,cAAQ,MAAMS,QAAQG,MAAMA,MAAM,CAAA,GAAIA,MAAM,CAAA,CAAE,KAAK,CAAA;IACrD,CAAA,CAAA,CAAA;AAGJ,UAAM,KAAKjB,aAAY;AACvB,WAAON,QAAQa,QAAQY,OAAOC,SAAAA,EAAWxB,IAAI,CAACyB,WAAWA,OAAOxB,KAAK,CAAA;EACvE;EAEA,MAAyByB,cAAcC,QAAqC;AAC1E,UAAMC,eAAoC,MAAMhB,QAAQiB,KACrD,MAAM,KAAKC,IAAIH,MAAAA,GAAS3B,IAAgC,OAAO+B,YAAY;MAAC,MAAM7B,cAAc8B,UAAUD,OAAAA;MAAUA;KAAQ,CAAA;AAE/H,UAAME,eAAoCnC,QACxC,MAAMc,QAAQiB,IACZD,aAAa5B,IAAmC,CAAC,CAACkC,MAAMH,OAAAA,MAAQ;AAC9D,aAAO,KAAK1C,MAAM8C,OAAOD,IAAAA,IAAQ;QAACA;QAAMH;UAAWK;IACrD,CAAA,CAAA,CAAA;AAGJ,WAAOH,aAAajC,IAAI,CAAC,CAACkC,IAAAA,MAAUA,IAAAA;EACtC;EAEmBG,WAAWV,QAAyC;AACrE,WAAO7B,QACL6B,OAAO3B,IAAI,CAACkC,SAAAA;AACV,YAAMI,eAAe,KAAKpD,cAAc4C,IAAII,IAAAA,KAASA;AACrD,YAAMT,SAAS,KAAKpC,MAAMyC,IAAIQ,YAAAA;AAC9B,UAAIA,iBAAiBJ,QAAQ,CAACT,QAAQ;AACpC,cAAM,IAAIc,MAAM,4BAAA;MAClB;AACA,aAAOd;IACT,CAAA,CAAA;EAEJ;EAEA,MAAyBe,cAAc/B,UAAyC;AAC9E,UAAMgC,QAAQ,MAAMC,eAAeC,UAAUlC,QAAAA;AAC7C,UAAMmC,mBAAmB,MAAMhC,QAAQiB,IACrCY,MAAMzC,IAAI,CAAC,CAAC+B,SAASG,IAAAA,MAAK;AACxB,aAAO,KAAKW,uBAAuBd,SAASG,IAAAA;IAC9C,CAAA,CAAA;AAGF,WAAOU;EACT;EAEQC,uBAAuBd,SAA0BG,MAA+B;AACtF,SAAK7C,MAAMyD,IAAIZ,MAAMH,OAAAA;AACrB,SAAK7C,cAAc4D,IAAIf,QAAQgB,OAAOb,IAAAA;AACtC,WAAOH;EACT;AACF;AA3GanD,kBAAAA,aAAAA;EADZoE,gBAAAA;GACYpE,eAAAA;","names":["assertEx","compact","fulfilled","AbstractArchivist","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","PayloadHasher","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","compact","dump","map","value","PayloadHasher","hashFields","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","Promise","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","payloadPairs","all","get","payload","hashAsync","deletedPairs","hash","delete","undefined","getHandler","resolvedHash","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","set","$hash","creatableModule"]}
|
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
|
@@ -3,7 +3,7 @@ import { AbstractArchivist } from '@xyo-network/archivist-abstract';
|
|
|
3
3
|
import { ArchivistConfig, ArchivistInstance, ArchivistModuleEventData } from '@xyo-network/archivist-model';
|
|
4
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
5
5
|
import { AnyConfigSchema, ModuleInstance, ModuleParams } from '@xyo-network/module-model';
|
|
6
|
-
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
import { LRUCache } from 'lru-cache';
|
|
8
8
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config';
|
|
9
9
|
export declare const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema;
|
|
@@ -14,10 +14,10 @@ export type MemoryArchivistConfig = ArchivistConfig<{
|
|
|
14
14
|
export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = ModuleParams<TConfig>;
|
|
15
15
|
export declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractArchivist<TParams, TEventData> implements ArchivistInstance, ModuleInstance {
|
|
16
16
|
static configSchemas: string[];
|
|
17
|
+
private _bodyHashIndex?;
|
|
17
18
|
private _cache?;
|
|
18
|
-
get
|
|
19
|
-
|
|
20
|
-
} & object, unknown>;
|
|
19
|
+
get bodyHashIndex(): LRUCache<string, string, unknown>;
|
|
20
|
+
get cache(): LRUCache<string, PayloadWithMeta, unknown>;
|
|
21
21
|
get max(): number;
|
|
22
22
|
get queries(): string[];
|
|
23
23
|
protected allHandler(): PromisableArray<Payload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACrE,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,CAAmC;IAElD,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,+CAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEkB,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC;cAItC,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;cAiBxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAcxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;cAa7C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAW/E,OAAO,CAAC,sBAAsB;CAK/B"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -39,7 +39,7 @@ var import_archivist_abstract = require("@xyo-network/archivist-abstract");
|
|
|
39
39
|
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
40
40
|
var import_hash = require("@xyo-network/hash");
|
|
41
41
|
var import_module_model = require("@xyo-network/module-model");
|
|
42
|
-
var
|
|
42
|
+
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
43
43
|
var import_lru_cache = require("lru-cache");
|
|
44
44
|
function _ts_decorate(decorators, target, key, desc) {
|
|
45
45
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -54,7 +54,14 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
54
54
|
__name(_ts_decorate, "_ts_decorate");
|
|
55
55
|
var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
|
|
56
56
|
var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.AbstractArchivist {
|
|
57
|
+
_bodyHashIndex;
|
|
57
58
|
_cache;
|
|
59
|
+
get bodyHashIndex() {
|
|
60
|
+
this._bodyHashIndex = this._bodyHashIndex ?? new import_lru_cache.LRUCache({
|
|
61
|
+
max: this.max
|
|
62
|
+
});
|
|
63
|
+
return this._bodyHashIndex;
|
|
64
|
+
}
|
|
58
65
|
get cache() {
|
|
59
66
|
this._cache = this._cache ?? new import_lru_cache.LRUCache({
|
|
60
67
|
max: this.max
|
|
@@ -80,6 +87,7 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
|
|
|
80
87
|
}
|
|
81
88
|
clearHandler() {
|
|
82
89
|
this.cache.clear();
|
|
90
|
+
this.bodyHashIndex.clear();
|
|
83
91
|
return this.emit("cleared", {
|
|
84
92
|
module: this
|
|
85
93
|
});
|
|
@@ -112,22 +120,25 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
|
|
|
112
120
|
return deletedPairs.map(([hash]) => hash);
|
|
113
121
|
}
|
|
114
122
|
getHandler(hashes) {
|
|
115
|
-
return (0, import_lodash.compact)(hashes.map((hash) =>
|
|
123
|
+
return (0, import_lodash.compact)(hashes.map((hash) => {
|
|
124
|
+
const resolvedHash = this.bodyHashIndex.get(hash) ?? hash;
|
|
125
|
+
const result = this.cache.get(resolvedHash);
|
|
126
|
+
if (resolvedHash !== hash && !result) {
|
|
127
|
+
throw new Error("Missing referenced payload");
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}));
|
|
116
131
|
}
|
|
117
132
|
async insertHandler(payloads) {
|
|
118
|
-
const
|
|
119
|
-
|
|
133
|
+
const pairs = await import_payload_builder.PayloadBuilder.hashPairs(payloads);
|
|
134
|
+
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
135
|
+
return this.insertPayloadIntoCache(payload, hash);
|
|
120
136
|
}));
|
|
121
137
|
return insertedPayloads;
|
|
122
138
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
...import_hash.PayloadHasher.hashFields(payload),
|
|
127
|
-
_hash: await wrapper.hashAsync(),
|
|
128
|
-
_timestamp: Date.now()
|
|
129
|
-
};
|
|
130
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta);
|
|
139
|
+
insertPayloadIntoCache(payload, hash) {
|
|
140
|
+
this.cache.set(hash, payload);
|
|
141
|
+
this.bodyHashIndex.set(payload.$hash, hash);
|
|
131
142
|
return payload;
|
|
132
143
|
}
|
|
133
144
|
};
|
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 { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta } 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, 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, 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 allHandler(): PromisableArray<Payload> {\n return compact(this.cache.dump().map((value) => PayloadHasher.hashFields(value[1].value)))\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<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: string[]): Promise<string[]> {\n const payloadPairs: [string, Payload][] = await Promise.all(\n (await this.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n const deletedPairs: [string, Payload][] = compact(\n await Promise.all(\n payloadPairs.map<[string, Payload] | undefined>(([hash, payload]) => {\n return this.cache.delete(hash) ? [hash, payload] : undefined\n }),\n ),\n )\n return deletedPairs.map(([hash]) => hash)\n }\n\n protected override getHandler(hashes: string[]): Promisable<Payload[]> {\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 result\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {\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): PayloadWithMeta {\n this.cache.set(hash, payload)\n this.bodyHashIndex.set(payload.$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","compact","dump","map","value","PayloadHasher","hashFields","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","payloadPairs","all","get","payload","hashAsync","deletedPairs","hash","delete","undefined","getHandler","resolvedHash","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
|
package/dist/node/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { AbstractArchivist } from "@xyo-network/archivist-abstract";
|
|
|
14
14
|
import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
|
|
15
15
|
import { PayloadHasher } from "@xyo-network/hash";
|
|
16
16
|
import { creatableModule } from "@xyo-network/module-model";
|
|
17
|
-
import {
|
|
17
|
+
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
18
18
|
import { LRUCache } from "lru-cache";
|
|
19
19
|
function _ts_decorate(decorators, target, key, desc) {
|
|
20
20
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -29,7 +29,14 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
29
29
|
__name(_ts_decorate, "_ts_decorate");
|
|
30
30
|
var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
|
|
31
31
|
var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
|
|
32
|
+
_bodyHashIndex;
|
|
32
33
|
_cache;
|
|
34
|
+
get bodyHashIndex() {
|
|
35
|
+
this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache({
|
|
36
|
+
max: this.max
|
|
37
|
+
});
|
|
38
|
+
return this._bodyHashIndex;
|
|
39
|
+
}
|
|
33
40
|
get cache() {
|
|
34
41
|
this._cache = this._cache ?? new LRUCache({
|
|
35
42
|
max: this.max
|
|
@@ -55,6 +62,7 @@ var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
|
|
|
55
62
|
}
|
|
56
63
|
clearHandler() {
|
|
57
64
|
this.cache.clear();
|
|
65
|
+
this.bodyHashIndex.clear();
|
|
58
66
|
return this.emit("cleared", {
|
|
59
67
|
module: this
|
|
60
68
|
});
|
|
@@ -87,22 +95,25 @@ var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
|
|
|
87
95
|
return deletedPairs.map(([hash]) => hash);
|
|
88
96
|
}
|
|
89
97
|
getHandler(hashes) {
|
|
90
|
-
return compact(hashes.map((hash) =>
|
|
98
|
+
return compact(hashes.map((hash) => {
|
|
99
|
+
const resolvedHash = this.bodyHashIndex.get(hash) ?? hash;
|
|
100
|
+
const result = this.cache.get(resolvedHash);
|
|
101
|
+
if (resolvedHash !== hash && !result) {
|
|
102
|
+
throw new Error("Missing referenced payload");
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}));
|
|
91
106
|
}
|
|
92
107
|
async insertHandler(payloads) {
|
|
93
|
-
const
|
|
94
|
-
|
|
108
|
+
const pairs = await PayloadBuilder.hashPairs(payloads);
|
|
109
|
+
const insertedPayloads = await Promise.all(pairs.map(([payload, hash]) => {
|
|
110
|
+
return this.insertPayloadIntoCache(payload, hash);
|
|
95
111
|
}));
|
|
96
112
|
return insertedPayloads;
|
|
97
113
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
...PayloadHasher.hashFields(payload),
|
|
102
|
-
_hash: await wrapper.hashAsync(),
|
|
103
|
-
_timestamp: Date.now()
|
|
104
|
-
};
|
|
105
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta);
|
|
114
|
+
insertPayloadIntoCache(payload, hash) {
|
|
115
|
+
this.cache.set(hash, payload);
|
|
116
|
+
this.bodyHashIndex.set(payload.$hash, hash);
|
|
106
117
|
return payload;
|
|
107
118
|
}
|
|
108
119
|
};
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable, PromisableArray } from '@xylabs/promise'\nimport { AbstractArchivist } 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 { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta } 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, 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, 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 allHandler(): PromisableArray<Payload> {\n return compact(this.cache.dump().map((value) => PayloadHasher.hashFields(value[1].value)))\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<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: string[]): Promise<string[]> {\n const payloadPairs: [string, Payload][] = await Promise.all(\n (await this.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n const deletedPairs: [string, Payload][] = compact(\n await Promise.all(\n payloadPairs.map<[string, Payload] | undefined>(([hash, payload]) => {\n return this.cache.delete(hash) ? [hash, payload] : undefined\n }),\n ),\n )\n return deletedPairs.map(([hash]) => hash)\n }\n\n protected override getHandler(hashes: string[]): Promisable<Payload[]> {\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 result\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {\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): PayloadWithMeta {\n this.cache.set(hash, payload)\n this.bodyHashIndex.set(payload.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","PayloadHasher","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","compact","dump","map","value","PayloadHasher","hashFields","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","payloadPairs","all","get","payload","hashAsync","deletedPairs","hash","delete","undefined","getHandler","resolvedHash","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","set","$hash","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": "^2.13.
|
|
14
|
-
"@xylabs/lodash": "^2.13.
|
|
15
|
-
"@xylabs/promise": "^2.13.
|
|
16
|
-
"@xyo-network/archivist-abstract": "~2.
|
|
17
|
-
"@xyo-network/archivist-model": "~2.
|
|
18
|
-
"@xyo-network/boundwitness-model": "~2.
|
|
19
|
-
"@xyo-network/hash": "~2.
|
|
20
|
-
"@xyo-network/module-model": "~2.
|
|
21
|
-
"@xyo-network/payload-
|
|
22
|
-
"@xyo-network/payload-
|
|
13
|
+
"@xylabs/assert": "^2.13.29",
|
|
14
|
+
"@xylabs/lodash": "^2.13.29",
|
|
15
|
+
"@xylabs/promise": "^2.13.29",
|
|
16
|
+
"@xyo-network/archivist-abstract": "~2.89.0-rc.1",
|
|
17
|
+
"@xyo-network/archivist-model": "~2.89.0-rc.1",
|
|
18
|
+
"@xyo-network/boundwitness-model": "~2.89.0-rc.1",
|
|
19
|
+
"@xyo-network/hash": "~2.89.0-rc.1",
|
|
20
|
+
"@xyo-network/module-model": "~2.89.0-rc.1",
|
|
21
|
+
"@xyo-network/payload-builder": "~2.89.0-rc.1",
|
|
22
|
+
"@xyo-network/payload-model": "~2.89.0-rc.1",
|
|
23
23
|
"lru-cache": "^10.1.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@xylabs/ts-scripts-yarn3": "^3.2.42",
|
|
27
27
|
"@xylabs/tsconfig": "^3.2.42",
|
|
28
|
-
"@xyo-network/account": "~2.
|
|
28
|
+
"@xyo-network/account": "~2.89.0-rc.1",
|
|
29
29
|
"typescript": "^5.3.3"
|
|
30
30
|
},
|
|
31
31
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
68
68
|
},
|
|
69
69
|
"sideEffects": false,
|
|
70
|
-
"version": "2.
|
|
71
|
-
"type": "module"
|
|
70
|
+
"version": "2.89.0-rc.1",
|
|
71
|
+
"type": "module",
|
|
72
|
+
"stableVersion": "2.88.3"
|
|
72
73
|
}
|
package/src/MemoryArchivist.ts
CHANGED
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
import { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
18
18
|
import { PayloadHasher } from '@xyo-network/hash'
|
|
19
19
|
import { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
20
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
21
|
+
import { Payload, PayloadWithMeta } from '@xyo-network/payload-model'
|
|
22
22
|
import { LRUCache } from 'lru-cache'
|
|
23
23
|
|
|
24
24
|
export type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'
|
|
@@ -41,10 +41,16 @@ export class MemoryArchivist<
|
|
|
41
41
|
{
|
|
42
42
|
static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]
|
|
43
43
|
|
|
44
|
-
private
|
|
44
|
+
private _bodyHashIndex?: LRUCache<string, string>
|
|
45
|
+
private _cache?: LRUCache<string, PayloadWithMeta>
|
|
46
|
+
|
|
47
|
+
get bodyHashIndex() {
|
|
48
|
+
this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })
|
|
49
|
+
return this._bodyHashIndex
|
|
50
|
+
}
|
|
45
51
|
|
|
46
52
|
get cache() {
|
|
47
|
-
this._cache = this._cache ?? new LRUCache<string,
|
|
53
|
+
this._cache = this._cache ?? new LRUCache<string, PayloadWithMeta>({ max: this.max })
|
|
48
54
|
return this._cache
|
|
49
55
|
}
|
|
50
56
|
|
|
@@ -69,6 +75,7 @@ export class MemoryArchivist<
|
|
|
69
75
|
|
|
70
76
|
protected override clearHandler(): void | Promise<void> {
|
|
71
77
|
this.cache.clear()
|
|
78
|
+
this.bodyHashIndex.clear()
|
|
72
79
|
return this.emit('cleared', { module: this })
|
|
73
80
|
}
|
|
74
81
|
|
|
@@ -104,23 +111,32 @@ export class MemoryArchivist<
|
|
|
104
111
|
}
|
|
105
112
|
|
|
106
113
|
protected override getHandler(hashes: string[]): Promisable<Payload[]> {
|
|
107
|
-
return compact(
|
|
114
|
+
return compact(
|
|
115
|
+
hashes.map((hash) => {
|
|
116
|
+
const resolvedHash = this.bodyHashIndex.get(hash) ?? hash
|
|
117
|
+
const result = this.cache.get(resolvedHash)
|
|
118
|
+
if (resolvedHash !== hash && !result) {
|
|
119
|
+
throw new Error('Missing referenced payload')
|
|
120
|
+
}
|
|
121
|
+
return result
|
|
122
|
+
}),
|
|
123
|
+
)
|
|
108
124
|
}
|
|
109
125
|
|
|
110
126
|
protected override async insertHandler(payloads: Payload[]): Promise<Payload[]> {
|
|
127
|
+
const pairs = await PayloadBuilder.hashPairs(payloads)
|
|
111
128
|
const insertedPayloads = await Promise.all(
|
|
112
|
-
|
|
113
|
-
return this.insertPayloadIntoCache(payload)
|
|
129
|
+
pairs.map(([payload, hash]) => {
|
|
130
|
+
return this.insertPayloadIntoCache(payload, hash)
|
|
114
131
|
}),
|
|
115
132
|
)
|
|
116
133
|
|
|
117
134
|
return insertedPayloads
|
|
118
135
|
}
|
|
119
136
|
|
|
120
|
-
private
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta)
|
|
137
|
+
private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string): PayloadWithMeta {
|
|
138
|
+
this.cache.set(hash, payload)
|
|
139
|
+
this.bodyHashIndex.set(payload.$hash, hash)
|
|
124
140
|
return payload
|
|
125
141
|
}
|
|
126
142
|
}
|