@xyo-network/module-abstract-mongodb 2.74.4 → 2.74.5

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/index.js CHANGED
@@ -27,7 +27,7 @@ __export(src_exports, {
27
27
  DefaultLimit: () => DefaultLimit,
28
28
  DefaultMaxTimeMS: () => DefaultMaxTimeMS,
29
29
  DefaultOrder: () => DefaultOrder,
30
- MongoDBModule: () => MongoDBModule,
30
+ MongoDBModuleMixin: () => MongoDBModuleMixin,
31
31
  escapeChar: () => escapeChar,
32
32
  fromDbProperty: () => fromDbProperty,
33
33
  removeId: () => removeId,
@@ -57,12 +57,44 @@ var DefaultMaxTimeMS = 2e3;
57
57
  var DefaultOrder = "desc";
58
58
 
59
59
  // src/Module.ts
60
- var import_assert = require("@xylabs/assert");
60
+ var import_assert2 = require("@xylabs/assert");
61
61
  var import_lodash = require("@xylabs/lodash");
62
62
  var import_static_implements = require("@xylabs/static-implements");
63
- var import_module_abstract = require("@xyo-network/module-abstract");
64
63
  var import_module_model_mongodb = require("@xyo-network/module-model-mongodb");
64
+ var import_sdk_xyo_mongo_js2 = require("@xyo-network/sdk-xyo-mongo-js");
65
+
66
+ // src/config/getBaseMongoSdk.ts
67
+ var import_assert = require("@xylabs/assert");
65
68
  var import_sdk_xyo_mongo_js = require("@xyo-network/sdk-xyo-mongo-js");
69
+
70
+ // src/config/getMongoDBConfig.ts
71
+ var getMongoDBConfig = /* @__PURE__ */ __name(() => {
72
+ const env = {};
73
+ if (process.env.MONGO_CONNECTION_STRING) {
74
+ env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING;
75
+ }
76
+ if (process.env.MONGO_DOMAIN) {
77
+ env.MONGO_DATABASE = process.env.MONGO_DATABASE;
78
+ env.MONGO_DOMAIN = process.env.MONGO_DOMAIN;
79
+ env.MONGO_PASSWORD = process.env.MONGO_PASSWORD;
80
+ env.MONGO_USERNAME = process.env.MONGO_USERNAME;
81
+ }
82
+ return env;
83
+ }, "getMongoDBConfig");
84
+
85
+ // src/config/getBaseMongoSdk.ts
86
+ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
87
+ const env = getMongoDBConfig();
88
+ return {
89
+ dbConnectionString: env.MONGO_CONNECTION_STRING,
90
+ dbDomain: (0, import_assert.assertEx)(env.MONGO_DOMAIN, "Missing Mongo Domain"),
91
+ dbName: (0, import_assert.assertEx)(env.MONGO_DATABASE, "Missing Mongo Database"),
92
+ dbPassword: (0, import_assert.assertEx)(env.MONGO_PASSWORD, "Missing Mongo Password"),
93
+ dbUserName: (0, import_assert.assertEx)(env.MONGO_USERNAME, "Missing Mongo Username")
94
+ };
95
+ }, "getBaseMongoSdkPrivateConfig");
96
+
97
+ // src/Module.ts
66
98
  function _ts_decorate(decorators, target, key, desc) {
67
99
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
68
100
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -74,35 +106,49 @@ function _ts_decorate(decorators, target, key, desc) {
74
106
  return c > 3 && r && Object.defineProperty(target, key, r), r;
75
107
  }
76
108
  __name(_ts_decorate, "_ts_decorate");
77
- var MongoDBModule = class MongoDBModule2 extends import_module_abstract.AbstractModuleInstance {
78
- static {
79
- __name(this, "MongoDBModule");
80
- }
81
- static labels = import_module_model_mongodb.MongoDBStorageClassLabels;
82
- _boundWitnessSdk;
83
- _payloadSdk;
84
- get boundWitnessSdkConfig() {
85
- return (0, import_lodash.merge)({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
86
- collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? "bound_witnesses"
87
- });
88
- }
89
- get boundWitnesses() {
90
- this._boundWitnessSdk = this._boundWitnessSdk ?? new import_sdk_xyo_mongo_js.BaseMongoSdk(this.boundWitnessSdkConfig);
91
- return (0, import_assert.assertEx)(this._boundWitnessSdk);
92
- }
93
- get payloadSdkConfig() {
94
- return (0, import_lodash.merge)({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
95
- collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? "payload"
96
- });
97
- }
98
- get payloads() {
99
- this._payloadSdk = this._payloadSdk ?? new import_sdk_xyo_mongo_js.BaseMongoSdk(this.payloadSdkConfig);
100
- return (0, import_assert.assertEx)(this._payloadSdk);
101
- }
102
- };
103
- MongoDBModule = _ts_decorate([
104
- (0, import_static_implements.staticImplements)()
105
- ], MongoDBModule);
109
+ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
110
+ let MongoModuleBase = class MongoModuleBase extends ModuleBase {
111
+ static {
112
+ __name(this, "MongoModuleBase");
113
+ }
114
+ static labels = import_module_model_mongodb.MongoDBStorageClassLabels;
115
+ _boundWitnessSdk;
116
+ _payloadSdk;
117
+ get boundWitnessSdkConfig() {
118
+ const config = {
119
+ collection: COLLECTIONS.BoundWitnesses,
120
+ ...getBaseMongoSdkPrivateConfig()
121
+ };
122
+ return (0, import_lodash.merge)(config, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
123
+ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? "bound_witnesses"
124
+ });
125
+ }
126
+ get boundWitnesses() {
127
+ this._boundWitnessSdk = this._boundWitnessSdk ?? new import_sdk_xyo_mongo_js2.BaseMongoSdk(this.boundWitnessSdkConfig);
128
+ return (0, import_assert2.assertEx)(this._boundWitnessSdk);
129
+ }
130
+ get jobQueue() {
131
+ return (0, import_assert2.assertEx)(this.params.jobQueue, "MongoDBModule Error: jobQueue required for this module but is not defined");
132
+ }
133
+ get payloadSdkConfig() {
134
+ const config = {
135
+ collection: COLLECTIONS.Payloads,
136
+ ...getBaseMongoSdkPrivateConfig()
137
+ };
138
+ return (0, import_lodash.merge)(config, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
139
+ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? "payload"
140
+ });
141
+ }
142
+ get payloads() {
143
+ this._payloadSdk = this._payloadSdk ?? new import_sdk_xyo_mongo_js2.BaseMongoSdk(this.payloadSdkConfig);
144
+ return (0, import_assert2.assertEx)(this._payloadSdk);
145
+ }
146
+ };
147
+ MongoModuleBase = _ts_decorate([
148
+ (0, import_static_implements.staticImplements)()
149
+ ], MongoModuleBase);
150
+ return MongoModuleBase;
151
+ }, "MongoDBModuleMixin");
106
152
 
