@xyo-network/archivist-abstract 2.90.2 → 2.90.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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, 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'\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 assertEx(payloads, () => `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payload_hashes)\n assertEx(\n resolvedPayloads.length === query.payload_hashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payload_hashes.length}]`,\n )\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n resultPayloads.push(...(await this.insertWithConfig(payloadsWithoutQuery)))\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 () =>\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","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","filterIncludeByDataHash","payload_hashes","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","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 { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\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<WithMeta<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<WithMeta<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<WithMeta<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<WithMeta<Payload>[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n //make sure all incoming payloads have proper $hash and $meta\n return await this.insertWithConfig(await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload, true))))\n })\n }\n\n protected allHandler(): PromisableArray<WithMeta<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<WithMeta<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<[WithMeta<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<[WithMeta<Payload>[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<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<PayloadWithMeta[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<PayloadWithMeta[]> {\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: PayloadWithMeta[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push((await PayloadBuilder.build(found)) as PayloadWithMeta)\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<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\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 return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<PayloadWithMeta[]> {\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\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 resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, payloads)))\n break\n }\n default: {\n const result = await super.queryHandler(query, payloads)\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([query])\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<PayloadWithMeta[]> {\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 () =>\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","AbstractModuleInstance","duplicateModules","PayloadBuilder","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","Promise","map","payload","PayloadBuilder","build","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}
@@ -1,9 +1,10 @@
1
1
  import { Promisable, PromisableArray } from '@xylabs/promise';
2
2
  import { ArchivistInstance, ArchivistModuleEventData, ArchivistParams, ArchivistQueryBase } from '@xyo-network/archivist-model';
3
3
  import { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model';
4
+ import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
4
5
  import { AbstractModuleInstance } from '@xyo-network/module-abstract';
5
6
  import { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model';
6
- import { Payload } from '@xyo-network/payload-model';
7
+ import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
7
8
  export interface ActionConfig {
8
9
  emitEvents?: boolean;
9
10
  }
@@ -22,30 +23,31 @@ export declare abstract class AbstractArchivist<TParams extends ArchivistParams
22
23
  get requireAllParents(): boolean;
23
24
  protected get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string>;
24
25
  protected get storeParentReads(): boolean;
25
- all(): PromisableArray<Payload>;
26
+ all(): PromisableArray<WithMeta<Payload>>;
26
27
  clear(): Promisable<void>;
27
- commit(): Promisable<BoundWitness[]>;
28
+ commit(): Promisable<WithMeta<BoundWitness>[]>;
28
29
  delete(hashes: string[]): Promise<string[]>;
29
- get(hashes: string[]): Promise<Payload[]>;
30
- insert(payloads: Payload[]): Promise<Payload[]>;
31
- protected allHandler(): PromisableArray<Payload>;
30
+ get(hashes: string[]): Promise<WithMeta<Payload>[]>;
31
+ insert(payloads: Payload[]): Promise<WithMeta<Payload>[]>;
32
+ protected allHandler(): PromisableArray<WithMeta<Payload>>;
32
33
  protected clearHandler(): Promisable<void>;
33
- protected commitHandler(): Promisable<BoundWitness[]>;
34
+ protected commitHandler(): Promisable<WithMeta<BoundWitness>[]>;
34
35
  protected deleteHandler(_hashes: string[]): PromisableArray<string>;
35
36
  protected deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]>;
36
- protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]>;
37
- protected getFromParents(hashes: string[]): Promise<[Payload[], string[]]>;
38
- protected getHandler(_hashes: string[]): Promisable<Payload[]>;
39
- protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]>;
37
+ protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], string[]]>;
38
+ protected getFromParents(hashes: string[]): Promise<[WithMeta<Payload>[], string[]]>;
39
+ protected getHandler(_hashes: string[]): Promisable<PayloadWithMeta[]>;
40
+ protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
40
41
  protected head(): Promisable<Payload | undefined>;
