@xyo-network/module-abstract-mongodb 2.86.0 → 2.86.1

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.
@@ -5,44 +5,13 @@ 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 import("@xylabs/object").BaseParamsFields & {
7
7
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
8
- config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
9
- readonly archivist?: string | undefined;
10
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
11
- readonly name?: string | undefined;
12
- readonly paging?: Record<string, {
13
- size?: number | undefined;
14
- }> | undefined;
15
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
16
- schema: "network.xyo.module.mongodb.config";
17
- readonly security?: {
18
- readonly allowAnonymous?: boolean | undefined;
19
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
20
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
21
- } | undefined;
22
- readonly sign?: boolean | undefined;
23
- readonly storeQueries?: boolean | undefined;
24
- readonly timestamp?: boolean | undefined;
25
- } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
26
- readonly archivist?: string | undefined;
27
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
28
- readonly name?: string | undefined;
29
- readonly paging?: Record<string, {
30
- size?: number | undefined;
31
- }> | undefined;
32
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
33
- schema: "network.xyo.module.mongodb.config";
34
- readonly security?: {
35
- readonly allowAnonymous?: boolean | undefined;
36
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
37
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
38
- } | undefined;
39
- readonly sign?: boolean | undefined;
40
- readonly storeQueries?: boolean | undefined;
41
- readonly timestamp?: boolean | undefined;
42
- } & {
8
+ addToResolvers?: boolean | undefined;
9
+ config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
43
10
  boundWitnessSdkConfig?: Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig> | undefined;
44
11
  payloadSdkConfig?: Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig> | undefined;
45
12
  schema: "network.xyo.module.mongodb.config";
13
+ }, "schema"> & {
14
+ schema: "network.xyo.module.mongodb.config";
46
15
  }, "schema"> & {
47
16
  schema: string;
48
17
  };
@@ -53,44 +22,13 @@ export declare const MongoDBModuleMixin: <TParams extends import("@xylabs/object
53
22
  payloadSdkConfig?: (import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPrivateConfig & Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig>) | undefined;
54
23
  } = import("@xylabs/object").BaseParamsFields & {
55
24
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
56
- config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
57
- readonly archivist?: string | undefined;
58
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
59
- readonly name?: string | undefined;
60
- readonly paging?: Record<string, {
61
- size?: number | undefined;
62
- }> | undefined;
63
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
64
- schema: "network.xyo.module.mongodb.config";
65
- readonly security?: {
66
- readonly allowAnonymous?: boolean | undefined;
67
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
68
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
69
- } | undefined;
70
- readonly sign?: boolean | undefined;
71
- readonly storeQueries?: boolean | undefined;
72
- readonly timestamp?: boolean | undefined;
73
- } & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/payload-model").SchemaFields & object & {
74
- readonly archivist?: string | undefined;
75
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
76
- readonly name?: string | undefined;
77
- readonly paging?: Record<string, {
78
- size?: number | undefined;
79
- }> | undefined;
80
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
81
- schema: "network.xyo.module.mongodb.config";
82
- readonly security?: {
83
- readonly allowAnonymous?: boolean | undefined;
84
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
85
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
86
- } | undefined;
87
- readonly sign?: boolean | undefined;
88
- readonly storeQueries?: boolean | undefined;
89
- readonly timestamp?: boolean | undefined;
90
- } & {
25
+ addToResolvers?: boolean | undefined;
26
+ config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
91
27
  boundWitnessSdkConfig?: Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig> | undefined;
92
28
  payloadSdkConfig?: Partial<import("@xyo-network/sdk-xyo-mongo-js").BaseMongoSdkPublicConfig> | undefined;
93
29
  schema: "network.xyo.module.mongodb.config";
30
+ }, "schema"> & {
31
+ schema: "network.xyo.module.mongodb.config";
94
32
  }, "schema"> & {
95
33
  schema: string;
96
34
  };
