@xyo-network/archivist-mongodb 5.3.30 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
8
8
  _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<PayloadWithMongoMeta> | undefined;
9
9
  readonly boundWitnessSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
10
10
  readonly boundWitnesses: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").BoundWitnessWithMongoMeta>;
11
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
11
+ readonly jobQueue: import("@xyo-network/module-model").JobQueue;
12
12
  readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
13
13
  readonly payloads: import("@xylabs/mongo").BaseMongoSdk<PayloadWithMongoMeta>;
14
14
  ensureIndexes(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAKxE,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAC3C,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAMxE,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;sRAsBc,CAAC,6DAE/B,CAAD;4RAcY,CAAC,6DAChB,CAAJ;;;;;;;;;;;;;;;;4BAvCgE,CAAA;AAElE,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAE1E,OAAO;;SAA2E;IAE3F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,SAAS;cAE9B,aAAa,CAAC,IAAI,EAAE,IAAI;cAoBxB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;cAU3B,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cA6B/D,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAmBxF,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAkEhF,YAAY;CAItC"}
1
+ {"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAKxE,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAC3C,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAMxE,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;sRAyBlB,CAAF,6DAC4C,CAAC;4RAc/C,CAAA,6DAGmD,CAAA;;;;;;;;;;;;;;;;4BA3CW,CAAA;AAElE,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAE1E,OAAO;;SAA2E;IAE3F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,SAAS;cAE9B,aAAa,CAAC,IAAI,EAAE,IAAI;cAoBxB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;cAU3B,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cA0B/D,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAmBxF,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAiEhF,YAAY;CAItC"}
@@ -5,7 +5,7 @@ import { type Payload, type Schema, type Sequence, type WithStorageMeta } from '
5
5
  import type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb';
6
6
  declare const MongoDBArchivistBaseV2: (abstract new (...args: any[]) => {
7
7
  _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<PayloadWithMongoMeta> | undefined;
8
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
8
+ readonly jobQueue: import("@xyo-network/module-model").JobQueue;
9
9
  readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
10
10
  readonly payloads: import("@xylabs/mongo").BaseMongoSdk<PayloadWithMongoMeta>;
11
11
  ensureCollection(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ArchivistV2.d.ts","sourceRoot":"","sources":["../../src/ArchivistV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAOxE,OAAO,EACL,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EACxC,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAIxE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;sRAed,CAAC,6DAA6D,CAAC;4RAWrE,CAAC,6DACgD,CAAC;;;;;;;;;;;;;;;;4BA3BY,CAAA;AAItE,qBAAa,kBAAmB,SAAQ,sBAAsB;IAC5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAEnF,SAAkB,OAAO,EAAE,MAAM,EAAE,CAA2E;IAE9G;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,SAAS;cAErB,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAO3E,aAAa,CAAC,IAAI,EAAE,IAAI;cAYxB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;cAO3B,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAiB/D,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAgBxF,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAwDhF,YAAY;CAItC;AAED,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,SAAkB,OAAO,EAAE,MAAM,EAAE,CAMlC;CACF"}
1
+ {"version":3,"file":"ArchivistV2.d.ts","sourceRoot":"","sources":["../../src/ArchivistV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAOxE,OAAO,EACL,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EACxC,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAIxE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;sRAgBxB,CAAD,6DACU,CAAC;4RAWJ,CAAC,6DAMF,CAAC;;;;;;;;;;;;;;;;4BAlC4D,CAAA;AAItE,qBAAa,kBAAmB,SAAQ,sBAAsB;IAC5D,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAyD;IACzG,gBAAyB,mBAAmB,EAAE,MAAM,CAA+B;IAEnF,SAAkB,OAAO,EAAE,MAAM,EAAE,CAA2E;IAE9G;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,SAAS;cAErB,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAO3E,aAAa,CAAC,IAAI,EAAE,IAAI;cAYxB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;cAO3B,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAc/D,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAgBxF,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;cAuDhF,YAAY;CAItC;AAED,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,SAAkB,OAAO,EAAE,MAAM,EAAE,CAMlC;CACF"}
@@ -74,21 +74,19 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
74
74
  }
75
75
  }
76
76
  async getHandler(hashes) {
77
- let remainingHashes = [...hashes];
77
+ const remainingHashes = [...hashes];
78
78
  const dataPayloads = (await Promise.all(remainingHashes.map((_dataHash) => this.payloads.findOne({ _dataHash })))).filter(exists);
79
79
  const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._dataHash));
80
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
81
- const dataBws = (await Promise.all(remainingHashes.map(
80
+ const remainingAfterDataPayloads = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
81
+ const dataBws = (await Promise.all(remainingAfterDataPayloads.map(
82
82
  (_dataHash) => this.boundWitnesses.findOne({ _dataHash })
83
83
  ))).filter(exists);
84
84
  const dataBwsHashes = new Set(dataBws.map((payload) => payload._dataHash));
85
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash));
86
- const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists);
85
+ const remainingAfterDataBws = remainingAfterDataPayloads.filter((hash) => !dataBwsHashes.has(hash));
86
+ const payloads = (await Promise.all(remainingAfterDataBws.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists);
87
87
  const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
88
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
89
- const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists);
90
- const bwsHashes = new Set(bws.map((payload) => payload._hash));
91
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash));
88
+ const remainingAfterPayloads = remainingAfterDataBws.filter((hash) => !payloadsHashes.has(hash));
89
+ const bws = (await Promise.all(remainingAfterPayloads.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists);
92
90
  const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws];
