@xyo-network/archivist-mongodb 2.84.3 → 2.84.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.
@@ -93,23 +93,23 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
93
93
  const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({
94
94
  _$hash
95
95
  })))).filter(import_exists.exists);
96
- const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash);
97
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash));
96
+ const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash));
97
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
98
98
  const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({
99
99
  _$hash
100
100
  })))).filter(import_exists.exists);
101
- const dataBwsHashes = dataBws.map((payload) => payload._$hash);
102
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash));
101
+ const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash));
102
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash));
103
103
  const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({
104
104
  _hash
105
105
  })))).filter(import_exists.exists);
106
- const payloadsHashes = payloads.map((payload) => payload._hash);
107
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash));
106
+ const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
107
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
108
108
  const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({
109
109
  _hash
110
110
  })))).filter(import_exists.exists);
111
- const bwsHashes = bws.map((payload) => payload._hash);
112
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash));
111
+ const bwsHashes = new Set(bws.map((payload) => payload._hash));
112
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash));
113
113
  const foundPayloads = [
114
114
  ...dataPayloads,
115
115
  ...dataBws,
@@ -121,13 +121,13 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
121
121
  async insertHandler(payloads) {
122
122
  const [bw, p] = await validByType(payloads);
123
123
  const payloadsWithExternalMeta = await Promise.all(p.map(import_payload_mongodb.toDbRepresentation));
124
- if (payloadsWithExternalMeta.length) {
124
+ if (payloadsWithExternalMeta.length > 0) {
125
125
  const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta);
126
126
  if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
127
127
  throw new Error("MongoDBDeterministicArchivist: Error inserting Payloads");
128
128
  }
129
129
  const boundWitnessesWithExternalMeta = await Promise.all(bw.map(import_payload_mongodb.toDbRepresentation));
130
- if (boundWitnessesWithExternalMeta.length) {
130
+ if (boundWitnessesWithExternalMeta.length > 0) {
131
131
  const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta);
132
132
  if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
133
133
  throw new Error("MongoDBDeterministicArchivist: Error inserting BoundWitnesses");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = dataBws.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))\n\n const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = payloads.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))\n\n const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = bws.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\n if (payloadsWithExternalMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\n if (boundWitnessesWithExternalMeta.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","hash","includes","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash))\n\n const payloads = (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 = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map((payload) => payload._hash))\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","Set","hash","has","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes"]}
@@ -68,23 +68,23 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
68
68
  const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({
69
69
  _$hash
70
70
  })))).filter(exists);
71
- const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash);
72
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash));
71
+ const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash));
72
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
73
73
  const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({
74
74
  _$hash
75
75
  })))).filter(exists);
76
- const dataBwsHashes = dataBws.map((payload) => payload._$hash);
77
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash));
76
+ const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash));
77
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash));
78
78
  const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({
79
79
  _hash
80
80
  })))).filter(exists);
81
- const payloadsHashes = payloads.map((payload) => payload._hash);
82
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash));
81
+ const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
82
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
83
83
  const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({
84
84
  _hash
85
85
  })))).filter(exists);
86
- const bwsHashes = bws.map((payload) => payload._hash);
87
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash));
86
+ const bwsHashes = new Set(bws.map((payload) => payload._hash));
87
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash));
88
88
  const foundPayloads = [
89
89
  ...dataPayloads,
90
90
  ...dataBws,
@@ -96,13 +96,13 @@ var MongoDBArchivist = class extends MongoDBArchivistBase {
96
96
  async insertHandler(payloads) {
97
97
  const [bw, p] = await validByType(payloads);
98
98
  const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation));
99
- if (payloadsWithExternalMeta.length) {
99
+ if (payloadsWithExternalMeta.length > 0) {
100
100
  const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta);
101
101
  if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
102
102
  throw new Error("MongoDBDeterministicArchivist: Error inserting Payloads");
103
103
  }
104
104
  const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation));