@@ -118,104 +56,44 @@ export declare const MongoDBModuleMixin: <TParams extends import("@xylabs/object
118
56
  params: TParams;
119
57
  previousHash: () => import("@xylabs/promise").Promisable<string | undefined>;
120
58
  queries: string[];
121
- query: <T extends import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
59
+ query: <T extends import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
122
60
  query: Lowercase<string>;
123
61
  resultSet?: string | undefined;
124
62
  schema: "network.xyo.boundwitness";
125
63
  }, "schema"> & {
126
64
  schema: "network.xyo.boundwitness";
127
- } = import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
65
+ } = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
128
66
  query: Lowercase<string>;
129
67
  resultSet?: string | undefined;
130
68
  schema: "network.xyo.boundwitness";
131
69
  }, "schema"> & {
132
70
  schema: "network.xyo.boundwitness";
133
- }, TConf extends import("@xyo-network/payload-model").SchemaFields & object & {
134
- readonly archivist?: string | undefined;
135
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
136
- readonly name?: string | undefined;
137
- readonly paging?: Record<string, {
138
- size?: number | undefined;
139
- }> | undefined;
140
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
71
+ }, TConf extends import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
141
72
  schema: "network.xyo.module.config";
142
- readonly security?: {
143
- readonly allowAnonymous?: boolean | undefined;
144
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
145
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
146
- } | undefined;
147
- readonly sign?: boolean | undefined;
148
- readonly storeQueries?: boolean | undefined;
149
- readonly timestamp?: boolean | undefined;
150
- } & import("@xyo-network/module-model").ArchivingModuleConfig = import("@xyo-network/payload-model").SchemaFields & object & {
151
- readonly archivist?: string | undefined;
152
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
153
- readonly name?: string | undefined;
154
- readonly paging?: Record<string, {
155
- size?: number | undefined;
156
- }> | undefined;
157
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
73
+ } = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
158
74
  schema: "network.xyo.module.config";
159
- readonly security?: {
160
- readonly allowAnonymous?: boolean | undefined;
161
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
162
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
163
- } | undefined;
164
- readonly sign?: boolean | undefined;
165
- readonly storeQueries?: boolean | undefined;
166
- readonly timestamp?: boolean | undefined;
167
- } & import("@xyo-network/module-model").ArchivingModuleConfig>(query: T, payloads?: ({
75
+ }>(query: T, payloads?: ({
168
76
  schema: string;
169
- } & object)[] | undefined, queryConfig?: TConf | undefined) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
170
- queryable: <T_1 extends import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
77
+ } & import("@xyo-network/payload-model").PayloadFields)[] | undefined, queryConfig?: TConf | undefined) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
78
+ queryable: <T_1 extends import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
171
79
  query: Lowercase<string>;
172
80
  resultSet?: string | undefined;
173
81
  schema: "network.xyo.boundwitness";
174
82
  }, "schema"> & {
175
83
  schema: "network.xyo.boundwitness";
176
- } = import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
84
+ } = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
177
85
  query: Lowercase<string>;
178
86
  resultSet?: string | undefined;
179
87
  schema: "network.xyo.boundwitness";
180
88
  }, "schema"> & {
181
89
  schema: "network.xyo.boundwitness";
182
- }, TConf_1 extends import("@xyo-network/payload-model").SchemaFields & object & {
183
- readonly archivist?: string | undefined;
184
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
185
- readonly name?: string | undefined;
186
- readonly paging?: Record<string, {
187
- size?: number | undefined;
188
- }> | undefined;
189
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
90
+ }, TConf_1 extends import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
190
91
  schema: "network.xyo.module.config";
191
- readonly security?: {
192
- readonly allowAnonymous?: boolean | undefined;
193
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
194
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
195
- } | undefined;
196
- readonly sign?: boolean | undefined;
197
- readonly storeQueries?: boolean | undefined;
198
- readonly timestamp?: boolean | undefined;
199
- } & import("@xyo-network/module-model").ArchivingModuleConfig = import("@xyo-network/payload-model").SchemaFields & object & {
200
- readonly archivist?: string | undefined;
201
- readonly labels?: import("@xyo-network/module-model").Labels | undefined;
202
- readonly name?: string | undefined;
203
- readonly paging?: Record<string, {
204
- size?: number | undefined;
205
- }> | undefined;
206
- readonly retry?: import("@xylabs/retry").RetryConfig | undefined;
92
+ } = import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
207
93
  schema: "network.xyo.module.config";
