@xyo-network/module-abstract-mongodb 3.1.7 → 3.2.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/dist/browser/Module.d.ts +58 -21
- package/dist/browser/Module.d.ts.map +1 -1
- package/dist/browser/index.mjs +52 -63
- package/dist/browser/index.mjs.map +1 -1
- package/dist/neutral/Module.d.ts +58 -21
- package/dist/neutral/Module.d.ts.map +1 -1
- package/dist/neutral/index.mjs +52 -63
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/Module.d.ts +58 -21
- package/dist/node/Module.d.ts.map +1 -1
- package/dist/node/index.mjs +52 -63
- package/dist/node/index.mjs.map +1 -1
- package/package.json +13 -12
package/dist/browser/Module.d.ts
CHANGED
|
@@ -4,19 +4,56 @@ import { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/pa
|
|
|
4
4
|
import { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js';
|
|
5
5
|
export type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>;
|
|
6
6
|
export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams = import("@xylabs/object").BaseParamsFields & {
|
|
7
|
-
account?: import("
|
|
7
|
+
account?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance | "random";
|
|
8
8
|
addToResolvers?: boolean;
|
|
9
|
-
additionalSigners?: import("
|
|
9
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance[];
|
|
10
10
|
allowNameResolution?: boolean;
|
|
11
|
-
config: import("@
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
config: import("@xylabs/object").DeepRestrictToStringKeys<{
|
|
12
|
+
schema: import("@xyo-network/payload-model").Schema;
|
|
13
|
+
readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
|
|
14
|
+
readonly archiving?: {
|
|
15
|
+
readonly archivists?: string[] | undefined;
|
|
16
|
+
readonly queries?: string[] | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
readonly allowedQueries?: string[] | undefined;
|
|
19
|
+
readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.4.26-24d1eada81/package").LogLevel | undefined;
|
|
20
|
+
readonly labels?: {
|
|
21
|
+
[x: string]: string | undefined;
|
|
22
|
+
} | undefined;
|
|
23
|
+
readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
|
|
24
|
+
readonly paging?: {
|
|
25
|
+
[x: string]: {
|
|
26
|
+
size?: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
} | undefined;
|
|
29
|
+
readonly retry?: {
|
|
30
|
+
backoff?: number | undefined;
|
|
31
|
+
interval?: number | undefined;
|
|
32
|
+
retries?: number | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
readonly security?: {
|
|
35
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
36
|
+
readonly allowed?: {
|
|
37
|
+
[x: string]: (Lowercase<string> | Lowercase<string>[])[];
|
|
38
|
+
} | undefined;
|
|
39
|
+
readonly disallowed?: {
|
|
40
|
+
[x: string]: Lowercase<string>[];
|
|
41
|
+
} | undefined;
|
|
42
|
+
} | undefined;
|
|
43
|
+
readonly sign?: boolean | undefined;
|
|
44
|
+
readonly storeQueries?: boolean | undefined;
|
|
45
|
+
readonly timestamp?: boolean | undefined;
|
|
46
|
+
boundWitnessSdkConfig?: {
|
|
47
|
+
closeDelay?: number | undefined;
|
|
48
|
+
collection?: string | undefined;
|
|
49
|
+
maxPoolSize?: number | undefined;
|
|
50
|
+
} | undefined;
|
|
51
|
+
payloadSdkConfig?: {
|
|
52
|
+
closeDelay?: number | undefined;
|
|
53
|
+
collection?: string | undefined;
|
|
54
|
+
maxPoolSize?: number | undefined;
|
|
55
|
+
} | undefined;
|
|
56
|
+
}>;
|
|
20
57
|
ephemeralQueryAccountEnabled?: boolean;
|
|
21
58
|
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
22
59
|
} & {
|
|
@@ -41,22 +78,22 @@ export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams =
|
|
|
41
78
|
id: string;
|
|
42
79
|
modName?: import("@xyo-network/module-model").ModuleName;
|
|
43
80
|
params: TParams;
|
|
44
|
-
previousHash: () => import("
|
|
81
|
+
previousHash: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<string | undefined>;
|
|
45
82
|
queries: string[];
|
|
46
|
-
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("
|
|
47
|
-
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("
|
|
48
|
-
start?: () => import("
|
|
49
|
-
stop?: () => import("
|
|
83
|
+
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
|
|
84
|
+
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
85
|
+
start?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
86
|
+
stop?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
50
87
|
eventData: import("@xyo-network/module-model").ModuleEventData<object>;
|
|
51
88
|
clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
|
|
52
89
|
emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
53
90
|
emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
54
91
|
listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
|
|
55
|
-
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
56
|
-
offAny(listener: import("
|
|
57
|
-
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
58
|
-
onAny(listener: import("
|
|
59
|
-
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("
|
|
92
|
+
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
|
|
93
|
+
offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener | Promise<void>): void;
|
|
94
|
+
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
95
|
+
onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
96
|
+
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
60
97
|
}) & {
|
|
61
98
|
labels: MongoDBStorageClassLabels;
|
|
62
99
|
}) & TModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB
|
|
1
|
+
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACnC,OAAO,SAAS,iBAAiB,CAAC,OAAO,CAAC,2CAE9B,OAAO,8BAN6F,GAAG,EAAE;sBAWjG,YAAY,CAAC,yBAAyB,CAAC,GAAG,SAAS;iBACxD,YAAY,CAAC,oBAAoB,CAAC,GAAG,SAAS;oCAE9B,kBAAkB;;;+BAmBvB,kBAAkB;;IAe1C;;;OAGG;qBACoB,OAAO,CAAC,IAAI,CAAC;;;;;;;;sRApD8F,CAAC,6DAErH,CAAC;4RAIL,CAAA,6DAEN,CAAC;;;;;;;;;;;;;;;YAmDR,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
+
if (decorator = decorators[i])
|
|
8
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
+
if (kind && result) __defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3
13
|
|
|
4
14
|
// src/Collections.ts
|
|
5
15
|
var COLLECTIONS = {
|
|
@@ -16,7 +26,7 @@ import { assertEx } from "@xylabs/assert";
|
|
|
16
26
|
import { BaseMongoSdk } from "@xyo-network/sdk-xyo-mongo-js";
|
|
17
27
|
|
|
18
28
|
// src/config/getMongoDBConfig.ts
|
|
19
|
-
var getMongoDBConfig =
|
|
29
|
+
var getMongoDBConfig = () => {
|
|
20
30
|
const env = {};
|
|
21
31
|
if (process.env.MONGO_CONNECTION_STRING) {
|
|
22
32
|
env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING;
|
|
@@ -28,10 +38,10 @@ var getMongoDBConfig = /* @__PURE__ */ __name(() => {
|
|
|
28
38
|
env.MONGO_USERNAME = process.env.MONGO_USERNAME;
|
|
29
39
|
}
|
|
30
40
|
return env;
|
|
31
|
-
}
|
|
41
|
+
};
|
|
32
42
|
|
|
33
43
|
// src/config/getBaseMongoSdk.ts
|
|
34
|
-
var getBaseMongoSdkPrivateConfig =
|
|
44
|
+
var getBaseMongoSdkPrivateConfig = () => {
|
|
35
45
|
const env = getMongoDBConfig();
|
|
36
46
|
return {
|
|
37
47
|
dbConnectionString: env.MONGO_CONNECTION_STRING,
|
|
@@ -40,32 +50,21 @@ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
|
|
|
40
50
|
dbPassword: assertEx(env.MONGO_PASSWORD, () => "Missing Mongo Password"),
|
|
41
51
|
dbUserName: assertEx(env.MONGO_USERNAME, () => "Missing Mongo Username")
|
|
42
52
|
};
|
|
43
|
-
}
|
|
44
|
-
var getBaseMongoSdk =
|
|
45
|
-
return new BaseMongoSdk({
|
|
46
|
-
|
|
47
|
-
collection
|
|
48
|
-
});
|
|
49
|
-
}, "getBaseMongoSdk");
|
|
53
|
+
};
|
|
54
|
+
var getBaseMongoSdk = (collection) => {
|
|
55
|
+
return new BaseMongoSdk({ ...getBaseMongoSdkPrivateConfig(), collection });
|
|
56
|
+
};
|
|
50
57
|
|
|
51
58
|
// src/config/hasMongoDBConfig.ts
|
|
52
59
|
import { exists } from "@xylabs/exists";
|
|
53
|
-
var hasMongoDBConfig =
|
|
60
|
+
var hasMongoDBConfig = () => {
|
|
54
61
|
const env = getMongoDBConfig();
|
|
55
|
-
const requiredValues = [
|
|
56
|
-
env.MONGO_CONNECTION_STRING,
|
|
57
|
-
env.MONGO_DATABASE,
|
|
58
|
-
env.MONGO_DOMAIN,
|
|
59
|
-
env.MONGO_PASSWORD,
|
|
60
|
-
env.MONGO_USERNAME
|
|
61
|
-
];
|
|
62
|
+
const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME];
|
|
62
63
|
return requiredValues.every(exists);
|
|
63
|
-
}
|
|
64
|
+
};
|
|
64
65
|
|
|
65
66
|
// src/Databases.ts
|
|
66
|
-
var DATABASES = {
|
|
67
|
-
Archivist: "archivist"
|
|
68
|
-
};
|
|
67
|
+
var DATABASES = { Archivist: "archivist" };
|
|
69
68
|
|
|
70
69
|
// src/Defaults.ts
|
|
71
70
|
var DefaultAggregateTimeoutMs = 1e4;
|
|
@@ -77,31 +76,22 @@ var DefaultOrder = "desc";
|
|
|
77
76
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
78
77
|
import { merge } from "@xylabs/lodash";
|
|
79
78
|
import { staticImplements } from "@xylabs/static-implements";
|
|
80
|
-
import {
|
|
79
|
+
import {
|
|
80
|
+
MongoDBStorageClassLabels
|
|
81
|
+
} from "@xyo-network/module-model-mongodb";
|
|
81
82
|
import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
85
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
86
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
87
|
-
}
|
|
88
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
89
|
-
var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
90
|
-
let MongoModuleBase = class MongoModuleBase extends ModuleBase {
|
|
91
|
-
static {
|
|
92
|
-
__name(this, "MongoModuleBase");
|
|
93
|
-
}
|
|
94
|
-
static labels = MongoDBStorageClassLabels;
|
|
83
|
+
var MongoDBModuleMixin = (ModuleBase) => {
|
|
84
|
+
let MongoModuleBase = class extends ModuleBase {
|
|
95
85
|
_boundWitnessSdk;
|
|
96
86
|
_payloadSdk;
|
|
97
87
|
get boundWitnessSdkConfig() {
|
|
98
|
-
const config = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses
|
|
104
|
-
|
|
88
|
+
const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() };
|
|
89
|
+
return merge(
|
|
90
|
+
config,
|
|
91
|
+
this.params.boundWitnessSdkConfig,
|
|
92
|
+
this.config.boundWitnessSdkConfig,
|
|
93
|
+
{ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses }
|
|
94
|
+
);
|
|
105
95
|
}
|
|
106
96
|
get boundWitnesses() {
|
|
107
97
|
this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk2(this.boundWitnessSdkConfig);
|
|
@@ -111,43 +101,42 @@ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
|
111
101
|
return assertEx2(this.params.jobQueue, () => "MongoDBModule Error: jobQueue required for this module but is not defined");
|
|
112
102
|
}
|
|
113
103
|
get payloadSdkConfig() {
|
|
114
|
-
const config = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads
|
|
120
|
-
|
|
104
|
+
const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() };
|
|
105
|
+
return merge(
|
|
106
|
+
config,
|
|
107
|
+
this.params.payloadSdkConfig,
|
|
108
|
+
this.config.payloadSdkConfig,
|
|
109
|
+
{ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads }
|
|
110
|
+
);
|
|
121
111
|
}
|
|
122
112
|
get payloads() {
|
|
123
113
|
this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk2(this.payloadSdkConfig);
|
|
124
114
|
return assertEx2(this._payloadSdk);
|
|
125
115
|
}
|
|
126
116
|
/**
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
117
|
+
* Ensures any indexes specified within the config are created. This method should be idempotent
|
|
118
|
+
* allowing for multiple calls without causing errors while ensuring the desired state.
|
|
119
|
+
*/
|
|
130
120
|
async ensureIndexes() {
|
|
131
121
|
const configIndexes = this.config?.storage?.indexes ?? [];
|
|
132
122
|
await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes);
|
|
133
123
|
await ensureIndexesExistOnCollection(this.payloads, configIndexes);
|
|
134
124
|
}
|
|
135
125
|
};
|
|
136
|
-
MongoModuleBase
|
|
126
|
+
__publicField(MongoModuleBase, "labels", MongoDBStorageClassLabels);
|
|
127
|
+
MongoModuleBase = __decorateClass([
|
|
137
128
|
staticImplements()
|
|
138
129
|
], MongoModuleBase);
|
|
139
130
|
return MongoModuleBase;
|
|
140
|
-
}
|
|
141
|
-
var ensureIndexesExistOnCollection =
|
|
131
|
+
};
|
|
132
|
+
var ensureIndexesExistOnCollection = async (sdk, configIndexes) => {
|
|
142
133
|
await sdk.useCollection(async (collection) => {
|
|
143
134
|
const collectionName = collection.collectionName.toLowerCase();
|
|
144
135
|
const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
|
|
145
136
|
if (indexes.length === 0) return;
|
|
146
137
|
for (const ix of indexes) {
|
|
147
138
|
try {
|
|
148
|
-
await collection.createIndexes([
|
|
149
|
-
ix
|
|
150
|
-
]);
|
|
139
|
+
await collection.createIndexes([ix]);
|
|
151
140
|
} catch (error) {
|
|
152
141
|
const mongoServerError = error;
|
|
153
142
|
const { codeName } = mongoServerError;
|
|
@@ -159,12 +148,12 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
|
|
|
159
148
|
}
|
|
160
149
|
}
|
|
161
150
|
});
|
|
162
|
-
}
|
|
151
|
+
};
|
|
163
152
|
|
|
164
153
|
// src/util/dbProperty.ts
|
|
165
154
|
var escapeChar = "#";
|
|
166
|
-
var toDbProperty =
|
|
167
|
-
var fromDbProperty =
|
|
155
|
+
var toDbProperty = (value) => value.replaceAll(".", escapeChar);
|
|
156
|
+
var fromDbProperty = (value) => value.replaceAll(escapeChar, ".");
|
|
168
157
|
export {
|
|
169
158
|
COLLECTIONS,
|
|
170
159
|
DATABASES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":"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","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","assertEx","BaseMongoSdk","getMongoDBConfig","env","process","MONGO_CONNECTION_STRING","MONGO_DOMAIN","MONGO_DATABASE","MONGO_PASSWORD","MONGO_USERNAME","getBaseMongoSdkPrivateConfig","env","getMongoDBConfig","dbConnectionString","MONGO_CONNECTION_STRING","dbDomain","assertEx","MONGO_DOMAIN","dbName","MONGO_DATABASE","dbPassword","MONGO_PASSWORD","dbUserName","MONGO_USERNAME","getBaseMongoSdk","collection","BaseMongoSdk","exists","hasMongoDBConfig","env","getMongoDBConfig","requiredValues","MONGO_CONNECTION_STRING","MONGO_DATABASE","MONGO_DOMAIN","MONGO_PASSWORD","MONGO_USERNAME","every","exists","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","assertEx","merge","staticImplements","MongoDBStorageClassLabels","BaseMongoSdk","MongoDBModuleMixin","ModuleBase","MongoModuleBase","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":";;;;;;;;;;;;;;AACO,IAAM,cAAc;AAAA,EACzB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AACT;;;ACRA,SAAS,gBAAgB;AAEzB,SAAS,oBAAoB;;;ACGtB,IAAM,mBAAmB,MAAgB;AAC9C,QAAM,MAAgB,CAAC;AACvB,MAAI,QAAQ,IAAI,yBAAyB;AACvC,QAAI,0BAA0B,QAAQ,IAAI;AAAA,EAC5C;AACA,MAAI,QAAQ,IAAI,cAAc;AAC5B,QAAI,iBAAiB,QAAQ,IAAI;AACjC,QAAI,eAAe,QAAQ,IAAI;AAC/B,QAAI,iBAAiB,QAAQ,IAAI;AACjC,QAAI,iBAAiB,QAAQ,IAAI;AAAA,EACnC;AACA,SAAO;AACT;;;ADVO,IAAM,+BAA+B,MAAiC;AAC3E,QAAM,MAAM,iBAAiB;AAC7B,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,IACxB,UAAU,SAAS,IAAI,cAAc,MAAM,sBAAsB;AAAA,IACjE,QAAQ,SAAS,IAAI,gBAAgB,MAAM,wBAAwB;AAAA,IACnE,YAAY,SAAS,IAAI,gBAAgB,MAAM,wBAAwB;AAAA,IACvE,YAAY,SAAS,IAAI,gBAAgB,MAAM,wBAAwB;AAAA,EACzE;AACF;AAEO,IAAM,kBAAkB,CAAqB,eAAuB;AACzE,SAAO,IAAI,aAAgB,EAAE,GAAG,6BAA6B,GAAG,WAAW,CAAC;AAC9E;;;AEpBA,SAAS,cAAc;AAIhB,IAAM,mBAAmB,MAAe;AAC7C,QAAM,MAAM,iBAAiB;AAC7B,QAAM,iBAAiB,CAAC,IAAI,yBAAyB,IAAI,gBAAgB,IAAI,cAAc,IAAI,gBAAgB,IAAI,cAAc;AACjI,SAAO,eAAe,MAAM,MAAM;AACpC;;;ACRO,IAAM,YAAY,EAAE,WAAW,YAAqB;;;ACApD,IAAM,4BAA4B;AAClC,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,eAAe;;;ACH5B,SAAS,YAAAA,iBAAgB;AACzB,SAAS,aAAa;AACtB,SAAS,wBAAwB;AAEjC;AAAA,EAC2D;AAAA,OACpD;AAEP,SAAS,gBAAAC,qBAAwC;AAU1C,IAAM,qBAAqB,CAIhC,eACG;AAEH,MAAe,kBAAf,cAAuC,WAAoC;AAAA,IAEzE;AAAA,IACA;AAAA,IAEA,IAAI,wBAA4C;AAC9C,YAAM,SAAS,EAAE,YAAY,YAAY,gBAAgB,GAAG,6BAA6B,EAAE;AAC3F,aAAO;AAAA,QACL;AAAA,QACA,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,EAAE,YAAY,KAAK,OAAO,uBAAuB,cAAc,KAAK,OAAO,uBAAuB,cAAc,YAAY,eAAe;AAAA,MAC7I;AAAA,IACF;AAAA,IAEA,IAAI,iBAAiB;AACnB,WAAK,mBAAmB,KAAK,oBAAoB,IAAIC,cAAwC,KAAK,qBAAqB;AACvH,aAAOC,UAAS,KAAK,gBAAgB;AAAA,IACvC;AAAA,IAEA,IAAI,WAAW;AACb,aAAOA,UAAS,KAAK,OAAO,UAAU,MAAM,2EAA2E;AAAA,IACzH;AAAA,IAEA,IAAI,mBAAuC;AACzC,YAAM,SAAS,EAAE,YAAY,YAAY,UAAU,GAAG,6BAA6B,EAAE;AACrF,aAAO;AAAA,QACL;AAAA,QACA,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,EAAE,YAAY,KAAK,OAAO,kBAAkB,cAAc,KAAK,OAAO,kBAAkB,cAAc,YAAY,SAAS;AAAA,MAC7H;AAAA,IACF;AAAA,IAEA,IAAI,WAAW;AACb,WAAK,cAAc,KAAK,eAAe,IAAID,cAAmC,KAAK,gBAAgB;AACnG,aAAOC,UAAS,KAAK,WAAW;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,gBAA+B;AACnC,YAAM,gBAAiB,KAAK,QAA2D,SAAS,WAAW,CAAC;AAC5G,YAAM,+BAA+B,KAAK,gBAAgB,aAAa;AACvE,YAAM,+BAA+B,KAAK,UAAU,aAAa;AAAA,IACnE;AAAA,EACF;AA/CE,gBADa,iBACN,UAAS;AADH,oBAAf;AAAA,IADC,iBAAsC;AAAA,KACxB;AAiDf,SAAO;AACT;AAOA,IAAM,iCAAiC,OACrC,KACA,kBACG;AACH,QAAM,IAAI,cAAc,OAAO,eAAe;AAC5C,UAAM,iBAAiB,WAAW,eAAe,YAAY;AAC7D,UAAM,UAAU,cAAc,OAAO,QAAM,IAAI,MAAM,YAAY,EAAE,WAAW,cAAc,CAAC;AAC7F,QAAI,QAAQ,WAAW,EAAG;AAC1B,eAAW,MAAM,SAAS;AACxB,UAAI;AACF,cAAM,WAAW,cAAc,CAAC,EAAE,CAAC;AAAA,MACrC,SAAS,OAAO;AACd,cAAM,mBAAmB;AACzB,cAAM,EAAE,SAAS,IAAI;AACrB,YAAI,aAAa,2BAA2B,aAAa,wBAAwB;AAK/E;AAAA,QACF;AACA,gBAAQ,MAAM,wBAAwB,GAAG,IAAI,mBAAmB,cAAc,KAAK,KAAK,EAAE;AAC1F,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC5GO,IAAM,aAAa;AAEnB,IAAM,eAAe,CAAC,UAAkB,MAAM,WAAW,KAAK,UAAU;AAExE,IAAM,iBAAiB,CAAC,UAAkB,MAAM,WAAW,YAAY,GAAG;","names":["assertEx","BaseMongoSdk","BaseMongoSdk","assertEx"]}
|
package/dist/neutral/Module.d.ts
CHANGED
|
@@ -4,19 +4,56 @@ import { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/pa
|
|
|
4
4
|
import { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js';
|
|
5
5
|
export type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>;
|
|
6
6
|
export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams = import("@xylabs/object").BaseParamsFields & {
|
|
7
|
-
account?: import("
|
|
7
|
+
account?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance | "random";
|
|
8
8
|
addToResolvers?: boolean;
|
|
9
|
-
additionalSigners?: import("
|
|
9
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance[];
|
|
10
10
|
allowNameResolution?: boolean;
|
|
11
|
-
config: import("@
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
config: import("@xylabs/object").DeepRestrictToStringKeys<{
|
|
12
|
+
schema: import("@xyo-network/payload-model").Schema;
|
|
13
|
+
readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
|
|
14
|
+
readonly archiving?: {
|
|
15
|
+
readonly archivists?: string[] | undefined;
|
|
16
|
+
readonly queries?: string[] | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
readonly allowedQueries?: string[] | undefined;
|
|
19
|
+
readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.4.26-24d1eada81/package").LogLevel | undefined;
|
|
20
|
+
readonly labels?: {
|
|
21
|
+
[x: string]: string | undefined;
|
|
22
|
+
} | undefined;
|
|
23
|
+
readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
|
|
24
|
+
readonly paging?: {
|
|
25
|
+
[x: string]: {
|
|
26
|
+
size?: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
} | undefined;
|
|
29
|
+
readonly retry?: {
|
|
30
|
+
backoff?: number | undefined;
|
|
31
|
+
interval?: number | undefined;
|
|
32
|
+
retries?: number | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
readonly security?: {
|
|
35
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
36
|
+
readonly allowed?: {
|
|
37
|
+
[x: string]: (Lowercase<string> | Lowercase<string>[])[];
|
|
38
|
+
} | undefined;
|
|
39
|
+
readonly disallowed?: {
|
|
40
|
+
[x: string]: Lowercase<string>[];
|
|
41
|
+
} | undefined;
|
|
42
|
+
} | undefined;
|
|
43
|
+
readonly sign?: boolean | undefined;
|
|
44
|
+
readonly storeQueries?: boolean | undefined;
|
|
45
|
+
readonly timestamp?: boolean | undefined;
|
|
46
|
+
boundWitnessSdkConfig?: {
|
|
47
|
+
closeDelay?: number | undefined;
|
|
48
|
+
collection?: string | undefined;
|
|
49
|
+
maxPoolSize?: number | undefined;
|
|
50
|
+
} | undefined;
|
|
51
|
+
payloadSdkConfig?: {
|
|
52
|
+
closeDelay?: number | undefined;
|
|
53
|
+
collection?: string | undefined;
|
|
54
|
+
maxPoolSize?: number | undefined;
|
|
55
|
+
} | undefined;
|
|
56
|
+
}>;
|
|
20
57
|
ephemeralQueryAccountEnabled?: boolean;
|
|
21
58
|
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
22
59
|
} & {
|
|
@@ -41,22 +78,22 @@ export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams =
|
|
|
41
78
|
id: string;
|
|
42
79
|
modName?: import("@xyo-network/module-model").ModuleName;
|
|
43
80
|
params: TParams;
|
|
44
|
-
previousHash: () => import("
|
|
81
|
+
previousHash: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<string | undefined>;
|
|
45
82
|
queries: string[];
|
|
46
|
-
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("
|
|
47
|
-
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("
|
|
48
|
-
start?: () => import("
|
|
49
|
-
stop?: () => import("
|
|
83
|
+
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
|
|
84
|
+
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
85
|
+
start?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
86
|
+
stop?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
50
87
|
eventData: import("@xyo-network/module-model").ModuleEventData<object>;
|
|
51
88
|
clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
|
|
52
89
|
emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
53
90
|
emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
54
91
|
listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
|
|
55
|
-
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
56
|
-
offAny(listener: import("
|
|
57
|
-
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
58
|
-
onAny(listener: import("
|
|
59
|
-
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("
|
|
92
|
+
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
|
|
93
|
+
offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener | Promise<void>): void;
|
|
94
|
+
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
95
|
+
onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
96
|
+
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
60
97
|
}) & {
|
|
61
98
|
labels: MongoDBStorageClassLabels;
|
|
62
99
|
}) & TModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB
|
|
1
|
+
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACnC,OAAO,SAAS,iBAAiB,CAAC,OAAO,CAAC,2CAE9B,OAAO,8BAN6F,GAAG,EAAE;sBAWjG,YAAY,CAAC,yBAAyB,CAAC,GAAG,SAAS;iBACxD,YAAY,CAAC,oBAAoB,CAAC,GAAG,SAAS;oCAE9B,kBAAkB;;;+BAmBvB,kBAAkB;;IAe1C;;;OAGG;qBACoB,OAAO,CAAC,IAAI,CAAC;;;;;;;;sRApD8F,CAAC,6DAErH,CAAC;4RAIL,CAAA,6DAEN,CAAC;;;;;;;;;;;;;;;YAmDR,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
+
if (decorator = decorators[i])
|
|
8
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
+
if (kind && result) __defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3
13
|
|
|
4
14
|
// src/Collections.ts
|
|
5
15
|
var COLLECTIONS = {
|
|
@@ -16,7 +26,7 @@ import { assertEx } from "@xylabs/assert";
|
|
|
16
26
|
import { BaseMongoSdk } from "@xyo-network/sdk-xyo-mongo-js";
|
|
17
27
|
|
|
18
28
|
// src/config/getMongoDBConfig.ts
|
|
19
|
-
var getMongoDBConfig =
|
|
29
|
+
var getMongoDBConfig = () => {
|
|
20
30
|
const env = {};
|
|
21
31
|
if (process.env.MONGO_CONNECTION_STRING) {
|
|
22
32
|
env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING;
|
|
@@ -28,10 +38,10 @@ var getMongoDBConfig = /* @__PURE__ */ __name(() => {
|
|
|
28
38
|
env.MONGO_USERNAME = process.env.MONGO_USERNAME;
|
|
29
39
|
}
|
|
30
40
|
return env;
|
|
31
|
-
}
|
|
41
|
+
};
|
|
32
42
|
|
|
33
43
|
// src/config/getBaseMongoSdk.ts
|
|
34
|
-
var getBaseMongoSdkPrivateConfig =
|
|
44
|
+
var getBaseMongoSdkPrivateConfig = () => {
|
|
35
45
|
const env = getMongoDBConfig();
|
|
36
46
|
return {
|
|
37
47
|
dbConnectionString: env.MONGO_CONNECTION_STRING,
|
|
@@ -40,32 +50,21 @@ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
|
|
|
40
50
|
dbPassword: assertEx(env.MONGO_PASSWORD, () => "Missing Mongo Password"),
|
|
41
51
|
dbUserName: assertEx(env.MONGO_USERNAME, () => "Missing Mongo Username")
|
|
42
52
|
};
|
|
43
|
-
}
|
|
44
|
-
var getBaseMongoSdk =
|
|
45
|
-
return new BaseMongoSdk({
|
|
46
|
-
|
|
47
|
-
collection
|
|
48
|
-
});
|
|
49
|
-
}, "getBaseMongoSdk");
|
|
53
|
+
};
|
|
54
|
+
var getBaseMongoSdk = (collection) => {
|
|
55
|
+
return new BaseMongoSdk({ ...getBaseMongoSdkPrivateConfig(), collection });
|
|
56
|
+
};
|
|
50
57
|
|
|
51
58
|
// src/config/hasMongoDBConfig.ts
|
|
52
59
|
import { exists } from "@xylabs/exists";
|
|
53
|
-
var hasMongoDBConfig =
|
|
60
|
+
var hasMongoDBConfig = () => {
|
|
54
61
|
const env = getMongoDBConfig();
|
|
55
|
-
const requiredValues = [
|
|
56
|
-
env.MONGO_CONNECTION_STRING,
|
|
57
|
-
env.MONGO_DATABASE,
|
|
58
|
-
env.MONGO_DOMAIN,
|
|
59
|
-
env.MONGO_PASSWORD,
|
|
60
|
-
env.MONGO_USERNAME
|
|
61
|
-
];
|
|
62
|
+
const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME];
|
|
62
63
|
return requiredValues.every(exists);
|
|
63
|
-
}
|
|
64
|
+
};
|
|
64
65
|
|
|
65
66
|
// src/Databases.ts
|
|
66
|
-
var DATABASES = {
|
|
67
|
-
Archivist: "archivist"
|
|
68
|
-
};
|
|
67
|
+
var DATABASES = { Archivist: "archivist" };
|
|
69
68
|
|
|
70
69
|
// src/Defaults.ts
|
|
71
70
|
var DefaultAggregateTimeoutMs = 1e4;
|
|
@@ -77,31 +76,22 @@ var DefaultOrder = "desc";
|
|
|
77
76
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
78
77
|
import { merge } from "@xylabs/lodash";
|
|
79
78
|
import { staticImplements } from "@xylabs/static-implements";
|
|
80
|
-
import {
|
|
79
|
+
import {
|
|
80
|
+
MongoDBStorageClassLabels
|
|
81
|
+
} from "@xyo-network/module-model-mongodb";
|
|
81
82
|
import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
85
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
86
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
87
|
-
}
|
|
88
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
89
|
-
var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
90
|
-
let MongoModuleBase = class MongoModuleBase extends ModuleBase {
|
|
91
|
-
static {
|
|
92
|
-
__name(this, "MongoModuleBase");
|
|
93
|
-
}
|
|
94
|
-
static labels = MongoDBStorageClassLabels;
|
|
83
|
+
var MongoDBModuleMixin = (ModuleBase) => {
|
|
84
|
+
let MongoModuleBase = class extends ModuleBase {
|
|
95
85
|
_boundWitnessSdk;
|
|
96
86
|
_payloadSdk;
|
|
97
87
|
get boundWitnessSdkConfig() {
|
|
98
|
-
const config = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses
|
|
104
|
-
|
|
88
|
+
const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() };
|
|
89
|
+
return merge(
|
|
90
|
+
config,
|
|
91
|
+
this.params.boundWitnessSdkConfig,
|
|
92
|
+
this.config.boundWitnessSdkConfig,
|
|
93
|
+
{ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses }
|
|
94
|
+
);
|
|
105
95
|
}
|
|
106
96
|
get boundWitnesses() {
|
|
107
97
|
this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk2(this.boundWitnessSdkConfig);
|
|
@@ -111,43 +101,42 @@ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
|
111
101
|
return assertEx2(this.params.jobQueue, () => "MongoDBModule Error: jobQueue required for this module but is not defined");
|
|
112
102
|
}
|
|
113
103
|
get payloadSdkConfig() {
|
|
114
|
-
const config = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads
|
|
120
|
-
|
|
104
|
+
const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() };
|
|
105
|
+
return merge(
|
|
106
|
+
config,
|
|
107
|
+
this.params.payloadSdkConfig,
|
|
108
|
+
this.config.payloadSdkConfig,
|
|
109
|
+
{ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads }
|
|
110
|
+
);
|
|
121
111
|
}
|
|
122
112
|
get payloads() {
|
|
123
113
|
this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk2(this.payloadSdkConfig);
|
|
124
114
|
return assertEx2(this._payloadSdk);
|
|
125
115
|
}
|
|
126
116
|
/**
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
117
|
+
* Ensures any indexes specified within the config are created. This method should be idempotent
|
|
118
|
+
* allowing for multiple calls without causing errors while ensuring the desired state.
|
|
119
|
+
*/
|
|
130
120
|
async ensureIndexes() {
|
|
131
121
|
const configIndexes = this.config?.storage?.indexes ?? [];
|
|
132
122
|
await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes);
|
|
133
123
|
await ensureIndexesExistOnCollection(this.payloads, configIndexes);
|
|
134
124
|
}
|
|
135
125
|
};
|
|
136
|
-
MongoModuleBase
|
|
126
|
+
__publicField(MongoModuleBase, "labels", MongoDBStorageClassLabels);
|
|
127
|
+
MongoModuleBase = __decorateClass([
|
|
137
128
|
staticImplements()
|
|
138
129
|
], MongoModuleBase);
|
|
139
130
|
return MongoModuleBase;
|
|
140
|
-
}
|
|
141
|
-
var ensureIndexesExistOnCollection =
|
|
131
|
+
};
|
|
132
|
+
var ensureIndexesExistOnCollection = async (sdk, configIndexes) => {
|
|
142
133
|
await sdk.useCollection(async (collection) => {
|
|
143
134
|
const collectionName = collection.collectionName.toLowerCase();
|
|
144
135
|
const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
|
|
145
136
|
if (indexes.length === 0) return;
|
|
146
137
|
for (const ix of indexes) {
|
|
147
138
|
try {
|
|
148
|
-
await collection.createIndexes([
|
|
149
|
-
ix
|
|
150
|
-
]);
|
|
139
|
+
await collection.createIndexes([ix]);
|
|
151
140
|
} catch (error) {
|
|
152
141
|
const mongoServerError = error;
|
|
153
142
|
const { codeName } = mongoServerError;
|
|
@@ -159,12 +148,12 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
|
|
|
159
148
|
}
|
|
160
149
|
}
|
|
161
150
|
});
|
|
162
|
-
}
|
|
151
|
+
};
|
|
163
152
|
|
|
164
153
|
// src/util/dbProperty.ts
|
|
165
154
|
var escapeChar = "#";
|
|
166
|
-
var toDbProperty =
|
|
167
|
-
var fromDbProperty =
|
|
155
|
+
var toDbProperty = (value) => value.replaceAll(".", escapeChar);
|
|
156
|
+
var fromDbProperty = (value) => value.replaceAll(escapeChar, ".");
|
|
168
157
|
export {
|
|
169
158
|
COLLECTIONS,
|
|
170
159
|
DATABASES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":"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","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","assertEx","BaseMongoSdk","getMongoDBConfig","env","process","MONGO_CONNECTION_STRING","MONGO_DOMAIN","MONGO_DATABASE","MONGO_PASSWORD","MONGO_USERNAME","getBaseMongoSdkPrivateConfig","env","getMongoDBConfig","dbConnectionString","MONGO_CONNECTION_STRING","dbDomain","assertEx","MONGO_DOMAIN","dbName","MONGO_DATABASE","dbPassword","MONGO_PASSWORD","dbUserName","MONGO_USERNAME","getBaseMongoSdk","collection","BaseMongoSdk","exists","hasMongoDBConfig","env","getMongoDBConfig","requiredValues","MONGO_CONNECTION_STRING","MONGO_DATABASE","MONGO_DOMAIN","MONGO_PASSWORD","MONGO_USERNAME","every","exists","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","assertEx","merge","staticImplements","MongoDBStorageClassLabels","BaseMongoSdk","MongoDBModuleMixin","ModuleBase","MongoModuleBase","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":"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","names":["assertEx","BaseMongoSdk","BaseMongoSdk","assertEx"]}
|
package/dist/node/Module.d.ts
CHANGED
|
@@ -4,19 +4,56 @@ import { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/pa
|
|
|
4
4
|
import { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js';
|
|
5
5
|
export type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>;
|
|
6
6
|
export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams = import("@xylabs/object").BaseParamsFields & {
|
|
7
|
-
account?: import("
|
|
7
|
+
account?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance | "random";
|
|
8
8
|
addToResolvers?: boolean;
|
|
9
|
-
additionalSigners?: import("
|
|
9
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-8883e952a7/package").AccountInstance[];
|
|
10
10
|
allowNameResolution?: boolean;
|
|
11
|
-
config: import("@
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
config: import("@xylabs/object").DeepRestrictToStringKeys<{
|
|
12
|
+
schema: import("@xyo-network/payload-model").Schema;
|
|
13
|
+
readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
|
|
14
|
+
readonly archiving?: {
|
|
15
|
+
readonly archivists?: string[] | undefined;
|
|
16
|
+
readonly queries?: string[] | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
readonly allowedQueries?: string[] | undefined;
|
|
19
|
+
readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.4.26-24d1eada81/package").LogLevel | undefined;
|
|
20
|
+
readonly labels?: {
|
|
21
|
+
[x: string]: string | undefined;
|
|
22
|
+
} | undefined;
|
|
23
|
+
readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
|
|
24
|
+
readonly paging?: {
|
|
25
|
+
[x: string]: {
|
|
26
|
+
size?: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
} | undefined;
|
|
29
|
+
readonly retry?: {
|
|
30
|
+
backoff?: number | undefined;
|
|
31
|
+
interval?: number | undefined;
|
|
32
|
+
retries?: number | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
readonly security?: {
|
|
35
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
36
|
+
readonly allowed?: {
|
|
37
|
+
[x: string]: (Lowercase<string> | Lowercase<string>[])[];
|
|
38
|
+
} | undefined;
|
|
39
|
+
readonly disallowed?: {
|
|
40
|
+
[x: string]: Lowercase<string>[];
|
|
41
|
+
} | undefined;
|
|
42
|
+
} | undefined;
|
|
43
|
+
readonly sign?: boolean | undefined;
|
|
44
|
+
readonly storeQueries?: boolean | undefined;
|
|
45
|
+
readonly timestamp?: boolean | undefined;
|
|
46
|
+
boundWitnessSdkConfig?: {
|
|
47
|
+
closeDelay?: number | undefined;
|
|
48
|
+
collection?: string | undefined;
|
|
49
|
+
maxPoolSize?: number | undefined;
|
|
50
|
+
} | undefined;
|
|
51
|
+
payloadSdkConfig?: {
|
|
52
|
+
closeDelay?: number | undefined;
|
|
53
|
+
collection?: string | undefined;
|
|
54
|
+
maxPoolSize?: number | undefined;
|
|
55
|
+
} | undefined;
|
|
56
|
+
}>;
|
|
20
57
|
ephemeralQueryAccountEnabled?: boolean;
|
|
21
58
|
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
22
59
|
} & {
|
|
@@ -41,22 +78,22 @@ export declare const MongoDBModuleMixin: <TParams extends MongoDBModuleParams =
|
|
|
41
78
|
id: string;
|
|
42
79
|
modName?: import("@xyo-network/module-model").ModuleName;
|
|
43
80
|
params: TParams;
|
|
44
|
-
previousHash: () => import("
|
|
81
|
+
previousHash: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<string | undefined>;
|
|
45
82
|
queries: string[];
|
|
46
|
-
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("
|
|
47
|
-
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("
|
|
48
|
-
start?: () => import("
|
|
49
|
-
stop?: () => import("
|
|
83
|
+
query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
|
|
84
|
+
queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
85
|
+
start?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
86
|
+
stop?: () => import(".store/@xylabs-promise-npm-4.4.26-eff161fa33/package").Promisable<boolean>;
|
|
50
87
|
eventData: import("@xyo-network/module-model").ModuleEventData<object>;
|
|
51
88
|
clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
|
|
52
89
|
emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
53
90
|
emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
|
|
54
91
|
listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
|
|
55
|
-
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
56
|
-
offAny(listener: import("
|
|
57
|
-
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("
|
|
58
|
-
onAny(listener: import("
|
|
59
|
-
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("
|
|
92
|
+
off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
|
|
93
|
+
offAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener | Promise<void>): void;
|
|
94
|
+
on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
95
|
+
onAny(listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventAnyListener): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
96
|
+
once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import(".store/@xyo-network-module-events-npm-3.6.0-9d2284a923/package").EventUnsubscribeFunction;
|
|
60
97
|
}) & {
|
|
61
98
|
labels: MongoDBStorageClassLabels;
|
|
62
99
|
}) & TModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB
|
|
1
|
+
{"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EACU,mBAAmB,EAAuB,yBAAyB,EACnF,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQhF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;AAE3I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACnC,OAAO,SAAS,iBAAiB,CAAC,OAAO,CAAC,2CAE9B,OAAO,8BAN6F,GAAG,EAAE;sBAWjG,YAAY,CAAC,yBAAyB,CAAC,GAAG,SAAS;iBACxD,YAAY,CAAC,oBAAoB,CAAC,GAAG,SAAS;oCAE9B,kBAAkB;;;+BAmBvB,kBAAkB;;IAe1C;;;OAGG;qBACoB,OAAO,CAAC,IAAI,CAAC;;;;;;;;sRApD8F,CAAC,6DAErH,CAAC;4RAIL,CAAA,6DAEN,CAAC;;;;;;;;;;;;;;;YAmDR,CAAA"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
+
if (decorator = decorators[i])
|
|
8
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
+
if (kind && result) __defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3
13
|
|
|
4
14
|
// src/Collections.ts
|
|
5
15
|
var COLLECTIONS = {
|
|
@@ -16,7 +26,7 @@ import { assertEx } from "@xylabs/assert";
|
|
|
16
26
|
import { BaseMongoSdk } from "@xyo-network/sdk-xyo-mongo-js";
|
|
17
27
|
|
|
18
28
|
// src/config/getMongoDBConfig.ts
|
|
19
|
-
var getMongoDBConfig =
|
|
29
|
+
var getMongoDBConfig = () => {
|
|
20
30
|
const env = {};
|
|
21
31
|
if (process.env.MONGO_CONNECTION_STRING) {
|
|
22
32
|
env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING;
|
|
@@ -28,10 +38,10 @@ var getMongoDBConfig = /* @__PURE__ */ __name(() => {
|
|
|
28
38
|
env.MONGO_USERNAME = process.env.MONGO_USERNAME;
|
|
29
39
|
}
|
|
30
40
|
return env;
|
|
31
|
-
}
|
|
41
|
+
};
|
|
32
42
|
|
|
33
43
|
// src/config/getBaseMongoSdk.ts
|
|
34
|
-
var getBaseMongoSdkPrivateConfig =
|
|
44
|
+
var getBaseMongoSdkPrivateConfig = () => {
|
|
35
45
|
const env = getMongoDBConfig();
|
|
36
46
|
return {
|
|
37
47
|
dbConnectionString: env.MONGO_CONNECTION_STRING,
|
|
@@ -40,32 +50,21 @@ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
|
|
|
40
50
|
dbPassword: assertEx(env.MONGO_PASSWORD, () => "Missing Mongo Password"),
|
|
41
51
|
dbUserName: assertEx(env.MONGO_USERNAME, () => "Missing Mongo Username")
|
|
42
52
|
};
|
|
43
|
-
}
|
|
44
|
-
var getBaseMongoSdk =
|
|
45
|
-
return new BaseMongoSdk({
|
|
46
|
-
|
|
47
|
-
collection
|
|
48
|
-
});
|
|
49
|
-
}, "getBaseMongoSdk");
|
|
53
|
+
};
|
|
54
|
+
var getBaseMongoSdk = (collection) => {
|
|
55
|
+
return new BaseMongoSdk({ ...getBaseMongoSdkPrivateConfig(), collection });
|
|
56
|
+
};
|
|
50
57
|
|
|
51
58
|
// src/config/hasMongoDBConfig.ts
|
|
52
59
|
import { exists } from "@xylabs/exists";
|
|
53
|
-
var hasMongoDBConfig =
|
|
60
|
+
var hasMongoDBConfig = () => {
|
|
54
61
|
const env = getMongoDBConfig();
|
|
55
|
-
const requiredValues = [
|
|
56
|
-
env.MONGO_CONNECTION_STRING,
|
|
57
|
-
env.MONGO_DATABASE,
|
|
58
|
-
env.MONGO_DOMAIN,
|
|
59
|
-
env.MONGO_PASSWORD,
|
|
60
|
-
env.MONGO_USERNAME
|
|
61
|
-
];
|
|
62
|
+
const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME];
|
|
62
63
|
return requiredValues.every(exists);
|
|
63
|
-
}
|
|
64
|
+
};
|
|
64
65
|
|
|
65
66
|
// src/Databases.ts
|
|
66
|
-
var DATABASES = {
|
|
67
|
-
Archivist: "archivist"
|
|
68
|
-
};
|
|
67
|
+
var DATABASES = { Archivist: "archivist" };
|
|
69
68
|
|
|
70
69
|
// src/Defaults.ts
|
|
71
70
|
var DefaultAggregateTimeoutMs = 1e4;
|
|
@@ -77,31 +76,22 @@ var DefaultOrder = "desc";
|
|
|
77
76
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
78
77
|
import { merge } from "@xylabs/lodash";
|
|
79
78
|
import { staticImplements } from "@xylabs/static-implements";
|
|
80
|
-
import {
|
|
79
|
+
import {
|
|
80
|
+
MongoDBStorageClassLabels
|
|
81
|
+
} from "@xyo-network/module-model-mongodb";
|
|
81
82
|
import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
85
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
86
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
87
|
-
}
|
|
88
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
89
|
-
var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
90
|
-
let MongoModuleBase = class MongoModuleBase extends ModuleBase {
|
|
91
|
-
static {
|
|
92
|
-
__name(this, "MongoModuleBase");
|
|
93
|
-
}
|
|
94
|
-
static labels = MongoDBStorageClassLabels;
|
|
83
|
+
var MongoDBModuleMixin = (ModuleBase) => {
|
|
84
|
+
let MongoModuleBase = class extends ModuleBase {
|
|
95
85
|
_boundWitnessSdk;
|
|
96
86
|
_payloadSdk;
|
|
97
87
|
get boundWitnessSdkConfig() {
|
|
98
|
-
const config = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses
|
|
104
|
-
|
|
88
|
+
const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() };
|
|
89
|
+
return merge(
|
|
90
|
+
config,
|
|
91
|
+
this.params.boundWitnessSdkConfig,
|
|
92
|
+
this.config.boundWitnessSdkConfig,
|
|
93
|
+
{ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses }
|
|
94
|
+
);
|
|
105
95
|
}
|
|
106
96
|
get boundWitnesses() {
|
|
107
97
|
this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk2(this.boundWitnessSdkConfig);
|
|
@@ -111,43 +101,42 @@ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
|
|
|
111
101
|
return assertEx2(this.params.jobQueue, () => "MongoDBModule Error: jobQueue required for this module but is not defined");
|
|
112
102
|
}
|
|
113
103
|
get payloadSdkConfig() {
|
|
114
|
-
const config = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads
|
|
120
|
-
|
|
104
|
+
const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() };
|
|
105
|
+
return merge(
|
|
106
|
+
config,
|
|
107
|
+
this.params.payloadSdkConfig,
|
|
108
|
+
this.config.payloadSdkConfig,
|
|
109
|
+
{ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads }
|
|
110
|
+
);
|
|
121
111
|
}
|
|
122
112
|
get payloads() {
|
|
123
113
|
this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk2(this.payloadSdkConfig);
|
|
124
114
|
return assertEx2(this._payloadSdk);
|
|
125
115
|
}
|
|
126
116
|
/**
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
117
|
+
* Ensures any indexes specified within the config are created. This method should be idempotent
|
|
118
|
+
* allowing for multiple calls without causing errors while ensuring the desired state.
|
|
119
|
+
*/
|
|
130
120
|
async ensureIndexes() {
|
|
131
121
|
const configIndexes = this.config?.storage?.indexes ?? [];
|
|
132
122
|
await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes);
|
|
133
123
|
await ensureIndexesExistOnCollection(this.payloads, configIndexes);
|
|
134
124
|
}
|
|
135
125
|
};
|
|
136
|
-
MongoModuleBase
|
|
126
|
+
__publicField(MongoModuleBase, "labels", MongoDBStorageClassLabels);
|
|
127
|
+
MongoModuleBase = __decorateClass([
|
|
137
128
|
staticImplements()
|
|
138
129
|
], MongoModuleBase);
|
|
139
130
|
return MongoModuleBase;
|
|
140
|
-
}
|
|
141
|
-
var ensureIndexesExistOnCollection =
|
|
131
|
+
};
|
|
132
|
+
var ensureIndexesExistOnCollection = async (sdk, configIndexes) => {
|
|
142
133
|
await sdk.useCollection(async (collection) => {
|
|
143
134
|
const collectionName = collection.collectionName.toLowerCase();
|
|
144
135
|
const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
|
|
145
136
|
if (indexes.length === 0) return;
|
|
146
137
|
for (const ix of indexes) {
|
|
147
138
|
try {
|
|
148
|
-
await collection.createIndexes([
|
|
149
|
-
ix
|
|
150
|
-
]);
|
|
139
|
+
await collection.createIndexes([ix]);
|
|
151
140
|
} catch (error) {
|
|
152
141
|
const mongoServerError = error;
|
|
153
142
|
const { codeName } = mongoServerError;
|
|
@@ -159,12 +148,12 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
|
|
|
159
148
|
}
|
|
160
149
|
}
|
|
161
150
|
});
|
|
162
|
-
}
|
|
151
|
+
};
|
|
163
152
|
|
|
164
153
|
// src/util/dbProperty.ts
|
|
165
154
|
var escapeChar = "#";
|
|
166
|
-
var toDbProperty =
|
|
167
|
-
var fromDbProperty =
|
|
155
|
+
var toDbProperty = (value) => value.replaceAll(".", escapeChar);
|
|
156
|
+
var fromDbProperty = (value) => value.replaceAll(escapeChar, ".");
|
|
168
157
|
export {
|
|
169
158
|
COLLECTIONS,
|
|
170
159
|
DATABASES,
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":"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","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","assertEx","BaseMongoSdk","getMongoDBConfig","env","process","MONGO_CONNECTION_STRING","MONGO_DOMAIN","MONGO_DATABASE","MONGO_PASSWORD","MONGO_USERNAME","getBaseMongoSdkPrivateConfig","env","getMongoDBConfig","dbConnectionString","MONGO_CONNECTION_STRING","dbDomain","assertEx","MONGO_DOMAIN","dbName","MONGO_DATABASE","dbPassword","MONGO_PASSWORD","dbUserName","MONGO_USERNAME","getBaseMongoSdk","collection","BaseMongoSdk","exists","hasMongoDBConfig","env","getMongoDBConfig","requiredValues","MONGO_CONNECTION_STRING","MONGO_DATABASE","MONGO_DOMAIN","MONGO_PASSWORD","MONGO_USERNAME","every","exists","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","assertEx","merge","staticImplements","MongoDBStorageClassLabels","BaseMongoSdk","MongoDBModuleMixin","ModuleBase","MongoModuleBase","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Collections.ts","../../src/config/getBaseMongoSdk.ts","../../src/config/getMongoDBConfig.ts","../../src/config/hasMongoDBConfig.ts","../../src/Databases.ts","../../src/Defaults.ts","../../src/Module.ts","../../src/util/dbProperty.ts"],"sourcesContent":["// TODO: By DB\nexport const COLLECTIONS = {\n AddressInfo: 'address_info' as const,\n ArchivistStats: 'archivist_stats' as const,\n BoundWitnesses: 'bound_witnesses' as const,\n Payloads: 'payloads' as const,\n Thumbnails: 'thumbnails' as const,\n Users: 'users' as const,\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { BaseMongoSdk } from '@xyo-network/sdk-xyo-mongo-js'\nimport type { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {\n const env = getMongoDBConfig()\n return {\n dbConnectionString: env.MONGO_CONNECTION_STRING,\n dbDomain: assertEx(env.MONGO_DOMAIN, () => 'Missing Mongo Domain'),\n dbName: assertEx(env.MONGO_DATABASE, () => 'Missing Mongo Database'),\n dbPassword: assertEx(env.MONGO_PASSWORD, () => 'Missing Mongo Password'),\n dbUserName: assertEx(env.MONGO_USERNAME, () => 'Missing Mongo Username'),\n }\n}\n\nexport const getBaseMongoSdk = <T extends Document>(collection: string) => {\n return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })\n}\n","export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'\nexport type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'\n\nexport type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>\n\nexport const getMongoDBConfig = (): MongoEnv => {\n const env: MongoEnv = {} as MongoEnv\n if (process.env.MONGO_CONNECTION_STRING) {\n env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING\n }\n if (process.env.MONGO_DOMAIN) {\n env.MONGO_DATABASE = process.env.MONGO_DATABASE\n env.MONGO_DOMAIN = process.env.MONGO_DOMAIN\n env.MONGO_PASSWORD = process.env.MONGO_PASSWORD\n env.MONGO_USERNAME = process.env.MONGO_USERNAME\n }\n return env\n}\n","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig.js'\n\nexport const hasMongoDBConfig = (): boolean => {\n const env = getMongoDBConfig()\n const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]\n return requiredValues.every(exists)\n}\n","export const DATABASES = { Archivist: 'archivist' as const }\n","export const DefaultAggregateTimeoutMs = 10_000\nexport const DefaultLimit = 20\nexport const DefaultMaxTimeMS = 2000\nexport const DefaultOrder = 'desc'\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { staticImplements } from '@xylabs/static-implements'\nimport { Module } from '@xyo-network/module-model'\nimport {\n MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels,\n} from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMongoMeta, PayloadWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { MongoServerError } from 'mongodb'\n\nimport { COLLECTIONS } from './Collections.js'\nimport { getBaseMongoSdkPrivateConfig } from './config/index.js'\nimport { IndexDescription } from './IndexDescription.js'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>\n\nexport const MongoDBModuleMixin = <\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,\n>(\n ModuleBase: TModule,\n) => {\n @staticImplements<MongoDBModuleStatic>()\n abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {\n static labels = MongoDBStorageClassLabels\n _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMongoMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.boundWitnessSdkConfig,\n this.config.boundWitnessSdkConfig,\n { collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? COLLECTIONS.BoundWitnesses },\n )\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMongoMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get jobQueue() {\n return assertEx(this.params.jobQueue, () => 'MongoDBModule Error: jobQueue required for this module but is not defined')\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }\n return merge(\n config,\n this.params.payloadSdkConfig,\n this.config.payloadSdkConfig,\n { collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? COLLECTIONS.Payloads },\n )\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMongoMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n\n /**\n * Ensures any indexes specified within the config are created. This method should be idempotent\n * allowing for multiple calls without causing errors while ensuring the desired state.\n */\n async ensureIndexes(): Promise<void> {\n const configIndexes = (this.config as { storage?: { indexes?: IndexDescription[] } })?.storage?.indexes ?? []\n await ensureIndexesExistOnCollection(this.boundWitnesses, configIndexes)\n await ensureIndexesExistOnCollection(this.payloads, configIndexes)\n }\n }\n return MongoModuleBase\n}\n\n/**\n * Ensures the specified indexes exist on the collection\n * @param sdk The sdk to use for the collection\n * @param configIndexes The indexes to ensure exist on the collection\n */\nconst ensureIndexesExistOnCollection = async (\n sdk: BaseMongoSdk<PayloadWithMongoMeta> | BaseMongoSdk<BoundWitnessWithMongoMeta>,\n configIndexes: IndexDescription[],\n) => {\n await sdk.useCollection(async (collection) => {\n const collectionName = collection.collectionName.toLowerCase()\n const indexes = configIndexes.filter(ix => ix?.name?.toLowerCase().startsWith(collectionName))\n if (indexes.length === 0) return\n for (const ix of indexes) {\n try {\n await collection.createIndexes([ix])\n } catch (error) {\n const mongoServerError = error as MongoServerError\n const { codeName } = mongoServerError\n if (codeName === 'IndexKeySpecsConflict' || codeName === 'IndexOptionsConflict') {\n // Index already exists which is fine OR index exists with another name which is fine\n // TODO: For the latter case (IndexOptionsConflict) we could get into this case\n // if we change the TTL an existing index. We currently don't support TTLs so\n // we'll need to revisit this assumption if we do.\n continue\n }\n console.error(`Error creating index ${ix.name} for collection ${collectionName}: ${error}`)\n throw error\n }\n }\n })\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n"],"mappings":"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","names":["assertEx","BaseMongoSdk","BaseMongoSdk","assertEx"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/module-abstract-mongodb",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -37,20 +37,21 @@
|
|
|
37
37
|
"module": "dist/node/index.mjs",
|
|
38
38
|
"types": "dist/node/index.d.ts",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@xylabs/assert": "^4.4.
|
|
41
|
-
"@xylabs/exists": "^4.4.
|
|
42
|
-
"@xylabs/lodash": "^4.4.
|
|
43
|
-
"@xylabs/static-implements": "^4.4.
|
|
44
|
-
"@xyo-network/module-model": "^3.
|
|
45
|
-
"@xyo-network/module-model-mongodb": "^3.
|
|
46
|
-
"@xyo-network/payload-mongodb": "^3.
|
|
47
|
-
"@xyo-network/sdk-xyo-mongo-js": "^3.
|
|
48
|
-
"mongodb": "~6.
|
|
40
|
+
"@xylabs/assert": "^4.4.26",
|
|
41
|
+
"@xylabs/exists": "^4.4.26",
|
|
42
|
+
"@xylabs/lodash": "^4.4.26",
|
|
43
|
+
"@xylabs/static-implements": "^4.4.26",
|
|
44
|
+
"@xyo-network/module-model": "^3.6.0",
|
|
45
|
+
"@xyo-network/module-model-mongodb": "^3.2.0",
|
|
46
|
+
"@xyo-network/payload-mongodb": "^3.2.0",
|
|
47
|
+
"@xyo-network/sdk-xyo-mongo-js": "^3.2.0",
|
|
48
|
+
"mongodb": "~6.12.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@xylabs/ts-scripts-yarn3": "^4.2.
|
|
52
|
-
"@xylabs/tsconfig": "^4.2.
|
|
51
|
+
"@xylabs/ts-scripts-yarn3": "^4.2.6",
|
|
52
|
+
"@xylabs/tsconfig": "^4.2.6",
|
|
53
53
|
"fake-indexeddb": "^6.0.0",
|
|
54
|
+
"tslib": "^2.8.1",
|
|
54
55
|
"typescript": "^5.7.2"
|
|
55
56
|
},
|
|
56
57
|
"publishConfig": {
|