105
- if (boundWitnessesWithExternalMeta.length) {
105
+ if (boundWitnessesWithExternalMeta.length > 0) {
106
106
  const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta);
107
107
  if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
108
108
  throw new Error("MongoDBDeterministicArchivist: Error inserting BoundWitnesses");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = dataBws.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))\n\n const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = payloads.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))\n\n const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = bws.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\n if (payloadsWithExternalMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\n if (boundWitnessesWithExternalMeta.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadBuilder","fromDbRepresentation","toDbRepresentation","PayloadWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","QueryBoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","hash","includes","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes"]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash))\n\n const payloads = (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 = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map((payload) => payload._hash))\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadBuilder","fromDbRepresentation","toDbRepresentation","PayloadWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","QueryBoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","Set","hash","has","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes"]}
@@ -91,23 +91,23 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
91
91
  const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({
92
92
  _$hash
93
93
  })))).filter(import_exists.exists);
94
- const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash);
95
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash));
94
+ const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash));
95
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
96
96
  const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({
97
97
  _$hash
98
98
  })))).filter(import_exists.exists);
99
- const dataBwsHashes = dataBws.map((payload) => payload._$hash);
100
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash));
99
+ const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash));
100
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash));
101
101
  const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({
102
102
  _hash
103
103
  })))).filter(import_exists.exists);
104
- const payloadsHashes = payloads.map((payload) => payload._hash);
105
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash));
104
+ const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
105
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
106
106
  const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({
107
107
  _hash
108
108
  })))).filter(import_exists.exists);
109
- const bwsHashes = bws.map((payload) => payload._hash);
110
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash));
109
+ const bwsHashes = new Set(bws.map((payload) => payload._hash));
110
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash));
111
111
  const foundPayloads = [
112
112
  ...dataPayloads,
113
113
  ...dataBws,
@@ -119,13 +119,13 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
119
119
  async insertHandler(payloads) {
120
120
  const [bw, p] = await validByType(payloads);
121
121
  const payloadsWithExternalMeta = await Promise.all(p.map(import_payload_mongodb.toDbRepresentation));
122
- if (payloadsWithExternalMeta.length) {
122
+ if (payloadsWithExternalMeta.length > 0) {
123
123
  const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta);
124
124
  if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
125
125
  throw new Error("MongoDBDeterministicArchivist: Error inserting Payloads");
126
126
  }
127
127
  const boundWitnessesWithExternalMeta = await Promise.all(bw.map(import_payload_mongodb.toDbRepresentation));
128
- if (boundWitnessesWithExternalMeta.length) {
128
+ if (boundWitnessesWithExternalMeta.length > 0) {
129
129
  const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta);
130
130
  if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
131
131
  throw new Error("MongoDBDeterministicArchivist: Error inserting BoundWitnesses");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = dataBws.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))\n\n const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = payloads.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))\n\n const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = bws.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\n if (payloadsWithExternalMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\n if (boundWitnessesWithExternalMeta.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","hash","includes","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash))\n\n const payloads = (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 = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map((payload) => payload._hash))\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","Set","hash","has","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
@@ -66,23 +66,23 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
66
66
  const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({
67
67
  _$hash
68
68
  })))).filter(exists);
69
- const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash);
70
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash));
69
+ const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash));
70
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash));
71
71
  const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({
72
72
  _$hash
73
73
  })))).filter(exists);
74
- const dataBwsHashes = dataBws.map((payload) => payload._$hash);
75
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash));
74
+ const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash));
75
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash));
76
76
  const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({
77
77
  _hash
78
78
  })))).filter(exists);
79
- const payloadsHashes = payloads.map((payload) => payload._hash);
80
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash));
79
+ const payloadsHashes = new Set(payloads.map((payload) => payload._hash));
80
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash));
81
81
  const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({
82
82
  _hash
83
83
  })))).filter(exists);
84
- const bwsHashes = bws.map((payload) => payload._hash);
85
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash));
84
+ const bwsHashes = new Set(bws.map((payload) => payload._hash));
85
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash));
86
86
  const foundPayloads = [
87
87
  ...dataPayloads,
88
88
  ...dataBws,
@@ -94,13 +94,13 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
94
94
  async insertHandler(payloads) {
95
95
  const [bw, p] = await validByType(payloads);
96
96
  const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation));
97
- if (payloadsWithExternalMeta.length) {
97
+ if (payloadsWithExternalMeta.length > 0) {
98
98
  const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta);
99
99
  if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
100
100
  throw new Error("MongoDBDeterministicArchivist: Error inserting Payloads");
101
101
  }
102
102
  const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation));
