@xyo-network/archivist-memory 4.1.2 → 4.1.4

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.
@@ -14,14 +14,13 @@ export declare class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
14
14
  private _cache?;
15
15
  private _config?;
16
16
  private _dataHashIndex?;
17
- private _sequenceIndex;
18
17
  protected get cache(): LRUCache<Lowercase<string>, WithStorageMeta<Payload>, unknown>;
19
18
  protected get config(): MemoryDriverConfig;
20
19
  protected get dataHashIndex(): LRUCache<Lowercase<string>, Lowercase<string>, unknown>;
21
20
  protected get max(): number;
22
21
  private static findIndexFromCursor;
23
22
  all(): Promisable<WithStorageMeta<Payload>[]>;
24
- clear(): void | Promise<void>;
23
+ clear(): void;
25
24
  count(): number;
26
25
  createHandler(): Promisable<void>;
27
26
  delete(hashes: Hash[]): Promise<WithStorageMeta[]>;
@@ -30,6 +29,5 @@ export declare class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
30
29
  next(options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]>;
31
30
  private insertPayloadIntoCache;
32
31
  private rebuildDataHashIndex;
33
- private rebuildSequenceIndex;
34
32
  }
35
33
  //# sourceMappingURL=MemoryDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../src/MemoryDriver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAAa,eAAe,EAC9C,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEzF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,MAAM,EAAE,kBAAkB,CAAA;CAC3B;AAED,qBACa,YAAa,SAAQ,iBAAiB,CAAC,kBAAkB,CACpE,YAAW,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,CAAC,CAA0C;IACzD,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,cAAc,CAAiC;IAEvD,SAAS,KAAK,KAAK,mEAGlB;IAED,SAAS,KAAK,MAAM,uBAEnB;IAED,SAAS,KAAK,aAAa,4DAG1B;IAED,SAAS,KAAK,GAAG,WAEhB;IAED,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAI7C,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7B,KAAK;IAII,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC;IAIpC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAgBxD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAW3D,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;IAQxE,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAc5E,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,oBAAoB;YAQd,oBAAoB;CAGnC"}
1
+ {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../src/MemoryDriver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAAa,eAAe,EAC9C,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEzF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,MAAM,EAAE,kBAAkB,CAAA;CAC3B;AAED,qBACa,YAAa,SAAQ,iBAAiB,CAAC,kBAAkB,CACpE,YAAW,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,CAAC,CAA0C;IACzD,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAsB;IAE7C,SAAS,KAAK,KAAK,mEAGlB;IAED,SAAS,KAAK,MAAM,uBAEnB;IAED,SAAS,KAAK,aAAa,4DAG1B;IAED,SAAS,KAAK,GAAG,WAEhB;IAED,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAI7C,KAAK;IAKL,KAAK;IAII,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC;IAIpC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAexD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAW3D,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;IAOxE,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAc5E,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,oBAAoB;CAO7B"}
@@ -1,25 +1,3 @@
1
- import { GenericArchivistParams, GenericArchivist } from '@xyo-network/archivist-generic';
2
- import { ArchivistConfig, ArchivistModuleEventData, AttachableArchivistInstance } from '@xyo-network/archivist-model';
3
- import { AnyConfigSchema, ModuleInstance, AttachableModuleInstance } from '@xyo-network/module-model';
4
- import { Payload, Schema } from '@xyo-network/payload-model';
5
- import { EmptyObject, WithAdditional } from '@xylabs/object';
6
-
7
- declare const MemoryArchivistConfigSchema: "network.xyo.archivist.memory.config";
8
- type MemoryArchivistConfigSchema = typeof MemoryArchivistConfigSchema;
9
- type MemoryArchivistConfig<TConfig extends Payload | EmptyObject | void = void, TSchema extends Schema | void = void> = ArchivistConfig<WithAdditional<{
10
- max?: number;
11
- }, TConfig>, TSchema extends Schema ? TSchema : MemoryArchivistConfigSchema | ArchivistConfig['schema']>;
12
-
13
- type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> = GenericArchivistParams<TConfig>;
14
- declare class MemoryArchivist<TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends GenericArchivist<TParams, TEventData> implements AttachableArchivistInstance, ModuleInstance {
15
- static readonly configSchemas: Schema[];
16
- static readonly defaultConfigSchema: Schema;
17
- static readonly labels: {
18
- "network.xyo.storage.class": string;
19
- };
20
- get queries(): string[];
21
- static paramsHandler<T extends AttachableModuleInstance<MemoryArchivistParams, ArchivistModuleEventData>>(inParams?: Partial<T['params']>): Promise<T['params']>;
22
- }
23
-
24
- export { MemoryArchivist, MemoryArchivistConfigSchema };
25
- export type { MemoryArchivistConfig, MemoryArchivistParams };
1
+ export * from './Archivist.ts';
2
+ export * from './Config.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -46,7 +46,6 @@ var MemoryDriver = class extends AbstractCreatable {
46
46
  _cache;
47
47
  _config;
48
48
  _dataHashIndex;
49
- _sequenceIndex = [];
50
49
  get cache() {
51
50
  this._cache = this._cache ?? new LRUCache({ max: this.max });
52
51
  return this._cache;
@@ -73,8 +72,7 @@ var MemoryDriver = class extends AbstractCreatable {
73
72
  }
74
73
  clear() {
75
74
  this.cache.clear();
76
- this.rebuildDataHashIndex();
77
- this.rebuildDataHashIndex();
75
+ this._dataHashIndex = new LRUCache({ max: this.max });
78
76
  }
79
77
  count() {
80
78
  return this.cache.size;
@@ -91,7 +89,6 @@ var MemoryDriver = class extends AbstractCreatable {
91
89
  }
92
90
  }))).filter(exists);