208
- readonly security?: {
209
- readonly allowAnonymous?: boolean | undefined;
210
- readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
211
- readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
212
- } | undefined;
213
- readonly sign?: boolean | undefined;
214
- readonly storeQueries?: boolean | undefined;
215
- readonly timestamp?: boolean | undefined;
216
- } & import("@xyo-network/module-model").ArchivingModuleConfig>(query: T_1, payloads?: ({
94
+ }>(query: T_1, payloads?: ({
217
95
  schema: string;
218
- } & object)[] | undefined, queryConfig?: TConf_1 | undefined) => import("@xylabs/promise").Promisable<boolean>;
96
+ } & import("@xyo-network/payload-model").PayloadFields)[] | undefined, queryConfig?: TConf_1 | undefined) => import("@xylabs/promise").Promisable<boolean>;
219
97
  start?: (() => import("@xylabs/promise").Promisable<boolean>) | undefined;
220
98
  stop?: (() => import("@xylabs/promise").Promisable<boolean>) | undefined;
221
99
  eventData: import("@xyo-network/module-model").ModuleEventData<object>;
@@ -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,EAAiB,mBAAmB,EAAuB,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AACtI,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6HAFmF,GAAG,EAAE;sBAWjG,aAAa,yBAAyB,CAAC,GAAG,SAAS;iBACxD,aAAa,oBAAoB,CAAC,GAAG,SAAS;;;;;;IA8B3D;;;OAGG;qBACoB,QAAQ,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAOvC,CAAA"}
1
+ {"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../src/Module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAiB,mBAAmB,EAAuB,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AACtI,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wFAIjB,OAAO,8BAN6F,GAAG,EAAE;sBAWjG,aAAa,yBAAyB,CAAC,GAAG,SAAS;iBACxD,aAAa,oBAAoB,CAAC,GAAG,SAAS;;;;;;IA8B3D;;;OAGG;qBACoB,QAAQ,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAOvC,CAAA"}
@@ -72,10 +72,10 @@ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
72
72
  const env = getMongoDBConfig();
73
73
  return {
74
74
  dbConnectionString: env.MONGO_CONNECTION_STRING,
75
- dbDomain: (0, import_assert.assertEx)(env.MONGO_DOMAIN, "Missing Mongo Domain"),
76
- dbName: (0, import_assert.assertEx)(env.MONGO_DATABASE, "Missing Mongo Database"),
77
- dbPassword: (0, import_assert.assertEx)(env.MONGO_PASSWORD, "Missing Mongo Password"),
78
- dbUserName: (0, import_assert.assertEx)(env.MONGO_USERNAME, "Missing Mongo Username")
75
+ dbDomain: (0, import_assert.assertEx)(env.MONGO_DOMAIN, () => "Missing Mongo Domain"),
76
+ dbName: (0, import_assert.assertEx)(env.MONGO_DATABASE, () => "Missing Mongo Database"),
77
+ dbPassword: (0, import_assert.assertEx)(env.MONGO_PASSWORD, () => "Missing Mongo Password"),
78
+ dbUserName: (0, import_assert.assertEx)(env.MONGO_USERNAME, () => "Missing Mongo Username")
79
79
  };
80
80
  }, "getBaseMongoSdkPrivateConfig");