103
- if (boundWitnessesWithExternalMeta.length) {
103
+ if (boundWitnessesWithExternalMeta.length > 0) {
104
104
  const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta);
105
105
  if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
106
106
  throw new Error("MongoDBDeterministicArchivist: Error inserting BoundWitnesses");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = dataBws.map((payload) => payload._$hash)\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))\n\n const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)\n const payloadsHashes = payloads.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))\n\n const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = bws.map((payload) => payload._hash)\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\n if (payloadsWithExternalMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\n if (boundWitnessesWithExternalMeta.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadBuilder","fromDbRepresentation","toDbRepresentation","PayloadWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","QueryBoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","hash","includes","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
1
+ {"version":3,"sources":["../../src/Archivist.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Hash } from '@xylabs/hex'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { fromDbRepresentation, PayloadWithMongoMeta, toDbRepresentation } from '@xyo-network/payload-mongodb'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { validByType } from './lib'\n\nconst MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)\n\nexport class MongoDBArchivist extends MongoDBArchivistBase {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n override readonly queries: string[] = [ArchivistInsertQuerySchema, ...super.queries]\n\n override async head(): Promise<Payload | undefined> {\n const head = await (await this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray()\n return head[0] ? PayloadWrapper.wrap(head[0]).payload : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<WithMeta<Payload>[]> {\n let remainingHashes = [...hashes]\n\n const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)\n const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash))\n\n const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)\n const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash))\n remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash))\n\n const payloads = (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 = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)\n const bwsHashes = new Set(bws.map((payload) => payload._hash))\n remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash))\n\n const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]\n return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {\n const [bw, p] = await validByType(payloads)\n const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))\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('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n\n return await PayloadBuilder.build([...boundWitnessesWithExternalMeta, ...payloadsWithExternalMeta])\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { BoundWitness, isBoundWitness, isQueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const validByType = async (payloads: Payload[] = []) => {\n const results: [BoundWitness[], Payload[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = await wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw.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(payloadWrapper.payload)\n }\n }\n return\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":"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","names":["exists","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadBuilder","fromDbRepresentation","toDbRepresentation","PayloadWrapper","isBoundWitness","isQueryBoundWitness","BoundWitnessWrapper","QueryBoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","errors","getErrors","console","log","JSON","stringify","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","payload","undefined","getHandler","hashes","remainingHashes","dataPayloads","Promise","all","map","_$hash","findOne","filter","exists","dataPayloadsHashes","Set","hash","has","dataBws","boundWitnesses","dataBwsHashes","_hash","payloadsHashes","bws","bwsHashes","foundPayloads","PayloadBuilder","build","fromDbRepresentation","insertHandler","bw","p","validByType","payloadsWithExternalMeta","toDbRepresentation","length","payloadsResult","insertMany","acknowledged","insertedCount","Error","boundWitnessesWithExternalMeta","boundWitnessesResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
package/package.json CHANGED
@@ -14,25 +14,25 @@
14
14
  "@xylabs/hex": "^2.14.3",
15
15
  "@xyo-network/archivist-abstract": "^2.90.23",
16
16
  "@xyo-network/archivist-model": "^2.90.23",
17
- "@xyo-network/archivist-model-mongodb": "~2.84.3",
17
+ "@xyo-network/archivist-model-mongodb": "~2.84.4",
18
18
  "@xyo-network/boundwitness-model": "^2.90.23",
19
19
  "@xyo-network/boundwitness-wrapper": "^2.90.23",
20
- "@xyo-network/module-abstract-mongodb": "~2.84.3",
20
+ "@xyo-network/module-abstract-mongodb": "~2.84.4",
21
21
  "@xyo-network/payload-builder": "^2.90.23",
22
22
  "@xyo-network/payload-model": "^2.90.23",
23
- "@xyo-network/payload-mongodb": "~2.84.3",
23
+ "@xyo-network/payload-mongodb": "~2.84.4",
24
24
  "@xyo-network/payload-wrapper": "^2.90.23"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@xylabs/arraybuffer": "^2.14.3",
28
28
  "@xylabs/jest-helpers": "^2.14.3",
29
- "@xylabs/ts-scripts-yarn3": "^3.2.42",
30
- "@xylabs/tsconfig": "^3.2.42",
29
+ "@xylabs/ts-scripts-yarn3": "^3.4.1",
30
+ "@xylabs/tsconfig": "^3.4.1",
31
31
  "@xyo-network/account": "^2.90.23",
32
32
  "@xyo-network/account-model": "^2.90.23",
33
33
  "@xyo-network/archivist-wrapper": "^2.90.23",
34
34
  "@xyo-network/boundwitness-builder": "^2.90.23",
35
- "@xyo-network/sdk-xyo-mongo-js": "~2.84.3",
35
+ "@xyo-network/sdk-xyo-mongo-js": "~2.84.4",
36
36
  "fake-indexeddb": "^4.0.2",
37
37
  "jest": "^29.7.0",
38
38
  "typescript": "^5.3.3"
@@ -76,6 +76,6 @@
76
76
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
77
77
  },
78
78
  "sideEffects": false,
79
- "version": "2.84.3",
79
+ "version": "2.84.4",
80
80
  "type": "module"
81
81
  }
package/src/Archivist.ts CHANGED
@@ -27,20 +27,20 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
27
27
  let remainingHashes = [...hashes]
28
28
 
29
29
  const dataPayloads = (await Promise.all(remainingHashes.map((_$hash) => this.payloads.findOne({ _$hash })))).filter(exists)
30
- const dataPayloadsHashes = dataPayloads.map((payload) => payload._$hash)
31
- remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.includes(hash))
30
+ const dataPayloadsHashes = new Set(dataPayloads.map((payload) => payload._$hash))
31
+ remainingHashes = remainingHashes.filter((hash) => !dataPayloadsHashes.has(hash))
32
32
 
33
33
  const dataBws = (await Promise.all(remainingHashes.map((_$hash) => this.boundWitnesses.findOne({ _$hash })))).filter(exists)
34
- const dataBwsHashes = dataBws.map((payload) => payload._$hash)
35
- remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.includes(hash))
34
+ const dataBwsHashes = new Set(dataBws.map((payload) => payload._$hash))
35
+ remainingHashes = remainingHashes.filter((hash) => !dataBwsHashes.has(hash))
36
36
 
37
37
  const payloads = (await Promise.all(remainingHashes.map((_hash) => this.payloads.findOne({ _hash })))).filter(exists)
38
- const payloadsHashes = payloads.map((payload) => payload._hash)
39
- remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.includes(hash))
38
+ const payloadsHashes = new Set(payloads.map((payload) => payload._hash))
39
+ remainingHashes = remainingHashes.filter((hash) => !payloadsHashes.has(hash))
40
40
 
