@xyo-network/archivist-abstract 2.88.3 → 2.89.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,10 @@ var import_assert = require("@xylabs/assert");
30
30
  var import_lodash = require("@xylabs/lodash");
31
31
  var import_archivist_model = require("@xyo-network/archivist-model");
32
32
  var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
33
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
33
  var import_hash = require("@xyo-network/hash");
35
34
  var import_module_abstract = require("@xyo-network/module-abstract");
36
35
  var import_module_model = require("@xyo-network/module-model");
36
+ var import_payload_builder = require("@xyo-network/payload-builder");
37
37
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
38
38
  var AbstractArchivist = class extends import_module_abstract.AbstractModuleInstance {
39
39
  static {
@@ -129,18 +129,15 @@ var AbstractArchivist = class extends import_module_abstract.AbstractModuleInsta
129
129
  return deletedHashes;
130
130
  }
131
131
  async getFromParent(hashes, archivist) {
132
- const foundPairs = (await Promise.all((await archivist.get(hashes)).map(async (payload) => [
133
- await import_hash.PayloadHasher.hashAsync(payload),
134
- payload
135
- ]))).filter(([hash]) => {
132
+ const foundPairs = (await import_payload_builder.PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
136
133
  const askedFor = hashes.includes(hash);
137
134
  if (!askedFor) {
138
135
  console.warn(`Parent returned payload with hash not asked for: ${hash}`);
139
136
  }
140
137
  return askedFor;
141
138
  });
142
- const foundHashes = new Set(foundPairs.map(([hash]) => hash));
143
- const foundPayloads = foundPairs.map(([, payload]) => payload);
139
+ const foundHashes = new Set(foundPairs.map(([, hash]) => hash));
140
+ const foundPayloads = foundPairs.map(([payload]) => payload);
144
141
  const notfound = hashes.filter((hash) => !foundHashes.has(hash));
145
142
  return [
146
143
  foundPayloads,
@@ -173,28 +170,19 @@ var AbstractArchivist = class extends import_module_abstract.AbstractModuleInsta
173
170
  }
174
171
  async getWithConfig(hashes, config) {
175
172
  const emitEvents = config?.emitEvents ?? true;
176
- const map = await import_payload_wrapper.PayloadWrapper.toMap(await this.getHandler(hashes));
177
- const { foundPayloads, notfoundHashes } = hashes.reduce((prev, hash) => {
178
- const found = map[hash];
173
+ const gotten = await this.getHandler(hashes);
174
+ const map = await import_payload_builder.PayloadBuilder.toHashMap(gotten);
175
+ const dataMap = await import_payload_builder.PayloadBuilder.toDataHashMap(gotten);
176
+ const foundPayloads = [];
177
+ const notfoundHashes = [];
178
+ for (const hash of hashes) {
179
+ const found = map[hash] ?? dataMap[hash];
179
180
  if (found) {
180
- if (found.schema === import_boundwitness_model.BoundWitnessSchema) {
181
- prev.foundPayloads.push({
182
- ...import_hash.PayloadHasher.hashFields(found),
183
- _signatures: found._signatures
184
- });
185
- } else {
186
- prev.foundPayloads.push({
187
- ...import_hash.PayloadHasher.hashFields(found)
188
- });
189
- }
181
+ foundPayloads.push(import_hash.PayloadHasher.jsonPayload(found));
190
182
  } else {
191
- prev.notfoundHashes.push(hash);
183
+ notfoundHashes.push(hash);
192
184
  }
193
- return prev;
194
- }, {
195
- foundPayloads: [],
196
- notfoundHashes: []
197
- });
185
+ }
198
186
  const [parentFoundPayloads] = await this.getFromParents(notfoundHashes);
199
187
  if (this.storeParentReads) {
200
188
  await this.insertWithConfig(parentFoundPayloads);
@@ -234,9 +222,9 @@ var AbstractArchivist = class extends import_module_abstract.AbstractModuleInsta
234
222
  return (0, import_assert.assertEx)(this._parents);
235
223
  }
236
224
  async queryHandler(query, payloads, queryConfig) {
237
- const wrappedQuery = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
225
+ const wrappedQuery = await import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
238
226
  const queryPayload = await wrappedQuery.getQuery();
239
- (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
227
+ (0, import_assert.assertEx)(await this.queryable(query, payloads, queryConfig));
240
228
  const resultPayloads = [];
241
229
  if (this.config.storeQueries) {
242
230
  await this.insertHandler([
@@ -277,9 +265,9 @@ var AbstractArchivist = class extends import_module_abstract.AbstractModuleInsta
277
265
  break;
278
266
  }
279
267
  case import_archivist_model.ArchivistInsertQuerySchema: {
280
- const payloads2 = await wrappedQuery.getPayloads();
281
- (0, import_assert.assertEx)(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`);
282
- const resolvedPayloads = await import_payload_wrapper.PayloadWrapper.filterExclude(payloads2, await wrappedQuery.hashAsync());
268
+ const payloads2 = wrappedQuery.payloads;
269
+ (0, import_assert.assertEx)(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`);
270
+ const resolvedPayloads = await import_payload_wrapper.PayloadWrapper.filterExclude(payloads2, await wrappedQuery.dataHash());
283
271
  (0, import_assert.assertEx)(resolvedPayloads.length === payloads2.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads2.length}]`);
284
272
  resultPayloads.push(...await this.insertWithConfig(payloads2));
285
273
  this._lastInsertedPayload = resolvedPayloads.at(-1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts"],"sourcesContent":["export * from './AbstractArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (\n await Promise.all(\n (await archivist.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n ).filter(([hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([hash]) => hash))\n const foundPayloads = foundPairs.map(([, payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const map = await PayloadWrapper.toMap(await this.getHandler(hashes))\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const { foundPayloads, notfoundHashes } = hashes.reduce<{ foundPayloads: Payload[]; notfoundHashes: string[] }>(\n (prev, hash) => {\n const found = map[hash]\n if (found) {\n //TODO: Find a better way to scrub meta data without scrubbing _signatures\n if (found.schema === BoundWitnessSchema) {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found), _signatures: (found as BoundWitness)._signatures } as BoundWitness)\n } else {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found) } as Payload)\n }\n } else {\n prev.notfoundHashes.push(hash)\n }\n return prev\n },\n { foundPayloads: [], notfoundHashes: [] },\n )\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = await wrappedQuery.getPayloads()\n assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.hashAsync())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","Promise","map","payload","PayloadHasher","hashAsync","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","PayloadWrapper","toMap","notfoundHashes","reduce","prev","schema","BoundWitnessSchema","push","hashFields","_signatures","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","getPayloads","JSON","stringify","resolvedPayloads","filterExclude","at","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","asArchivistInstance","isArchivistInstance","log"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts"],"sourcesContent":["export * from './AbstractArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const gotten = await this.getHandler(hashes)\n const map = await PayloadBuilder.toHashMap(gotten)\n const dataMap = await PayloadBuilder.toDataHashMap(gotten)\n\n const foundPayloads: WithMeta<Payload>[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push(PayloadHasher.jsonPayload(found) as WithMeta<Payload>)\n } else {\n notfoundHashes.push(hash)\n }\n }\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = wrappedQuery.payloads\n assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.dataHash())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","PayloadBuilder","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","PayloadHasher","jsonPayload","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","JSON","stringify","resolvedPayloads","PayloadWrapper","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
@@ -6,10 +6,10 @@ import { assertEx } from "@xylabs/assert";
6
6
  import { compact } from "@xylabs/lodash";
7
7
  import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistDeleteQuerySchema, ArchivistGetQuerySchema, ArchivistInsertQuerySchema, asArchivistInstance, isArchivistInstance } from "@xyo-network/archivist-model";
8
8
  import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
9
- import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
10
9
  import { PayloadHasher } from "@xyo-network/hash";
11
10
  import { AbstractModuleInstance } from "@xyo-network/module-abstract";
12
11
  import { duplicateModules } from "@xyo-network/module-model";
12
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
13
13
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
14
14
  var AbstractArchivist = class extends AbstractModuleInstance {
15
15
  static {
@@ -105,18 +105,15 @@ var AbstractArchivist = class extends AbstractModuleInstance {
105
105
  return deletedHashes;
106
106
  }
107
107
  async getFromParent(hashes, archivist) {
108
- const foundPairs = (await Promise.all((await archivist.get(hashes)).map(async (payload) => [
109
- await PayloadHasher.hashAsync(payload),
110
- payload
111
- ]))).filter(([hash]) => {
108
+ const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
112
109
  const askedFor = hashes.includes(hash);
113
110
  if (!askedFor) {
114
111
  console.warn(`Parent returned payload with hash not asked for: ${hash}`);
115
112
  }
116
113
  return askedFor;
117
114
  });
118
- const foundHashes = new Set(foundPairs.map(([hash]) => hash));
119
- const foundPayloads = foundPairs.map(([, payload]) => payload);
115
+ const foundHashes = new Set(foundPairs.map(([, hash]) => hash));
116
+ const foundPayloads = foundPairs.map(([payload]) => payload);
120
117
  const notfound = hashes.filter((hash) => !foundHashes.has(hash));
121
118
  return [
122
119
  foundPayloads,
@@ -149,28 +146,19 @@ var AbstractArchivist = class extends AbstractModuleInstance {
149
146
  }
150
147
  async getWithConfig(hashes, config) {
151
148
  const emitEvents = config?.emitEvents ?? true;
152
- const map = await PayloadWrapper.toMap(await this.getHandler(hashes));
153
- const { foundPayloads, notfoundHashes } = hashes.reduce((prev, hash) => {
154
- const found = map[hash];
149
+ const gotten = await this.getHandler(hashes);
150
+ const map = await PayloadBuilder.toHashMap(gotten);
151
+ const dataMap = await PayloadBuilder.toDataHashMap(gotten);
152
+ const foundPayloads = [];
153
+ const notfoundHashes = [];
154
+ for (const hash of hashes) {
155
+ const found = map[hash] ?? dataMap[hash];
155
156
  if (found) {
156
- if (found.schema === BoundWitnessSchema) {
157
- prev.foundPayloads.push({
158
- ...PayloadHasher.hashFields(found),
159
- _signatures: found._signatures
160
- });
161
- } else {
162
- prev.foundPayloads.push({
163
- ...PayloadHasher.hashFields(found)
164
- });
165
- }
157
+ foundPayloads.push(PayloadHasher.jsonPayload(found));
166
158
  } else {
167
- prev.notfoundHashes.push(hash);
159
+ notfoundHashes.push(hash);
168
160
  }
169
- return prev;
170
- }, {
171
- foundPayloads: [],
172
- notfoundHashes: []
173
- });
161
+ }
174
162
  const [parentFoundPayloads] = await this.getFromParents(notfoundHashes);
175
163
  if (this.storeParentReads) {
176
164
  await this.insertWithConfig(parentFoundPayloads);
@@ -210,9 +198,9 @@ var AbstractArchivist = class extends AbstractModuleInstance {
210
198
  return assertEx(this._parents);
211
199
  }
212
200
  async queryHandler(query, payloads, queryConfig) {
213
- const wrappedQuery = QueryBoundWitnessWrapper.parseQuery(query, payloads);
201
+ const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery(query, payloads);
214
202
  const queryPayload = await wrappedQuery.getQuery();
215
- assertEx(this.queryable(query, payloads, queryConfig));
203
+ assertEx(await this.queryable(query, payloads, queryConfig));
216
204
  const resultPayloads = [];
217
205
  if (this.config.storeQueries) {
218
206
  await this.insertHandler([
@@ -253,9 +241,9 @@ var AbstractArchivist = class extends AbstractModuleInstance {
253
241
  break;
254
242
  }
255
243
  case ArchivistInsertQuerySchema: {
256
- const payloads2 = await wrappedQuery.getPayloads();
257
- assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`);
258
- const resolvedPayloads = await PayloadWrapper.filterExclude(payloads2, await wrappedQuery.hashAsync());
244
+ const payloads2 = wrappedQuery.payloads;
245
+ assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`);
246
+ const resolvedPayloads = await PayloadWrapper.filterExclude(payloads2, await wrappedQuery.dataHash());
259
247
  assertEx(resolvedPayloads.length === payloads2.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads2.length}]`);
260
248
  resultPayloads.push(...await this.insertWithConfig(payloads2));
261
249
  this._lastInsertedPayload = resolvedPayloads.at(-1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (\n await Promise.all(\n (await archivist.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n ).filter(([hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([hash]) => hash))\n const foundPayloads = foundPairs.map(([, payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const map = await PayloadWrapper.toMap(await this.getHandler(hashes))\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const { foundPayloads, notfoundHashes } = hashes.reduce<{ foundPayloads: Payload[]; notfoundHashes: string[] }>(\n (prev, hash) => {\n const found = map[hash]\n if (found) {\n //TODO: Find a better way to scrub meta data without scrubbing _signatures\n if (found.schema === BoundWitnessSchema) {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found), _signatures: (found as BoundWitness)._signatures } as BoundWitness)\n } else {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found) } as Payload)\n }\n } else {\n prev.notfoundHashes.push(hash)\n }\n return prev\n },\n { foundPayloads: [], notfoundHashes: [] },\n )\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = await wrappedQuery.getPayloads()\n assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.hashAsync())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["assertEx","compact","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","BoundWitnessSchema","PayloadHasher","AbstractModuleInstance","duplicateModules","PayloadWrapper","AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","Promise","map","payload","PayloadHasher","hashAsync","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","PayloadWrapper","toMap","notfoundHashes","reduce","prev","schema","BoundWitnessSchema","push","hashFields","_signatures","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","getPayloads","JSON","stringify","resolvedPayloads","filterExclude","at","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","asArchivistInstance","isArchivistInstance","log"]}
1
+ {"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const gotten = await this.getHandler(hashes)\n const map = await PayloadBuilder.toHashMap(gotten)\n const dataMap = await PayloadBuilder.toDataHashMap(gotten)\n\n const foundPayloads: WithMeta<Payload>[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push(PayloadHasher.jsonPayload(found) as WithMeta<Payload>)\n } else {\n notfoundHashes.push(hash)\n }\n }\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = wrappedQuery.payloads\n assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.dataHash())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAASC,eAAe;AAExB,SACEC,yBACAC,2BACAC,4BAEAC,4BACAC,yBACAC,4BAMAC,qBACAC,2BACK;AACP,SAASC,gCAAgC;AAEzC,SAASC,qBAAqB;AAC9B,SAASC,8BAA8B;AACvC,SAASC,wBAAgE;AACzE,SAASC,sBAAsB;AAE/B,SAASC,sBAAsB;AAgBxB,IAAeC,oBAAf,cAIGC,uBAAAA;EA9CV,OA8CUA;;;EAGAC;EACAC;EAER,IAAaC,UAAoB;AAC/B,WAAO;MAACC;SAA4B,MAAMD;;EAC5C;EAEA,IAAIE,oBAAoB;AACtB,WAAO,KAAKC,OAAOD,qBAAqB;EAC1C;EAEA,IAAuBE,qBAAmE;AACxF,WAAO;MACL,mCAAmC;MACnC,qCAAqC;MACrC,sCAAsC;MACtC,sCAAsC;MACtC,mCAAmC;MACnC,sCAAsC;IACxC;EACF;EAEA,IAAcC,mBAAmB;AAC/B,WAAO,CAAC,CAAC,KAAKF,QAAQE;EACxB;EAEAC,MAAgC;AAC9B,SAAKC,YAAY,KAAA;AACjB,WAAO,KAAKC,KAAK,YAAA;AACf,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKC,WAAU;IAC9B,CAAA;EACF;EAEAC,QAA0B;AACxB,SAAKJ,YAAY,OAAA;AACjB,WAAO,KAAKC,KAAK,YAAA;AACf,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKG,aAAY;IAChC,CAAA;EACF;EAEAC,SAAqC;AACnC,SAAKN,YAAY,QAAA;AACjB,WAAO,KAAKC,KAAK,YAAA;AACf,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKK,cAAa;IACjC,CAAA;EACF;EAEA,MAAMC,OAAOC,QAAqC;AAChD,SAAKT,YAAY,QAAA;AACjB,WAAO,MAAM,KAAKC,KAAK,YAAA;AACrB,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKQ,iBAAiBD,MAAAA;IACrC,CAAA;EACF;EAEA,MAAME,IAAIF,QAAsC;AAC9C,SAAKT,YAAY,KAAA;AACjB,WAAO,MAAM,KAAKC,KAAK,YAAA;AACrB,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKU,cAAcH,MAAAA;IAClC,CAAA;EACF;EAEA,MAAMI,OAAOC,UAAyC;AACpD,SAAKd,YAAY,QAAA;AACjB,WAAO,MAAM,KAAKC,KAAK,YAAA;AACrB,YAAM,KAAKC,QAAQ,OAAA;AACnB,aAAO,MAAM,KAAKa,iBAAiBD,QAAAA;IACrC,CAAA;EACF;EAEUX,aAAuC;AAC/C,UAAM,IAAIa,MAAM,iBAAA;EAClB;EAEUX,eAAiC;AACzC,UAAM,IAAIW,MAAM,iBAAA;EAClB;EAEUT,gBAA4C;AACpD,UAAM,IAAIS,MAAM,iBAAA;EAClB;EAEUC,cAAcC,SAA4C;AAClE,UAAM,IAAIF,MAAM,iBAAA;EAClB;EAEA,MAAgBN,iBAAiBD,QAAkBb,QAA0C;AAC3F,UAAMuB,aAAavB,QAAQuB,cAAc;AAEzC,UAAMC,gBAAgB,MAAM,KAAKH,cAAcR,MAAAA;AAE/C,QAAIU,YAAY;AACd,YAAM,KAAKE,KAAK,WAAW;QAAEZ,QAAQW;QAAeE,QAAQ;MAAK,CAAA;IACnE;AAEA,WAAOF;EACT;EAEA,MAAgBG,cAAcd,QAAkBe,WAA8D;AAC5G,UAAMC,cAAc,MAAMC,eAAeC,cAAc,MAAMH,UAAUb,IAAIF,MAAAA,CAAAA,GAAUmB,OAAO,CAAC,CAAA,EAAGC,IAAAA,MAAK;AACnG,YAAMC,WAAWrB,OAAOsB,SAASF,IAAAA;AACjC,UAAI,CAACC,UAAU;AACbE,gBAAQC,KAAK,oDAAoDJ,IAAAA,EAAM;MAEzE;AACA,aAAOC;IACT,CAAA;AAEA,UAAMI,cAAc,IAAIC,IAAIV,WAAWW,IAAI,CAAC,CAAA,EAAGP,IAAAA,MAAUA,IAAAA,CAAAA;AACzD,UAAMQ,gBAAgBZ,WAAWW,IAAI,CAAC,CAACE,OAAAA,MAAaA,OAAAA;AAEpD,UAAMC,WAAW9B,OAAOmB,OAAO,CAACC,SAAS,CAACK,YAAYM,IAAIX,IAAAA,CAAAA;AAC1D,WAAO;MAACQ;MAAeE;;EACzB;EAEA,MAAgBE,eAAehC,QAAkD;AAC/E,UAAMiC,UAAUC,OAAOC,QAAQ,MAAM,KAAKF,QAAO,IAAKG,QAAQ,CAAC,CAAA;AAC/D,QAAIC,kBAAkB;SAAIrC;;AAC1B,QAAIsC,cAAc;AAClB,QAAIC,SAAoB,CAAA;AAGxB,WAAOD,cAAcL,QAAQO,UAAUH,gBAAgBG,SAAS,GAAG;AACjE,YAAM,CAACC,OAAOX,QAAAA,IAAY,MAAM,KAAKhB,cAAcuB,iBAAiBJ,QAAQK,WAAAA,CAAY;AACxFC,eAAS;WAAIA;WAAWE;;AACxBJ,wBAAkBP;AAClBQ;IACF;AACA,WAAO;MAACC;MAAQF;;EAClB;EAEUK,WAAWjC,SAA0C;AAC7D,UAAM,IAAIF,MAAM,iBAAA;EAClB;EAEA,MAAgBJ,cAAcH,QAAkBb,QAA2C;AAEzF,UAAMuB,aAAavB,QAAQuB,cAAc;AACzC,UAAMiC,SAAS,MAAM,KAAKD,WAAW1C,MAAAA;AACrC,UAAM2B,MAAM,MAAMV,eAAe2B,UAAUD,MAAAA;AAC3C,UAAME,UAAU,MAAM5B,eAAe6B,cAAcH,MAAAA;AAEnD,UAAMf,gBAAqC,CAAA;AAC3C,UAAMmB,iBAA2B,CAAA;AACjC,eAAW3B,QAAQpB,QAAQ;AACzB,YAAMyC,QAAQd,IAAIP,IAAAA,KAASyB,QAAQzB,IAAAA;AACnC,UAAIqB,OAAO;AACTb,sBAAcoB,KAAKC,cAAcC,YAAYT,KAAAA,CAAAA;MAC/C,OAAO;AACLM,uBAAeC,KAAK5B,IAAAA;MACtB;IACF;AAEA,UAAM,CAAC+B,mBAAAA,IAAuB,MAAM,KAAKnB,eAAee,cAAAA;AAExD,QAAI,KAAK1D,kBAAkB;AACzB,YAAM,KAAKiB,iBAAiB6C,mBAAAA;IAC9B;AACA,WAAO;SAAIvB;SAAkBuB;;EAC/B;EAEUC,OAAwC;AAChD,WAAO,KAAKtE;EACd;EAEUuE,cAAcC,WAA0C;AAChE,UAAM,IAAI/C,MAAM,iBAAA;EAClB;EAEA,MAAgBD,iBAAiBD,UAAqBlB,QAA2C;AAC/F,UAAMuB,aAAavB,QAAQuB,cAAc;AACzC,UAAM6C,iBAAiBpE,QAAQoE,kBAAkB;AAEjD,UAAMC,mBAAmB,MAAM,KAAKH,cAAchD,QAAAA;AAElD,QAAIkD,gBAAgB;AAClB,YAAM,KAAKA,eAAeC,gBAAAA;IAC5B;AACA,QAAI9C,YAAY;AACd,YAAM,KAAKE,KAAK,YAAY;QAAEC,QAAQ;QAAMR,UAAUmD;MAAiB,CAAA;IACzE;AAEA,WAAOA;EACT;EAEA,MAAgBvB,UAAU;AACxB,SAAKlD,WAAW,KAAKA,YAAY;MAC/Bc,QAAQ,MAAM,KAAK4D,kBAAkB,KAAKtE,QAAQ8C,SAASpC,MAAAA;MAC3DuC,MAAM,MAAM,KAAKqB,kBAAkB,KAAKtE,QAAQ8C,SAASG,IAAAA;MACzDsB,OAAO,MAAM,KAAKD,kBAAkB,KAAKtE,QAAQ8C,SAASyB,KAAAA;IAC5D;AACA,WAAOC,SAAS,KAAK5E,QAAQ;EAC/B;EAEA,MAAyB6E,aACvBC,OACAxD,UACAyD,aACmC;AACnC,UAAMC,eAAe,MAAMC,yBAAyBC,WAA2BJ,OAAOxD,QAAAA;AACtF,UAAM6D,eAAe,MAAMH,aAAaI,SAAQ;AAChDR,aAAS,MAAM,KAAKS,UAAUP,OAAOxD,UAAUyD,WAAAA,CAAAA;AAC/C,UAAMO,iBAA4B,CAAA;AAClC,QAAI,KAAKlF,OAAOmF,cAAc;AAC5B,YAAM,KAAKjB,cAAc;QAACQ;OAAM;IAClC;AAEA,YAAQK,aAAaK,QAAM;MACzB,KAAKC,yBAAyB;AAC5BH,uBAAerB,KAAI,GAAK,MAAM,KAAKtD,WAAU,CAAA;AAC7C;MACF;MACA,KAAK+E,2BAA2B;AAC9B,cAAM,KAAK7E,aAAY;AACvB;MACF;MACA,KAAK8E,4BAA4B;AAC/BL,uBAAerB,KAAI,GAAK,MAAM,KAAKlD,cAAa,CAAA;AAChD;MACF;MACA,KAAK6E,4BAA4B;AAC/B,cAAMC,gBAAsC;UAC1C5E,QAAQ;eAAK,MAAM,KAAKC,iBAAiBiE,aAAalE,MAAM;;UAC5DuE,QAAQI;QACV;AACAN,uBAAerB,KAAK4B,aAAAA;AACpB;MACF;MACA,KAAK3F,yBAAyB;AAC5B,YAAIiF,aAAalE,QAAQwC,QAAQ;AAC/B6B,yBAAerB,KAAI,GAAK,MAAM,KAAK7C,cAAc+D,aAAalE,MAAM,CAAA;QACtE,OAAO;AACL,gBAAMoD,OAAO,MAAM,KAAKA,KAAI;AAC5B,cAAIA;AAAMiB,2BAAerB,KAAKI,IAAAA;QAChC;AACA;MACF;MACA,KAAKyB,4BAA4B;AAC/B,cAAMxE,YAAW0D,aAAa1D;AAC9BsD,iBAASI,aAAa1D,UAAU,qBAAqByE,KAAKC,UAAUhB,aAAab,YAAW,GAAI,MAAM,CAAA,CAAA,EAAI;AAC1G,cAAM8B,mBAAmB,MAAMC,eAAeC,cAAc7E,WAAU,MAAM0D,aAAaoB,SAAQ,CAAA;AACjGxB,iBAASqB,iBAAiBxC,WAAWnC,UAASmC,QAAQ,sCAAsCwC,iBAAiBxC,MAAM,OAAOnC,UAASmC,MAAM,GAAG;AAC5I6B,uBAAerB,KAAI,GAAK,MAAM,KAAK1C,iBAAiBD,SAAAA,CAAAA;AAIpD,aAAKvB,uBAAuBkG,iBAAiBI,GAAG,EAAC;AACjD;MACF;MACA,SAAS;AACP,eAAO,MAAM,MAAMxB,aAAaC,OAAOxD,QAAAA;MACzC;IACF;AACA,WAAOgE;EACT;EAEA,MAAgBgB,cAAcC,QAA2BjF,UAAqB;AAC5E,WAAO,MAAMiF,OAAOlF,OAAOC,QAAAA;EAC7B;EAEA,MAAgBkD,eAAelD,UAAyC;AACtE,UAAM4B,UAAU,MAAM,KAAKA,QAAO;AAClC,WAAOsD,QACL,MAAMC,QAAQlG,IACZ4C,OAAOC,OAAOF,QAAQyB,SAAS,CAAC,CAAA,EAAG/B,IAAI,OAAO2D,WAAAA;AAC5C,aAAOA,SAAS,MAAM,KAAKD,cAAcC,QAAQjF,QAAAA,IAAYoF;IAC/D,CAAA,CAAA,CAAA,EAEFC,KAAI;EACR;EAEA,MAAcjC,kBAAkBkC,aAAuB,CAAA,GAAI;AACzD,UAAMC,mBAAmB;SAAK,MAAM,KAAKC,QAAQ;QAAEC,SAASH;MAAW,CAAA;SAAS,MAAM,KAAKE,QAAQ;QAAEE,MAAMJ;MAAW,CAAA;MAAKxE,OACzH6E,gBAAAA;AAGFrC,aACE,CAAC,KAAKzE,qBAAqB0G,iBAAiBpD,WAAWmD,WAAWnD,QAClE,qEAAqEmD,WAAWxE,OAAO,CAACJ,cACtF6E,iBAAiBjE,IAAI,CAACd,WAAW,EAAEA,OAAOiF,YAAY/E,aAAaF,OAAO1B,OAAO4G,SAAShF,UAAQ,CAAA,CAAA,GAChG;AAIN,WAAO6E,iBAAiBK,OAA0C,CAACC,MAAMrF,WAAAA;AACvEqF,WAAKrF,OAAOiF,OAAO,IAAIK,oBAAoBtF,QAAQ,MAAA;AACjDuF,4BAAoBvF,QAAQ;UAAEwF,KAAK9E;QAAQ,CAAA;AAC3C,eAAO,oDAAoDV,OAAOiF,OAAO,KAAKjF,OAAO1B,OAAO4G,IAAI,KAAKlF,OAAO1B,OAAOoF,MAAM;MAC3H,CAAA;AAEA,aAAO2B;IACT,GAAG,CAAC,CAAA;EACN;AACF;","names":["assertEx","compact","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","PayloadHasher","AbstractModuleInstance","duplicateModules","PayloadBuilder","PayloadWrapper","AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","PayloadBuilder","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","PayloadHasher","jsonPayload","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","JSON","stringify","resolvedPayloads","PayloadWrapper","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractArchivist.d.ts","sourceRoot":"","sources":["../../src/AbstractArchivist.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,10 @@ var import_assert = require("@xylabs/assert");
30
30
  var import_lodash = require("@xylabs/lodash");
31
31
  var import_archivist_model = require("@xyo-network/archivist-model");
32
32
  var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
33
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
33
  var import_hash = require("@xyo-network/hash");
35
34
  var import_module_abstract = require("@xyo-network/module-abstract");
36
35
  var import_module_model = require("@xyo-network/module-model");
36
+ var import_payload_builder = require("@xyo-network/payload-builder");
37
37
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
38
38
  var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract.AbstractModuleInstance {
39
39
  _lastInsertedPayload;
@@ -127,18 +127,15 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
127
127
  return deletedHashes;
128
128
  }
129
129
  async getFromParent(hashes, archivist) {
130
- const foundPairs = (await Promise.all((await archivist.get(hashes)).map(async (payload) => [
131
- await import_hash.PayloadHasher.hashAsync(payload),
132
- payload
133
- ]))).filter(([hash]) => {
130
+ const foundPairs = (await import_payload_builder.PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
134
131
  const askedFor = hashes.includes(hash);
135
132
  if (!askedFor) {
136
133
  console.warn(`Parent returned payload with hash not asked for: ${hash}`);
137
134
  }
138
135
  return askedFor;
139
136
  });
140
- const foundHashes = new Set(foundPairs.map(([hash]) => hash));
141
- const foundPayloads = foundPairs.map(([, payload]) => payload);
137
+ const foundHashes = new Set(foundPairs.map(([, hash]) => hash));
138
+ const foundPayloads = foundPairs.map(([payload]) => payload);
142
139
  const notfound = hashes.filter((hash) => !foundHashes.has(hash));
143
140
  return [
144
141
  foundPayloads,
@@ -172,28 +169,19 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
172
169
  }
173
170
  async getWithConfig(hashes, config) {
174
171
  const emitEvents = (config == null ? void 0 : config.emitEvents) ?? true;
175
- const map = await import_payload_wrapper.PayloadWrapper.toMap(await this.getHandler(hashes));
176
- const { foundPayloads, notfoundHashes } = hashes.reduce((prev, hash) => {
177
- const found = map[hash];
172
+ const gotten = await this.getHandler(hashes);
173
+ const map = await import_payload_builder.PayloadBuilder.toHashMap(gotten);
174
+ const dataMap = await import_payload_builder.PayloadBuilder.toDataHashMap(gotten);
175
+ const foundPayloads = [];
176
+ const notfoundHashes = [];
177
+ for (const hash of hashes) {
178
+ const found = map[hash] ?? dataMap[hash];
178
179
  if (found) {
179
- if (found.schema === import_boundwitness_model.BoundWitnessSchema) {
180
- prev.foundPayloads.push({
181
- ...import_hash.PayloadHasher.hashFields(found),
182
- _signatures: found._signatures
183
- });
184
- } else {
185
- prev.foundPayloads.push({
186
- ...import_hash.PayloadHasher.hashFields(found)
187
- });
188
- }
180
+ foundPayloads.push(import_hash.PayloadHasher.jsonPayload(found));
189
181
  } else {
190
- prev.notfoundHashes.push(hash);
182
+ notfoundHashes.push(hash);
191
183
  }
192
- return prev;
193
- }, {
194
- foundPayloads: [],
195
- notfoundHashes: []
196
- });
184
+ }
197
185
  const [parentFoundPayloads] = await this.getFromParents(notfoundHashes);
198
186
  if (this.storeParentReads) {
199
187
  await this.insertWithConfig(parentFoundPayloads);
@@ -235,9 +223,9 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
235
223
  }
236
224
  async queryHandler(query, payloads, queryConfig) {
237
225
  var _a;
238
- const wrappedQuery = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
226
+ const wrappedQuery = await import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
239
227
  const queryPayload = await wrappedQuery.getQuery();
240
- (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
228
+ (0, import_assert.assertEx)(await this.queryable(query, payloads, queryConfig));
241
229
  const resultPayloads = [];
242
230
  if (this.config.storeQueries) {
243
231
  await this.insertHandler([
@@ -278,9 +266,9 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
278
266
  break;
279
267
  }
280
268
  case import_archivist_model.ArchivistInsertQuerySchema: {
281
- const payloads2 = await wrappedQuery.getPayloads();
282
- (0, import_assert.assertEx)(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`);
283
- const resolvedPayloads = await import_payload_wrapper.PayloadWrapper.filterExclude(payloads2, await wrappedQuery.hashAsync());
269
+ const payloads2 = wrappedQuery.payloads;
270
+ (0, import_assert.assertEx)(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`);
271
+ const resolvedPayloads = await import_payload_wrapper.PayloadWrapper.filterExclude(payloads2, await wrappedQuery.dataHash());
284
272
  (0, import_assert.assertEx)(resolvedPayloads.length === payloads2.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads2.length}]`);
285
273
  resultPayloads.push(...await this.insertWithConfig(payloads2));
286
274
  this._lastInsertedPayload = resolvedPayloads.at(-1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts"],"sourcesContent":["export * from './AbstractArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (\n await Promise.all(\n (await archivist.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n ).filter(([hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([hash]) => hash))\n const foundPayloads = foundPairs.map(([, payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const map = await PayloadWrapper.toMap(await this.getHandler(hashes))\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const { foundPayloads, notfoundHashes } = hashes.reduce<{ foundPayloads: Payload[]; notfoundHashes: string[] }>(\n (prev, hash) => {\n const found = map[hash]\n if (found) {\n //TODO: Find a better way to scrub meta data without scrubbing _signatures\n if (found.schema === BoundWitnessSchema) {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found), _signatures: (found as BoundWitness)._signatures } as BoundWitness)\n } else {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found) } as Payload)\n }\n } else {\n prev.notfoundHashes.push(hash)\n }\n return prev\n },\n { foundPayloads: [], notfoundHashes: [] },\n )\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = await wrappedQuery.getPayloads()\n assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.hashAsync())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","Promise","map","payload","PayloadHasher","hashAsync","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","PayloadWrapper","toMap","notfoundHashes","reduce","prev","schema","BoundWitnessSchema","push","hashFields","_signatures","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","getPayloads","JSON","stringify","resolvedPayloads","filterExclude","at","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","asArchivistInstance","isArchivistInstance","log"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts"],"sourcesContent":["export * from './AbstractArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const gotten = await this.getHandler(hashes)\n const map = await PayloadBuilder.toHashMap(gotten)\n const dataMap = await PayloadBuilder.toDataHashMap(gotten)\n\n const foundPayloads: WithMeta<Payload>[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push(PayloadHasher.jsonPayload(found) as WithMeta<Payload>)\n } else {\n notfoundHashes.push(hash)\n }\n }\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = wrappedQuery.payloads\n assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.dataHash())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","PayloadBuilder","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","PayloadHasher","jsonPayload","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","JSON","stringify","resolvedPayloads","PayloadWrapper","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
@@ -6,10 +6,10 @@ import { assertEx } from "@xylabs/assert";
6
6
  import { compact } from "@xylabs/lodash";
7
7
  import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistDeleteQuerySchema, ArchivistGetQuerySchema, ArchivistInsertQuerySchema, asArchivistInstance, isArchivistInstance } from "@xyo-network/archivist-model";
8
8
  import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
9
- import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
10
9
  import { PayloadHasher } from "@xyo-network/hash";
11
10
  import { AbstractModuleInstance } from "@xyo-network/module-abstract";
12
11
  import { duplicateModules } from "@xyo-network/module-model";
12
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
13
13
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
14
14
  var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance {
15
15
  _lastInsertedPayload;
@@ -103,18 +103,15 @@ var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
103
103
  return deletedHashes;
104
104
  }
105
105
  async getFromParent(hashes, archivist) {
106
- const foundPairs = (await Promise.all((await archivist.get(hashes)).map(async (payload) => [
107
- await PayloadHasher.hashAsync(payload),
108
- payload
109
- ]))).filter(([hash]) => {
106
+ const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
110
107
  const askedFor = hashes.includes(hash);
111
108
  if (!askedFor) {
112
109
  console.warn(`Parent returned payload with hash not asked for: ${hash}`);
113
110
  }
114
111
  return askedFor;
115
112
  });
116
- const foundHashes = new Set(foundPairs.map(([hash]) => hash));
117
- const foundPayloads = foundPairs.map(([, payload]) => payload);
113
+ const foundHashes = new Set(foundPairs.map(([, hash]) => hash));
114
+ const foundPayloads = foundPairs.map(([payload]) => payload);
118
115
  const notfound = hashes.filter((hash) => !foundHashes.has(hash));
119
116
  return [
120
117
  foundPayloads,
@@ -148,28 +145,19 @@ var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
148
145
  }
149
146
  async getWithConfig(hashes, config) {
150
147
  const emitEvents = (config == null ? void 0 : config.emitEvents) ?? true;
151
- const map = await PayloadWrapper.toMap(await this.getHandler(hashes));
152
- const { foundPayloads, notfoundHashes } = hashes.reduce((prev, hash) => {
153
- const found = map[hash];
148
+ const gotten = await this.getHandler(hashes);
149
+ const map = await PayloadBuilder.toHashMap(gotten);
150
+ const dataMap = await PayloadBuilder.toDataHashMap(gotten);
151
+ const foundPayloads = [];
152
+ const notfoundHashes = [];
153
+ for (const hash of hashes) {
154
+ const found = map[hash] ?? dataMap[hash];
154
155
  if (found) {
155
- if (found.schema === BoundWitnessSchema) {
156
- prev.foundPayloads.push({
157
- ...PayloadHasher.hashFields(found),
158
- _signatures: found._signatures
159
- });
160
- } else {
161
- prev.foundPayloads.push({
162
- ...PayloadHasher.hashFields(found)
163
- });
164
- }
156
+ foundPayloads.push(PayloadHasher.jsonPayload(found));
165
157
  } else {
166
- prev.notfoundHashes.push(hash);
158
+ notfoundHashes.push(hash);
167
159
  }
168
- return prev;
169
- }, {
170
- foundPayloads: [],
171
- notfoundHashes: []
172
- });
160
+ }
173
161
  const [parentFoundPayloads] = await this.getFromParents(notfoundHashes);
174
162
  if (this.storeParentReads) {
175
163
  await this.insertWithConfig(parentFoundPayloads);
@@ -211,9 +199,9 @@ var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
211
199
  }
212
200
  async queryHandler(query, payloads, queryConfig) {
213
201
  var _a;
214
- const wrappedQuery = QueryBoundWitnessWrapper.parseQuery(query, payloads);
202
+ const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery(query, payloads);
215
203
  const queryPayload = await wrappedQuery.getQuery();
216
- assertEx(this.queryable(query, payloads, queryConfig));
204
+ assertEx(await this.queryable(query, payloads, queryConfig));
217
205
  const resultPayloads = [];
218
206
  if (this.config.storeQueries) {
219
207
  await this.insertHandler([
@@ -254,9 +242,9 @@ var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
254
242
  break;
255
243
  }
256
244
  case ArchivistInsertQuerySchema: {
257
- const payloads2 = await wrappedQuery.getPayloads();
258
- assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`);
259
- const resolvedPayloads = await PayloadWrapper.filterExclude(payloads2, await wrappedQuery.hashAsync());
245
+ const payloads2 = wrappedQuery.payloads;
246
+ assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`);
247
+ const resolvedPayloads = await PayloadWrapper.filterExclude(payloads2, await wrappedQuery.dataHash());
260
248
  assertEx(resolvedPayloads.length === payloads2.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads2.length}]`);
261
249
  resultPayloads.push(...await this.insertWithConfig(payloads2));
262
250
  this._lastInsertedPayload = resolvedPayloads.at(-1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (\n await Promise.all(\n (await archivist.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),\n )\n ).filter(([hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([hash]) => hash))\n const foundPayloads = foundPairs.map(([, payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const map = await PayloadWrapper.toMap(await this.getHandler(hashes))\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const { foundPayloads, notfoundHashes } = hashes.reduce<{ foundPayloads: Payload[]; notfoundHashes: string[] }>(\n (prev, hash) => {\n const found = map[hash]\n if (found) {\n //TODO: Find a better way to scrub meta data without scrubbing _signatures\n if (found.schema === BoundWitnessSchema) {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found), _signatures: (found as BoundWitness)._signatures } as BoundWitness)\n } else {\n prev.foundPayloads.push({ ...PayloadHasher.hashFields(found) } as Payload)\n }\n } else {\n prev.notfoundHashes.push(hash)\n }\n return prev\n },\n { foundPayloads: [], notfoundHashes: [] },\n )\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = await wrappedQuery.getPayloads()\n assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.hashAsync())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["assertEx","compact","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","BoundWitnessSchema","PayloadHasher","AbstractModuleInstance","duplicateModules","PayloadWrapper","AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","Promise","map","payload","PayloadHasher","hashAsync","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","PayloadWrapper","toMap","notfoundHashes","reduce","prev","schema","BoundWitnessSchema","push","hashFields","_signatures","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","getPayloads","JSON","stringify","resolvedPayloads","filterExclude","at","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","asArchivistInstance","isArchivistInstance","log"]}
1
+ {"version":3,"sources":["../../src/AbstractArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistParams,\n ArchivistQuery,\n ArchivistQueryBase,\n asArchivistInstance,\n isArchivistInstance,\n} from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport interface ActionConfig {\n emitEvents?: boolean\n}\n\nexport interface InsertConfig extends ActionConfig {\n writeToParents?: boolean\n}\n\nexport interface ArchivistParentInstances {\n commit?: Record<string, ArchivistInstance>\n read?: Record<string, ArchivistInstance>\n write?: Record<string, ArchivistInstance>\n}\n\nexport abstract class AbstractArchivist<\n TParams extends ArchivistParams = ArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements ArchivistInstance<TParams>\n{\n private _lastInsertedPayload: Payload | undefined\n private _parents?: ArchivistParentInstances\n\n override get queries(): string[] {\n return [ArchivistGetQuerySchema, ...super.queries]\n }\n\n get requireAllParents() {\n return this.config.requireAllParents ?? false\n }\n\n protected override get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string> {\n return {\n 'network.xyo.query.archivist.all': '1/1',\n 'network.xyo.query.archivist.clear': '1/2',\n 'network.xyo.query.archivist.commit': '1/3',\n 'network.xyo.query.archivist.delete': '1/4',\n 'network.xyo.query.archivist.get': '1/5',\n 'network.xyo.query.archivist.insert': '1/6',\n }\n }\n\n protected get storeParentReads() {\n return !!this.config?.storeParentReads\n }\n\n all(): PromisableArray<Payload> {\n this._noOverride('all')\n return this.busy(async () => {\n await this.started('throw')\n return await this.allHandler()\n })\n }\n\n clear(): Promisable<void> {\n this._noOverride('clear')\n return this.busy(async () => {\n await this.started('throw')\n return await this.clearHandler()\n })\n }\n\n commit(): Promisable<BoundWitness[]> {\n this._noOverride('commit')\n return this.busy(async () => {\n await this.started('throw')\n return await this.commitHandler()\n })\n }\n\n async delete(hashes: string[]): Promise<string[]> {\n this._noOverride('delete')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.deleteWithConfig(hashes)\n })\n }\n\n async get(hashes: string[]): Promise<Payload[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.getWithConfig(hashes)\n })\n }\n\n async insert(payloads: Payload[]): Promise<Payload[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.insertWithConfig(payloads)\n })\n }\n\n protected allHandler(): PromisableArray<Payload> {\n throw new Error('Not implemented')\n }\n\n protected clearHandler(): Promisable<void> {\n throw new Error('Not implemented')\n }\n\n protected commitHandler(): Promisable<BoundWitness[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: string[]): PromisableArray<string> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]> {\n const emitEvents = config?.emitEvents ?? true\n\n const deletedHashes = await this.deleteHandler(hashes)\n\n if (emitEvents) {\n await this.emit('deleted', { hashes: deletedHashes, module: this })\n }\n\n return deletedHashes\n }\n\n protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {\n const askedFor = hashes.includes(hash)\n if (!askedFor) {\n console.warn(`Parent returned payload with hash not asked for: ${hash}`)\n //throw Error(`Parent returned payload with hash not asked for: ${hash}`)\n }\n return askedFor\n })\n\n const foundHashes = new Set(foundPairs.map(([, hash]) => hash))\n const foundPayloads = foundPairs.map(([payload]) => payload)\n\n const notfound = hashes.filter((hash) => !foundHashes.has(hash))\n return [foundPayloads, notfound]\n }\n\n protected async getFromParents(hashes: string[]): Promise<[Payload[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: Payload[] = []\n\n //intentionally doing this serially\n while (parentIndex < parents.length && remainingHashes.length > 0) {\n const [found, notfound] = await this.getFromParent(remainingHashes, parents[parentIndex])\n result = [...result, ...found]\n remainingHashes = notfound\n parentIndex++\n }\n return [result, remainingHashes]\n }\n\n protected getHandler(_hashes: string[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const emitEvents = config?.emitEvents ?? true\n const gotten = await this.getHandler(hashes)\n const map = await PayloadBuilder.toHashMap(gotten)\n const dataMap = await PayloadBuilder.toDataHashMap(gotten)\n\n const foundPayloads: WithMeta<Payload>[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push(PayloadHasher.jsonPayload(found) as WithMeta<Payload>)\n } else {\n notfoundHashes.push(hash)\n }\n }\n\n const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return [...foundPayloads, ...parentFoundPayloads]\n }\n\n protected head(): Promisable<Payload | undefined> {\n return this._lastInsertedPayload\n }\n\n protected insertHandler(_payloads: Payload[]): Promise<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await this.insertHandler(payloads)\n\n if (writeToParents) {\n await this.writeToParents(insertedPayloads)\n }\n if (emitEvents) {\n await this.emit('inserted', { module: this, payloads: insertedPayloads })\n }\n\n return insertedPayloads\n }\n\n protected async parents() {\n this._parents = this._parents ?? {\n commit: await this.resolveArchivists(this.config?.parents?.commit),\n read: await this.resolveArchivists(this.config?.parents?.read),\n write: await this.resolveArchivists(this.config?.parents?.write),\n }\n return assertEx(this._parents)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)\n const queryPayload = await wrappedQuery.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n\n switch (queryPayload.schema) {\n case ArchivistAllQuerySchema: {\n resultPayloads.push(...(await this.allHandler()))\n break\n }\n case ArchivistClearQuerySchema: {\n await this.clearHandler()\n break\n }\n case ArchivistCommitQuerySchema: {\n resultPayloads.push(...(await this.commitHandler()))\n break\n }\n case ArchivistDeleteQuerySchema: {\n const resultPayload: ArchivistDeleteQuery = {\n hashes: [...(await this.deleteWithConfig(queryPayload.hashes))],\n schema: ArchivistDeleteQuerySchema,\n }\n resultPayloads.push(resultPayload)\n break\n }\n case ArchivistGetQuerySchema: {\n if (queryPayload.hashes?.length) {\n resultPayloads.push(...(await this.getWithConfig(queryPayload.hashes)))\n } else {\n const head = await this.head()\n if (head) resultPayloads.push(head)\n }\n break\n }\n case ArchivistInsertQuerySchema: {\n const payloads = wrappedQuery.payloads\n assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.dataHash())\n assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)\n resultPayloads.push(...(await this.insertWithConfig(payloads)))\n // NOTE: There isn't an exact equivalence between what we get and what we store. Once\n // we move to returning only inserted Payloads(/hash) instead of a BoundWitness, we\n // can grab the actual last one\n this._lastInsertedPayload = resolvedPayloads.at(-1)\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]) {\n return await parent.insert(payloads)\n }\n\n protected async writeToParents(payloads: Payload[]): Promise<Payload[]> {\n const parents = await this.parents()\n return compact(\n await Promise.all(\n Object.values(parents.write ?? {}).map(async (parent) => {\n return parent ? await this.writeToParent(parent, payloads) : undefined\n }),\n ),\n ).flat()\n }\n\n private async resolveArchivists(archivists: string[] = []) {\n const archivistModules = [...(await this.resolve({ address: archivists })), ...(await this.resolve({ name: archivists }))].filter(\n duplicateModules,\n )\n\n assertEx(\n !this.requireAllParents || archivistModules.length === archivists.length,\n `Failed to find some archivists (set allRequired to false if ok): [${archivists.filter((archivist) =>\n archivistModules.map((module) => !(module.address === archivist || module.config.name === archivist)),\n )}]`,\n )\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistModules.reduce<Record<string, ArchivistInstance>>((prev, module) => {\n prev[module.address] = asArchivistInstance(module, () => {\n isArchivistInstance(module, { log: console })\n return `Unable to cast resolved module to an archivist: [${module.address}, ${module.config.name}, ${module.config.schema})}]`\n })\n\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["assertEx","compact","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","ArchivistGetQuerySchema","ArchivistInsertQuerySchema","asArchivistInstance","isArchivistInstance","QueryBoundWitnessWrapper","PayloadHasher","AbstractModuleInstance","duplicateModules","PayloadBuilder","PayloadWrapper","AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","PayloadBuilder","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","map","foundPayloads","payload","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","PayloadHasher","jsonPayload","parentFoundPayloads","head","insertHandler","_payloads","writeToParents","insertedPayloads","resolveArchivists","write","assertEx","queryHandler","query","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","queryable","resultPayloads","storeQueries","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","JSON","stringify","resolvedPayloads","PayloadWrapper","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
package/package.json CHANGED
@@ -13,14 +13,15 @@
13
13
  "@xylabs/assert": "^2.13.29",
14
14
  "@xylabs/lodash": "^2.13.29",
15
15
  "@xylabs/promise": "^2.13.29",
16
- "@xyo-network/archivist-model": "~2.88.3",
17
- "@xyo-network/boundwitness-builder": "~2.88.3",
18
- "@xyo-network/boundwitness-model": "~2.88.3",
19
- "@xyo-network/hash": "~2.88.3",
20
- "@xyo-network/module-abstract": "~2.88.3",
21
- "@xyo-network/module-model": "~2.88.3",
22
- "@xyo-network/payload-model": "~2.88.3",
23
- "@xyo-network/payload-wrapper": "~2.88.3"
16
+ "@xyo-network/archivist-model": "~2.89.0-rc.2",
17
+ "@xyo-network/boundwitness-builder": "~2.89.0-rc.2",
18
+ "@xyo-network/boundwitness-model": "~2.89.0-rc.2",
19
+ "@xyo-network/hash": "~2.89.0-rc.2",
20
+ "@xyo-network/module-abstract": "~2.89.0-rc.2",
21
+ "@xyo-network/module-model": "~2.89.0-rc.2",
22
+ "@xyo-network/payload-builder": "~2.89.0-rc.2",
23
+ "@xyo-network/payload-model": "~2.89.0-rc.2",
24
+ "@xyo-network/payload-wrapper": "~2.89.0-rc.2"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
@@ -66,6 +67,7 @@
66
67
  },
67
68
  "sideEffects": false,
68
69
  "types": "dist/node/index.d.ts",
69
- "version": "2.88.3",
70
- "type": "module"
70
+ "version": "2.89.0-rc.2",
71
+ "type": "module",
72
+ "stableVersion": "2.88.3"
71
73
  }
@@ -18,11 +18,12 @@ import {
18
18
  isArchivistInstance,
19
19
  } from '@xyo-network/archivist-model'
20
20
  import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
21
- import { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model'
21
+ import { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'
22
22
  import { PayloadHasher } from '@xyo-network/hash'
23
23
  import { AbstractModuleInstance } from '@xyo-network/module-abstract'
24
24
  import { duplicateModules, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'
25
- import { Payload } from '@xyo-network/payload-model'
25
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
26
+ import { Payload, WithMeta } from '@xyo-network/payload-model'
26
27
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
27
28
 
28
29
  export interface ActionConfig {
@@ -149,11 +150,7 @@ export abstract class AbstractArchivist<
149
150
  }
150
151
 
151
152
  protected async getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]> {
152
- const foundPairs = (
153
- await Promise.all(
154
- (await archivist.get(hashes)).map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),
155
- )
156
- ).filter(([hash]) => {
153
+ const foundPairs = (await PayloadBuilder.dataHashPairs(await archivist.get(hashes))).filter(([, hash]) => {
157
154
  const askedFor = hashes.includes(hash)
158
155
  if (!askedFor) {
159
156
  console.warn(`Parent returned payload with hash not asked for: ${hash}`)
@@ -162,8 +159,8 @@ export abstract class AbstractArchivist<
162
159
  return askedFor
163
160
  })
164
161
 
165
- const foundHashes = new Set(foundPairs.map(([hash]) => hash))
166
- const foundPayloads = foundPairs.map(([, payload]) => payload)
162
+ const foundHashes = new Set(foundPairs.map(([, hash]) => hash))
163
+ const foundPayloads = foundPairs.map(([payload]) => payload)
167
164
 
168
165
  const notfound = hashes.filter((hash) => !foundHashes.has(hash))
169
166
  return [foundPayloads, notfound]
@@ -192,26 +189,20 @@ export abstract class AbstractArchivist<
192
189
  protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]> {
193
190
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
194
191
  const emitEvents = config?.emitEvents ?? true
195
- const map = await PayloadWrapper.toMap(await this.getHandler(hashes))
196
-
197
- // eslint-disable-next-line unicorn/no-array-reduce
198
- const { foundPayloads, notfoundHashes } = hashes.reduce<{ foundPayloads: Payload[]; notfoundHashes: string[] }>(
199
- (prev, hash) => {
200
- const found = map[hash]
201
- if (found) {
202
- //TODO: Find a better way to scrub meta data without scrubbing _signatures
203
- if (found.schema === BoundWitnessSchema) {
204
- prev.foundPayloads.push({ ...PayloadHasher.hashFields(found), _signatures: (found as BoundWitness)._signatures } as BoundWitness)
205
- } else {
206
- prev.foundPayloads.push({ ...PayloadHasher.hashFields(found) } as Payload)
207
- }
208
- } else {
209
- prev.notfoundHashes.push(hash)
210
- }
211
- return prev
212
- },
213
- { foundPayloads: [], notfoundHashes: [] },
214
- )
192
+ const gotten = await this.getHandler(hashes)
193
+ const map = await PayloadBuilder.toHashMap(gotten)
194
+ const dataMap = await PayloadBuilder.toDataHashMap(gotten)
195
+
196
+ const foundPayloads: WithMeta<Payload>[] = []
197
+ const notfoundHashes: string[] = []
198
+ for (const hash of hashes) {
199
+ const found = map[hash] ?? dataMap[hash]
200
+ if (found) {
201
+ foundPayloads.push(PayloadHasher.jsonPayload(found) as WithMeta<Payload>)
202
+ } else {
203
+ notfoundHashes.push(hash)
204
+ }
205
+ }
215
206
 
216
207
  const [parentFoundPayloads] = await this.getFromParents(notfoundHashes)
217
208
 
@@ -259,9 +250,9 @@ export abstract class AbstractArchivist<
259
250
  payloads?: Payload[],
260
251
  queryConfig?: TConfig,
261
252
  ): Promise<ModuleQueryHandlerResult> {
262
- const wrappedQuery = QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)
253
+ const wrappedQuery = await QueryBoundWitnessWrapper.parseQuery<ArchivistQuery>(query, payloads)
263
254
  const queryPayload = await wrappedQuery.getQuery()
264
- assertEx(this.queryable(query, payloads, queryConfig))
255
+ assertEx(await this.queryable(query, payloads, queryConfig))
265
256
  const resultPayloads: Payload[] = []
266
257
  if (this.config.storeQueries) {
267
258
  await this.insertHandler([query])
@@ -298,9 +289,9 @@ export abstract class AbstractArchivist<
298
289
  break
299
290
  }
300
291
  case ArchivistInsertQuerySchema: {
301
- const payloads = await wrappedQuery.getPayloads()
302
- assertEx(await wrappedQuery.getPayloads(), `Missing payloads: ${JSON.stringify(wrappedQuery.payload(), null, 2)}`)
303
- const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.hashAsync())
292
+ const payloads = wrappedQuery.payloads
293
+ assertEx(wrappedQuery.payloads, `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)
294
+ const resolvedPayloads = await PayloadWrapper.filterExclude(payloads, await wrappedQuery.dataHash())
304
295
  assertEx(resolvedPayloads.length === payloads.length, `Could not find some passed hashes [${resolvedPayloads.length} != ${payloads.length}]`)
305
296
  resultPayloads.push(...(await this.insertWithConfig(payloads)))
306
297
  // NOTE: There isn't an exact equivalence between what we get and what we store. Once