93
91
  const result = foundPayloads.map(fromDbRepresentation);
94
92
  return result;
@@ -110,12 +108,8 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
110
108
  return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation);
111
109
  }
112
110
  async nextHandler(options) {
113
- let {
114
- limit,
115
- cursor,
116
- order,
117
- open
118
- } = options ?? { limit: 10, order: "desc" };
111
+ let { limit, order } = options ?? { limit: 10, order: "desc" };
112
+ const { cursor, open } = options ?? { limit: 10, order: "desc" };
119
113
  if (!limit) limit = 10;
120
114
  if (limit > 100) limit = 100;
121
115
  if (order != "asc") order = "desc";
@@ -215,13 +209,11 @@ var MongoDBArchivistV2 = class extends MongoDBArchivistBaseV2 {
215
209
  }
216
210
  }
217
211
  async getHandler(hashes) {
218
- let remainingHashes = [...hashes];
212
+ const remainingHashes = [...hashes];
219
213
  const dataPayloads = (await Promise.all(remainingHashes.map((_dataHash) => this.payloads.findOne({ _dataHash })))).filter(exists2);
220
214
  const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._dataHash));
221
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
222
- const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists2);
223
- const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
224
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
215
+ const remainingAfterDataPayloads = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
216
+ const payloads = (await Promise.all(remainingAfterDataPayloads.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists2);
225
217
  const foundPayloads = [...dataPayloads, ...payloads];
226
218
  const result = foundPayloads.map(fromDbRepresentation2);
227
219
  return result;
@@ -240,12 +232,8 @@ var MongoDBArchivistV2 = class extends MongoDBArchivistBaseV2 {
240
232
  return [...payloadsWithExternalMeta].map(fromDbRepresentation2);
241
233
  }
242
234
  async nextHandler(options) {
243
- let {
244
- limit,
245
- cursor,
246
- order,
247
- open = true
248
- } = options ?? { limit: 10, order: "desc" };
235
+ let { limit, order } = options ?? { limit: 10, order: "desc" };
236
+ const { cursor, open = true } = options ?? { limit: 10, order: "desc" };
249
237
  if (!limit) limit = 10;
250
238
  if (limit > 100) limit = 100;
251
239
  if (order != "asc") order = "desc";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/ArchivistV2.ts","../../src/index.ts"],"sourcesContent":["import type { Hash } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.ts'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override queries = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws: WithStorageMeta<BoundWitness>[] = (await Promise.all(remainingHashes.map(\n _dataHash => this.boundWitnesses.findOne({ _dataHash }),\n ))).filter(exists)\n\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const bws: WithStorageMeta<BoundWitness>[] = (await Promise.all(remainingHashes.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map(payload => payload._hash))\n // eslint-disable-next-line sonarjs/no-dead-store\n remainingHashes = remainingHashes.filter(hash => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order, open,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n }),\n )\n return results\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport {\n ArchivistDeleteQuerySchema, ArchivistGetQuerySchema, ArchivistInsertQuerySchema, ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { DefaultModuleQueries } from '@xyo-network/module-abstract'\nimport { MongoDBModuleMixinV2 } from '@xyo-network/module-abstract-mongodb'\nimport {\n type Payload, type Schema, type Sequence, SequenceConstants,\n type WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport type { MongoError } from 'mongodb'\n\nconst MongoDBArchivistBaseV2 = MongoDBModuleMixinV2(AbstractArchivist)\n\nconst MONGODB_DUPLICATE_KEY_ERROR = 11_000\n\nexport class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: Schema[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected override async deleteHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n const payloads = await this.getHandler(hashes)\n const foundHashes = payloads.map(p => p._hash)\n await this.payloads.deleteMany({ _hash: { $in: foundHashes } })\n return payloads\n }\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n remainingHashes = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const payloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n // eslint-disable-next-line sonarjs/no-dead-store\n remainingHashes = remainingHashes.filter(hash => !payloadsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...payloads] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const payloadsWithExternalMeta = payloads.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n try {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta, { ordered: false })\n if (!payloadsResult.acknowledged) throw new Error('MongoDBArchivist: Error inserting Payloads')\n } catch (error) {\n const mongoError = error as MongoError\n // Intentional coercive equality since Mongo error codes are\n // of type string | number\n if (mongoError?.code != MONGODB_DUPLICATE_KEY_ERROR) throw error\n }\n }\n return [...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let {\n limit, cursor, order, open = true,\n } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let sequence: Sequence | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) sequence = payload._sequence\n } else {\n sequence = order === 'asc'\n // If ascending, start from the beginning of time\n ? SequenceConstants.minLocalSequence\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : SequenceConstants.maxLocalSequence\n }\n if (!sequence) return []\n\n // Create find criteria\n const sort = order === 'asc' ? 1 : -1\n\n const match = order === 'asc'\n ? (open\n ? { _sequence: { $gt: sequence } }\n : { _sequence: { $gte: sequence } })\n : (open\n ? { _sequence: { $lt: sequence } }\n : { _sequence: { $lte: sequence } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _sequence\n { $sort: { _sequence: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureCollection()\n }\n}\n\nexport class MongoDBArchivistV2Deletable extends MongoDBArchivistV2 {\n override readonly queries: Schema[] = [\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n ...DefaultModuleQueries,\n ]\n}\n","export * from './Archivist.ts'\nexport * from './ArchivistV2.ts'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","MongoDBArchivistConfigSchema","fromDbRepresentation","toDbRepresentation"]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/ArchivistV2.ts","../../src/index.ts"],"sourcesContent":["import type { Hash } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport { ArchivistInsertQuerySchema, ArchivistNextQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport type {\n Payload, Schema, Sequence, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { ObjectId } from 'mongodb'\n\nimport { validByType } from './lib/index.ts'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override queries = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _$hash: hash }))\n if (dataBw) {\n return dataBw\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n } else {\n const bw = (await this.boundWitnesses.findOne({ _hash: hash }))\n return bw ?? undefined\n }\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n } else {\n const dataBw = (await this.boundWitnesses.findOne({ _sequence: sequence }))\n return dataBw\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n const remainingHashes = [...hashes]\n\n const dataPayloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n const remainingAfterDataPayloads = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const dataBws: WithStorageMeta<BoundWitness>[] = (await Promise.all(remainingAfterDataPayloads.map(\n _dataHash => this.boundWitnesses.findOne({ _dataHash }),\n ))).filter(exists)\n\n const dataBwsHashes = new Set(dataBws.map(payload => payload._dataHash))\n const remainingAfterDataBws = remainingAfterDataPayloads.filter(hash => !dataBwsHashes.has(hash))\n\n const payloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingAfterDataBws.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = new Set(payloads.map(payload => payload._hash))\n const remainingAfterPayloads = remainingAfterDataBws.filter(hash => !payloadsHashes.has(hash))\n\n const bws: WithStorageMeta<BoundWitness>[] = (await Promise.all(remainingAfterPayloads.map(_hash => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n // console.log(`getHandler: ${JSON.stringify(hashes, null, 2)}:${JSON.stringify(result, null, 2)}`)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = p.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting Payloads')\n }\n\n const boundWitnessesWithExternalMeta = bw.map(value => toDbRepresentation(value))\n if (boundWitnessesWithExternalMeta.length > 0) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBArchivist: Error inserting BoundWitnesses')\n }\n\n return [...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let { limit, order } = options ?? { limit: 10, order: 'desc' }\n const { cursor, open } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let id: ObjectId | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) id = payload._id\n } else {\n id = order === 'asc'\n // If ascending, start from the beginning of time\n ? ObjectId.createFromTime(0)\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : ObjectId.createFromTime((Date.now() + 10_000) / 1000)\n }\n if (!id) return []\n\n // Create aggregate criteria\n const sort = order === 'asc' ? 1 : -1\n // TODO: How to handle random component of ID across multiple collections\n // to ensure we don't skip some payloads\n const match = order === 'asc' ? (open ? { _id: { $gte: id } } : { _id: { $gt: id } }) : (open ? { _id: { $lte: id } } : { _id: { $lt: id } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _id\n { $sort: { _id: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n // Combine with filtered boundWitnesses collection\n {\n $unionWith: {\n coll: this.boundWitnessSdkConfig.collection,\n pipeline: [\n { $match: match }, // Pre-filter boundWitnesses\n { $sort: { _id: sort } }, // Sort boundWitnesses by _id\n { $limit: limit }, // Limit boundWitnesses to the first N boundWitnesses\n ],\n },\n },\n // Sort the combined result by _id\n { $sort: { _id: sort } },\n // Limit the final result to N documents\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: WithStorageMeta<Payload>[] = []) => {\n const results: [WithStorageMeta<BoundWitness>[], WithStorageMeta<Payload>[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(payload)\n } else {\n const errors = await bw.getErrors()\n console.log(`validByType.Error: ${JSON.stringify(errors, null, 2)}`)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payload)\n }\n }\n }),\n )\n return results\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport type { ArchivistNextOptions } from '@xyo-network/archivist-model'\nimport {\n ArchivistDeleteQuerySchema, ArchivistGetQuerySchema, ArchivistInsertQuerySchema, ArchivistNextQuerySchema,\n} from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { DefaultModuleQueries } from '@xyo-network/module-abstract'\nimport { MongoDBModuleMixinV2 } from '@xyo-network/module-abstract-mongodb'\nimport {\n type Payload, type Schema, type Sequence, SequenceConstants,\n type WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type { PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport type { MongoError } from 'mongodb'\n\nconst MongoDBArchivistBaseV2 = MongoDBModuleMixinV2(AbstractArchivist)\n\nconst MONGODB_DUPLICATE_KEY_ERROR = 11_000\n\nexport class MongoDBArchivistV2 extends MongoDBArchivistBaseV2 {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, MongoDBArchivistConfigSchema]\n static override readonly defaultConfigSchema: Schema = MongoDBArchivistConfigSchema\n\n override readonly queries: Schema[] = [ArchivistInsertQuerySchema, ArchivistNextQuerySchema, ...super.queries]\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n protected override async deleteHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n const payloads = await this.getHandler(hashes)\n const foundHashes = payloads.map(p => p._hash)\n await this.payloads.deleteMany({ _hash: { $in: foundHashes } })\n return payloads\n }\n\n protected async findOneByHash(hash: Hash) {\n const dataPayload = (await this.payloads.findOne({ _$hash: hash }))\n if (dataPayload) {\n return dataPayload\n } else {\n const payload = (await this.payloads.findOne({ _hash: hash }))\n if (payload) {\n return payload\n }\n }\n }\n\n protected async findOneBySequence(sequence: Sequence) {\n const dataPayload = (await this.payloads.findOne({ _sequence: sequence }))\n if (dataPayload) {\n return dataPayload\n }\n }\n\n protected override async getHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n const remainingHashes = [...hashes]\n\n const dataPayloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingHashes.map(_dataHash => this.payloads.findOne({ _dataHash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map(payload => payload._dataHash))\n const remainingAfterDataPayloads = remainingHashes.filter(hash => !dataPayloadsHashes.has(hash))\n\n const payloads: WithStorageMeta<Payload>[] = (await Promise.all(remainingAfterDataPayloads.map(_hash => this.payloads.findOne({ _hash })))).filter(exists)\n\n const foundPayloads = [...dataPayloads, ...payloads] as PayloadWithMongoMeta<Payload>[]\n const result = foundPayloads.map(fromDbRepresentation)\n return result\n }\n\n protected override async insertHandler(payloads: WithStorageMeta<Payload>[]): Promise<WithStorageMeta<Payload>[]> {\n const payloadsWithExternalMeta = payloads.map(value => toDbRepresentation(value))\n if (payloadsWithExternalMeta.length > 0) {\n try {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta, { ordered: false })\n if (!payloadsResult.acknowledged) throw new Error('MongoDBArchivist: Error inserting Payloads')\n } catch (error) {\n const mongoError = error as MongoError\n // Intentional coercive equality since Mongo error codes are\n // of type string | number\n if (mongoError?.code != MONGODB_DUPLICATE_KEY_ERROR) throw error\n }\n }\n return [...payloadsWithExternalMeta].map(fromDbRepresentation)\n }\n\n protected override async nextHandler(options?: ArchivistNextOptions): Promise<WithStorageMeta<Payload>[]> {\n // Sanitize inputs and set defaults\n let { limit, order } = options ?? { limit: 10, order: 'desc' }\n const { cursor, open = true } = options ?? { limit: 10, order: 'desc' }\n\n if (!limit) limit = 10\n if (limit > 100) limit = 100\n\n if (order != 'asc') order = 'desc'\n\n let sequence: Sequence | undefined\n if (cursor) {\n const payload = await this.findOneBySequence(cursor)\n // TODO: Should we throw an error if the requested payload is not found?\n if (payload) sequence = payload._sequence\n } else {\n sequence = order === 'asc'\n // If ascending, start from the beginning of time\n ? SequenceConstants.minLocalSequence\n // If descending, start from now (plus a bit more in the future to ensure\n // them most recent ObjectIds are included)\n : SequenceConstants.maxLocalSequence\n }\n if (!sequence) return []\n\n // Create find criteria\n const sort = order === 'asc' ? 1 : -1\n\n const match = order === 'asc'\n ? (open\n ? { _sequence: { $gt: sequence } }\n : { _sequence: { $gte: sequence } })\n : (open\n ? { _sequence: { $lt: sequence } }\n : { _sequence: { $lte: sequence } })\n\n // Run the aggregate query\n const foundPayloads = await this.payloads.useCollection((collection) => {\n return collection\n .aggregate<PayloadWithMongoMeta>([\n // Pre-filter payloads collection\n { $match: match },\n // Sort payloads by _sequence\n { $sort: { _sequence: sort } },\n // Limit payloads to the first N payloads\n { $limit: limit },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n\n // Convert from DB representation to Payloads\n return foundPayloads.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureCollection()\n }\n}\n\nexport class MongoDBArchivistV2Deletable extends MongoDBArchivistV2 {\n override readonly queries: Schema[] = [\n ArchivistDeleteQuerySchema,\n ArchivistGetQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistNextQuerySchema,\n ...DefaultModuleQueries,\n ]\n}\n","export * from './Archivist.ts'\nexport * from './ArchivistV2.ts'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistInsertQuerySchema","ArchivistNextQuerySchema","MongoDBArchivistConfigSchema","fromDbRepresentation","toDbRepresentation"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/archivist-mongodb",
3
- "version": "5.3.30",
3
+ "version": "5.4.1",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -36,74 +36,72 @@
36
36
  "README.md"
37
37
  ],
38
38
  "dependencies": {
39
- "@xyo-network/archivist-model-mongodb": "~5.3.30",
40
- "@xyo-network/boundwitness-model": "~5.3.30",
41
- "@xyo-network/boundwitness-wrapper": "~5.3.30",
42
- "@xyo-network/module-abstract-mongodb": "~5.3.30",
43
- "@xyo-network/payload-model": "~5.3.30",
44
- "@xyo-network/payload-mongodb": "~5.3.30",
45
- "@xyo-network/payload-wrapper": "~5.3.30"
39
+ "@xyo-network/archivist-model-mongodb": "~5.4.1",
40
+ "@xyo-network/boundwitness-model": "~5.4.1",
41
+ "@xyo-network/payload-model": "~5.4.1",
42
+ "@xyo-network/boundwitness-wrapper": "~5.4.1",
43
+ "@xyo-network/module-abstract-mongodb": "~5.4.1",
44
+ "@xyo-network/payload-mongodb": "~5.4.1",
45
+ "@xyo-network/payload-wrapper": "~5.4.1"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@opentelemetry/api": "^1.9.1",
49
- "@types/node": "^25.5.2",
50
- "@xylabs/mongo": "~5.0.95",
51
- "@xylabs/sdk-js": "^5.0.95",
52
- "@xylabs/ts-scripts-common": "~7.8.6",
53
- "@xylabs/ts-scripts-pnpm": "~7.8.6",
54
- "@xylabs/tsconfig": "~7.8.6",
55
- "@xylabs/vitest-extended": "~5.0.95",
56
- "@xylabs/vitest-matchers": "~5.0.95",
57
- "@xyo-network/account": "~5.3.30",
58
- "@xyo-network/account-model": "~5.3.30",
59
- "@xyo-network/archivist-abstract": "~5.3.30",
60
- "@xyo-network/archivist-acceptance-tests": "~5.3.30",
61
- "@xyo-network/archivist-model": "~5.3.30",
62
- "@xyo-network/archivist-wrapper": "~5.3.30",
63
- "@xyo-network/boundwitness-builder": "~5.3.30",
64
- "@xyo-network/boundwitness-validator": "~5.3.30",
65
- "@xyo-network/config-payload-plugin": "~5.3.30",
66
- "@xyo-network/data": "~5.3.30",
67
- "@xyo-network/diviner-model": "~5.3.30",
68
- "@xyo-network/diviner-payload-model": "~5.3.30",
69
- "@xyo-network/elliptic": "~5.3.30",
70
- "@xyo-network/hash": "~5.3.30",
71
- "@xyo-network/id-payload-plugin": "~5.3.30",
72
- "@xyo-network/manifest-model": "~5.3.30",
73
- "@xyo-network/module-abstract": "~5.3.30",
74
- "@xyo-network/module-model": "~5.3.30",
75
- "@xyo-network/module-model-mongodb": "~5.3.30",
76
- "@xyo-network/module-resolver": "~5.3.30",
77
- "@xyo-network/node-model": "~5.3.30",
78
- "@xyo-network/payload-builder": "~5.3.30",
79
- "@xyo-network/payload-validator": "~5.3.30",
80
- "@xyo-network/previous-hash-store-model": "~5.3.30",
81
- "@xyo-network/wallet-model": "~5.3.30",
82
- "@xyo-network/wasm": "~5.3.30",
83
- "axios": "^1.14.0",
49
+ "@types/node": "^25.6.0",
50
+ "@xylabs/mongo": "~5.0.97",
51
+ "@xylabs/sdk-js": "^5.0.97",
52
+ "@xylabs/toolchain": "~7.10.8",
53
+ "@xylabs/tsconfig": "~7.10.8",
54
+ "@xylabs/vitest-extended": "~5.0.97",
55
+ "@xylabs/vitest-matchers": "~5.0.97",
84
56
  "esbuild": "^0.28.0",
85
57
  "ethers": "^6.16.0",
86
58
  "mongodb": "~7.1.1",
87
59
  "pako": "~2.1.0",
88
60
  "typescript": "~5.9.3",
89
- "vite": "^8.0.5",
90
- "vitest": "~4.1.2",
91
- "zod": "^4.3.6"
61
+ "vite": "^8.0.8",
62
+ "vitest": "~4.1.4",
63
+ "zod": "^4.3.6",
64
+ "@xyo-network/archivist-abstract": "~5.4.1",
65
+ "@xyo-network/account": "~5.4.1",
66
+ "@xyo-network/archivist-acceptance-tests": "~5.4.1",
67
+ "@xyo-network/archivist-model": "~5.4.1",
68
+ "@xyo-network/account-model": "~5.4.1",
69
+ "@xyo-network/archivist-wrapper": "~5.4.1",
70
+ "@xyo-network/boundwitness-builder": "~5.4.1",
71
+ "@xyo-network/boundwitness-validator": "~5.4.1",
72
+ "@xyo-network/config-payload-plugin": "~5.4.1",
73
+ "@xyo-network/data": "~5.4.1",
74
+ "@xyo-network/diviner-payload-model": "~5.4.1",
75
+ "@xyo-network/diviner-model": "~5.4.1",
76
+ "@xyo-network/hash": "~5.4.1",
77
+ "@xyo-network/elliptic": "~5.4.1",
78
+ "@xyo-network/id-payload-plugin": "~5.4.1",
79
+ "@xyo-network/manifest-model": "~5.4.1",
80
+ "@xyo-network/module-model": "~5.4.1",
81
+ "@xyo-network/module-abstract": "~5.4.1",
82
+ "@xyo-network/module-model-mongodb": "~5.4.1",
83
+ "@xyo-network/module-resolver": "~5.4.1",
84
+ "@xyo-network/payload-validator": "~5.4.1",
85
+ "@xyo-network/node-model": "~5.4.1",
86
+ "@xyo-network/wallet-model": "~5.4.1",
87
+ "@xyo-network/previous-hash-store-model": "~5.4.1",
88
+ "@xyo-network/payload-builder": "~5.4.1",
89
+ "@xyo-network/wasm": "~5.4.1"
92
90
  },
93
91
  "peerDependencies": {
94
- "@xylabs/sdk-js": "^5",
95
- "@xyo-network/account-model": "~5.3",
96
- "@xyo-network/archivist-abstract": "~5.3",
97
- "@xyo-network/archivist-model": "~5.3",
98
- "@xyo-network/boundwitness-validator": "~5.3",
99
- "@xyo-network/hash": "~5.3",
100
- "@xyo-network/manifest-model": "~5.3",
101
- "@xyo-network/module-abstract": "~5.3",
102
- "@xyo-network/module-model-mongodb": "~5.3",
103
- "@xyo-network/payload-validator": "~5.3",
92
+ "@xylabs/sdk-js": "^5.0.97",
93
+ "@xyo-network/account-model": "~5.4",
94
+ "@xyo-network/archivist-abstract": "~5.4",
95
+ "@xyo-network/archivist-model": "~5.4",
96
+ "@xyo-network/boundwitness-validator": "~5.4",
97
+ "@xyo-network/hash": "~5.4",
98
+ "@xyo-network/manifest-model": "~5.4",
99
+ "@xyo-network/module-abstract": "~5.4",
100
+ "@xyo-network/module-model-mongodb": "~5.4",
101
+ "@xyo-network/payload-validator": "~5.4",
104
102
  "mongodb": "^6 || ^7"
105
103
  },
106
104
  "publishConfig": {
107
105
  "access": "public"
108
106
  }
109
- }
107
+ }