@xyo-network/archivist-abstract 2.92.0-rc.2 → 2.92.0-rc.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,"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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"}
@@ -191,10 +191,15 @@ var AbstractArchivist = class extends import_module_abstract.AbstractModuleInsta
191
191
  const map = await import_payload_builder.PayloadBuilder.toAllHashMap([
192
192
  payload
193
193
  ]);
194
- let requestedPayloadFound = false;
195
194
  for (const [key, payload2] of Object.entries(map)) {
195
+ let requestedPayloadFound = false;
196
196
  const hash = key;
197
- if (requestedHashes.has(hash)) {
197
+ if (requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since
198
+ // one payload could satisfy two requested hashes (vit its dataHash
199
+ // & rootHash) we only want to insert that payload once but we want
200
+ // to keep track of all the hashes it satisfies so we can ask th
201
+ // parents for the ones we did not find
202
+ !foundHashes.has(hash)) {
198
203
  requestedPayloadFound = true;
199
204
  foundHashes.add(hash);
200
205
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["export * from './AbstractArchivist'\nexport * from './StorageMeta'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n let requestedPayloadFound = false\n for (const [key, payload] of Object.entries(map)) {\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (requestedHashes.has(hash)) {\n // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","requestedPayloadFound","key","entries","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","import_assert","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["export * from './AbstractArchivist'\nexport * from './StorageMeta'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","import_assert","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
@@ -162,10 +162,15 @@ var AbstractArchivist = class extends AbstractModuleInstance {
162
162
  const map = await PayloadBuilder.toAllHashMap([
163
163
  payload
164
164
  ]);
165
- let requestedPayloadFound = false;
166
165
  for (const [key, payload2] of Object.entries(map)) {
166
+ let requestedPayloadFound = false;
167
167
  const hash = key;
168
- if (requestedHashes.has(hash)) {
168
+ if (requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since
169
+ // one payload could satisfy two requested hashes (vit its dataHash
170
+ // & rootHash) we only want to insert that payload once but we want
171
+ // to keep track of all the hashes it satisfies so we can ask th
172
+ // parents for the ones we did not find
173
+ !foundHashes.has(hash)) {
169
174
  requestedPayloadFound = true;
170
175
  foundHashes.add(hash);
171
176
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n let requestedPayloadFound = false\n for (const [key, payload] of Object.entries(map)) {\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (requestedHashes.has(hash)) {\n // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["assertEx","compact","difference","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","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","requestedPayloadFound","key","entries","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","assertEx","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
1
+ {"version":3,"sources":["../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["assertEx","compact","difference","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","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","assertEx","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
@@ -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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"}
@@ -190,10 +190,15 @@ var _AbstractArchivist = class _AbstractArchivist extends import_module_abstract
190
190
  const map = await import_payload_builder.PayloadBuilder.toAllHashMap([
191
191
  payload
192
192
  ]);
193
- let requestedPayloadFound = false;
194
193
  for (const [key, payload2] of Object.entries(map)) {
194
+ let requestedPayloadFound = false;
195
195
  const hash = key;
196
- if (requestedHashes.has(hash)) {
196
+ if (requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since
197
+ // one payload could satisfy two requested hashes (vit its dataHash
198
+ // & rootHash) we only want to insert that payload once but we want
199
+ // to keep track of all the hashes it satisfies so we can ask th
200
+ // parents for the ones we did not find
201
+ !foundHashes.has(hash)) {
197
202
  requestedPayloadFound = true;
198
203
  foundHashes.add(hash);
199
204
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["export * from './AbstractArchivist'\nexport * from './StorageMeta'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n let requestedPayloadFound = false\n for (const [key, payload] of Object.entries(map)) {\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (requestedHashes.has(hash)) {\n // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","requestedPayloadFound","key","entries","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","import_assert","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["export * from './AbstractArchivist'\nexport * from './StorageMeta'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["AbstractArchivist","AbstractModuleInstance","_lastInsertedPayload","_parents","queries","ArchivistGetQuerySchema","requireAllParents","config","_queryAccountPaths","storeParentReads","all","_noOverride","busy","started","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","import_assert","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
@@ -161,10 +161,15 @@ var _AbstractArchivist = class _AbstractArchivist extends AbstractModuleInstance
161
161
  const map = await PayloadBuilder.toAllHashMap([
162
162
  payload
163
163
  ]);
164
- let requestedPayloadFound = false;
165
164
  for (const [key, payload2] of Object.entries(map)) {
165
+ let requestedPayloadFound = false;
166
166
  const hash = key;
167
- if (requestedHashes.has(hash)) {
167
+ if (requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since
168
+ // one payload could satisfy two requested hashes (vit its dataHash
169
+ // & rootHash) we only want to insert that payload once but we want
170
+ // to keep track of all the hashes it satisfies so we can ask th
171
+ // parents for the ones we did not find
172
+ !foundHashes.has(hash)) {
168
173
  requestedPayloadFound = true;
169
174
  foundHashes.add(hash);
170
175
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n let requestedPayloadFound = false\n for (const [key, payload] of Object.entries(map)) {\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (requestedHashes.has(hash)) {\n // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["assertEx","compact","difference","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","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","requestedPayloadFound","key","entries","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","assertEx","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
1
+ {"version":3,"sources":["../../src/AbstractArchivist.ts","../../src/StorageMeta.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable, PromisableArray } from '@xylabs/promise'\nimport { difference } from '@xylabs/set'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistDeleteQuery,\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n ArchivistNextOptions,\n ArchivistParams,\n ArchivistQueries,\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, ModuleIdentifier, ModuleName, 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, TEventData, Payload>\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<ArchivistQueries['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 'network.xyo.query.archivist.next': '1/7',\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 PayloadBuilder.build(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: Hash[]): Promise<Hash[]> {\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: Hash[]): Promise<WithMeta<Payload>[]> {\n this._noOverride('get')\n return await this.busy(async () => {\n await this.started('throw')\n return await PayloadBuilder.build(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(payloads)\n })\n }\n\n async next?(options?: ArchivistNextOptions): Promise<WithMeta<Payload>[]> {\n this._noOverride('next')\n return await this.busy(async () => {\n await this.started('throw')\n return await this.nextWithConfig(options)\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<WithMeta<BoundWitness>[]> {\n throw new Error('Not implemented')\n }\n\n protected deleteHandler(_hashes: Hash[]): PromisableArray<Hash> {\n throw new Error('Not implemented')\n }\n\n protected async deleteWithConfig(hashes: Hash[], config?: ActionConfig): Promise<Hash[]> {\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: Hash[], archivist: ArchivistInstance): Promise<[WithMeta<Payload>[], Hash[]]> {\n const foundPairs = (await PayloadBuilder.dataHashPairs((await archivist.get(hashes)) as WithMeta<Payload>[])).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: Hash[]): Promise<[WithMeta<Payload>[], Hash[]]> {\n const parents = Object.values((await this.parents())?.read ?? {})\n let remainingHashes = [...hashes]\n let parentIndex = 0\n let result: WithMeta<Payload>[] = []\n\n // NOTE: 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: Hash[]): Promisable<Payload[]> {\n throw new Error('Not implemented')\n }\n\n protected async getWithConfig(hashes: Hash[], _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n // Filter out duplicates\n const requestedHashes = new Set(hashes)\n\n // Attempt to find the payloads in the store\n const gotten = await this.getHandler([...requestedHashes])\n\n // Do not just blindly return what the archivist told us but\n // ensure to only return requested payloads and keep track of\n // the ones it did not find so we can ask the parents.\n const foundPayloads: PayloadWithMeta[] = []\n const foundHashes = new Set<Hash>()\n\n // NOTE: We are iterating over the returned result from the archivist\n // (not the array of hashes passed in) to preserve the natural order of the\n // hashes as returned by the archivist as that should loosely\n // correspond to the order when iterated and the symmetry will\n // be helpful for debugging\n for (const payload of gotten) {\n // Compute the hashes for this payload\n const map = await PayloadBuilder.toAllHashMap([payload])\n for (const [key, payload] of Object.entries(map)) {\n let requestedPayloadFound = false\n const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys\n // If this hash was requested\n if (\n requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since\n // one payload could satisfy two requested hashes (vit its dataHash\n // & rootHash) we only want to insert that payload once but we want\n // to keep track of all the hashes it satisfies so we can ask th\n // parents for the ones we did not find\n !foundHashes.has(hash)\n ) {\n requestedPayloadFound = true\n // Add it to the list of found hashes\n foundHashes.add(hash)\n }\n if (requestedPayloadFound) foundPayloads.push(payload)\n }\n }\n // For all the hashes we did not find, ask the parents\n const notFoundHashes = [...difference(requestedHashes, foundHashes)]\n const [parentFoundPayloads] = await this.getFromParents(notFoundHashes)\n\n if (this.storeParentReads) {\n await this.insertWithConfig(parentFoundPayloads)\n }\n return await PayloadBuilder.build([...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<WithMeta<Payload>[]> {\n const emitEvents = config?.emitEvents ?? true\n const writeToParents = config?.writeToParents ?? true\n\n const insertedPayloads = await PayloadBuilder.build(await this.insertHandler(payloads), true)\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 nextHandler(_options?: ArchivistNextOptions): Promisable<WithMeta<Payload>[]> {\n throw new Error('Not implemented')\n }\n\n protected async nextWithConfig(options?: ArchivistNextOptions, _config?: InsertConfig): Promise<WithMeta<Payload>[]> {\n const foundPayloads = await this.nextHandler(options)\n return await PayloadBuilder.build(foundPayloads)\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<ArchivistQueries>(query, payloads)\n const builtQuery = await PayloadBuilder.build(query, true)\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([builtQuery])\n }\n return result\n }\n }\n if (this.config.storeQueries) {\n await this.insertHandler([builtQuery])\n }\n return resultPayloads\n }\n\n protected async writeToParent(parent: ArchivistInstance, payloads: Payload[]): Promise<PayloadWithMeta[]> {\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: ModuleIdentifier[] = []) {\n const archivistModules = [\n ...(await this.resolve({ address: archivists as Address[] })),\n ...(await this.resolve({ name: archivists as ModuleName[] })),\n ].filter(duplicateModules)\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","import { assertEx } from '@xylabs/assert'\nimport { Payload, PayloadWithMeta } from '@xyo-network/payload-model'\n\nexport type WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport const maxSequenceIndex = 10_000_000_000n\n\nexport const sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nexport const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nexport const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[], direction: -1 | 1 = 1) => {\n return payloads.sort((a, b) =>\n a._sequence < b._sequence ? -direction\n : a._sequence > b._sequence ? direction\n : 0,\n )\n}\n\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nexport function removeStorageMeta<T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]): T[]\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nexport function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n if (Array.isArray(payload)) {\n return payload.map((p) => removeStorageMeta(p))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n"],"mappings":"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","names":["assertEx","compact","difference","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","PayloadBuilder","build","allHandler","clear","clearHandler","commit","commitHandler","delete","hashes","deleteWithConfig","get","getWithConfig","insert","payloads","insertWithConfig","next","options","nextWithConfig","Error","deleteHandler","_hashes","emitEvents","deletedHashes","emit","module","getFromParent","archivist","foundPairs","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","_config","requestedHashes","gotten","toAllHashMap","key","entries","requestedPayloadFound","add","push","notFoundHashes","difference","parentFoundPayloads","head","insertHandler","_payloads","insertQueryHandler","query","assertEx","JSON","stringify","resolvedPayloads","filterIncludeByDataHash","payloadHashes","queryPayload","getQuery","payloadsWithoutQuery","filterExclude","dataHash","at","writeToParents","insertedPayloads","nextHandler","_options","resolveArchivists","write","queryHandler","queryConfig","wrappedQuery","QueryBoundWitnessWrapper","parseQuery","builtQuery","queryable","resultPayloads","schema","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistDeleteQuerySchema","resultPayload","ArchivistInsertQuerySchema","storeQueries","writeToParent","parent","compact","Promise","undefined","flat","archivists","archivistModules","resolve","address","name","duplicateModules","reduce","prev","asArchivistInstance","isArchivistInstance","log","assertEx","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","direction","sort","a","b","removeStorageMeta","Array","isArray","map","p","noMeta"]}
package/package.json CHANGED
@@ -15,13 +15,13 @@
15
15
  "@xylabs/lodash": "^3.0.3",
16
16
  "@xylabs/promise": "^3.0.3",
17
17
  "@xylabs/set": "^3.0.3",
18
- "@xyo-network/archivist-model": "~2.92.0-rc.2",
19
- "@xyo-network/boundwitness-model": "~2.92.0-rc.2",
20
- "@xyo-network/boundwitness-wrapper": "~2.92.0-rc.2",
21
- "@xyo-network/module-abstract": "~2.92.0-rc.2",
22
- "@xyo-network/module-model": "~2.92.0-rc.2",
23
- "@xyo-network/payload-builder": "~2.92.0-rc.2",
24
- "@xyo-network/payload-model": "~2.92.0-rc.2"
18
+ "@xyo-network/archivist-model": "~2.92.0-rc.4",
19
+ "@xyo-network/boundwitness-model": "~2.92.0-rc.4",
20
+ "@xyo-network/boundwitness-wrapper": "~2.92.0-rc.4",
21
+ "@xyo-network/module-abstract": "~2.92.0-rc.4",
22
+ "@xyo-network/module-model": "~2.92.0-rc.4",
23
+ "@xyo-network/payload-builder": "~2.92.0-rc.4",
24
+ "@xyo-network/payload-model": "~2.92.0-rc.4"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@xylabs/ts-scripts-yarn3": "^3.4.1",
@@ -67,7 +67,7 @@
67
67
  },
68
68
  "sideEffects": false,
69
69
  "types": "dist/node/index.d.ts",
70
- "version": "2.92.0-rc.2",
70
+ "version": "2.92.0-rc.4",
71
71
  "type": "module",
72
72
  "stableVersion": "2.91.2"
73
73
  }
@@ -217,16 +217,18 @@ export abstract class AbstractArchivist<
217
217
  for (const payload of gotten) {
218
218
  // Compute the hashes for this payload
219
219
  const map = await PayloadBuilder.toAllHashMap([payload])
220
- let requestedPayloadFound = false
221
220
  for (const [key, payload] of Object.entries(map)) {
221
+ let requestedPayloadFound = false
222
222
  const hash = key as Hash // NOTE: Required cast as Object.entries always returns string keys
223
223
  // If this hash was requested
224
- if (requestedHashes.has(hash)) {
225
- // Indicate that we found it (but do not insert it yet). Since
224
+ if (
225
+ requestedHashes.has(hash) && // Indicate that we found it (but do not insert it yet). Since
226
226
  // one payload could satisfy two requested hashes (vit its dataHash
227
227
  // & rootHash) we only want to insert that payload once but we want
228
228
  // to keep track of all the hashes it satisfies so we can ask th
229
229
  // parents for the ones we did not find
230
+ !foundHashes.has(hash)
231
+ ) {
230
232
  requestedPayloadFound = true
231
233
  // Add it to the list of found hashes
232
234
  foundHashes.add(hash)