107
153
  // src/util/dbProperty.ts
108
154
  var escapeChar = "#";
@@ -122,7 +168,7 @@ var removeId = /* @__PURE__ */ __name((payload) => {
122
168
  DefaultLimit,
123
169
  DefaultMaxTimeMS,
124
170
  DefaultOrder,
125
- MongoDBModule,
171
+ MongoDBModuleMixin,
126
172
  escapeChar,
127
173
  fromDbProperty,
128
174
  removeId,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/Collections.ts","../src/Databases.ts","../src/Defaults.ts","../src/Module.ts","../src/util/dbProperty.ts","../src/util/removeId.ts"],"sourcesContent":["export * from './Collections'\nexport * from './Databases'\nexport * from './Defaults'\nexport * from './Module'\nexport * from './util'\n","// 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","export const DATABASES = {\n Archivist: 'archivist' as const,\n}\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 { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleEventData, WithLabels } from '@xyo-network/module-model'\nimport { MongoDBModuleParams, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\n@staticImplements<WithLabels<MongoDBStorageClassLabels>>()\nexport abstract class MongoDBModule<\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TEventData extends ModuleEventData<object> = ModuleEventData<object>,\n> extends AbstractModuleInstance<TParams, TEventData> {\n static labels = MongoDBStorageClassLabels\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n","import { Payload } from '@xyo-network/payload-model'\nimport { OptionalId, WithId, WithoutId } from 'mongodb'\n\nexport const removeId = <T extends Payload = Payload>(payload: T | WithId<T> | WithoutId<T> | OptionalId<T>): WithoutId<T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _id, ...withoutId } = payload as OptionalId<T>\n return withoutId as WithoutId<T>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;ACCO,IAAMA,cAAc;EACzBC,aAAa;EACbC,gBAAgB;EAChBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,OAAO;AACT;;;ACRO,IAAMC,YAAY;EACvBC,WAAW;AACb;;;ACFO,IAAMC,4BAA4B;AAClC,IAAMC,eAAe;AACrB,IAAMC,mBAAmB;AACzB,IAAMC,eAAe;;;ACH5B,oBAAyB;AACzB,oBAAsB;AACtB,+BAAiC;AACjC,6BAAuC;AAEvC,kCAA+D;AAE/D,8BAAiD;;;;;;;;;;;;AAGjD,IAAsBC,gBAAf,MAAAA,uBAGGC,8CAAAA;SAAAA;;;EACR,OAAOC,SAASC;EAERC;EACAC;EAER,IAAIC,wBAA4C;AAC9C,eAAOC,qBAAM,CAAC,GAAG,KAAKC,OAAOF,uBAAuB,KAAKG,OAAOH,uBAAuB;MACrFI,YAAY,KAAKD,OAAOH,uBAAuBI,cAAc,KAAKF,OAAOF,uBAAuBI,cAAc;IAChH,CAAA;EACF;EAEA,IAAIC,iBAAiB;AACnB,SAAKP,mBAAmB,KAAKA,oBAAoB,IAAIQ,qCAAmC,KAAKN,qBAAqB;AAClH,eAAOO,wBAAS,KAAKT,gBAAgB;EACvC;EAEA,IAAIU,mBAAuC;AACzC,eAAOP,qBAAM,CAAC,GAAG,KAAKC,OAAOM,kBAAkB,KAAKL,OAAOK,kBAAkB;MAC3EJ,YAAY,KAAKD,OAAOK,kBAAkBJ,cAAc,KAAKF,OAAOM,kBAAkBJ,cAAc;IACtG,CAAA;EACF;EAEA,IAAIK,WAAW;AACb,SAAKV,cAAc,KAAKA,eAAe,IAAIO,qCAA8B,KAAKE,gBAAgB;AAC9F,eAAOD,wBAAS,KAAKR,WAAW;EAClC;AACF;AA9BsBL,gBAAAA,aAAAA;MADrBgB,2CAAAA;GACqBhB,aAAAA;;;ACVf,IAAMiB,aAAa;AAEnB,IAAMC,eAAe,wBAACC,UAAkBA,MAAMC,WAAW,KAAKH,UAAAA,GAAzC;AAErB,IAAMI,iBAAiB,wBAACF,UAAkBA,MAAMC,WAAWH,YAAY,GAAA,GAAhD;;;ACDvB,IAAMK,WAAW,wBAA8BC,YAAAA;AAEpD,QAAM,EAAEC,KAAK,GAAGC,UAAAA,IAAcF;AAC9B,SAAOE;AACT,GAJwB;","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","MongoDBModule","AbstractModuleInstance","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","staticImplements","escapeChar","toDbProperty","value","replaceAll","fromDbProperty","removeId","payload","_id","withoutId"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/Collections.ts","../src/Databases.ts","../src/Defaults.ts","../src/Module.ts","../src/config/getBaseMongoSdk.ts","../src/config/getMongoDBConfig.ts","../src/util/dbProperty.ts","../src/util/removeId.ts"],"sourcesContent":["export * from './Collections'\nexport * from './Databases'\nexport * from './Defaults'\nexport * from './Module'\nexport * from './util'\n","// 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","export const DATABASES = {\n Archivist: 'archivist' as const,\n}\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 { MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { COLLECTIONS } from './Collections'\nimport { getBaseMongoSdkPrivateConfig } from './config'\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<BoundWitnessWithMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(config, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get 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(config, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n }\n return MongoModuleBase\n}\n","import { assertEx } from '@xylabs/assert'\nimport { BaseMongoSdk, BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n","import { Payload } from '@xyo-network/payload-model'\nimport { OptionalId, WithId, WithoutId } from 'mongodb'\n\nexport const removeId = <T extends Payload = Payload>(payload: T | WithId<T> | WithoutId<T> | OptionalId<T>): WithoutId<T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _id, ...withoutId } = payload as OptionalId<T>\n return withoutId as WithoutId<T>\n}\n"],"mappings":"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","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","import_assert","import_sdk_xyo_mongo_js","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","MongoDBModuleMixin","ModuleBase","MongoModuleBase","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","staticImplements","escapeChar","toDbProperty","value","replaceAll","fromDbProperty","removeId","payload","_id","withoutId"]}
package/dist/index.mjs CHANGED
@@ -23,12 +23,44 @@ var DefaultMaxTimeMS = 2e3;
23
23
  var DefaultOrder = "desc";
24
24
 
25
25
  // src/Module.ts
26
- import { assertEx } from "@xylabs/assert";
26
+ import { assertEx as assertEx2 } from "@xylabs/assert";
27
27
  import { merge } from "@xylabs/lodash";
28
28
  import { staticImplements } from "@xylabs/static-implements";
29
- import { AbstractModuleInstance } from "@xyo-network/module-abstract";
30
29
  import { MongoDBStorageClassLabels } from "@xyo-network/module-model-mongodb";
30
+ import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
31
+
32
+ // src/config/getBaseMongoSdk.ts
33
+ import { assertEx } from "@xylabs/assert";
31
34
  import { BaseMongoSdk } from "@xyo-network/sdk-xyo-mongo-js";
35
+
36
+ // src/config/getMongoDBConfig.ts
37
+ var getMongoDBConfig = /* @__PURE__ */ __name(() => {
38
+ const env = {};
39
+ if (process.env.MONGO_CONNECTION_STRING) {
40
+ env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING;
41
+ }
42
+ if (process.env.MONGO_DOMAIN) {
43
+ env.MONGO_DATABASE = process.env.MONGO_DATABASE;
44
+ env.MONGO_DOMAIN = process.env.MONGO_DOMAIN;
45
+ env.MONGO_PASSWORD = process.env.MONGO_PASSWORD;
46
+ env.MONGO_USERNAME = process.env.MONGO_USERNAME;
47
+ }
48
+ return env;
49
+ }, "getMongoDBConfig");
50
+
51
+ // src/config/getBaseMongoSdk.ts
52
+ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
53
+ const env = getMongoDBConfig();
54
+ return {
55
+ dbConnectionString: env.MONGO_CONNECTION_STRING,
56
+ dbDomain: assertEx(env.MONGO_DOMAIN, "Missing Mongo Domain"),
57
+ dbName: assertEx(env.MONGO_DATABASE, "Missing Mongo Database"),
58
+ dbPassword: assertEx(env.MONGO_PASSWORD, "Missing Mongo Password"),
59
+ dbUserName: assertEx(env.MONGO_USERNAME, "Missing Mongo Username")
60
+ };
61
+ }, "getBaseMongoSdkPrivateConfig");
62
+
63
+ // src/Module.ts
32
64
  function _ts_decorate(decorators, target, key, desc) {
33
65
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34
66
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -40,35 +72,49 @@ function _ts_decorate(decorators, target, key, desc) {
40
72
  return c > 3 && r && Object.defineProperty(target, key, r), r;
41
73
  }
42
74
  __name(_ts_decorate, "_ts_decorate");
43
- var MongoDBModule = class MongoDBModule2 extends AbstractModuleInstance {
44
- static {
45
- __name(this, "MongoDBModule");
46
- }
47
- static labels = MongoDBStorageClassLabels;
48
- _boundWitnessSdk;
49
- _payloadSdk;
50
- get boundWitnessSdkConfig() {
51
- return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
52
- collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? "bound_witnesses"
53
- });
54
- }
55
- get boundWitnesses() {
56
- this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk(this.boundWitnessSdkConfig);
57
- return assertEx(this._boundWitnessSdk);
58
- }
59
- get payloadSdkConfig() {
60
- return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
61
- collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? "payload"
62
- });
63
- }
64
- get payloads() {
65
- this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk(this.payloadSdkConfig);
66
- return assertEx(this._payloadSdk);
67
- }
68
- };
69
- MongoDBModule = _ts_decorate([
70
- staticImplements()
71
- ], MongoDBModule);
75
+ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
76
+ let MongoModuleBase = class MongoModuleBase extends ModuleBase {
77
+ static {
78
+ __name(this, "MongoModuleBase");
79
+ }
80
+ static labels = MongoDBStorageClassLabels;
81
+ _boundWitnessSdk;
82
+ _payloadSdk;
83
+ get boundWitnessSdkConfig() {
84
+ const config = {
85
+ collection: COLLECTIONS.BoundWitnesses,
86
+ ...getBaseMongoSdkPrivateConfig()
87
+ };
88
+ return merge(config, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
89
+ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? "bound_witnesses"
90
+ });
91
+ }
92
+ get boundWitnesses() {
93
+ this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk2(this.boundWitnessSdkConfig);
94
+ return assertEx2(this._boundWitnessSdk);
95
+ }
96
+ get jobQueue() {
97
+ return assertEx2(this.params.jobQueue, "MongoDBModule Error: jobQueue required for this module but is not defined");
98
+ }
99
+ get payloadSdkConfig() {
100
+ const config = {
101
+ collection: COLLECTIONS.Payloads,
102
+ ...getBaseMongoSdkPrivateConfig()
103
+ };
104
+ return merge(config, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
105
+ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? "payload"
106
+ });
107
+ }
108
+ get payloads() {
109
+ this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk2(this.payloadSdkConfig);
110
+ return assertEx2(this._payloadSdk);
111
+ }
112
+ };
113
+ MongoModuleBase = _ts_decorate([
114
+ staticImplements()
115
+ ], MongoModuleBase);
116
+ return MongoModuleBase;
117
+ }, "MongoDBModuleMixin");
72
118
 
