@xyo-network/archivist-mongodb 2.74.0 → 2.74.2
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/Archivist.d.mts +4 -14
- package/dist/Archivist.d.mts.map +1 -1
- package/dist/Archivist.d.ts +4 -14
- package/dist/Archivist.d.ts.map +1 -1
- package/dist/docs.json +23111 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -5
- package/dist/index.mjs.map +1 -1
- package/dist/lib/index.d.mts +2 -0
- package/dist/lib/index.d.mts.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/validByType.d.mts.map +1 -0
- package/dist/lib/validByType.d.ts.map +1 -0
- package/package.json +21 -18
- package/src/Archivist.ts +9 -21
- package/src/index.ts +1 -0
- package/src/lib/index.ts +1 -0
- package/dist/validByType.d.mts.map +0 -1
- package/dist/validByType.d.ts.map +0 -1
- /package/dist/{validByType.d.mts → lib/validByType.d.mts} +0 -0
- /package/dist/{validByType.d.ts → lib/validByType.d.ts} +0 -0
- /package/src/{validByType.ts → lib/validByType.ts} +0 -0
package/dist/index.d.mts
CHANGED
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,sCAAsC,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,sCAAsC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
}
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
20
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
21
|
|
|
21
22
|
// src/index.ts
|
|
22
23
|
var src_exports = {};
|
|
23
24
|
__export(src_exports, {
|
|
24
|
-
MongoDBArchivist: () => MongoDBArchivist
|
|
25
|
-
MongoDBArchivistConfigSchema: () => MongoDBArchivistConfigSchema
|
|
25
|
+
MongoDBArchivist: () => MongoDBArchivist
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(src_exports);
|
|
28
28
|
|
|
@@ -31,12 +31,15 @@ var import_assert = require("@xylabs/assert");
|
|
|
31
31
|
var import_exists = require("@xylabs/exists");
|
|
32
32
|
var import_lodash = require("@xylabs/lodash");
|
|
33
33
|
var import_promise = require("@xylabs/promise");
|
|
34
|
+
var import_static_implements = require("@xylabs/static-implements");
|
|
34
35
|
var import_archivist_abstract = require("@xyo-network/archivist-abstract");
|
|
35
36
|
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
37
|
+
var import_archivist_model_mongodb = require("@xyo-network/archivist-model-mongodb");
|
|
38
|
+
var import_module_model_mongodb = require("@xyo-network/module-model-mongodb");
|
|
36
39
|
var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
|
|
37
40
|
var import_sdk_xyo_mongo_js = require("@xyo-network/sdk-xyo-mongo-js");
|
|
38
41
|
|
|
39
|
-
// src/validByType.ts
|
|
42
|
+
// src/lib/validByType.ts
|
|
40
43
|
var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
41
44
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
42
45
|
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
@@ -64,7 +67,17 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
64
67
|
}, "validByType");
|
|
65
68
|
|
|
66
69
|
// src/Archivist.ts
|
|
67
|
-
|
|
70
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
71
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
72
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
73
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
74
|
+
else
|
|
75
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
76
|
+
if (d = decorators[i])
|
|
77
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
78
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
79
|
+
}
|
|
80
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
68
81
|
var toBoundWitnessWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
|
|
69
82
|
const bw = wrapper.boundwitness;
|
|
70
83
|
return {
|
|
@@ -93,14 +106,15 @@ var toPayloadWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
|
|
|
93
106
|
_timestamp: Date.now()
|
|
94
107
|
};
|
|
95
108
|
}, "toPayloadWithMeta");
|
|
96
|
-
var MongoDBArchivist = class extends import_archivist_abstract.AbstractArchivist {
|
|
109
|
+
var MongoDBArchivist = class MongoDBArchivist2 extends import_archivist_abstract.AbstractArchivist {
|
|
97
110
|
static {
|
|
98
111
|
__name(this, "MongoDBArchivist");
|
|
99
112
|
}
|
|
100
113
|
static configSchemas = [
|
|
101
|
-
MongoDBArchivistConfigSchema,
|
|
114
|
+
import_archivist_model_mongodb.MongoDBArchivistConfigSchema,
|
|
102
115
|
import_archivist_model.ArchivistConfigSchema
|
|
103
116
|
];
|
|
117
|
+
static labels = import_module_model_mongodb.MongoDBStorageClassLabels;
|
|
104
118
|
_boundWitnessSdk;
|
|
105
119
|
_payloadSdk;
|
|
106
120
|
get boundWitnessSdkConfig() {
|
|
@@ -164,9 +178,15 @@ var MongoDBArchivist = class extends import_archivist_abstract.AbstractArchivist
|
|
|
164
178
|
return payloads ?? [];
|
|
165
179
|
}
|
|
166
180
|
};
|
|
181
|
+
MongoDBArchivist = _ts_decorate([
|
|
182
|
+
(0, import_static_implements.staticImplements)()
|
|
183
|
+
], MongoDBArchivist);
|
|
184
|
+
|
|
185
|
+
// src/index.ts
|
|
186
|
+
__reExport(src_exports, require("@xyo-network/archivist-model-mongodb"), module.exports);
|
|
167
187
|
// Annotate the CommonJS export names for ESM import in node:
|
|
168
188
|
0 && (module.exports = {
|
|
169
189
|
MongoDBArchivist,
|
|
170
|
-
|
|
190
|
+
...require("@xyo-network/archivist-model-mongodb")
|
|
171
191
|
});
|
|
172
192
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/Archivist.ts","../src/validByType.ts"],"sourcesContent":["export * from './Archivist'\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { merge } from '@xylabs/lodash'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfig, ArchivistConfigSchema, ArchivistInsertQuerySchema, ArchivistParams } from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AnyConfigSchema } from '@xyo-network/module'\nimport { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { BaseMongoSdk, BaseMongoSdkConfig, BaseMongoSdkPrivateConfig, BaseMongoSdkPublicConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { validByType } from './validByType'\n\nexport const MongoDBArchivistConfigSchema = 'network.xyo.archivist.mongodb.config'\nexport type MongoDBArchivistConfigSchema = typeof MongoDBArchivistConfigSchema\n\nexport type MongoDBArchivistConfig = ArchivistConfig<{\n boundWitnessSdkConfig?: Partial<BaseMongoSdkPublicConfig>\n payloadSdkConfig?: Partial<BaseMongoSdkPublicConfig>\n schema: MongoDBArchivistConfigSchema\n}>\n\nexport type MongoDBArchivistParams = ArchivistParams<\n AnyConfigSchema<MongoDBArchivistConfig>,\n {\n boundWitnessSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>\n payloadSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>\n }\n>\n\nconst 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\nconst 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\nconst toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n\nexport class MongoDBArchivist<TParams extends MongoDBArchivistParams = MongoDBArchivistParams> extends AbstractArchivist<TParams> {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n override get queries(): string[] {\n return [ArchivistInsertQuerySchema, ...super.queries]\n }\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","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","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistConfigSchema","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","toPayloadWithMeta","payload","MongoDBArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","queries","ArchivistInsertQuerySchema","head","find","sort","limit","toArray","undefined","getHandler","hashes","map","findOne","bws","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","insertHandler","p","validByType","all","x","payloadsWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult"]}
|
|
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 { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { merge } from '@xylabs/lodash'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema, MongoDBArchivistParams } from '@xyo-network/archivist-model-mongodb'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { WithLabels } from '@xyo-network/module-model'\nimport { MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { validByType } from './lib'\n\nconst 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\nconst 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\nconst toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n\n@staticImplements<WithLabels<MongoDBStorageClassLabels>>()\nexport class MongoDBArchivist<TParams extends MongoDBArchivistParams = MongoDBArchivistParams> extends AbstractArchivist<TParams> {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n static labels = MongoDBStorageClassLabels\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n override get queries(): string[] {\n return [ArchivistInsertQuerySchema, ...super.queries]\n }\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","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;;;;;;;ACAA,oBAAyB;AACzB,oBAAuB;AACvB,oBAAsB;AACtB,qBAAgC;AAChC,+BAAiC;AACjC,gCAAkC;AAClC,6BAAkE;AAClE,qCAAqE;AAKrE,kCAA0C;AAG1C,IAAAA,0BAA+B;AAC/B,8BAAiD;;;AChBjD,kCAA8D;AAC9D,gCAA+B;AAC/B,kCAAoC;AAEpC,6BAA+B;AAExB,IAAMC,cAAc,8BAAOC,WAAsB,CAAA,MAAE;AACxD,QAAMC,UAAqD;IAAC,CAAA;IAAI,CAAA;;AAChE,QAAMC,QAAQC,IACZH,SAASI,IAAI,OAAOC,YAAAA;AAClB,YAAIC,0CAAeD,OAAAA,GAAU;AAC3B,YAAME,cAAUC,iDAAoBH,OAAAA,IAAWI,uDAA2BC;AAC1E,YAAMC,KAAKJ,QAAQK,MAAMP,OAAAA;AACzB,UAAI,MAAMM,GAAGE,SAAQ,GAAI;AACvBZ,gBAAQ,CAAA,EAAGa,KAAKH,EAAAA;MAClB;IACF,OAAO;AACL,YAAMI,iBAAiBC,sCAAeC,KAAKZ,OAAAA;AAC3C,UAAI,MAAMU,eAAeF,SAAQ,GAAI;AACnCZ,gBAAQ,CAAA,EAAGa,KAAKC,cAAAA;MAClB;IACF;EACF,CAAA,CAAA;AAEF,SAAOd;AACT,GAnB2B;;;;;;;;;;;;;;ADc3B,IAAMiB,yBAAyB,8BAAOC,YAAAA;AACpC,QAAMC,KAAKD,QAAQE;AACnB,SAAO;IAAE,GAAGD;IAAIE,OAAO,MAAMH,QAAQI,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC3E,GAH+B;AAK/B,IAAMC,gBAAgB,wBAACC,UAAAA;AACrB,QAAMC,cAAeD,OAAwBC;AAC7C,MAAIA,aAAa;AACf,WAAO;MAAE,GAAGC,uCAAeC,KAAKH,KAAAA,EAAOI,KAAI;MAAIH;IAAY;EAC7D,OAAO;AACL,WAAO;MAAE,GAAGC,uCAAeC,KAAKH,KAAAA,EAAOI,KAAI;IAAG;EAChD;AACF,GAPsB;AAStB,IAAMC,oBAAoB,8BAAOd,YAAAA;AAC/B,SAAO;IAAE,GAAGA,QAAQe,QAAO;IAAIZ,OAAO,MAAMH,QAAQI,UAAS;IAAIC,YAAYC,KAAKC,IAAG;EAAG;AAC1F,GAF0B;AAK1B,IAAaS,mBAAN,MAAAA,0BAAgGC,4CAAAA;SAAAA;;;EACrG,OAAgBC,gBAAgB;IAACC;IAA8BC;;EAC/D,OAAOC,SAASC;EAERC;EACAC;EAER,IAAIC,wBAA4C;AAC9C,eAAOC,qBAAM,CAAC,GAAG,KAAKC,OAAOF,uBAAuB,KAAKG,OAAOH,uBAAuB;MACrFI,YAAY,KAAKD,OAAOH,uBAAuBI,cAAc,KAAKF,OAAOF,uBAAuBI,cAAc;IAChH,CAAA;EACF;EAEA,IAAIC,iBAAiB;AACnB,SAAKP,mBAAmB,KAAKA,oBAAoB,IAAIQ,qCAAmC,KAAKN,qBAAqB;AAClH,eAAOO,wBAAS,KAAKT,gBAAgB;EACvC;EAEA,IAAIU,mBAAuC;AACzC,eAAOP,qBAAM,CAAC,GAAG,KAAKC,OAAOM,kBAAkB,KAAKL,OAAOK,kBAAkB;MAC3EJ,YAAY,KAAKD,OAAOK,kBAAkBJ,cAAc,KAAKF,OAAOM,kBAAkBJ,cAAc;IACtG,CAAA;EACF;EAEA,IAAIK,WAAW;AACb,SAAKV,cAAc,KAAKA,eAAe,IAAIO,qCAA8B,KAAKE,gBAAgB;AAC9F,eAAOD,wBAAS,KAAKR,WAAW;EAClC;EAEA,IAAaW,UAAoB;AAC/B,WAAO;MAACC;SAA+B,MAAMD;;EAC/C;EAEA,MAAeE,OAAqC;AAClD,UAAMA,OAAO,OAAO,MAAM,KAAKH,SAASI,KAAK,CAAC,CAAA,GAAIC,KAAK;MAAElC,YAAY;IAAG,CAAA,EAAGmC,MAAM,CAAA,EAAGC,QAAO;AAC3F,WAAOJ,KAAK,CAAA,IAAK1B,uCAAeC,KAAKyB,KAAK,CAAA,CAAE,EAAExB,KAAI,IAAK6B;EACzD;EAEA,MAAyBC,WAAWC,QAAsC;AACxE,UAAMV,WAAWU,OAAOC,IAAI,CAAC1C,UAAU,KAAK+B,SAASY,QAAQ;MAAE3C;IAAM,CAAA,CAAA;AACrE,UAAM4C,MAAMH,OAAOC,IAAI,CAAC1C,UAAU,KAAK2B,eAAegB,QAAQ;MAAE3C;IAAM,CAAA,CAAA;AACtE,UAAM6C,OAAO,MAAMC,QAAQC,WAAW;MAAChB;MAAUa;MAAKI,KAAI,CAAA;AAC1D,UAAMC,YAAYJ,KAAKK,OAA0CC,gCAAiB,CAAA,CAAE;AACpF,WAAOF,UAAUG,OAAOC,oBAAAA,EAAQX,IAAIrC,aAAAA;EACtC;EAEA,MAAyBiD,cAAcvB,UAA0C;AAC/E,UAAM,CAACjC,IAAIyD,CAAAA,IAAK,MAAMC,YAAYzB,QAAAA;AAClC,UAAMJ,iBAAiB,MAAMmB,QAAQW,IAAI3D,GAAG4C,IAAI,CAACgB,MAAM9D,uBAAuB8D,CAAAA,CAAAA,CAAAA;AAC9E,UAAMC,mBAAmB,MAAMb,QAAQW,IAAIF,EAAEb,IAAI,CAACgB,MAAM/C,kBAAkB+C,CAAAA,CAAAA,CAAAA;AAC1E,QAAI/B,eAAeiC,QAAQ;AACzB,YAAMC,uBAAuB,MAAM,KAAKlC,eAAemC,WAAWnC,cAAAA;AAClE,UAAI,CAACkC,qBAAqBE,gBAAgBF,qBAAqBG,kBAAkBrC,eAAeiC;AAC9F,cAAM,IAAIK,MAAM,+DAAA;IACpB;AACA,QAAIN,iBAAiBC,QAAQ;AAC3B,YAAMM,iBAAiB,MAAM,KAAKnC,SAAS+B,WAAWH,gBAAAA;AACtD,UAAI,CAACO,eAAeH,gBAAgBG,eAAeF,kBAAkBL,iBAAiBC;AACpF,cAAM,IAAIK,MAAM,yDAAA;IACpB;AACA,WAAOlC,YAAY,CAAA;EACrB;AACF;AA9DalB,mBAAAA,aAAAA;MADZsD,2CAAAA;GACYtD,gBAAAA;;;ADtCb,wBAAc,iDADd;","names":["import_payload_wrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","toPayloadWithMeta","payload","MongoDBArchivist","AbstractArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","queries","ArchivistInsertQuerySchema","head","find","sort","limit","toArray","undefined","getHandler","hashes","map","findOne","bws","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","insertHandler","p","validByType","all","x","payloadsWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","staticImplements"]}
|
package/dist/index.mjs
CHANGED
|
@@ -6,12 +6,15 @@ import { assertEx } from "@xylabs/assert";
|
|
|
6
6
|
import { exists } from "@xylabs/exists";
|
|
7
7
|
import { merge } from "@xylabs/lodash";
|
|
8
8
|
import { fulfilledValues } from "@xylabs/promise";
|
|
9
|
+
import { staticImplements } from "@xylabs/static-implements";
|
|
9
10
|
import { AbstractArchivist } from "@xyo-network/archivist-abstract";
|
|
10
11
|
import { ArchivistConfigSchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
|
|
12
|
+
import { MongoDBArchivistConfigSchema } from "@xyo-network/archivist-model-mongodb";
|
|
13
|
+
import { MongoDBStorageClassLabels } from "@xyo-network/module-model-mongodb";
|
|
11
14
|
import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
|
|
12
15
|
import { BaseMongoSdk } from "@xyo-network/sdk-xyo-mongo-js";
|
|
13
16
|
|
|
14
|
-
// src/validByType.ts
|
|
17
|
+
// src/lib/validByType.ts
|
|
15
18
|
import { isQueryBoundWitness, QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
|
|
16
19
|
import { isBoundWitness } from "@xyo-network/boundwitness-model";
|
|
17
20
|
import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
@@ -39,7 +42,17 @@ var validByType = /* @__PURE__ */ __name(async (payloads = []) => {
|
|
|
39
42
|
}, "validByType");
|
|
40
43
|
|
|
41
44
|
// src/Archivist.ts
|
|
42
|
-
|
|
45
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
46
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
47
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
48
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
49
|
+
else
|
|
50
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
51
|
+
if (d = decorators[i])
|
|
52
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
53
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
54
|
+
}
|
|
55
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
43
56
|
var toBoundWitnessWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
|
|
44
57
|
const bw = wrapper.boundwitness;
|
|
45
58
|
return {
|
|
@@ -68,7 +81,7 @@ var toPayloadWithMeta = /* @__PURE__ */ __name(async (wrapper) => {
|
|
|
68
81
|
_timestamp: Date.now()
|
|
69
82
|
};
|
|
70
83
|
}, "toPayloadWithMeta");
|
|
71
|
-
var MongoDBArchivist = class extends AbstractArchivist {
|
|
84
|
+
var MongoDBArchivist = class MongoDBArchivist2 extends AbstractArchivist {
|
|
72
85
|
static {
|
|
73
86
|
__name(this, "MongoDBArchivist");
|
|
74
87
|
}
|
|
@@ -76,6 +89,7 @@ var MongoDBArchivist = class extends AbstractArchivist {
|
|
|
76
89
|
MongoDBArchivistConfigSchema,
|
|
77
90
|
ArchivistConfigSchema
|
|
78
91
|
];
|
|
92
|
+
static labels = MongoDBStorageClassLabels;
|
|
79
93
|
_boundWitnessSdk;
|
|
80
94
|
_payloadSdk;
|
|
81
95
|
get boundWitnessSdkConfig() {
|
|
@@ -139,8 +153,13 @@ var MongoDBArchivist = class extends AbstractArchivist {
|
|
|
139
153
|
return payloads ?? [];
|
|
140
154
|
}
|
|
141
155
|
};
|
|
156
|
+
MongoDBArchivist = _ts_decorate([
|
|
157
|
+
staticImplements()
|
|
158
|
+
], MongoDBArchivist);
|
|
159
|
+
|
|
160
|
+
// src/index.ts
|
|
161
|
+
export * from "@xyo-network/archivist-model-mongodb";
|
|
142
162
|
export {
|
|
143
|
-
MongoDBArchivist
|
|
144
|
-
MongoDBArchivistConfigSchema
|
|
163
|
+
MongoDBArchivist
|
|
145
164
|
};
|
|
146
165
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Archivist.ts","../src/validByType.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { merge } from '@xylabs/lodash'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfig, ArchivistConfigSchema, ArchivistInsertQuerySchema, ArchivistParams } from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AnyConfigSchema } from '@xyo-network/module'\nimport { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { BaseMongoSdk, BaseMongoSdkConfig, BaseMongoSdkPrivateConfig, BaseMongoSdkPublicConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { validByType } from './validByType'\n\nexport const MongoDBArchivistConfigSchema = 'network.xyo.archivist.mongodb.config'\nexport type MongoDBArchivistConfigSchema = typeof MongoDBArchivistConfigSchema\n\nexport type MongoDBArchivistConfig = ArchivistConfig<{\n boundWitnessSdkConfig?: Partial<BaseMongoSdkPublicConfig>\n payloadSdkConfig?: Partial<BaseMongoSdkPublicConfig>\n schema: MongoDBArchivistConfigSchema\n}>\n\nexport type MongoDBArchivistParams = ArchivistParams<\n AnyConfigSchema<MongoDBArchivistConfig>,\n {\n boundWitnessSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>\n payloadSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>\n }\n>\n\nconst 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\nconst 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\nconst toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n\nexport class MongoDBArchivist<TParams extends MongoDBArchivistParams = MongoDBArchivistParams> extends AbstractArchivist<TParams> {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n override get queries(): string[] {\n return [ArchivistInsertQuerySchema, ...super.queries]\n }\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","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":["assertEx","exists","merge","fulfilledValues","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","PayloadWrapper","BaseMongoSdk","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","MongoDBArchivistConfigSchema","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","toPayloadWithMeta","payload","MongoDBArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","queries","ArchivistInsertQuerySchema","head","find","sort","limit","toArray","undefined","getHandler","hashes","map","findOne","bws","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","insertHandler","p","validByType","all","x","payloadsWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult"]}
|
|
1
|
+
{"version":3,"sources":["../src/Archivist.ts","../src/lib/validByType.ts","../src/index.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { merge } from '@xylabs/lodash'\nimport { fulfilledValues } from '@xylabs/promise'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { MongoDBArchivistConfigSchema, MongoDBArchivistParams } from '@xyo-network/archivist-model-mongodb'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { WithLabels } from '@xyo-network/module-model'\nimport { MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@xyo-network/node-core-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { validByType } from './lib'\n\nconst 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\nconst 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\nconst toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMeta> => {\n return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }\n}\n\n@staticImplements<WithLabels<MongoDBStorageClassLabels>>()\nexport class MongoDBArchivist<TParams extends MongoDBArchivistParams = MongoDBArchivistParams> extends AbstractArchivist<TParams> {\n static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]\n static labels = MongoDBStorageClassLabels\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n override get queries(): string[] {\n return [ArchivistInsertQuerySchema, ...super.queries]\n }\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","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":["assertEx","exists","merge","fulfilledValues","staticImplements","AbstractArchivist","ArchivistConfigSchema","ArchivistInsertQuerySchema","MongoDBArchivistConfigSchema","MongoDBStorageClassLabels","PayloadWrapper","BaseMongoSdk","isQueryBoundWitness","QueryBoundWitnessWrapper","isBoundWitness","BoundWitnessWrapper","PayloadWrapper","validByType","payloads","results","Promise","all","map","payload","isBoundWitness","wrapper","isQueryBoundWitness","QueryBoundWitnessWrapper","BoundWitnessWrapper","bw","parse","getValid","push","payloadWrapper","PayloadWrapper","wrap","toBoundWitnessWithMeta","wrapper","bw","boundwitness","_hash","hashAsync","_timestamp","Date","now","toReturnValue","value","_signatures","PayloadWrapper","wrap","body","toPayloadWithMeta","payload","MongoDBArchivist","AbstractArchivist","configSchemas","MongoDBArchivistConfigSchema","ArchivistConfigSchema","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","queries","ArchivistInsertQuerySchema","head","find","sort","limit","toArray","undefined","getHandler","hashes","map","findOne","bws","gets","Promise","allSettled","flat","succeeded","reduce","fulfilledValues","filter","exists","insertHandler","p","validByType","all","x","payloadsWithMeta","length","boundWitnessesResult","insertMany","acknowledged","insertedCount","Error","payloadsResult","staticImplements"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../src/lib/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;MAmBpD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../../src/lib/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;MAmBpD,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,22 +10,25 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^2.11.
|
|
14
|
-
"@xylabs/exists": "^2.11.
|
|
15
|
-
"@xylabs/lodash": "^2.11.
|
|
16
|
-
"@xylabs/promise": "^2.11.
|
|
17
|
-
"@
|
|
18
|
-
"@xyo-network/archivist-
|
|
19
|
-
"@xyo-network/
|
|
20
|
-
"@xyo-network/
|
|
21
|
-
"@xyo-network/boundwitness-
|
|
22
|
-
"@xyo-network/
|
|
23
|
-
"@xyo-network/
|
|
24
|
-
"@xyo-network/
|
|
25
|
-
"@xyo-network/
|
|
13
|
+
"@xylabs/assert": "^2.11.7",
|
|
14
|
+
"@xylabs/exists": "^2.11.7",
|
|
15
|
+
"@xylabs/lodash": "^2.11.7",
|
|
16
|
+
"@xylabs/promise": "^2.11.7",
|
|
17
|
+
"@xylabs/static-implements": "^2.11.7",
|
|
18
|
+
"@xyo-network/archivist-abstract": "~2.74.2",
|
|
19
|
+
"@xyo-network/archivist-model": "~2.74.2",
|
|
20
|
+
"@xyo-network/archivist-model-mongodb": "~2.74.2",
|
|
21
|
+
"@xyo-network/boundwitness-builder": "~2.74.2",
|
|
22
|
+
"@xyo-network/boundwitness-model": "~2.74.2",
|
|
23
|
+
"@xyo-network/boundwitness-wrapper": "~2.74.2",
|
|
24
|
+
"@xyo-network/module-model": "~2.74.2",
|
|
25
|
+
"@xyo-network/module-model-mongodb": "~2.74.2",
|
|
26
|
+
"@xyo-network/node-core-model": "~2.74.2",
|
|
27
|
+
"@xyo-network/payload-model": "~2.74.2",
|
|
28
|
+
"@xyo-network/payload-wrapper": "~2.74.2"
|
|
26
29
|
},
|
|
27
30
|
"peerDependencies": {
|
|
28
|
-
"@xyo-network/sdk-xyo-mongo-js": "~2.74.
|
|
31
|
+
"@xyo-network/sdk-xyo-mongo-js": "~2.74.2"
|
|
29
32
|
},
|
|
30
33
|
"peerDependenciesMeta": {
|
|
31
34
|
"@xyo-network/sdk-xyo-mongo-js": {
|
|
@@ -33,9 +36,9 @@
|
|
|
33
36
|
}
|
|
34
37
|
},
|
|
35
38
|
"devDependencies": {
|
|
36
|
-
"@xylabs/ts-scripts-yarn3": "^3.0.
|
|
37
|
-
"@xylabs/tsconfig": "^3.0.
|
|
38
|
-
"@xyo-network/sdk-xyo-mongo-js": "~2.74.
|
|
39
|
+
"@xylabs/ts-scripts-yarn3": "^3.0.28",
|
|
40
|
+
"@xylabs/tsconfig": "^3.0.28",
|
|
41
|
+
"@xyo-network/sdk-xyo-mongo-js": "~2.74.2",
|
|
39
42
|
"fake-indexeddb": "^4.0.2",
|
|
40
43
|
"typescript": "^5.2.2"
|
|
41
44
|
},
|
|
@@ -73,5 +76,5 @@
|
|
|
73
76
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
74
77
|
},
|
|
75
78
|
"sideEffects": false,
|
|
76
|
-
"version": "2.74.
|
|
79
|
+
"version": "2.74.2"
|
|
77
80
|
}
|
package/src/Archivist.ts
CHANGED
|
@@ -2,35 +2,21 @@ import { assertEx } from '@xylabs/assert'
|
|
|
2
2
|
import { exists } from '@xylabs/exists'
|
|
3
3
|
import { merge } from '@xylabs/lodash'
|
|
4
4
|
import { fulfilledValues } from '@xylabs/promise'
|
|
5
|
+
import { staticImplements } from '@xylabs/static-implements'
|
|
5
6
|
import { AbstractArchivist } from '@xyo-network/archivist-abstract'
|
|
6
|
-
import {
|
|
7
|
+
import { ArchivistConfigSchema, ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'
|
|
8
|
+
import { MongoDBArchivistConfigSchema, MongoDBArchivistParams } from '@xyo-network/archivist-model-mongodb'
|
|
7
9
|
import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
|
|
8
10
|
import { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
9
11
|
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
10
|
-
import {
|
|
12
|
+
import { WithLabels } from '@xyo-network/module-model'
|
|
13
|
+
import { MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'
|
|
11
14
|
import { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@xyo-network/node-core-model'
|
|
12
15
|
import { Payload } from '@xyo-network/payload-model'
|
|
13
16
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
14
|
-
import { BaseMongoSdk, BaseMongoSdkConfig
|
|
17
|
+
import { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'
|
|
15
18
|
|
|
16
|
-
import { validByType } from './
|
|
17
|
-
|
|
18
|
-
export const MongoDBArchivistConfigSchema = 'network.xyo.archivist.mongodb.config'
|
|
19
|
-
export type MongoDBArchivistConfigSchema = typeof MongoDBArchivistConfigSchema
|
|
20
|
-
|
|
21
|
-
export type MongoDBArchivistConfig = ArchivistConfig<{
|
|
22
|
-
boundWitnessSdkConfig?: Partial<BaseMongoSdkPublicConfig>
|
|
23
|
-
payloadSdkConfig?: Partial<BaseMongoSdkPublicConfig>
|
|
24
|
-
schema: MongoDBArchivistConfigSchema
|
|
25
|
-
}>
|
|
26
|
-
|
|
27
|
-
export type MongoDBArchivistParams = ArchivistParams<
|
|
28
|
-
AnyConfigSchema<MongoDBArchivistConfig>,
|
|
29
|
-
{
|
|
30
|
-
boundWitnessSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>
|
|
31
|
-
payloadSdkConfig: BaseMongoSdkPrivateConfig & Partial<BaseMongoSdkPublicConfig>
|
|
32
|
-
}
|
|
33
|
-
>
|
|
19
|
+
import { validByType } from './lib'
|
|
34
20
|
|
|
35
21
|
const toBoundWitnessWithMeta = async (wrapper: BoundWitnessWrapper | QueryBoundWitnessWrapper): Promise<BoundWitnessWithMeta> => {
|
|
36
22
|
const bw = wrapper.boundwitness as BoundWitness
|
|
@@ -50,8 +36,10 @@ const toPayloadWithMeta = async (wrapper: PayloadWrapper): Promise<PayloadWithMe
|
|
|
50
36
|
return { ...wrapper.payload(), _hash: await wrapper.hashAsync(), _timestamp: Date.now() }
|
|
51
37
|
}
|
|
52
38
|
|
|
39
|
+
@staticImplements<WithLabels<MongoDBStorageClassLabels>>()
|
|
53
40
|
export class MongoDBArchivist<TParams extends MongoDBArchivistParams = MongoDBArchivistParams> extends AbstractArchivist<TParams> {
|
|
54
41
|
static override configSchemas = [MongoDBArchivistConfigSchema, ArchivistConfigSchema]
|
|
42
|
+
static labels = MongoDBStorageClassLabels
|
|
55
43
|
|
|
56
44
|
private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined
|
|
57
45
|
private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined
|
package/src/index.ts
CHANGED
package/src/lib/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validByType'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../src/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;MAmBpD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validByType.d.ts","sourceRoot":"","sources":["../src/validByType.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,eAAO,MAAM,WAAW,cAAoB,OAAO,EAAE;;;;;;MAmBpD,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|