@xyo-network/archivist-mongodb 2.72.9 → 2.73.0

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/package.json CHANGED
@@ -10,52 +10,66 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^2.9.3",
14
- "@xylabs/exists": "^2.9.3",
15
- "@xylabs/promise": "^2.9.3",
16
- "@xyo-network/archivist-abstract": "~2.72.9",
17
- "@xyo-network/archivist-model": "~2.72.9",
18
- "@xyo-network/boundwitness-builder": "~2.72.9",
19
- "@xyo-network/boundwitness-model": "~2.72.9",
20
- "@xyo-network/boundwitness-wrapper": "~2.72.9",
21
- "@xyo-network/module": "~2.72.9",
22
- "@xyo-network/node-core-model": "~2.72.9",
23
- "@xyo-network/payload-model": "~2.72.9",
24
- "@xyo-network/payload-wrapper": "~2.72.9",
13
+ "@xylabs/assert": "^2.10.7",
14
+ "@xylabs/exists": "^2.10.7",
15
+ "@xylabs/promise": "^2.10.7",
16
+ "@xyo-network/archivist-abstract": "~2.73.0",
17
+ "@xyo-network/archivist-model": "~2.73.0",
18
+ "@xyo-network/boundwitness-builder": "~2.73.0",
19
+ "@xyo-network/boundwitness-model": "~2.73.0",
20
+ "@xyo-network/boundwitness-wrapper": "~2.73.0",
21
+ "@xyo-network/module": "~2.73.0",
22
+ "@xyo-network/node-core-model": "~2.73.0",
23
+ "@xyo-network/payload-model": "~2.73.0",
24
+ "@xyo-network/payload-wrapper": "~2.73.0",
25
25
  "lodash": "^4.17.21"
26
26
  },
27
27
  "optionalDependencies": {
28
- "@xyo-network/sdk-xyo-mongo-js": "~2.72.9"
28
+ "@xyo-network/sdk-xyo-mongo-js": "~2.73.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@xylabs/ts-scripts-yarn3": "^2.19.3",
32
- "@xylabs/tsconfig": "^2.19.3",
33
- "@xyo-network/sdk-xyo-mongo-js": "~2.72.9",
31
+ "@xylabs/ts-scripts-yarn3": "^2.19.5",
32
+ "@xylabs/tsconfig": "^2.19.5",
33
+ "@xyo-network/sdk-xyo-mongo-js": "~2.73.0",
34
34
  "fake-indexeddb": "^4.0.2",
35
+ "publint": "^0.2.2",
36
+ "tsup": "^7.2.0",
35
37
  "typescript": "^5.2.2"
36
38
  },
39
+ "scripts": {
40
+ "package-compile": "tsup && publint",
41
+ "package-recompile": "tsup && publint"
42
+ },
37
43
  "description": "Primary SDK for using XYO Protocol 2.0",
38
- "browser": "dist/esm/index.js",
39
44
  "docs": "dist/docs.json",
45
+ "types": "dist/index.d.ts",
40
46
  "exports": {
41
47
  ".": {
42
- "node": {
43
- "import": "./dist/esm/index.js",
44
- "require": "./dist/cjs/index.js"
45
- },
46
- "browser": {
47
- "import": "./dist/esm/index.js",
48
- "require": "./dist/cjs/index.js"
48
+ "require": {
49
+ "types": "./dist/index.d.ts",
50
+ "default": "./dist/index.js"
49
51
  },
50
- "default": "./dist/esm/index.js"
52
+ "import": {
53
+ "types": "./dist/index.d.mts",
54
+ "default": "./dist/index.mjs"
55
+ }
51
56
  },
52
57
  "./dist/docs.json": {
53
58
  "default": "./dist/docs.json"
54
59
  },
60
+ "./cjs": {
61
+ "default": "./dist/index.js"
62
+ },
63
+ "./docs": {
64
+ "default": "./dist/docs.json"
65
+ },
66
+ "./esm": {
67
+ "default": "./dist/index.mjs"
68
+ },
55
69
  "./package.json": "./package.json"
56
70
  },
57
- "main": "dist/cjs/index.js",
58
- "module": "dist/esm/index.js",
71
+ "main": "dist/index.js",
72
+ "module": "dist/index.mjs",
59
73
  "homepage": "https://xyo.network",
60
74
  "license": "LGPL-3.0",
61
75
  "publishConfig": {
@@ -66,6 +80,5 @@
66
80
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
67
81
  },
68
82
  "sideEffects": false,
69
- "types": "dist/types/index.d.ts",
70
- "version": "2.72.9"
83
+ "version": "2.73.0"
71
84
  }
package/src/Archivist.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
+ import { merge } from '@xylabs/lodash'
3
4
  import { fulfilledValues } from '@xylabs/promise'