93
91
  this.rebuildDataHashIndex();
94
- await this.rebuildSequenceIndex();
95
92
  return deletedPayloads;
96
93
  }
97
94
  get(hashes) {
@@ -106,7 +103,6 @@ var MemoryDriver = class extends AbstractCreatable {
106
103
  }
107
104
  insert(payloads) {
108
105
  const payloadsWithMeta = payloads.toSorted(PayloadBuilder.compareStorageMeta);
109
- this._sequenceIndex.push(...payloadsWithMeta);
110
106
  return payloadsWithMeta.map((payload) => {
111
107
  return this.insertPayloadIntoCache(payload);
112
108
  });
@@ -118,7 +114,7 @@ var MemoryDriver = class extends AbstractCreatable {
118
114
  order,
119
115
  open = true
120
116
  } = options ?? {};
121
- let all = this._sequenceIndex.toSorted(PayloadBuilder.compareStorageMeta);
117
+ let all = [...this.cache.values() ?? []].toSorted(PayloadBuilder.compareStorageMeta);
122
118
  if (order === "desc") {
123
119
  all = all.toReversed();
124
120
  }
@@ -137,9 +133,6 @@ var MemoryDriver = class extends AbstractCreatable {
137
133
  this.dataHashIndex.set(payload._dataHash, payload._hash);
138
134
  }
139
135
  }
140
- async rebuildSequenceIndex() {
141
- this._sequenceIndex = (await this.all()).toSorted(PayloadBuilder.compareStorageMeta);
142
- }
143
136
  };