73
119
  // src/util/dbProperty.ts
74
120
  var escapeChar = "#";
@@ -87,7 +133,7 @@ export {
87
133
  DefaultLimit,
88
134
  DefaultMaxTimeMS,
89
135
  DefaultOrder,
90
- MongoDBModule,
136
+ MongoDBModuleMixin,
91
137
  escapeChar,
92
138
  fromDbProperty,
93
139
  removeId,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Collections.ts","../src/Databases.ts","../src/Defaults.ts","../src/Module.ts","../src/util/dbProperty.ts","../src/util/removeId.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","export const DATABASES = {\n Archivist: 'archivist' as const,\n}\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 { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleEventData, WithLabels } from '@xyo-network/module-model'\nimport { MongoDBModuleParams, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\n@staticImplements<WithLabels<MongoDBStorageClassLabels>>()\nexport abstract class MongoDBModule<\n TParams extends MongoDBModuleParams = MongoDBModuleParams,\n TEventData extends ModuleEventData<object> = ModuleEventData<object>,\n> extends AbstractModuleInstance<TParams, TEventData> {\n static labels = MongoDBStorageClassLabels\n\n private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined\n private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get payloadSdkConfig(): BaseMongoSdkConfig {\n return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n}\n","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n","import { Payload } from '@xyo-network/payload-model'\nimport { OptionalId, WithId, WithoutId } from 'mongodb'\n\nexport const removeId = <T extends Payload = Payload>(payload: T | WithId<T> | WithoutId<T> | OptionalId<T>): WithoutId<T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _id, ...withoutId } = payload as OptionalId<T>\n return withoutId as WithoutId<T>\n}\n"],"mappings":";;;;AACO,IAAMA,cAAc;EACzBC,aAAa;EACbC,gBAAgB;EAChBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,OAAO;AACT;;;ACRO,IAAMC,YAAY;EACvBC,WAAW;AACb;;;ACFO,IAAMC,4BAA4B;AAClC,IAAMC,eAAe;AACrB,IAAMC,mBAAmB;AACzB,IAAMC,eAAe;;;ACH5B,SAASC,gBAAgB;AACzB,SAASC,aAAa;AACtB,SAASC,wBAAwB;AACjC,SAASC,8BAA8B;AAEvC,SAA8BC,iCAAiC;AAE/D,SAASC,oBAAwC;;;;;;;;;;;;AAGjD,IAAsBC,gBAAf,MAAAA,uBAGGC,uBAAAA;SAAAA;;;EACR,OAAOC,SAASC;EAERC;EACAC;EAER,IAAIC,wBAA4C;AAC9C,WAAOC,MAAM,CAAC,GAAG,KAAKC,OAAOF,uBAAuB,KAAKG,OAAOH,uBAAuB;MACrFI,YAAY,KAAKD,OAAOH,uBAAuBI,cAAc,KAAKF,OAAOF,uBAAuBI,cAAc;IAChH,CAAA;EACF;EAEA,IAAIC,iBAAiB;AACnB,SAAKP,mBAAmB,KAAKA,oBAAoB,IAAIQ,aAAmC,KAAKN,qBAAqB;AAClH,WAAOO,SAAS,KAAKT,gBAAgB;EACvC;EAEA,IAAIU,mBAAuC;AACzC,WAAOP,MAAM,CAAC,GAAG,KAAKC,OAAOM,kBAAkB,KAAKL,OAAOK,kBAAkB;MAC3EJ,YAAY,KAAKD,OAAOK,kBAAkBJ,cAAc,KAAKF,OAAOM,kBAAkBJ,cAAc;IACtG,CAAA;EACF;EAEA,IAAIK,WAAW;AACb,SAAKV,cAAc,KAAKA,eAAe,IAAIO,aAA8B,KAAKE,gBAAgB;AAC9F,WAAOD,SAAS,KAAKR,WAAW;EAClC;AACF;AA9BsBL,gBAAAA,aAAAA;EADrBgB,iBAAAA;GACqBhB,aAAAA;;;ACVf,IAAMiB,aAAa;AAEnB,IAAMC,eAAe,wBAACC,UAAkBA,MAAMC,WAAW,KAAKH,UAAAA,GAAzC;AAErB,IAAMI,iBAAiB,wBAACF,UAAkBA,MAAMC,WAAWH,YAAY,GAAA,GAAhD;;;ACDvB,IAAMK,WAAW,wBAA8BC,YAAAA;AAEpD,QAAM,EAAEC,KAAK,GAAGC,UAAAA,IAAcF;AAC9B,SAAOE;AACT,GAJwB;","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","assertEx","merge","staticImplements","AbstractModuleInstance","MongoDBStorageClassLabels","BaseMongoSdk","MongoDBModule","AbstractModuleInstance","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","merge","params","config","collection","boundWitnesses","BaseMongoSdk","assertEx","payloadSdkConfig","payloads","staticImplements","escapeChar","toDbProperty","value","replaceAll","fromDbProperty","removeId","payload","_id","withoutId"]}
1
+ {"version":3,"sources":["../src/Collections.ts","../src/Databases.ts","../src/Defaults.ts","../src/Module.ts","../src/config/getBaseMongoSdk.ts","../src/config/getMongoDBConfig.ts","../src/util/dbProperty.ts","../src/util/removeId.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","export const DATABASES = {\n Archivist: 'archivist' as const,\n}\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 { MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'\nimport { BoundWitnessWithMeta, PayloadWithMeta } from '@xyo-network/node-core-model'\nimport { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'\n\nimport { COLLECTIONS } from './Collections'\nimport { getBaseMongoSdkPrivateConfig } from './config'\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<BoundWitnessWithMeta> | undefined\n _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined\n\n get boundWitnessSdkConfig(): BaseMongoSdkConfig {\n const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }\n return merge(config, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {\n collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',\n })\n }\n\n get boundWitnesses() {\n this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)\n return assertEx(this._boundWitnessSdk)\n }\n\n get 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(config, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {\n collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',\n })\n }\n\n get payloads() {\n this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)\n return assertEx(this._payloadSdk)\n }\n }\n return MongoModuleBase\n}\n","import { assertEx } from '@xylabs/assert'\nimport { BaseMongoSdk, BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'\nimport { Document } from 'mongodb'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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","export const escapeChar = '#'\n\nexport const toDbProperty = (value: string) => value.replaceAll('.', escapeChar)\n\nexport const fromDbProperty = (value: string) => value.replaceAll(escapeChar, '.')\n","import { Payload } from '@xyo-network/payload-model'\nimport { OptionalId, WithId, WithoutId } from 'mongodb'\n\nexport const removeId = <T extends Payload = Payload>(payload: T | WithId<T> | WithoutId<T> | OptionalId<T>): WithoutId<T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _id, ...withoutId } = payload as OptionalId<T>\n return withoutId as WithoutId<T>\n}\n"],"mappings":"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","names":["COLLECTIONS","AddressInfo","ArchivistStats","BoundWitnesses","Payloads","Thumbnails","Users","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","assertEx","merge","staticImplements","MongoDBStorageClassLabels","BaseMongoSdk","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","MongoDBModuleMixin","ModuleBase","MongoModuleBase","labels","MongoDBStorageClassLabels","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","staticImplements","escapeChar","toDbProperty","value","replaceAll","fromDbProperty","removeId","payload","_id","withoutId"]}
package/package.json CHANGED
@@ -11,17 +11,17 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.11.7",
14
+ "@xylabs/exists": "^2.11.7",
14
15
  "@xylabs/lodash": "^2.11.7",
15
16
  "@xylabs/static-implements": "^2.11.7",
16
- "@xyo-network/module-abstract": "~2.74.4",
17
- "@xyo-network/module-model": "~2.74.4",
18
- "@xyo-network/module-model-mongodb": "~2.74.4",
19
- "@xyo-network/node-core-model": "~2.74.4",
20
- "@xyo-network/payload-model": "~2.74.4",
21
- "mongodb": "^5.9.0"
17
+ "@xyo-network/module-model": "~2.74.5",
18
+ "@xyo-network/module-model-mongodb": "~2.74.5",
19
+ "@xyo-network/node-core-model": "~2.74.5",
20
+ "@xyo-network/payload-model": "~2.74.5",
21
+ "mongodb": "^6.1.0"
22
22
  },