41
41
  const bws = (await Promise.all(remainingHashes.map((_hash) => this.boundWitnesses.findOne({ _hash })))).filter(exists)
42
- const bwsHashes = bws.map((payload) => payload._hash)
43
- remainingHashes = remainingHashes.filter((hash) => !bwsHashes.includes(hash))
42
+ const bwsHashes = new Set(bws.map((payload) => payload._hash))
43
+ remainingHashes = remainingHashes.filter((hash) => !bwsHashes.has(hash))
44
44
 
45
45
  const foundPayloads = [...dataPayloads, ...dataBws, ...payloads, ...bws] as PayloadWithMongoMeta<Payload & { _$hash: Hash; _$meta?: unknown }>[]
46
46
  return await PayloadBuilder.build(foundPayloads.map(fromDbRepresentation))
@@ -49,13 +49,13 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
49
49
  protected override async insertHandler(payloads: Payload[]): Promise<WithMeta<Payload>[]> {
50
50
  const [bw, p] = await validByType(payloads)
51
51
  const payloadsWithExternalMeta = await Promise.all(p.map(toDbRepresentation))
52
- if (payloadsWithExternalMeta.length) {
52
+ if (payloadsWithExternalMeta.length > 0) {
53
53
  const payloadsResult = await this.payloads.insertMany(payloadsWithExternalMeta)
54
54
  if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithExternalMeta.length)
55
55
  throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')
56
56
  }
57
57
  const boundWitnessesWithExternalMeta = await Promise.all(bw.map(toDbRepresentation))
58
- if (boundWitnessesWithExternalMeta.length) {
58
+ if (boundWitnessesWithExternalMeta.length > 0) {
59
59
  const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnessesWithExternalMeta)
60
60
  if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnessesWithExternalMeta.length)
61
61
  throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')