81
81
  var getBaseMongoSdk = /* @__PURE__ */ __name((collection) => {
@@ -149,7 +149,7 @@ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
149
149
  return (0, import_assert2.assertEx)(this._boundWitnessSdk);
150
150
  }
151
151
  get jobQueue() {
152
- return (0, import_assert2.assertEx)(this.params.jobQueue, "MongoDBModule Error: jobQueue required for this module but is not defined");
152
+ return (0, import_assert2.assertEx)(this.params.jobQueue, () => "MongoDBModule Error: jobQueue required for this module but is not defined");
153
153
  }
154
154
  get payloadSdkConfig() {
155
155
  const config = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../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":["export * from './Collections'\nexport * from './config'\nexport * from './Databases'\nexport * from './Defaults'\nexport * from './IndexDescription'\nexport * from './Indexes'\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","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","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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 = {\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 { 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'\nimport { getBaseMongoSdkPrivateConfig } from './config'\nimport { IndexDescription } from './IndexDescription'\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(config, this.params.boundWitnessSdkConfig, 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(config, this.params.payloadSdkConfig, 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","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","hasMongoDBConfig","env","getMongoDBConfig","requiredValues","MONGO_CONNECTION_STRING","MONGO_DATABASE","MONGO_DOMAIN","MONGO_PASSWORD","MONGO_USERNAME","every","exists","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","import_assert","import_sdk_xyo_mongo_js","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","staticImplements","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../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":["export * from './Collections'\nexport * from './config'\nexport * from './Databases'\nexport * from './Defaults'\nexport * from './IndexDescription'\nexport * from './Indexes'\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","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","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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 = {\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 { 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'\nimport { getBaseMongoSdkPrivateConfig } from './config'\nimport { IndexDescription } from './IndexDescription'\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(config, this.params.boundWitnessSdkConfig, 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(config, this.params.payloadSdkConfig, 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","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","hasMongoDBConfig","env","getMongoDBConfig","requiredValues","MONGO_CONNECTION_STRING","MONGO_DATABASE","MONGO_DOMAIN","MONGO_PASSWORD","MONGO_USERNAME","every","exists","DATABASES","Archivist","DefaultAggregateTimeoutMs","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","import_assert","import_sdk_xyo_mongo_js","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","staticImplements","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -35,10 +35,10 @@ var getBaseMongoSdkPrivateConfig = /* @__PURE__ */ __name(() => {
35
35
  const env = getMongoDBConfig();
36
36
  return {
37
37
  dbConnectionString: env.MONGO_CONNECTION_STRING,
38
- dbDomain: assertEx(env.MONGO_DOMAIN, "Missing Mongo Domain"),
39
- dbName: assertEx(env.MONGO_DATABASE, "Missing Mongo Database"),
40
- dbPassword: assertEx(env.MONGO_PASSWORD, "Missing Mongo Password"),
41
- dbUserName: assertEx(env.MONGO_USERNAME, "Missing Mongo Username")
38
+ dbDomain: assertEx(env.MONGO_DOMAIN, () => "Missing Mongo Domain"),
39
+ dbName: assertEx(env.MONGO_DATABASE, () => "Missing Mongo Database"),
40
+ dbPassword: assertEx(env.MONGO_PASSWORD, () => "Missing Mongo Password"),
41
+ dbUserName: assertEx(env.MONGO_USERNAME, () => "Missing Mongo Username")
42
42
  };
43
43
  }, "getBaseMongoSdkPrivateConfig");
44
44
  var getBaseMongoSdk = /* @__PURE__ */ __name((collection) => {
@@ -112,7 +112,7 @@ var MongoDBModuleMixin = /* @__PURE__ */ __name((ModuleBase) => {
112
112
  return assertEx2(this._boundWitnessSdk);
113
113
  }
114
114
  get jobQueue() {
115
- return assertEx2(this.params.jobQueue, "MongoDBModule Error: jobQueue required for this module but is not defined");
115
+ return assertEx2(this.params.jobQueue, () => "MongoDBModule Error: jobQueue required for this module but is not defined");
116
116
  }
117
117
  get payloadSdkConfig() {
118
118
  const config = {
@@ -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 { 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","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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 = {\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 { 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'\nimport { getBaseMongoSdkPrivateConfig } from './config'\nimport { IndexDescription } from './IndexDescription'\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(config, this.params.boundWitnessSdkConfig, 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(config, this.params.payloadSdkConfig, 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","staticImplements","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 { 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","import { exists } from '@xylabs/exists'\n\nimport { getMongoDBConfig } from './getMongoDBConfig'\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 = {\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 { 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'\nimport { getBaseMongoSdkPrivateConfig } from './config'\nimport { IndexDescription } from './IndexDescription'\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(config, this.params.boundWitnessSdkConfig, 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(config, this.params.payloadSdkConfig, 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","staticImplements","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}