41
- protected insertHandler(_payloads: Payload[]): Promise<Payload[]>;
42
- protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]>;
42
+ protected insertHandler(_payloads: Payload[]): Promise<WithMeta<Payload>[]>;
43
+ protected insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]): Promise<PayloadWithMeta[]>;
44
+ protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
43
45
  protected parents(): Promise<ArchivistParentInstances>;
44
46
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
45
- protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<({
47
+ protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<WithMeta<{
46
48
  schema: string;
47
- } & object)[]>;
48
- protected writeToParents(payloads: Payload[]): Promise<Payload[]>;
49
+ } & object>[]>;
50
+ protected writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]>;
49
51
  private resolveArchivists;
50
52
  }
51
53
  //# sourceMappingURL=AbstractArchivist.d.ts.map
@@ -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,9 +1,10 @@
1
1
  import { Promisable, PromisableArray } from '@xylabs/promise';
2
2
  import { ArchivistInstance, ArchivistModuleEventData, ArchivistParams, ArchivistQueryBase } from '@xyo-network/archivist-model';
3
3
  import { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model';
4
+ import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
4
5
  import { AbstractModuleInstance } from '@xyo-network/module-abstract';
5
6
  import { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model';
6
- import { Payload } from '@xyo-network/payload-model';
7
+ import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
7
8
  export interface ActionConfig {
8
9
  emitEvents?: boolean;
9
10
  }
@@ -22,30 +23,31 @@ export declare abstract class AbstractArchivist<TParams extends ArchivistParams
22
23
  get requireAllParents(): boolean;
23
24
  protected get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string>;
24
25
  protected get storeParentReads(): boolean;
25
- all(): PromisableArray<Payload>;
26
+ all(): PromisableArray<WithMeta<Payload>>;
26
27
  clear(): Promisable<void>;
27
- commit(): Promisable<BoundWitness[]>;
28
+ commit(): Promisable<WithMeta<BoundWitness>[]>;
28
29
  delete(hashes: string[]): Promise<string[]>;
29
- get(hashes: string[]): Promise<Payload[]>;
30
- insert(payloads: Payload[]): Promise<Payload[]>;
31
- protected allHandler(): PromisableArray<Payload>;
30
+ get(hashes: string[]): Promise<WithMeta<Payload>[]>;
31
+ insert(payloads: Payload[]): Promise<WithMeta<Payload>[]>;
32
+ protected allHandler(): PromisableArray<WithMeta<Payload>>;
32
33
  protected clearHandler(): Promisable<void>;
33
- protected commitHandler(): Promisable<BoundWitness[]>;
34
+ protected commitHandler(): Promisable<WithMeta<BoundWitness>[]>;
34
35
  protected deleteHandler(_hashes: string[]): PromisableArray<string>;
35
36
  protected deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]>;
36
- protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]>;
37
- protected getFromParents(hashes: string[]): Promise<[Payload[], string[]]>;
38
- protected getHandler(_hashes: string[]): Promisable<Payload[]>;
39
- protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]>;
37
+ protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], string[]]>;
38
+ protected getFromParents(hashes: string[]): Promise<[WithMeta<Payload>[], string[]]>;
39
+ protected getHandler(_hashes: string[]): Promisable<PayloadWithMeta[]>;
40
+ protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
40
41
  protected head(): Promisable<Payload | undefined>;
41
- protected insertHandler(_payloads: Payload[]): Promise<Payload[]>;
42
- protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]>;
42
+ protected insertHandler(_payloads: Payload[]): Promise<WithMeta<Payload>[]>;
43
+ protected insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]): Promise<PayloadWithMeta[]>;
44
+ protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
43
45
  protected parents(): Promise<ArchivistParentInstances>;
44
46
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
45
- protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<({
47
+ protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<WithMeta<{
46
48
  schema: string;
47
- } & object)[]>;
48
- protected writeToParents(payloads: Payload[]): Promise<Payload[]>;
49
+ } & object>[]>;
50
+ protected writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]>;
49
51
  private resolveArchivists;