23
23
  "peerDependencies": {
24
- "@xyo-network/sdk-xyo-mongo-js": "~2.74.4"
24
+ "@xyo-network/sdk-xyo-mongo-js": "~2.74.5"
25
25
  },
26
26
  "peerDependenciesMeta": {
27
27
  "@xyo-network/sdk-xyo-mongo-js": {
@@ -31,7 +31,7 @@
31
31
  "devDependencies": {
32
32
  "@xylabs/ts-scripts-yarn3": "^3.0.28",
33
33
  "@xylabs/tsconfig": "^3.0.28",
34
- "@xyo-network/sdk-xyo-mongo-js": "~2.74.4",
34
+ "@xyo-network/sdk-xyo-mongo-js": "~2.74.5",
35
35
  "fake-indexeddb": "^4.0.2",
36
36
  "typescript": "^5.2.2"
37
37
  },
@@ -69,5 +69,5 @@
69
69
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
70
70
  },
71
71
  "sideEffects": false,
72
- "version": "2.74.4"
72
+ "version": "2.74.5"
73
73
  }
package/src/Module.ts CHANGED
@@ -1,41 +1,56 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { merge } from '@xylabs/lodash'
3
3
  import { staticImplements } from '@xylabs/static-implements'
4
- import { AbstractModuleInstance } from '@xyo-network/module-abstract'
5
- import { ModuleEventData, WithLabels } from '@xyo-network/module-model'
6
- import { MongoDBModuleParams, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'
4
+ import { Module } from '@xyo-network/module-model'
5
+ import { MongoDBModule, MongoDBModuleParams, MongoDBModuleStatic, MongoDBStorageClassLabels } from '@xyo-network/module-model-mongodb'
7
6
  import { BoundWitnessWithMeta, PayloadWithMeta } from '@xyo-network/node-core-model'
8
7
  import { BaseMongoSdk, BaseMongoSdkConfig } from '@xyo-network/sdk-xyo-mongo-js'
9
8
 
10
- @staticImplements<WithLabels<MongoDBStorageClassLabels>>()
11
- export abstract class MongoDBModule<
9
+ import { COLLECTIONS } from './Collections'
10
+ import { getBaseMongoSdkPrivateConfig } from './config'
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ export type AnyAbstractModule<TParams extends MongoDBModuleParams = MongoDBModuleParams> = abstract new (...args: any[]) => Module<TParams>
14
+
15
+ export const MongoDBModuleMixin = <
12
16
  TParams extends MongoDBModuleParams = MongoDBModuleParams,
13
- TEventData extends ModuleEventData<object> = ModuleEventData<object>,
14
- > extends AbstractModuleInstance<TParams, TEventData> {
15
- static labels = MongoDBStorageClassLabels
17
+ TModule extends AnyAbstractModule<TParams> = AnyAbstractModule<TParams>,
18
+ >(
19
+ ModuleBase: TModule,
20
+ ) => {
21
+ @staticImplements<MongoDBModuleStatic>()
22
+ abstract class MongoModuleBase extends ModuleBase implements MongoDBModule {
23
+ static labels = MongoDBStorageClassLabels
24
+ _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined
25
+ _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined
16
26
 
17
- private _boundWitnessSdk: BaseMongoSdk<BoundWitnessWithMeta> | undefined
18
- private _payloadSdk: BaseMongoSdk<PayloadWithMeta> | undefined
27
+ get boundWitnessSdkConfig(): BaseMongoSdkConfig {
28
+ const config = { collection: COLLECTIONS.BoundWitnesses, ...getBaseMongoSdkPrivateConfig() }
29
+ return merge(config, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
30
+ collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',
31
+ })
32
+ }
19
33
 
20
- get boundWitnessSdkConfig(): BaseMongoSdkConfig {
21
- return merge({}, this.params.boundWitnessSdkConfig, this.config.boundWitnessSdkConfig, {
22
- collection: this.config.boundWitnessSdkConfig?.collection ?? this.params.boundWitnessSdkConfig?.collection ?? 'bound_witnesses',
23
- })
24
- }
34
+ get boundWitnesses() {
35
+ this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)
36
+ return assertEx(this._boundWitnessSdk)
37
+ }
25
38
 
26
- get boundWitnesses() {
27
- this._boundWitnessSdk = this._boundWitnessSdk ?? new BaseMongoSdk<BoundWitnessWithMeta>(this.boundWitnessSdkConfig)
28
- return assertEx(this._boundWitnessSdk)
29
- }
39
+ get jobQueue() {
40
+ return assertEx(this.params.jobQueue, 'MongoDBModule Error: jobQueue required for this module but is not defined')
41
+ }
30
42
 
31
- get payloadSdkConfig(): BaseMongoSdkConfig {
32
- return merge({}, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
33
- collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',
34
- })
35
- }
43
+ get payloadSdkConfig(): BaseMongoSdkConfig {
44
+ const config = { collection: COLLECTIONS.Payloads, ...getBaseMongoSdkPrivateConfig() }
45
+ return merge(config, this.params.payloadSdkConfig, this.config.payloadSdkConfig, {
46
+ collection: this.config.payloadSdkConfig?.collection ?? this.params.payloadSdkConfig?.collection ?? 'payload',
47
+ })
48
+ }
36
49
 
37
- get payloads() {
38
- this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)
39
- return assertEx(this._payloadSdk)
50
+ get payloads() {
51
+ this._payloadSdk = this._payloadSdk ?? new BaseMongoSdk<PayloadWithMeta>(this.payloadSdkConfig)
52
+ return assertEx(this._payloadSdk)
53
+ }
40
54
  }
