@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.
- package/dist/browser/index.cjs +10 -10
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +10 -10
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +10 -10
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +10 -10
- package/dist/node/index.js.map +1 -1
- package/package.json +7 -7
- package/src/Archivist.ts +10 -10
package/dist/browser/index.cjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"]}
|
package/dist/node/index.cjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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");
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -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.
|
|
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"]}
|
package/dist/node/index.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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");
|
package/dist/node/index.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
30
|
-
"@xylabs/tsconfig": "^3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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')
|