4
5
  import { AbstractArchivist } from '@xyo-network/archivist-abstract'
5
6
  import { ArchivistConfig, ArchivistConfigSchema, ArchivistInsertQuerySchema, ArchivistParams } from '@xyo-network/archivist-model'
@@ -11,7 +12,6 @@ import { BoundWitnessWithMeta, PayloadWithMeta, PayloadWithPartialMeta } from '@
11
12
  import { Payload } from '@xyo-network/payload-model'
12
13
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
13
14
  import { BaseMongoSdk, BaseMongoSdkConfig, BaseMongoSdkPrivateConfig, BaseMongoSdkPublicConfig } from '@xyo-network/sdk-xyo-mongo-js'
14
- import merge from 'lodash/merge'
15
15
 
16
16
  import { validByType } from './validByType'
17
17
 
package/tsup.config.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ // eslint-disable-next-line import/no-default-export
4
+ export default defineConfig({
5
+ bundle: true,
6
+ cjsInterop: true,
7
+ clean: true,
8
+ dts: {
9
+ entry: ['src/index.ts'],
10
+ },
11
+ entry: ['src/index.ts'],
12
+ format: ['cjs', 'esm'],
13
+ sourcemap: true,
14
+ splitting: false,
15
+ tsconfig: 'tsconfig.json',
16
+ })
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MongoDBArchivist = exports.MongoDBArchivistConfigSchema = void 0;
4
- const tslib_1 = require("tslib");
5
- const assert_1 = require("@xylabs/assert");
6
- const exists_1 = require("@xylabs/exists");
7
- const promise_1 = require("@xylabs/promise");
8
- const archivist_abstract_1 = require("@xyo-network/archivist-abstract");
9
- const archivist_model_1 = require("@xyo-network/archivist-model");
10
- const payload_wrapper_1 = require("@xyo-network/payload-wrapper");
11
- const sdk_xyo_mongo_js_1 = require("@xyo-network/sdk-xyo-mongo-js");
12
- const merge_1 = tslib_1.__importDefault(require("lodash/merge"));
13
- const validByType_1 = require("./validByType");
14
- exports.MongoDBArchivistConfigSchema = 'network.xyo.archivist.mongodb.config';
15
- const toBoundWitnessWithMeta = (wrapper) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
16
- const bw = wrapper.boundwitness;
17
- return Object.assign(Object.assign({}, bw), { _hash: yield wrapper.hashAsync(), _timestamp: Date.now() });
18
- });
19
- const toReturnValue = (value) => {
20
- const _signatures = value === null || value === void 0 ? void 0 : value._signatures;
21
- if (_signatures) {
22
- return Object.assign(Object.assign({}, payload_wrapper_1.PayloadWrapper.wrap(value).body()), { _signatures });
23
- }
24
- else {
25
- return Object.assign({}, payload_wrapper_1.PayloadWrapper.wrap(value).body());
26
- }
27
- };
28
- const toPayloadWithMeta = (wrapper) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
29
- return Object.assign(Object.assign({}, wrapper.payload()), { _hash: yield wrapper.hashAsync(), _timestamp: Date.now() });
30
- });
31
- class MongoDBArchivist extends archivist_abstract_1.AbstractArchivist {
32
- get boundWitnessSdkConfig() {
33
- var _a, _b, _c, _d;
34
- return (0, merge_1.default)({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
35
- collection: (_d = (_b = (_a = this.config.boundWitnessSdkConfig) === null || _a === void 0 ? void 0 : _a.collection) !== null && _b !== void 0 ? _b : (_c = this.params.boundWitnessSdkConfig) === null || _c === void 0 ? void 0 : _c.collection) !== null && _d !== void 0 ? _d : 'bound_witnesses',
36
- });
37
- }
38
- get boundWitnesses() {
39
- var _a;
40
- this._boundWitnessSdk = (_a = this._boundWitnessSdk) !== null && _a !== void 0 ? _a : new sdk_xyo_mongo_js_1.BaseMongoSdk(this.boundWitnessSdkConfig);
41
- return (0, assert_1.assertEx)(this._boundWitnessSdk);
42
- }
43
- get payloadSdkConfig() {
44
- var _a, _b, _c, _d;
45
- return (0, merge_1.default)({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
46
- collection: (_d = (_b = (_a = this.config.payloadSdkConfig) === null || _a === void 0 ? void 0 : _a.collection) !== null && _b !== void 0 ? _b : (_c = this.params.payloadSdkConfig) === null || _c === void 0 ? void 0 : _c.collection) !== null && _d !== void 0 ? _d : 'payload',
47
- });
48
- }
49
- get payloads() {
50
- var _a;
51
- this._payloadSdk = (_a = this._payloadSdk) !== null && _a !== void 0 ? _a : new sdk_xyo_mongo_js_1.BaseMongoSdk(this.payloadSdkConfig);
52
- return (0, assert_1.assertEx)(this._payloadSdk);
53
- }
54
- get queries() {
55
- return [archivist_model_1.ArchivistInsertQuerySchema, ...super.queries];
56
- }
57
- head() {
58
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
59
- const head = yield (yield this.payloads.find({})).sort({ _timestamp: -1 }).limit(1).toArray();
60
- return head[0] ? payload_wrapper_1.PayloadWrapper.wrap(head[0]).body() : undefined;
61
- });
62
- }
63
- getHandler(hashes) {
64
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
65
- const payloads = hashes.map((_hash) => this.payloads.findOne({ _hash }));
66
- const bws = hashes.map((_hash) => this.boundWitnesses.findOne({ _hash }));
67
- const gets = yield Promise.allSettled([payloads, bws].flat());
68
- const succeeded = gets.reduce(promise_1.fulfilledValues, []);
69
- return succeeded.filter(exists_1.exists).map(toReturnValue);
70
- });
71
- }
72
- insertHandler(payloads) {
73
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
- const [bw, p] = yield (0, validByType_1.validByType)(payloads);
75
- const boundWitnesses = yield Promise.all(bw.map((x) => toBoundWitnessWithMeta(x)));
76
- const payloadsWithMeta = yield Promise.all(p.map((x) => toPayloadWithMeta(x)));
77
- if (boundWitnesses.length) {
78
- const boundWitnessesResult = yield this.boundWitnesses.insertMany(boundWitnesses);
79
- if (!boundWitnessesResult.acknowledged || boundWitnessesResult.insertedCount !== boundWitnesses.length)
80
- throw new Error('MongoDBDeterministicArchivist: Error inserting BoundWitnesses');
81
- }
82
- if (payloadsWithMeta.length) {
83
- const payloadsResult = yield this.payloads.insertMany(payloadsWithMeta);
84
- if (!payloadsResult.acknowledged || payloadsResult.insertedCount !== payloadsWithMeta.length)
85
- throw new Error('MongoDBDeterministicArchivist: Error inserting Payloads');
86
- }
87
- return payloads !== null && payloads !== void 0 ? payloads : [];
88
- });
89
- }
90
- }
91
- exports.MongoDBArchivist = MongoDBArchivist;
92
- MongoDBArchivist.configSchemas = [exports.MongoDBArchivistConfigSchema, archivist_model_1.ArchivistConfigSchema];
93
- //# sourceMappingURL=Archivist.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Archivist.js","sourceRoot":"","sources":["../../src/Archivist.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./Archivist"), exports);
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA2B"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validByType = void 0;
4
- const tslib_1 = require("tslib");
5
- const boundwitness_builder_1 = require("@xyo-network/boundwitness-builder");
6
- const boundwitness_model_1 = require("@xyo-network/boundwitness-model");
7
- const boundwitness_wrapper_1 = require("@xyo-network/boundwitness-wrapper");
8
- const payload_wrapper_1 = require("@xyo-network/payload-wrapper");
9
- const validByType = (payloads = []) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
10
- const results = [[], []];
11
- yield Promise.all(payloads.map((payload) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
12
- if ((0, boundwitness_model_1.isBoundWitness)(payload)) {
13
- const wrapper = (0, boundwitness_builder_1.isQueryBoundWitness)(payload) ? boundwitness_builder_1.QueryBoundWitnessWrapper : boundwitness_wrapper_1.BoundWitnessWrapper;
14
- const bw = wrapper.parse(payload);
15
- if (yield bw.getValid()) {
16
- results[0].push(bw);
17
- }
18
- }
19
- else {
20
- const payloadWrapper = payload_wrapper_1.PayloadWrapper.wrap(payload);
21
- if (yield payloadWrapper.getValid()) {
22
- results[1].push(payloadWrapper);
23
- }
24
- }
25
- })));
26
- return results;
27
- });
28
- exports.validByType = validByType;
29
- //# sourceMappingURL=validByType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validByType.js","sourceRoot":"","sources":["../../src/validByType.ts"],"names":[],"mappings":";;;;AAAA,4EAAiG;AACjG,wEAAgE;AAChE,4EAAuE;AAEvE,kEAA6D;AAEtD,MAAM,WAAW,GAAG,CAAO,WAAsB,EAAE,EAAE,EAAE;IAC5D,MAAM,OAAO,GAA8C,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAO,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAA,mCAAc,EAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAA,0CAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,+CAAwB,CAAC,CAAC,CAAC,0CAAmB,CAAA;YAC7F,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjC,IAAI,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;aACpB;SACF;aAAM;YACL,MAAM,cAAc,GAAG,gCAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnD,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE;gBACnC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;aAChC;SACF;IACH,CAAC,CAAA,CAAC,CACH,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAnBY,QAAA,WAAW,eAmBvB"}