55
+ return MongoModuleBase
41
56
  }
@@ -0,0 +1,20 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { BaseMongoSdk, BaseMongoSdkPrivateConfig } from '@xyo-network/sdk-xyo-mongo-js'
3
+ import { Document } from 'mongodb'
4
+
5
+ import { getMongoDBConfig } from './getMongoDBConfig'
6
+
7
+ export const getBaseMongoSdkPrivateConfig = (): BaseMongoSdkPrivateConfig => {
8
+ const env = getMongoDBConfig()
9
+ return {
10
+ dbConnectionString: env.MONGO_CONNECTION_STRING,
11
+ dbDomain: assertEx(env.MONGO_DOMAIN, 'Missing Mongo Domain'),
12
+ dbName: assertEx(env.MONGO_DATABASE, 'Missing Mongo Database'),
13
+ dbPassword: assertEx(env.MONGO_PASSWORD, 'Missing Mongo Password'),
14
+ dbUserName: assertEx(env.MONGO_USERNAME, 'Missing Mongo Username'),
15
+ }
16
+ }
17
+
18
+ export const getBaseMongoSdk = <T extends Document>(collection: string) => {
19
+ return new BaseMongoSdk<T>({ ...getBaseMongoSdkPrivateConfig(), collection })
20
+ }
@@ -0,0 +1,18 @@
1
+ export type MongoDbConnectionStringEnvVar = 'MONGO_CONNECTION_STRING'
2
+ export type MongoDbEnvVars = 'MONGO_DATABASE' | 'MONGO_DOMAIN' | 'MONGO_PASSWORD' | 'MONGO_USERNAME'
3
+
4
+ export type MongoEnv = Record<MongoDbEnvVars | MongoDbConnectionStringEnvVar, string | undefined>
5
+
6
+ export const getMongoDBConfig = (): MongoEnv => {
7
+ const env: MongoEnv = {} as MongoEnv
8
+ if (process.env.MONGO_CONNECTION_STRING) {
9
+ env.MONGO_CONNECTION_STRING = process.env.MONGO_CONNECTION_STRING
10
+ }
11
+ if (process.env.MONGO_DOMAIN) {
12
+ env.MONGO_DATABASE = process.env.MONGO_DATABASE
13
+ env.MONGO_DOMAIN = process.env.MONGO_DOMAIN
14
+ env.MONGO_PASSWORD = process.env.MONGO_PASSWORD
15
+ env.MONGO_USERNAME = process.env.MONGO_USERNAME
16
+ }
17
+ return env
18
+ }
@@ -0,0 +1,9 @@
1
+ import { exists } from '@xylabs/exists'
2
+
3
+ import { getMongoDBConfig } from './getMongoDBConfig'
4
+
5
+ export const hasMongoDBConfig = (): boolean => {
6
+ const env = getMongoDBConfig()
7
+ const requiredValues = [env.MONGO_CONNECTION_STRING, env.MONGO_DATABASE, env.MONGO_DOMAIN, env.MONGO_PASSWORD, env.MONGO_USERNAME]
8
+ return requiredValues.every(exists)
9
+ }
@@ -0,0 +1,3 @@
1
+ export * from './getBaseMongoSdk'
2
+ export * from './getMongoDBConfig'
3
+ export * from './hasMongoDBConfig'