144
137
  MemoryDriver = __decorateClass([
145
138
  creatable()
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/Config.ts","../../src/MemoryDriver.ts"],"sourcesContent":["import { StorageClassLabel } from '@xyo-network/archivist-abstract'\nimport { GenericArchivist, GenericArchivistParams } from '@xyo-network/archivist-generic'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistModuleEventData,\n ArchivistNextQuerySchema,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n AnyConfigSchema, AttachableModuleInstance, creatableModule, ModuleInstance,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { MemoryArchivistConfig, MemoryArchivistConfigSchema } from './Config.ts'\nimport { MemoryDriver } from './MemoryDriver.ts'\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>>\n = GenericArchivistParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends GenericArchivist<TParams, TEventData>\n implements AttachableArchivistInstance, ModuleInstance {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MemoryArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MemoryArchivistConfigSchema\n static override readonly labels = { ...super.labels, [StorageClassLabel]: 'memory' }\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 static override async paramsHandler<T extends AttachableModuleInstance<MemoryArchivistParams, ArchivistModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return { ...superParams, driver: superParams.driver ?? await MemoryDriver.create(superParams) }\n }\n}\n","import type { EmptyObject, WithAdditional } from '@xylabs/object'\nimport type { ArchivistConfig } from '@xyo-network/archivist-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport const MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config' as const\nexport type MemoryArchivistConfigSchema = typeof MemoryArchivistConfigSchema\n\nexport type MemoryArchivistConfig<TConfig extends Payload | EmptyObject | void = void, TSchema extends Schema | void = void> = ArchivistConfig<\n WithAdditional<\n {\n max?: number\n },\n TConfig\n >,\n TSchema extends Schema ? TSchema : MemoryArchivistConfigSchema | ArchivistConfig['schema']\n>\n","import { assertEx } from '@xylabs/assert'\nimport {\n AbstractCreatable, creatable, CreatableParams,\n} from '@xylabs/creatable'\nimport { exists } from '@xylabs/exists'\nimport type { Hash, Hex } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ArchivistDriver, ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport interface MemoryDriverConfig {\n max?: number\n}\n\nexport interface MemoryDriverParams extends CreatableParams {\n config: MemoryDriverConfig\n}\n\n@creatable()\nexport class MemoryDriver extends AbstractCreatable<MemoryDriverParams>\n implements ArchivistDriver<Hash, Payload, WithStorageMeta<Payload>> {\n private _cache?: LRUCache<Hash, WithStorageMeta<Payload>>\n private _config?: MemoryDriverConfig\n private _dataHashIndex?: LRUCache<Hash, Hash>\n private _sequenceIndex: WithStorageMeta<Payload>[] = []\n\n protected get cache() {\n this._cache = this._cache ?? new LRUCache<Hash, WithStorageMeta<Payload>>({ max: this.max })\n return this._cache\n }\n\n protected get config() {\n return assertEx(this._config, () => 'Driver config is not set')\n }\n\n protected get dataHashIndex() {\n this._dataHashIndex = this._dataHashIndex ?? new LRUCache<Hash, Hash>({ max: this.max })\n return this._dataHashIndex\n }\n\n protected get max() {\n return this.config?.max ?? 10_000\n }\n\n private static findIndexFromCursor(payloads: WithStorageMeta[], cursor: Hex) {\n const index = payloads.findIndex(({ _sequence }) => _sequence === cursor)\n if (index === -1) {\n return Infinity // move to the end\n }\n return index\n }\n\n all(): Promisable<WithStorageMeta<Payload>[]> {\n return [...this.cache.values()].filter(exists).toSorted(PayloadBuilder.compareStorageMeta)\n }\n\n clear(): void | Promise<void> {\n this.cache.clear()\n this.rebuildDataHashIndex()\n this.rebuildDataHashIndex()\n }\n\n count() {\n return this.cache.size\n }\n\n override createHandler(): Promisable<void> {\n this._config = this.params.config ?? {}\n }\n\n async delete(hashes: Hash[]): Promise<WithStorageMeta[]> {\n const deletedPayloads: WithStorageMeta<Payload>[] = (await Promise.all(this.cache\n .dump()\n .map(async ([key, item]) => {\n const itemValueDataHash = await PayloadBuilder.dataHash(item.value)\n if (hashes.includes(key) || hashes.includes(itemValueDataHash)) {\n this.cache.delete(key)\n return item.value\n }\n })))\n .filter(exists)\n this.rebuildDataHashIndex()\n await this.rebuildSequenceIndex()\n return deletedPayloads\n }\n\n get(hashes: Hash[]): Promisable<WithStorageMeta<Payload>[]> {\n return hashes.map((hash) => {\n const resolvedHash = this.dataHashIndex.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 }).filter(exists)\n }\n\n insert(payloads: WithStorageMeta<Payload>[]): WithStorageMeta<Payload>[] {\n const payloadsWithMeta = payloads.toSorted(PayloadBuilder.compareStorageMeta)\n this._sequenceIndex.push(...payloadsWithMeta)\n return payloadsWithMeta.map((payload) => {\n return this.insertPayloadIntoCache(payload)\n })\n }\n\n next(options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]> {\n const {\n limit = 100, cursor, order, open = true,\n } = options ?? {}\n let all = this._sequenceIndex.toSorted(PayloadBuilder.compareStorageMeta)\n if (order === 'desc') {\n all = all.toReversed()\n }\n const startIndex = isDefined(cursor)\n ? MemoryDriver.findIndexFromCursor(all, cursor) + (open ? 1 : 0)\n : 0\n return all.slice(startIndex, startIndex + limit)\n }\n\n private insertPayloadIntoCache(payload: WithStorageMeta<Payload>): WithStorageMeta<Payload> {\n this.cache.set(payload._hash, payload)\n this.dataHashIndex.set(payload._dataHash, payload._hash)\n return payload\n }\n\n private rebuildDataHashIndex() {\n this._dataHashIndex = new LRUCache<Hash, Hash>({ max: this.max })\n const payloads = this.cache.dump().map(([, item]) => item.value)\n for (const payload of payloads) {\n this.dataHashIndex.set(payload._dataHash, payload._hash)\n }\n }\n\n private async rebuildSequenceIndex() {\n this._sequenceIndex = (await this.all()).toSorted(PayloadBuilder.compareStorageMeta)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/Config.ts","../../src/MemoryDriver.ts"],"sourcesContent":["import { StorageClassLabel } from '@xyo-network/archivist-abstract'\nimport { GenericArchivist, GenericArchivistParams } from '@xyo-network/archivist-generic'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistModuleEventData,\n ArchivistNextQuerySchema,\n AttachableArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport {\n AnyConfigSchema, AttachableModuleInstance, creatableModule, ModuleInstance,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { MemoryArchivistConfig, MemoryArchivistConfigSchema } from './Config.ts'\nimport { MemoryDriver } from './MemoryDriver.ts'\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>>\n = GenericArchivistParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n extends GenericArchivist<TParams, TEventData>\n implements AttachableArchivistInstance, ModuleInstance {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MemoryArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MemoryArchivistConfigSchema\n static override readonly labels = { ...super.labels, [StorageClassLabel]: 'memory' }\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 static override async paramsHandler<T extends AttachableModuleInstance<MemoryArchivistParams, ArchivistModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return { ...superParams, driver: superParams.driver ?? await MemoryDriver.create(superParams) }\n }\n}\n","import type { EmptyObject, WithAdditional } from '@xylabs/object'\nimport type { ArchivistConfig } from '@xyo-network/archivist-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport const MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config' as const\nexport type MemoryArchivistConfigSchema = typeof MemoryArchivistConfigSchema\n\nexport type MemoryArchivistConfig<TConfig extends Payload | EmptyObject | void = void, TSchema extends Schema | void = void> = ArchivistConfig<\n WithAdditional<\n {\n max?: number\n },\n TConfig\n >,\n TSchema extends Schema ? TSchema : MemoryArchivistConfigSchema | ArchivistConfig['schema']\n>\n","import { assertEx } from '@xylabs/assert'\nimport {\n AbstractCreatable, creatable, CreatableParams,\n} from '@xylabs/creatable'\nimport { exists } from '@xylabs/exists'\nimport type { Hash, Hex } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ArchivistDriver, ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport interface MemoryDriverConfig {\n max?: number\n}\n\nexport interface MemoryDriverParams extends CreatableParams {\n config: MemoryDriverConfig\n}\n\n@creatable()\nexport class MemoryDriver extends AbstractCreatable<MemoryDriverParams>\n implements ArchivistDriver<Hash, Payload, WithStorageMeta<Payload>> {\n private _cache?: LRUCache<Hash, WithStorageMeta<Payload>>\n private _config?: MemoryDriverConfig\n private _dataHashIndex?: LRUCache<Hash, Hash>\n\n protected get cache() {\n this._cache = this._cache ?? new LRUCache<Hash, WithStorageMeta<Payload>>({ max: this.max })\n return this._cache\n }\n\n protected get config() {\n return assertEx(this._config, () => 'Driver config is not set')\n }\n\n protected get dataHashIndex() {\n this._dataHashIndex = this._dataHashIndex ?? new LRUCache<Hash, Hash>({ max: this.max })\n return this._dataHashIndex\n }\n\n protected get max() {\n return this.config?.max ?? 10_000\n }\n\n private static findIndexFromCursor(payloads: WithStorageMeta[], cursor: Hex) {\n const index = payloads.findIndex(({ _sequence }) => _sequence === cursor)\n if (index === -1) {\n return Infinity // move to the end\n }\n return index\n }\n\n all(): Promisable<WithStorageMeta<Payload>[]> {\n return [...this.cache.values()].filter(exists).toSorted(PayloadBuilder.compareStorageMeta)\n }\n\n clear() {\n this.cache.clear()\n this._dataHashIndex = new LRUCache<Hash, Hash>({ max: this.max })\n }\n\n count() {\n return this.cache.size\n }\n\n override createHandler(): Promisable<void> {\n this._config = this.params.config ?? {}\n }\n\n async delete(hashes: Hash[]): Promise<WithStorageMeta[]> {\n const deletedPayloads: WithStorageMeta<Payload>[] = (await Promise.all(this.cache\n .dump()\n .map(async ([key, item]) => {\n const itemValueDataHash = await PayloadBuilder.dataHash(item.value)\n if (hashes.includes(key) || hashes.includes(itemValueDataHash)) {\n this.cache.delete(key)\n return item.value\n }\n })))\n .filter(exists)\n this.rebuildDataHashIndex()\n return deletedPayloads\n }\n\n get(hashes: Hash[]): Promisable<WithStorageMeta<Payload>[]> {\n return hashes.map((hash) => {\n const resolvedHash = this.dataHashIndex.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 }).filter(exists)\n }\n\n insert(payloads: WithStorageMeta<Payload>[]): WithStorageMeta<Payload>[] {\n const payloadsWithMeta = payloads.toSorted(PayloadBuilder.compareStorageMeta)\n return payloadsWithMeta.map((payload) => {\n return this.insertPayloadIntoCache(payload)\n })\n }\n\n next(options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]> {\n const {\n limit = 100, cursor, order, open = true,\n } = options ?? {}\n let all = [...this.cache.values() ?? []].toSorted(PayloadBuilder.compareStorageMeta)\n if (order === 'desc') {\n all = all.toReversed()\n }\n const startIndex = isDefined(cursor)\n ? MemoryDriver.findIndexFromCursor(all, cursor) + (open ? 1 : 0)\n : 0\n return all.slice(startIndex, startIndex + limit)\n }\n\n private insertPayloadIntoCache(payload: WithStorageMeta<Payload>): WithStorageMeta<Payload> {\n this.cache.set(payload._hash, payload)\n this.dataHashIndex.set(payload._dataHash, payload._hash)\n return payload\n }\n\n private rebuildDataHashIndex() {\n this._dataHashIndex = new LRUCache<Hash, Hash>({ max: this.max })\n const payloads = this.cache.dump().map(([, item]) => item.value)\n for (const payload of payloads) {\n this.dataHashIndex.set(payload._dataHash, payload._hash)\n }\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/archivist-memory",
3
- "version": "4.1.2",
3
+ "version": "4.1.4",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,33 +29,33 @@
29
29
  "module": "dist/neutral/index.mjs",
30
30
  "types": "dist/neutral/index.d.ts",
31
31
  "dependencies": {
32
- "@xylabs/assert": "^4.13.15",
33
- "@xylabs/creatable": "^4.13.15",
34
- "@xylabs/exists": "^4.13.15",
35
- "@xylabs/object": "^4.13.15",
36
- "@xylabs/typeof": "^4.13.15",
37
- "@xyo-network/archivist-abstract": "^4.1.2",
38
- "@xyo-network/archivist-generic": "^4.1.2",
39
- "@xyo-network/archivist-model": "^4.1.2",
40
- "@xyo-network/module-model": "^4.1.2",
41
- "@xyo-network/payload-builder": "^4.1.2",
42
- "@xyo-network/payload-model": "^4.1.2",
32
+ "@xylabs/assert": "^4.13.16",
33
+ "@xylabs/creatable": "^4.13.16",
34
+ "@xylabs/exists": "^4.13.16",
35
+ "@xylabs/object": "^4.13.16",
36
+ "@xylabs/typeof": "^4.13.16",
37
+ "@xyo-network/archivist-abstract": "^4.1.4",
38
+ "@xyo-network/archivist-generic": "^4.1.4",
39
+ "@xyo-network/archivist-model": "^4.1.4",
40
+ "@xyo-network/module-model": "^4.1.4",
41
+ "@xyo-network/payload-builder": "^4.1.4",
42
+ "@xyo-network/payload-model": "^4.1.4",
43
43
  "lru-cache": "^11.1.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@xylabs/delay": "^4.13.15",
47
- "@xylabs/hex": "^4.13.15",
48
- "@xylabs/promise": "^4.13.15",
49
- "@xylabs/ts-scripts-yarn3": "^7.0.0-rc.23",
50
- "@xylabs/tsconfig": "^7.0.0-rc.23",
51
- "@xylabs/vitest-extended": "^4.13.15",
52
- "@xyo-network/account": "^4.1.2",
53
- "@xyo-network/account-model": "^4.1.2",
54
- "@xyo-network/archivist-acceptance-tests": "^4.1.2",
55
- "@xyo-network/boundwitness-model": "^4.1.2",
56
- "@xyo-network/id-payload-plugin": "^4.1.2",
57
- "@xyo-network/payload-wrapper": "^4.1.2",
58
- "@xyo-network/wallet": "^4.1.2",
46
+ "@xylabs/delay": "^4.13.16",
47
+ "@xylabs/hex": "^4.13.16",
48
+ "@xylabs/promise": "^4.13.16",
49
+ "@xylabs/ts-scripts-yarn3": "^7.0.0-rc.27",
50
+ "@xylabs/tsconfig": "^7.0.0-rc.27",
51
+ "@xylabs/vitest-extended": "^4.13.16",
52
+ "@xyo-network/account": "^4.1.4",
53
+ "@xyo-network/account-model": "^4.1.4",
54
+ "@xyo-network/archivist-acceptance-tests": "^4.1.4",
55
+ "@xyo-network/boundwitness-model": "^4.1.4",
56
+ "@xyo-network/id-payload-plugin": "^4.1.4",
57
+ "@xyo-network/payload-wrapper": "^4.1.4",
58
+ "@xyo-network/wallet": "^4.1.4",
59
59
  "typescript": "^5.8.3",
60
60
  "vitest": "^3.2.4"
61
61
  },
@@ -25,7 +25,6 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
25
25
  private _cache?: LRUCache<Hash, WithStorageMeta<Payload>>
26
26
  private _config?: MemoryDriverConfig
27
27
  private _dataHashIndex?: LRUCache<Hash, Hash>
28
- private _sequenceIndex: WithStorageMeta<Payload>[] = []
29
28
 
30
29
  protected get cache() {
31
30
  this._cache = this._cache ?? new LRUCache<Hash, WithStorageMeta<Payload>>({ max: this.max })
@@ -57,10 +56,9 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
57
56
  return [...this.cache.values()].filter(exists).toSorted(PayloadBuilder.compareStorageMeta)
58
57
  }
59
58
 
60
- clear(): void | Promise<void> {
59
+ clear() {
61
60
  this.cache.clear()
62
- this.rebuildDataHashIndex()
63
- this.rebuildDataHashIndex()
61
+ this._dataHashIndex = new LRUCache<Hash, Hash>({ max: this.max })
64
62
  }
65
63
 
66
64
  count() {
@@ -83,7 +81,6 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
83
81
  })))
84
82
  .filter(exists)
85
83
  this.rebuildDataHashIndex()
86
- await this.rebuildSequenceIndex()
87
84
  return deletedPayloads
88
85
  }
89
86
 
@@ -100,7 +97,6 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
100
97
 
101
98
  insert(payloads: WithStorageMeta<Payload>[]): WithStorageMeta<Payload>[] {
102
99
  const payloadsWithMeta = payloads.toSorted(PayloadBuilder.compareStorageMeta)
103
- this._sequenceIndex.push(...payloadsWithMeta)
104
100
  return payloadsWithMeta.map((payload) => {
105
101
  return this.insertPayloadIntoCache(payload)
106
102
  })
@@ -110,7 +106,7 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
110
106
  const {
111
107
  limit = 100, cursor, order, open = true,
112
108
  } = options ?? {}
113
- let all = this._sequenceIndex.toSorted(PayloadBuilder.compareStorageMeta)
109
+ let all = [...this.cache.values() ?? []].toSorted(PayloadBuilder.compareStorageMeta)
114
110
  if (order === 'desc') {
115
111
  all = all.toReversed()
116
112
  }
@@ -133,8 +129,4 @@ export class MemoryDriver extends AbstractCreatable<MemoryDriverParams>
133
129
  this.dataHashIndex.set(payload._dataHash, payload._hash)
134
130
  }
135
131
  }
136
-
137
- private async rebuildSequenceIndex() {
138
- this._sequenceIndex = (await this.all()).toSorted(PayloadBuilder.compareStorageMeta)
139
- }
140
132
  }