@xyo-network/archivist-mongodb 2.75.6 → 2.75.7
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/Archivist.cjs +1 -32
- package/dist/browser/Archivist.cjs.map +1 -1
- package/dist/browser/Archivist.d.cts +1 -0
- package/dist/browser/Archivist.d.cts.map +1 -1
- package/dist/browser/Archivist.d.mts +1 -0
- package/dist/browser/Archivist.d.mts.map +1 -1
- package/dist/browser/Archivist.d.ts +1 -0
- package/dist/browser/Archivist.d.ts.map +1 -1
- package/dist/browser/Archivist.js +1 -32
- package/dist/browser/Archivist.js.map +1 -1
- package/dist/browser/index.cjs +1 -32
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +1 -32
- package/dist/browser/index.js.map +1 -1
- package/dist/docs.json +2383 -2277
- package/dist/node/Archivist.d.cts +1 -0
- package/dist/node/Archivist.d.cts.map +1 -1
- package/dist/node/Archivist.d.mts +1 -0
- package/dist/node/Archivist.d.mts.map +1 -1
- package/dist/node/Archivist.d.ts +1 -0
- package/dist/node/Archivist.d.ts.map +1 -1
- package/dist/node/Archivist.js +1 -32
- package/dist/node/Archivist.js.map +1 -1
- package/dist/node/Archivist.mjs +1 -32
- package/dist/node/Archivist.mjs.map +1 -1
- package/dist/node/index.js +1 -32
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +1 -32
- package/dist/node/index.mjs.map +1 -1
- package/package.json +15 -16
- package/src/Archivist.ts +2 -32
|
@@ -12,6 +12,7 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
|
|
|
12
12
|
readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/node-core-model").PayloadMetaBase & {
|
|
13
13
|
schema: string;
|
|
14
14
|
}>;
|
|
15
|
+
ensureIndexes(): Promise<void>;
|
|
15
16
|
address: string;
|
|
16
17
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
17
18
|
accountDerivationPath?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAKpD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAwC,CAAA;AAElE,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,OAAgB,aAAa,WAAwD;IAErF,SAAkB,OAAO,EAAE,MAAM,EAAE,CAAiD;IAErE,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAK1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAQhD,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAiBvD,YAAY;CAKtC"}
|
|
@@ -12,6 +12,7 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
|
|
|
12
12
|
readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/node-core-model").PayloadMetaBase & {
|
|
13
13
|
schema: string;
|
|
14
14
|
}>;
|
|
15
|
+
ensureIndexes(): Promise<void>;
|
|
15
16
|
address: string;
|
|
16
17
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
17
18
|
accountDerivationPath?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAKpD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAwC,CAAA;AAElE,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,OAAgB,aAAa,WAAwD;IAErF,SAAkB,OAAO,EAAE,MAAM,EAAE,CAAiD;IAErE,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAK1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAQhD,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAiBvD,YAAY;CAKtC"}
|
package/dist/node/Archivist.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ declare const MongoDBArchivistBase: (abstract new (...args: any[]) => {
|
|
|
12
12
|
readonly payloads: import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdk<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/node-core-model").PayloadMetaBase & {
|
|
13
13
|
schema: string;
|
|
14
14
|
}>;
|
|
15
|
+
ensureIndexes(): Promise<void>;
|
|
15
16
|
address: string;
|
|
16
17
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
17
18
|
accountDerivationPath?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"Archivist.d.ts","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAKnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAKpD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAwC,CAAA;AAElE,qBAAa,gBAAiB,SAAQ,oBAAoB;IACxD,OAAgB,aAAa,WAAwD;IAErF,SAAkB,OAAO,EAAE,MAAM,EAAE,CAAiD;IAErE,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAK1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAQhD,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAiBvD,YAAY;CAKtC"}
|
package/dist/node/Archivist.js
CHANGED
|
@@ -100,28 +100,6 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
100
100
|
}, "validByType");
|
|
101
101
|
|
|
102
102
|
// src/Archivist.ts
|
|
103
|
-
var getBoundWitnessesIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
104
|
-
return [
|
|
105
|
-
{
|
|
106
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
107
|
-
key: {
|
|
108
|
-
_hash: 1
|
|
109
|
-
},
|
|
110
|
-
name: `${collectionName}.IX__hash`
|
|
111
|
-
}
|
|
112
|
-
];
|
|
113
|
-
}, "getBoundWitnessesIndexes");
|
|
114
|
-
var getPayloadsIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
115
|
-
return [
|
|
116
|
-
{
|
|
117
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
118
|
-
key: {
|
|
119
|
-
_hash: 1
|
|
120
|
-
},
|
|
121
|
-
name: `${collectionName}.IX__hash`
|
|
122
|
-
}
|
|
123
|
-
];
|
|
124
|
-
}, "getPayloadsIndexes");
|
|
125
103
|
var MongoDBArchivistBase = (0, import_module_abstract_mongodb.MongoDBModuleMixin)(import_archivist_abstract.AbstractArchivist);
|
|
126
104
|
var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
127
105
|
queries = [
|
|
@@ -166,16 +144,7 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
|
166
144
|
}
|
|
167
145
|
async startHandler() {
|
|
168
146
|
await super.startHandler();
|
|
169
|
-
await this.
|
|
170
|
-
const { collectionName } = collection;
|
|
171
|
-
const indexes = getBoundWitnessesIndexes(collectionName);
|
|
172
|
-
await collection.createIndexes(indexes);
|
|
173
|
-
});
|
|
174
|
-
await this.payloads.useCollection(async (collection) => {
|
|
175
|
-
const { collectionName } = collection;
|
|
176
|
-
const indexes = getPayloadsIndexes(collectionName);
|
|
177
|
-
await collection.createIndexes(indexes);
|
|
178
|
-
});
|
|
147
|
+
await this.ensureIndexes();
|
|
179
148
|
return true;
|
|
180
149
|
}
|
|
181
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { CollectionIndexFunction, MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { IndexDescription } from 'mongodb'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'\n\nconst getBoundWitnessesIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\n\nconst getPayloadsIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.boundWitnesses.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getBoundWitnessesIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n await this.payloads.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getPayloadsIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","getBoundWitnessesIndexes","collectionName","key","_hash","name","getPayloadsIndexes","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","useCollection","collection","indexes","createIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\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 { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, 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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","_hash","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
package/dist/node/Archivist.mjs
CHANGED
|
@@ -78,28 +78,6 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
78
78
|
}, "validByType");
|
|
79
79
|
|
|
80
80
|
// src/Archivist.ts
|
|
81
|
-
var getBoundWitnessesIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
82
|
-
return [
|
|
83
|
-
{
|
|
84
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
85
|
-
key: {
|
|
86
|
-
_hash: 1
|
|
87
|
-
},
|
|
88
|
-
name: `${collectionName}.IX__hash`
|
|
89
|
-
}
|
|
90
|
-
];
|
|
91
|
-
}, "getBoundWitnessesIndexes");
|
|
92
|
-
var getPayloadsIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
93
|
-
return [
|
|
94
|
-
{
|
|
95
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
96
|
-
key: {
|
|
97
|
-
_hash: 1
|
|
98
|
-
},
|
|
99
|
-
name: `${collectionName}.IX__hash`
|
|
100
|
-
}
|
|
101
|
-
];
|
|
102
|
-
}, "getPayloadsIndexes");
|
|
103
81
|
var MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist);
|
|
104
82
|
var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
105
83
|
queries = [
|
|
@@ -144,16 +122,7 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
|
144
122
|
}
|
|
145
123
|
async startHandler() {
|
|
146
124
|
await super.startHandler();
|
|
147
|
-
await this.
|
|
148
|
-
const { collectionName } = collection;
|
|
149
|
-
const indexes = getBoundWitnessesIndexes(collectionName);
|
|
150
|
-
await collection.createIndexes(indexes);
|
|
151
|
-
});
|
|
152
|
-
await this.payloads.useCollection(async (collection) => {
|
|
153
|
-
const { collectionName } = collection;
|
|
154
|
-
const indexes = getPayloadsIndexes(collectionName);
|
|
155
|
-
await collection.createIndexes(indexes);
|
|
156
|
-
});
|
|
125
|
+
await this.ensureIndexes();
|
|
157
126
|
return true;
|
|
158
127
|
}
|
|
159
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { CollectionIndexFunction, MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { IndexDescription } from 'mongodb'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'\n\nconst getBoundWitnessesIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\n\nconst getPayloadsIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.boundWitnesses.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getBoundWitnessesIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n await this.payloads.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getPayloadsIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":"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","names":["exists","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","PayloadWrapper","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","getBoundWitnessesIndexes","collectionName","key","_hash","name","getPayloadsIndexes","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","useCollection","collection","indexes","createIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\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 { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, 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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,cAAc;AACvB,SAASC,uBAAuB;AAChC,SAASC,yBAAyB;AAClC,SAASC,uBAAuBC,kCAAkC;AAClE,SAASC,oCAAoC;AAC7C,SAASC,0BAA0B;AAGnC,SAASC,kBAAAA,uBAAsB;;;ACHxB,IAAMC,yBAAyB,8BAAOC,YAAAA;AAC3C,QAAMC,KAAKD,QAAQE;AACnB,SAAO;IAAE,GAAGD;IAAIE,OAAO,MAAMH,QAAQI,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC3E,GAHsC;;;ACF/B,IAAMC,oBAAoB,8BAAOC,YAAAA;AACtC,SAAO;IAAE,GAAGA,QAAQC,QAAO;IAAIC,OAAO,MAAMF,QAAQG,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC1F,GAFiC;;;ACDjC,SAASC,sBAAsB;AAExB,IAAMC,gBAAgB,wBAACC,UAAAA;AAC5B,QAAMC,cAAeD,+BAAwBC;AAC7C,MAAIA,aAAa;AACf,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;MAAIH;IAAY;EAC7D,OAAO;AACL,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;IAAG;EAChD;AACF,GAP6B;;;ACJ7B,SAASC,qBAAqBC,gCAAgC;AAC9D,SAASC,sBAAsB;AAC/B,SAASC,2BAA2B;AAEpC,SAASC,kBAAAA,uBAAsB;AAExB,IAAMC,cAAc,8BAAOC,WAAsB,CAAA,MAAE;AACxD,QAAMC,UAAqD;IAAC,CAAA;IAAI,CAAA;;AAChE,QAAMC,QAAQC,IACZH,SAASI,IAAI,OAAOC,YAAAA;AAClB,QAAIC,eAAeD,OAAAA,GAAU;AAC3B,YAAME,UAAUC,oBAAoBH,OAAAA,IAAWI,2BAA2BC;AAC1E,YAAMC,KAAKJ,QAAQK,MAAMP,OAAAA;AACzB,UAAI,MAAMM,GAAGE,SAAQ,GAAI;AACvBZ,gBAAQ,CAAA,EAAGa,KAAKH,EAAAA;MAClB;IACF,OAAO;AACL,YAAMI,iBAAiBC,gBAAeC,KAAKZ,OAAAA;AAC3C,UAAI,MAAMU,eAAeF,SAAQ,GAAI;AACnCZ,gBAAQ,CAAA,EAAGa,KAAKC,cAAAA;MAClB;IACF;EACF,CAAA,CAAA;AAEF,SAAOd;AACT,GAnB2B;;;AJM3B,IAAMiB,uBAAuBC,mBAAmBC,iBAAAA;AAEzC,IAAMC,oBAAN,MAAMA,0BAAyBH,qBAAAA;EAGlBI,UAAoB;IAACC;OAA+B,MAAMD;;EAE5E,MAAeE,OAAqC;AAClD,UAAMA,OAAO,OAAO,MAAM,KAAKC,SAASC,KAAK,CAAC,CAAA,GAAIC,KAAK;MAAEC,YAAY;IAAG,CAAA,EAAGC,MAAM,CAAA,EAAGC,QAAO;AAC3F,WAAON,KAAK,CAAA,IAAKO,gBAAeC,KAAKR,KAAK,CAAA,CAAE,EAAES,KAAI,IAAKC;EACzD;EAEA,MAAyBC,WAAWC,QAAsC;AACxE,UAAMX,WAAWW,OAAOC,IAAI,CAACC,UAAU,KAAKb,SAASc,QAAQ;MAAED;IAAM,CAAA,CAAA;AACrE,UAAME,MAAMJ,OAAOC,IAAI,CAACC,UAAU,KAAKG,eAAeF,QAAQ;MAAED;IAAM,CAAA,CAAA;AACtE,UAAMI,OAAO,MAAMC,QAAQC,WAAW;MAACnB;MAAUe;MAAKK,KAAI,CAAA;AAC1D,UAAMC,YAAYJ,KAAKK,OAA0CC,iBAAiB,CAAA,CAAE;AACpF,WAAOF,UAAUG,OAAOC,MAAAA,EAAQb,IAAIc,aAAAA;EACtC;EAEA,MAAyBC,cAAc3B,UAA0C;AAC/E,UAAM,CAAC4B,IAAIC,CAAAA,IAAK,MAAMC,YAAY9B,QAAAA;AAClC,UAAMgB,iBAAiB,MAAME,QAAQa,IAAIH,GAAGhB,IAAI,CAACoB,MAAMC,uBAAuBD,CAAAA,CAAAA,CAAAA;AAC9E,UAAME,mBAAmB,MAAMhB,QAAQa,IAAIF,EAAEjB,IAAI,CAACoB,MAAMG,kBAAkBH,CAAAA,CAAAA,CAAAA;AAC1E,QAAIhB,eAAeoB,QAAQ;AACzB,YAAMC,uBAAuB,MAAM,KAAKrB,eAAesB,WAAWtB,cAAAA;AAClE,UAAI,CAACqB,qBAAqBE,gBAAgBF,qBAAqBG,kBAAkBxB,eAAeoB;AAC9F,cAAM,IAAIK,MAAM,+DAAA;IACpB;AACA,QAAIP,iBAAiBE,QAAQ;AAC3B,YAAMM,iBAAiB,MAAM,KAAK1C,SAASsC,WAAWJ,gBAAAA;AACtD,UAAI,CAACQ,eAAeH,gBAAgBG,eAAeF,kBAAkBN,iBAAiBE;AACpF,cAAM,IAAIK,MAAM,yDAAA;IACpB;AACA,WAAOzC,YAAY,CAAA;EACrB;EAEA,MAAyB2C,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,UAAM,KAAKC,cAAa;AACxB,WAAO;EACT;AACF;AAxCsCnD;AACpC,cADWG,mBACKiD,iBAAgB;EAACC;EAA8BC;;AAD1D,IAAMnD,mBAAN;","names":["exists","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","PayloadWrapper","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","_hash","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
package/dist/node/index.js
CHANGED
|
@@ -103,28 +103,6 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
103
103
|
}, "validByType");
|
|
104
104
|
|
|
105
105
|
// src/Archivist.ts
|
|
106
|
-
var getBoundWitnessesIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
107
|
-
return [
|
|
108
|
-
{
|
|
109
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
110
|
-
key: {
|
|
111
|
-
_hash: 1
|
|
112
|
-
},
|
|
113
|
-
name: `${collectionName}.IX__hash`
|
|
114
|
-
}
|
|
115
|
-
];
|
|
116
|
-
}, "getBoundWitnessesIndexes");
|
|
117
|
-
var getPayloadsIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
118
|
-
return [
|
|
119
|
-
{
|
|
120
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
121
|
-
key: {
|
|
122
|
-
_hash: 1
|
|
123
|
-
},
|
|
124
|
-
name: `${collectionName}.IX__hash`
|
|
125
|
-
}
|
|
126
|
-
];
|
|
127
|
-
}, "getPayloadsIndexes");
|
|
128
106
|
var MongoDBArchivistBase = (0, import_module_abstract_mongodb.MongoDBModuleMixin)(import_archivist_abstract.AbstractArchivist);
|
|
129
107
|
var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
130
108
|
queries = [
|
|
@@ -169,16 +147,7 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
|
169
147
|
}
|
|
170
148
|
async startHandler() {
|
|
171
149
|
await super.startHandler();
|
|
172
|
-
await this.
|
|
173
|
-
const { collectionName } = collection;
|
|
174
|
-
const indexes = getBoundWitnessesIndexes(collectionName);
|
|
175
|
-
await collection.createIndexes(indexes);
|
|
176
|
-
});
|
|
177
|
-
await this.payloads.useCollection(async (collection) => {
|
|
178
|
-
const { collectionName } = collection;
|
|
179
|
-
const indexes = getPayloadsIndexes(collectionName);
|
|
180
|
-
await collection.createIndexes(indexes);
|
|
181
|
-
});
|
|
150
|
+
await this.ensureIndexes();
|
|
182
151
|
return true;
|
|
183
152
|
}
|
|
184
153
|
};
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { CollectionIndexFunction, MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { IndexDescription } from 'mongodb'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'\n\nconst getBoundWitnessesIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\n\nconst getPayloadsIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.boundWitnesses.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getBoundWitnessesIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n await this.payloads.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getPayloadsIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","getBoundWitnessesIndexes","collectionName","key","_hash","name","getPayloadsIndexes","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","useCollection","collection","indexes","createIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts"],"sourcesContent":["export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n","import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\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 { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, 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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n"],"mappings":"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","names":["import_payload_wrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","_hash","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
package/dist/node/index.mjs
CHANGED
|
@@ -78,28 +78,6 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
78
78
|
}, "validByType");
|
|
79
79
|
|
|
80
80
|
// src/Archivist.ts
|
|
81
|
-
var getBoundWitnessesIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
82
|
-
return [
|
|
83
|
-
{
|
|
84
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
85
|
-
key: {
|
|
86
|
-
_hash: 1
|
|
87
|
-
},
|
|
88
|
-
name: `${collectionName}.IX__hash`
|
|
89
|
-
}
|
|
90
|
-
];
|
|
91
|
-
}, "getBoundWitnessesIndexes");
|
|
92
|
-
var getPayloadsIndexes = /* @__PURE__ */ __name((collectionName) => {
|
|
93
|
-
return [
|
|
94
|
-
{
|
|
95
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
96
|
-
key: {
|
|
97
|
-
_hash: 1
|
|
98
|
-
},
|
|
99
|
-
name: `${collectionName}.IX__hash`
|
|
100
|
-
}
|
|
101
|
-
];
|
|
102
|
-
}, "getPayloadsIndexes");
|
|
103
81
|
var MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist);
|
|
104
82
|
var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
105
83
|
queries = [
|
|
@@ -144,16 +122,7 @@ var _MongoDBArchivist = class _MongoDBArchivist extends MongoDBArchivistBase {
|
|
|
144
122
|
}
|
|
145
123
|
async startHandler() {
|
|
146
124
|
await super.startHandler();
|
|
147
|
-
await this.
|
|
148
|
-
const { collectionName } = collection;
|
|
149
|
-
const indexes = getBoundWitnessesIndexes(collectionName);
|
|
150
|
-
await collection.createIndexes(indexes);
|
|
151
|
-
});
|
|
152
|
-
await this.payloads.useCollection(async (collection) => {
|
|
153
|
-
const { collectionName } = collection;
|
|
154
|
-
const indexes = getPayloadsIndexes(collectionName);
|
|
155
|
-
await collection.createIndexes(indexes);
|
|
156
|
-
});
|
|
125
|
+
await this.ensureIndexes();
|
|
157
126
|
return true;
|
|
158
127
|
}
|
|
159
128
|
};
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'\nimport { CollectionIndexFunction, MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { IndexDescription } from 'mongodb'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'\n\nconst getBoundWitnessesIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\n\nconst getPayloadsIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {\n return [\n {\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n key: { _hash: 1 },\n name: `${collectionName}.IX__hash`,\n },\n ]\n}\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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.boundWitnesses.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getBoundWitnessesIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n await this.payloads.useCollection(async (collection) => {\n const { collectionName } = collection\n const indexes = getPayloadsIndexes(collectionName)\n await collection.createIndexes(indexes)\n })\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\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","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","PayloadWrapper","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","getBoundWitnessesIndexes","collectionName","key","_hash","name","getPayloadsIndexes","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","useCollection","collection","indexes","createIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Archivist.ts","../../src/lib/toBoundWitnessWithMeta.ts","../../src/lib/toPayloadWithMeta.ts","../../src/lib/toReturnValue.ts","../../src/lib/validByType.ts","../../src/index.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { fulfilledValues } from '@xylabs/promise'\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 { PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, 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]).body() : undefined\n }\n\n protected override async getHandler(hashes: string[]): Promise<Payload[]> {\n const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }))\n const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }))\n const gets = await Promise.allSettled([payloads, bws].flat())\n const succeeded = gets.reduce<(PayloadWithPartialMeta | null)[]>(fulfilledValues, []) as Payload[]\n return succeeded.filter(exists).map(toReturnValue)\n }\n\n protected override async insertHandler(payloads?: Payload[]): Promise<Payload[]> {\n const [bw, p] = await validByType(payloads)\n const boundWitnesses = await Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)))\n const payloadsWithMeta = await Promise.all(p.map((x) => toPayloadWithMeta(x)))\n if (boundWitnesses.length) {\n const boundWitnessesResult = await this.boundWitnesses.insertMany(boundWitnesses)\n if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses')\n }\n if (payloadsWithMeta.length) {\n const payloadsResult = await this.payloads.insertMany(payloadsWithMeta)\n if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)\n throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads')\n }\n return payloads ?? []\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { BoundWitnessWithMeta } from '@xyo-network/node-core-model'\n\nexport const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {\n const bw = wrapper.boundwitness as BoundWitness\n return { ...bw, _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n","import { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport const toReturnValue = (value: Payload | BoundWitness): Payload => {\n const _signatures = (value as BoundWitness)?._signatures\n if (_signatures) {\n return { ...PayloadWrapper.wrap(value).body(), _signatures } as BoundWitness\n } else {\n return { ...PayloadWrapper.wrap(value).body() }\n }\n}\n","import { isQueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } 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: [BoundWitnessWrapper[], PayloadWrapper[]] = [[], []]\n await Promise.all(\n payloads.map(async (payload) => {\n if (isBoundWitness(payload)) {\n const wrapper = isQueryBoundWitness(payload) ? QueryBoundWitnessWrapper : BoundWitnessWrapper\n const bw = wrapper.parse(payload)\n if (await bw.getValid()) {\n results[0].push(bw)\n }\n } else {\n const payloadWrapper = PayloadWrapper.wrap(payload)\n if (await payloadWrapper.getValid()) {\n results[1].push(payloadWrapper)\n }\n }\n }),\n )\n return results\n}\n","export * from './Archivist'\nexport * from '@xyo-network/archivist-model-mongodb'\n"],"mappings":";;;;;;;;;AAAA,SAASA,cAAc;AACvB,SAASC,uBAAuB;AAChC,SAASC,yBAAyB;AAClC,SAASC,uBAAuBC,kCAAkC;AAClE,SAASC,oCAAoC;AAC7C,SAASC,0BAA0B;AAGnC,SAASC,kBAAAA,uBAAsB;;;ACHxB,IAAMC,yBAAyB,8BAAOC,YAAAA;AAC3C,QAAMC,KAAKD,QAAQE;AACnB,SAAO;IAAE,GAAGD;IAAIE,OAAO,MAAMH,QAAQI,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC3E,GAHsC;;;ACF/B,IAAMC,oBAAoB,8BAAOC,YAAAA;AACtC,SAAO;IAAE,GAAGA,QAAQC,QAAO;IAAIC,OAAO,MAAMF,QAAQG,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC1F,GAFiC;;;ACDjC,SAASC,sBAAsB;AAExB,IAAMC,gBAAgB,wBAACC,UAAAA;AAC5B,QAAMC,cAAeD,+BAAwBC;AAC7C,MAAIA,aAAa;AACf,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;MAAIH;IAAY;EAC7D,OAAO;AACL,WAAO;MAAE,GAAGC,eAAeC,KAAKH,KAAAA,EAAOI,KAAI;IAAG;EAChD;AACF,GAP6B;;;ACJ7B,SAASC,qBAAqBC,gCAAgC;AAC9D,SAASC,sBAAsB;AAC/B,SAASC,2BAA2B;AAEpC,SAASC,kBAAAA,uBAAsB;AAExB,IAAMC,cAAc,8BAAOC,WAAsB,CAAA,MAAE;AACxD,QAAMC,UAAqD;IAAC,CAAA;IAAI,CAAA;;AAChE,QAAMC,QAAQC,IACZH,SAASI,IAAI,OAAOC,YAAAA;AAClB,QAAIC,eAAeD,OAAAA,GAAU;AAC3B,YAAME,UAAUC,oBAAoBH,OAAAA,IAAWI,2BAA2BC;AAC1E,YAAMC,KAAKJ,QAAQK,MAAMP,OAAAA;AACzB,UAAI,MAAMM,GAAGE,SAAQ,GAAI;AACvBZ,gBAAQ,CAAA,EAAGa,KAAKH,EAAAA;MAClB;IACF,OAAO;AACL,YAAMI,iBAAiBC,gBAAeC,KAAKZ,OAAAA;AAC3C,UAAI,MAAMU,eAAeF,SAAQ,GAAI;AACnCZ,gBAAQ,CAAA,EAAGa,KAAKC,cAAAA;MAClB;IACF;EACF,CAAA,CAAA;AAEF,SAAOd;AACT,GAnB2B;;;AJM3B,IAAMiB,uBAAuBC,mBAAmBC,iBAAAA;AAEzC,IAAMC,oBAAN,MAAMA,0BAAyBH,qBAAAA;EAGlBI,UAAoB;IAACC;OAA+B,MAAMD;;EAE5E,MAAeE,OAAqC;AAClD,UAAMA,OAAO,OAAO,MAAM,KAAKC,SAASC,KAAK,CAAC,CAAA,GAAIC,KAAK;MAAEC,YAAY;IAAG,CAAA,EAAGC,MAAM,CAAA,EAAGC,QAAO;AAC3F,WAAON,KAAK,CAAA,IAAKO,gBAAeC,KAAKR,KAAK,CAAA,CAAE,EAAES,KAAI,IAAKC;EACzD;EAEA,MAAyBC,WAAWC,QAAsC;AACxE,UAAMX,WAAWW,OAAOC,IAAI,CAACC,UAAU,KAAKb,SAASc,QAAQ;MAAED;IAAM,CAAA,CAAA;AACrE,UAAME,MAAMJ,OAAOC,IAAI,CAACC,UAAU,KAAKG,eAAeF,QAAQ;MAAED;IAAM,CAAA,CAAA;AACtE,UAAMI,OAAO,MAAMC,QAAQC,WAAW;MAACnB;MAAUe;MAAKK,KAAI,CAAA;AAC1D,UAAMC,YAAYJ,KAAKK,OAA0CC,iBAAiB,CAAA,CAAE;AACpF,WAAOF,UAAUG,OAAOC,MAAAA,EAAQb,IAAIc,aAAAA;EACtC;EAEA,MAAyBC,cAAc3B,UAA0C;AAC/E,UAAM,CAAC4B,IAAIC,CAAAA,IAAK,MAAMC,YAAY9B,QAAAA;AAClC,UAAMgB,iBAAiB,MAAME,QAAQa,IAAIH,GAAGhB,IAAI,CAACoB,MAAMC,uBAAuBD,CAAAA,CAAAA,CAAAA;AAC9E,UAAME,mBAAmB,MAAMhB,QAAQa,IAAIF,EAAEjB,IAAI,CAACoB,MAAMG,kBAAkBH,CAAAA,CAAAA,CAAAA;AAC1E,QAAIhB,eAAeoB,QAAQ;AACzB,YAAMC,uBAAuB,MAAM,KAAKrB,eAAesB,WAAWtB,cAAAA;AAClE,UAAI,CAACqB,qBAAqBE,gBAAgBF,qBAAqBG,kBAAkBxB,eAAeoB;AAC9F,cAAM,IAAIK,MAAM,+DAAA;IACpB;AACA,QAAIP,iBAAiBE,QAAQ;AAC3B,YAAMM,iBAAiB,MAAM,KAAK1C,SAASsC,WAAWJ,gBAAAA;AACtD,UAAI,CAACQ,eAAeH,gBAAgBG,eAAeF,kBAAkBN,iBAAiBE;AACpF,cAAM,IAAIK,MAAM,yDAAA;IACpB;AACA,WAAOzC,YAAY,CAAA;EACrB;EAEA,MAAyB2C,eAAe;AACtC,UAAM,MAAMA,aAAAA;AACZ,UAAM,KAAKC,cAAa;AACxB,WAAO;EACT;AACF;AAxCsCnD;AACpC,cADWG,mBACKiD,iBAAgB;EAACC;EAA8BC;;AAD1D,IAAMnD,mBAAN;;;AKbP,cAAc;","names":["exists","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBModuleMixin","PayloadWrapper","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toPayloadWithMeta","wrapper","payload","_hash","hashAsync","_timestamp","Date","now","PayloadWrapper","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistBase","MongoDBModuleMixin","AbstractArchivist","MongoDBArchivist","queries","ArchivistInsertQuerySchema","head","payloads","find","sort","_timestamp","limit","toArray","PayloadWrapper","wrap","body","undefined","getHandler","hashes","map","_hash","findOne","bws","boundWitnesses","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","toReturnValue","insertHandler","bw","p","validByType","all","x","toBoundWitnessWithMeta","payloadsWithMeta","toPayloadWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","startHandler","ensureIndexes","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema"]}
|
package/package.json
CHANGED
|
@@ -12,20 +12,19 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/exists": "^2.12.14",
|
|
14
14
|
"@xylabs/promise": "^2.12.14",
|
|
15
|
-
"@xyo-network/archivist-abstract": "~2.75.
|
|
16
|
-
"@xyo-network/archivist-model": "~2.75.
|
|
17
|
-
"@xyo-network/archivist-model-mongodb": "~2.75.
|
|
18
|
-
"@xyo-network/boundwitness-builder": "~2.75.
|
|
19
|
-
"@xyo-network/boundwitness-model": "~2.75.
|
|
20
|
-
"@xyo-network/boundwitness-wrapper": "~2.75.
|
|
21
|
-
"@xyo-network/module-abstract-mongodb": "~2.75.
|
|
22
|
-
"@xyo-network/node-core-model": "~2.75.
|
|
23
|
-
"@xyo-network/payload-model": "~2.75.
|
|
24
|
-
"@xyo-network/payload-wrapper": "~2.75.
|
|
25
|
-
"mongodb": "^6.1.0"
|
|
15
|
+
"@xyo-network/archivist-abstract": "~2.75.7",
|
|
16
|
+
"@xyo-network/archivist-model": "~2.75.7",
|
|
17
|
+
"@xyo-network/archivist-model-mongodb": "~2.75.7",
|
|
18
|
+
"@xyo-network/boundwitness-builder": "~2.75.7",
|
|
19
|
+
"@xyo-network/boundwitness-model": "~2.75.7",
|
|
20
|
+
"@xyo-network/boundwitness-wrapper": "~2.75.7",
|
|
21
|
+
"@xyo-network/module-abstract-mongodb": "~2.75.7",
|
|
22
|
+
"@xyo-network/node-core-model": "~2.75.7",
|
|
23
|
+
"@xyo-network/payload-model": "~2.75.7",
|
|
24
|
+
"@xyo-network/payload-wrapper": "~2.75.7"
|
|
26
25
|
},
|
|
27
26
|
"peerDependencies": {
|
|
28
|
-
"@xyo-network/sdk-xyo-mongo-js": "~2.75.
|
|
27
|
+
"@xyo-network/sdk-xyo-mongo-js": "~2.75.7"
|
|
29
28
|
},
|
|
30
29
|
"peerDependenciesMeta": {
|
|
31
30
|
"@xyo-network/sdk-xyo-mongo-js": {
|
|
@@ -33,9 +32,9 @@
|
|
|
33
32
|
}
|
|
34
33
|
},
|
|
35
34
|
"devDependencies": {
|
|
36
|
-
"@xylabs/ts-scripts-yarn3": "^3.0.
|
|
37
|
-
"@xylabs/tsconfig": "^3.0.
|
|
38
|
-
"@xyo-network/sdk-xyo-mongo-js": "~2.75.
|
|
35
|
+
"@xylabs/ts-scripts-yarn3": "^3.0.82",
|
|
36
|
+
"@xylabs/tsconfig": "^3.0.82",
|
|
37
|
+
"@xyo-network/sdk-xyo-mongo-js": "~2.75.7",
|
|
39
38
|
"fake-indexeddb": "^4.0.2",
|
|
40
39
|
"typescript": "^5.2.2"
|
|
41
40
|
},
|
|
@@ -82,5 +81,5 @@
|
|
|
82
81
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
83
82
|
},
|
|
84
83
|
"sideEffects": false,
|
|
85
|
-
"version": "2.75.
|
|
84
|
+
"version": "2.75.7"
|
|
86
85
|
}
|
package/src/Archivist.ts
CHANGED
|
@@ -3,34 +3,13 @@ import { fulfilledValues } from '@xylabs/promise'
|
|
|
3
3
|
import { AbstractArchivist } from '@xyo-network/archivist-abstract'
|
|
4
4
|
import { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'
|
|
5
5
|
import { MongoDBArchivistConfigSchema } from '@xyo-network/archivist-model-mongodb'
|
|
6
|
-
import {
|
|
6
|
+
import { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'
|
|
7
7
|
import { PayloadWithPartialMeta } from '@xyo-network/node-core-model'
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model'
|
|
9
9
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
10
|
-
import { IndexDescription } from 'mongodb'
|
|
11
10
|
|
|
12
11
|
import { toBoundWitnessWithMeta, toPayloadWithMeta, toReturnValue, validByType } from './lib'
|
|
13
12
|
|
|
14
|
-
const getBoundWitnessesIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {
|
|
15
|
-
return [
|
|
16
|
-
{
|
|
17
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
18
|
-
key: { _hash: 1 },
|
|
19
|
-
name: `${collectionName}.IX__hash`,
|
|
20
|
-
},
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const getPayloadsIndexes: CollectionIndexFunction = (collectionName: string): IndexDescription[] => {
|
|
25
|
-
return [
|
|
26
|
-
{
|
|
27
|
-
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
|
28
|
-
key: { _hash: 1 },
|
|
29
|
-
name: `${collectionName}.IX__hash`,
|
|
30
|
-
},
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
|
|
34
13
|
const MongoDBArchivistBase = MongoDBModuleMixin(AbstractArchivist)
|
|
35
14
|
|
|
36
15
|
export class MongoDBArchivist extends MongoDBArchivistBase {
|
|
@@ -70,16 +49,7 @@ export class MongoDBArchivist extends MongoDBArchivistBase {
|
|
|
70
49
|
|
|
71
50
|
protected override async startHandler() {
|
|
72
51
|
await super.startHandler()
|
|
73
|
-
await this.
|
|
74
|
-
const { collectionName } = collection
|
|
75
|
-
const indexes = getBoundWitnessesIndexes(collectionName)
|
|
76
|
-
await collection.createIndexes(indexes)
|
|
77
|
-
})
|
|
78
|
-
await this.payloads.useCollection(async (collection) => {
|
|
79
|
-
const { collectionName } = collection
|
|
80
|
-
const indexes = getPayloadsIndexes(collectionName)
|
|
81
|
-
await collection.createIndexes(indexes)
|
|
82
|
-
})
|
|
52
|
+
await this.ensureIndexes()
|
|
83
53
|
return true
|
|
84
54
|
}
|
|
85
55
|
}
|