50
52
  }
51
53
  //# sourceMappingURL=AbstractArchivist.d.ts.map
@@ -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,9 +1,10 @@
1
1
  import { Promisable, PromisableArray } from '@xylabs/promise';
2
2
  import { ArchivistInstance, ArchivistModuleEventData, ArchivistParams, ArchivistQueryBase } from '@xyo-network/archivist-model';
3
3
  import { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model';
4
+ import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
4
5
  import { AbstractModuleInstance } from '@xyo-network/module-abstract';
5
6
  import { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model';
6
- import { Payload } from '@xyo-network/payload-model';
7
+ import { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model';
7
8
  export interface ActionConfig {
8
9
  emitEvents?: boolean;
9
10
  }
@@ -22,30 +23,31 @@ export declare abstract class AbstractArchivist<TParams extends ArchivistParams
22
23
  get requireAllParents(): boolean;
23
24
  protected get _queryAccountPaths(): Record<ArchivistQueryBase['schema'], string>;
24
25
  protected get storeParentReads(): boolean;
25
- all(): PromisableArray<Payload>;
26
+ all(): PromisableArray<WithMeta<Payload>>;
26
27
  clear(): Promisable<void>;
27
- commit(): Promisable<BoundWitness[]>;
28
+ commit(): Promisable<WithMeta<BoundWitness>[]>;
28
29
  delete(hashes: string[]): Promise<string[]>;
29
- get(hashes: string[]): Promise<Payload[]>;
30
- insert(payloads: Payload[]): Promise<Payload[]>;
31
- protected allHandler(): PromisableArray<Payload>;
30
+ get(hashes: string[]): Promise<WithMeta<Payload>[]>;
31
+ insert(payloads: Payload[]): Promise<WithMeta<Payload>[]>;
32
+ protected allHandler(): PromisableArray<WithMeta<Payload>>;
32
33
  protected clearHandler(): Promisable<void>;
33
- protected commitHandler(): Promisable<BoundWitness[]>;
34
+ protected commitHandler(): Promisable<WithMeta<BoundWitness>[]>;
34
35
  protected deleteHandler(_hashes: string[]): PromisableArray<string>;
35
36
  protected deleteWithConfig(hashes: string[], config?: ActionConfig): Promise<string[]>;
36
- protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[Payload[], string[]]>;
37
- protected getFromParents(hashes: string[]): Promise<[Payload[], string[]]>;
38
- protected getHandler(_hashes: string[]): Promisable<Payload[]>;
39
- protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<Payload[]>;
37
+ protected getFromParent(hashes: string[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], string[]]>;
38
+ protected getFromParents(hashes: string[]): Promise<[WithMeta<Payload>[], string[]]>;
39
+ protected getHandler(_hashes: string[]): Promisable<PayloadWithMeta[]>;
40
+ protected getWithConfig(hashes: string[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
40
41
  protected head(): Promisable<Payload | undefined>;
41
- protected insertHandler(_payloads: Payload[]): Promise<Payload[]>;
42
- protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<Payload[]>;
42
+ protected insertHandler(_payloads: Payload[]): Promise<WithMeta<Payload>[]>;
43
+ protected insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]): Promise<PayloadWithMeta[]>;
44
+ protected insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<PayloadWithMeta[]>;
43
45
  protected parents(): Promise<ArchivistParentInstances>;
44
46
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
45
- protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<({
47
+ protected writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<WithMeta<{
46
48
  schema: string;
47
- } & object)[]>;
48
- protected writeToParents(payloads: Payload[]): Promise<Payload[]>;
49
+ } & object>[]>;
50
+ protected writeToParents(payloads: Payload[]): Promise<PayloadWithMeta[]>;
49
51
  private resolveArchivists;
50
52
  }
51
53
  //# sourceMappingURL=AbstractArchivist.d.ts.map
@@ -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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"}
@@ -29,8 +29,7 @@ module.exports = __toCommonJS(src_exports);
29
29
  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
- var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
33
- var import_hash = require("@xyo-network/hash");
32
+ var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
34
33
  var import_module_abstract = require("@xyo-network/module-abstract");
35
34
  var import_module_model = require("@xyo-network/module-model");
36
35
  var import_payload_builder = require("@xyo-network/payload-builder");
@@ -99,7 +98,7 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
99
98
  this._noOverride("insert");
100
99
  return await this.busy(async () => {
101
100
  await this.started("throw");
102
- return await this.insertWithConfig(payloads);
101
+ return await this.insertWithConfig(await Promise.all(payloads.map((payload) => import_payload_builder.PayloadBuilder.build(payload, true))));
103
102
  });
104
103
  }
105
104
  allHandler() {
@@ -176,7 +175,7 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
176
175
  for (const hash of hashes) {
177
176
  const found = map[hash] ?? dataMap[hash];
178
177
  if (found) {
179
- foundPayloads.push(import_hash.PayloadHasher.jsonPayload(found));
178
+ foundPayloads.push(await import_payload_builder.PayloadBuilder.build(found));
180
179
  } else {
181
180
  notfoundHashes.push(hash);
182
181
  }
@@ -196,6 +195,16 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
196
195
  insertHandler(_payloads) {
197
196
  throw new Error("Not implemented");
198
197
  }
198
+ async insertQueryHandler(query, payloads) {
199
+ (0, import_assert.assertEx)(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`);
200
+ const resolvedPayloads = await import_payload_builder.PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes);
201
+ (0, import_assert.assertEx)(resolvedPayloads.length === query.payloadHashes.length, () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`);
202
+ const queryPayload = await query.getQuery();
203
+ const payloadsWithoutQuery = await import_payload_builder.PayloadBuilder.filterExclude(resolvedPayloads, await import_payload_builder.PayloadBuilder.dataHash(queryPayload));
204
+ const result = await this.insertWithConfig(payloadsWithoutQuery);
205
+ this._lastInsertedPayload = resolvedPayloads.at(-1);
206
+ return result;
207
+ }
199
208
  async insertWithConfig(payloads, config) {
200
209
  const emitEvents = (config == null ? void 0 : config.emitEvents) ?? true;
201
210
  const writeToParents = (config == null ? void 0 : config.writeToParents) ?? true;
@@ -222,15 +231,10 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
222
231
  }
223
232
  async queryHandler(query, payloads, queryConfig) {
224
233
  var _a;
225
- const wrappedQuery = await import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
234
+ const wrappedQuery = await import_boundwitness_wrapper.QueryBoundWitnessWrapper.parseQuery(query, payloads);
226
235
  const queryPayload = await wrappedQuery.getQuery();
227
236
  (0, import_assert.assertEx)(await this.queryable(query, payloads, queryConfig));
228
237
  const resultPayloads = [];
229
- if (this.config.storeQueries) {
230
- await this.insertHandler([
231
- query
232
- ]);
233
- }
234
238
  switch (queryPayload.schema) {
235
239
  case import_archivist_model.ArchivistAllQuerySchema: {
236
240
  resultPayloads.push(...await this.allHandler());
@@ -265,18 +269,24 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
265
269
  break;
266
270
  }
267
271
  case import_archivist_model.ArchivistInsertQuerySchema: {
268
- (0, import_assert.assertEx)(payloads, () => `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`);
269
- const resolvedPayloads = await import_payload_builder.PayloadBuilder.filterIncludeByDataHash(payloads, query.payload_hashes);
270
- (0, import_assert.assertEx)(resolvedPayloads.length === query.payload_hashes.length, () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payload_hashes.length}]`);
271
- const payloadsWithoutQuery = await import_payload_builder.PayloadBuilder.filterExclude(resolvedPayloads, await import_payload_builder.PayloadBuilder.dataHash(queryPayload));
272
- resultPayloads.push(...await this.insertWithConfig(payloadsWithoutQuery));
273
- this._lastInsertedPayload = resolvedPayloads.at(-1);
272
+ resultPayloads.push(...await this.insertQueryHandler(wrappedQuery, payloads));
274
273
  break;
275
274
  }
276
275
  default: {
277
- return await super.queryHandler(query, payloads);
276
+ const result = await super.queryHandler(query, payloads);
277
+ if (this.config.storeQueries) {
278
+ await this.insertHandler([
279
+ query
280
+ ]);
281
+ }
282
+ return result;
278
283
  }
279
284
  }
285
+ if (this.config.storeQueries) {
286
+ await this.insertHandler([
287
+ query
288
+ ]);
289
+ }
280
290
  return resultPayloads;
281
291
  }
282
292
  async writeToParent(parent, payloads) {
@@ -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, 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'\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 assertEx(payloads, () => `Missing payloads: ${JSON.stringify(wrappedQuery.jsonPayload(), null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payload_hashes)\n assertEx(\n resolvedPayloads.length === query.payload_hashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payload_hashes.length}]`,\n )\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n resultPayloads.push(...(await this.insertWithConfig(payloadsWithoutQuery)))\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 () =>\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","filterIncludeByDataHash","payload_hashes","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","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 { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\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<WithMeta<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<WithMeta<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<WithMeta<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<WithMeta<Payload>[]> {\n this._noOverride('insert')\n return await this.busy(async () => {\n await this.started('throw')\n //make sure all incoming payloads have proper $hash and $meta\n return await this.insertWithConfig(await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload, true))))\n })\n }\n\n protected allHandler(): PromisableArray<WithMeta<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<WithMeta<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<[WithMeta<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<[WithMeta<Payload>[], string[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<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<PayloadWithMeta[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: string[], config?: InsertConfig): Promise<PayloadWithMeta[]> {\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: PayloadWithMeta[] = []\n const notfoundHashes: string[] = []\n for (const hash of hashes) {\n const found = map[hash] ?? dataMap[hash]\n if (found) {\n foundPayloads.push((await PayloadBuilder.build(found)) as PayloadWithMeta)\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<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async insertQueryHandler<T extends QueryBoundWitnessWrapper = QueryBoundWitnessWrapper>(query: T, payloads?: Payload[]) {\n assertEx(payloads, () => `Missing payloads: ${JSON.stringify(query.payload, null, 2)}`)\n const resolvedPayloads = await PayloadBuilder.filterIncludeByDataHash(payloads, query.payloadHashes)\n assertEx(\n resolvedPayloads.length === query.payloadHashes.length,\n () => `Could not find some passed hashes [${resolvedPayloads.length} != ${query.payloadHashes.length}]`,\n )\n const queryPayload = await query.getQuery()\n const payloadsWithoutQuery = await PayloadBuilder.filterExclude(resolvedPayloads, await PayloadBuilder.dataHash(queryPayload))\n const result = await this.insertWithConfig(payloadsWithoutQuery)\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 return result\n }\n\n protected async insertWithConfig(payloads: Payload[], config?: InsertConfig): Promise<PayloadWithMeta[]> {\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\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 resultPayloads.push(...(await this.insertQueryHandler(wrappedQuery, payloads)))\n break\n }\n default: {\n const result = await super.queryHandler(query, payloads)\n if (this.config.storeQueries) {\n await this.insertHandler([query])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([query])\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<PayloadWithMeta[]> {\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 () =>\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","Promise","map","payload","PayloadBuilder","build","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","dataHashPairs","filter","hash","askedFor","includes","console","warn","foundHashes","Set","foundPayloads","notfound","has","getFromParents","parents","Object","values","read","remainingHashes","parentIndex","result","length","found","getHandler","gotten","toHashMap","dataMap","toDataHashMap","notfoundHashes","push","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log"]}