@xyo-network/module-abstract-mongodb 2.88.6 → 2.88.8

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.
@@ -118,12 +118,8 @@ var import_module_model_mongodb = require("@xyo-network/module-model-mongodb");
118
118
  var import_sdk_xyo_mongo_js2 = require("@xyo-network/sdk-xyo-mongo-js");
119
119
  function _ts_decorate(decorators, target, key, desc) {
120
120
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
121
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
122
- r = Reflect.decorate(decorators, target, key, desc);
123
- else
124
- for (var i = decorators.length - 1; i >= 0; i--)
125
- if (d = decorators[i])
126
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
121
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
122
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
127
123
  return c > 3 && r && Object.defineProperty(target, key, r), r;
128
124
  }
129
125
  __name(_ts_decorate, "_ts_decorate");
@@ -183,8 +179,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
183
179
  await sdk.useCollection(async (collection) => {
184
180
  const collectionName = collection.collectionName.toLowerCase();
185
181
  const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
186
- if (indexes.length === 0)
187
- return;
182
+ if (indexes.length === 0) return;
188
183
  for (const ix of indexes) {
189
184
  try {
190
185
  await collection.createIndexes([
@@ -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","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -81,12 +81,8 @@ import { MongoDBStorageClassLabels } from "@xyo-network/module-model-mongodb";
81
81
  import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
82
82
  function _ts_decorate(decorators, target, key, desc) {
83
83
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
84
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
85
- r = Reflect.decorate(decorators, target, key, desc);
86
- else
87
- for (var i = decorators.length - 1; i >= 0; i--)
88
- if (d = decorators[i])
89
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
84
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
85
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
90
86
  return c > 3 && r && Object.defineProperty(target, key, r), r;
91
87
  }
92
88
  __name(_ts_decorate, "_ts_decorate");
@@ -146,8 +142,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
146
142
  await sdk.useCollection(async (collection) => {
147
143
  const collectionName = collection.collectionName.toLowerCase();
148
144
  const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
149
- if (indexes.length === 0)
150
- return;
145
+ if (indexes.length === 0) return;
151
146
  for (const ix of indexes) {
152
147
  try {
153
148
  await collection.createIndexes([
@@ -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":";;;;AACO,IAAMA,cAAc;EACzBC,aAAa;EACbC,gBAAgB;EAChBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,OAAO;AACT;;;ACRA,SAASC,gBAAgB;AACzB,SAASC,oBAA+C;;;ACIjD,IAAMC,mBAAmB,6BAAA;AAC9B,QAAMC,MAAgB,CAAC;AACvB,MAAIC,QAAQD,IAAIE,yBAAyB;AACvCF,QAAIE,0BAA0BD,QAAQD,IAAIE;EAC5C;AACA,MAAID,QAAQD,IAAIG,cAAc;AAC5BH,QAAII,iBAAiBH,QAAQD,IAAII;AACjCJ,QAAIG,eAAeF,QAAQD,IAAIG;AAC/BH,QAAIK,iBAAiBJ,QAAQD,IAAIK;AACjCL,QAAIM,iBAAiBL,QAAQD,IAAIM;EACnC;AACA,SAAON;AACT,GAZgC;;;ADCzB,IAAMO,+BAA+B,6BAAA;AAC1C,QAAMC,MAAMC,iBAAAA;AACZ,SAAO;IACLC,oBAAoBF,IAAIG;IACxBC,UAAUC,SAASL,IAAIM,cAAc,MAAM,sBAAA;IAC3CC,QAAQF,SAASL,IAAIQ,gBAAgB,MAAM,wBAAA;IAC3CC,YAAYJ,SAASL,IAAIU,gBAAgB,MAAM,wBAAA;IAC/CC,YAAYN,SAASL,IAAIY,gBAAgB,MAAM,wBAAA;EACjD;AACF,GAT4C;AAWrC,IAAMC,kBAAkB,wBAAqBC,eAAAA;AAClD,SAAO,IAAIC,aAAgB;IAAE,GAAGhB,6BAAAA;IAAgCe;EAAW,CAAA;AAC7E,GAF+B;;;AEjB/B,SAASE,cAAc;AAIhB,IAAMC,mBAAmB,6BAAA;AAC9B,QAAMC,MAAMC,iBAAAA;AACZ,QAAMC,iBAAiB;IAACF,IAAIG;IAAyBH,IAAII;IAAgBJ,IAAIK;IAAcL,IAAIM;IAAgBN,IAAIO;;AACnH,SAAOL,eAAeM,MAAMC,MAAAA;AAC9B,GAJgC;;;ACJzB,IAAMC,YAAY;EACvBC,WAAW;AACb;;;ACFO,IAAMC,4BAA4B;AAClC,IAAMC,eAAe;AACrB,IAAMC,mBAAmB;AACzB,IAAMC,eAAe;;;ACH5B,SAASC,YAAAA,iBAAgB;AACzB,SAASC,aAAa;AACtB,SAASC,wBAAwB;AAEjC,SAAkEC,iCAAiC;AAEnG,SAASC,gBAAAA,qBAAwC;;;;;;;;;;;;AAU1C,IAAMC,qBAAqB,wBAIhCC,eAAAA;AAGA,MAAeC,kBAAf,MAAeA,wBAAwBD,WAAAA;WAAAA;;;IACrC,OAAOE,SAASC;IAChBC;IACAC;IAEA,IAAIC,wBAA4C;AAC9C,YAAMC,SAAS;QAAEC,YAAYC,YAAYC;QAAgB,GAAGC,6BAAAA;MAA+B;AAC3F,aAAOC,MAAML,QAAQ,KAAKM,OAAOP,uBAAuB,KAAKC,OAAOD,uBAAuB;QACzFE,YAAY,KAAKD,OAAOD,uBAAuBE,cAAc,KAAKK,OAAOP,uBAAuBE,cAAcC,YAAYC;MAC5H,CAAA;IACF;IAEA,IAAII,iBAAiB;AACnB,WAAKV,mBAAmB,KAAKA,oBAAoB,IAAIW,cAAwC,KAAKT,qBAAqB;AACvH,aAAOU,UAAS,KAAKZ,gBAAgB;IACvC;IAEA,IAAIa,WAAW;AACb,aAAOD,UAAS,KAAKH,OAAOI,UAAU,MAAM,2EAAA;IAC9C;IAEA,IAAIC,mBAAuC;AACzC,YAAMX,SAAS;QAAEC,YAAYC,YAAYU;QAAU,GAAGR,6BAAAA;MAA+B;AACrF,aAAOC,MAAML,QAAQ,KAAKM,OAAOK,kBAAkB,KAAKX,OAAOW,kBAAkB;QAC/EV,YAAY,KAAKD,OAAOW,kBAAkBV,cAAc,KAAKK,OAAOK,kBAAkBV,cAAcC,YAAYU;MAClH,CAAA;IACF;IAEA,IAAIC,WAAW;AACb,WAAKf,cAAc,KAAKA,eAAe,IAAIU,cAAmC,KAAKG,gBAAgB;AACnG,aAAOF,UAAS,KAAKX,WAAW;IAClC;;;;;IAMA,MAAMgB,gBAA+B;AACnC,YAAMC,gBAAiB,KAAKf,QAA2DgB,SAASC,WAAW,CAAA;AAC3G,YAAMC,+BAA+B,KAAKX,gBAAgBQ,aAAAA;AAC1D,YAAMG,+BAA+B,KAAKL,UAAUE,aAAAA;IACtD;EACF;AA1CerB,oBAAAA,aAAAA;IADdyB,iBAAAA;KACczB,eAAAA;AA2Cf,SAAOA;AACT,GAnDkC;AA0DlC,IAAMwB,iCAAiC,8BACrCE,KACAL,kBAAAA;AAEA,QAAMK,IAAIC,cAAc,OAAOpB,eAAAA;AAC7B,UAAMqB,iBAAiBrB,WAAWqB,eAAeC,YAAW;AAC5D,UAAMN,UAAUF,cAAcS,OAAO,CAACC,OAAOA,IAAIC,MAAMH,YAAAA,EAAcI,WAAWL,cAAAA,CAAAA;AAChF,QAAIL,QAAQW,WAAW;AAAG;AAC1B,eAAWH,MAAMR,SAAS;AACxB,UAAI;AACF,cAAMhB,WAAW4B,cAAc;UAACJ;SAAG;MACrC,SAASK,OAAO;AACd,cAAMC,mBAAmBD;AACzB,cAAM,EAAEE,SAAQ,IAAKD;AACrB,YAAIC,aAAa,2BAA2BA,aAAa,wBAAwB;AAK/E;QACF;AACAC,gBAAQH,MAAM,wBAAwBL,GAAGC,IAAI,mBAAmBJ,cAAAA,KAAmBQ,KAAAA,EAAO;AAC1F,cAAMA;MACR;IACF;EACF,CAAA;AACF,GA1BuC;;;AC1EhC,IAAMI,aAAa;AAEnB,IAAMC,eAAe,wBAACC,UAAkBA,MAAMC,WAAW,KAAKH,UAAAA,GAAzC;AAErB,IAAMI,iBAAiB,wBAACF,UAAkBA,MAAMC,WAAWH,YAAY,GAAA,GAAhD;","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","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -118,12 +118,8 @@ var import_module_model_mongodb = require("@xyo-network/module-model-mongodb");
118
118
  var import_sdk_xyo_mongo_js2 = require("@xyo-network/sdk-xyo-mongo-js");
119
119
  function _ts_decorate(decorators, target, key, desc) {
120
120
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
121
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
122
- r = Reflect.decorate(decorators, target, key, desc);
123
- else
124
- for (var i = decorators.length - 1; i >= 0; i--)
125
- if (d = decorators[i])
126
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
121
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
122
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
127
123
  return c > 3 && r && Object.defineProperty(target, key, r), r;
128
124
  }
129
125
  __name(_ts_decorate, "_ts_decorate");
@@ -183,8 +179,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
183
179
  await sdk.useCollection(async (collection) => {
184
180
  const collectionName = collection.collectionName.toLowerCase();
185
181
  const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
186
- if (indexes.length === 0)
187
- return;
182
+ if (indexes.length === 0) return;
188
183
  for (const ix of indexes) {
189
184
  try {
190
185
  await collection.createIndexes([
@@ -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","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -81,12 +81,8 @@ import { MongoDBStorageClassLabels } from "@xyo-network/module-model-mongodb";
81
81
  import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
82
82
  function _ts_decorate(decorators, target, key, desc) {
83
83
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
84
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
85
- r = Reflect.decorate(decorators, target, key, desc);
86
- else
87
- for (var i = decorators.length - 1; i >= 0; i--)
88
- if (d = decorators[i])
89
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
84
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
85
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
90
86
  return c > 3 && r && Object.defineProperty(target, key, r), r;
91
87
  }
92
88
  __name(_ts_decorate, "_ts_decorate");
@@ -146,8 +142,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
146
142
  await sdk.useCollection(async (collection) => {
147
143
  const collectionName = collection.collectionName.toLowerCase();
148
144
  const indexes = configIndexes.filter((ix) => ix?.name?.toLowerCase().startsWith(collectionName));
149
- if (indexes.length === 0)
150
- return;
145
+ if (indexes.length === 0) return;
151
146
  for (const ix of indexes) {
152
147
  try {
153
148
  await collection.createIndexes([
@@ -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","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -18,10 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var __publicField = (obj, key, value) => {
22
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
23
- return value;
24
- };
21
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
25
22
 
26
23
  // src/index.ts
27
24
  var src_exports = {};
@@ -123,12 +120,8 @@ var import_module_model_mongodb = require("@xyo-network/module-model-mongodb");
123
120
  var import_sdk_xyo_mongo_js2 = require("@xyo-network/sdk-xyo-mongo-js");
124
121
  function _ts_decorate(decorators, target, key, desc) {
125
122
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
126
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
127
- r = Reflect.decorate(decorators, target, key, desc);
128
- else
129
- for (var i = decorators.length - 1; i >= 0; i--)
130
- if (d = decorators[i])
131
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
123
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
124
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
132
125
  return c > 3 && r && Object.defineProperty(target, key, r), r;
133
126
  }
134
127
  __name(_ts_decorate, "_ts_decorate");
@@ -191,8 +184,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
191
184
  var _a;
192
185
  return (_a = ix == null ? void 0 : ix.name) == null ? void 0 : _a.toLowerCase().startsWith(collectionName);
193
186
  });
194
- if (indexes.length === 0)
195
- return;
187
+ if (indexes.length === 0) return;
196
188
  for (const ix of indexes) {
197
189
  try {
198
190
  await collection.createIndexes([
@@ -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","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","_a","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","labels","MongoDBStorageClassLabels","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","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","_a","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","labels","MongoDBStorageClassLabels","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
@@ -1,10 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
5
 
9
6
  // src/Collections.ts
10
7
  var COLLECTIONS = {
@@ -86,12 +83,8 @@ import { MongoDBStorageClassLabels } from "@xyo-network/module-model-mongodb";
86
83
  import { BaseMongoSdk as BaseMongoSdk2 } from "@xyo-network/sdk-xyo-mongo-js";
87
84
  function _ts_decorate(decorators, target, key, desc) {
88
85
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
89
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
90
- r = Reflect.decorate(decorators, target, key, desc);
91
- else
92
- for (var i = decorators.length - 1; i >= 0; i--)
93
- if (d = decorators[i])
94
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
86
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
87
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
95
88
  return c > 3 && r && Object.defineProperty(target, key, r), r;
96
89
  }
97
90
  __name(_ts_decorate, "_ts_decorate");
@@ -154,8 +147,7 @@ var ensureIndexesExistOnCollection = /* @__PURE__ */ __name(async (sdk, configIn
154
147
  var _a;
155
148
  return (_a = ix == null ? void 0 : ix.name) == null ? void 0 : _a.toLowerCase().startsWith(collectionName);
156
149
  });
157
- if (indexes.length === 0)
158
- return;
150
+ if (indexes.length === 0) return;
159
151
  for (const ix of indexes) {
160
152
  try {
161
153
  await collection.createIndexes([
@@ -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","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","_a","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","labels","MongoDBStorageClassLabels","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":";;;;;;AACO,IAAMA,cAAc;EACzBC,aAAa;EACbC,gBAAgB;EAChBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,OAAO;AACT;;;ACRA,SAASC,gBAAgB;AACzB,SAASC,oBAA+C;;;ACIjD,IAAMC,mBAAmB,6BAAA;AAC9B,QAAMC,MAAgB,CAAC;AACvB,MAAIC,QAAQD,IAAIE,yBAAyB;AACvCF,QAAIE,0BAA0BD,QAAQD,IAAIE;EAC5C;AACA,MAAID,QAAQD,IAAIG,cAAc;AAC5BH,QAAII,iBAAiBH,QAAQD,IAAII;AACjCJ,QAAIG,eAAeF,QAAQD,IAAIG;AAC/BH,QAAIK,iBAAiBJ,QAAQD,IAAIK;AACjCL,QAAIM,iBAAiBL,QAAQD,IAAIM;EACnC;AACA,SAAON;AACT,GAZgC;;;ADCzB,IAAMO,+BAA+B,6BAAA;AAC1C,QAAMC,MAAMC,iBAAAA;AACZ,SAAO;IACLC,oBAAoBF,IAAIG;IACxBC,UAAUC,SAASL,IAAIM,cAAc,MAAM,sBAAA;IAC3CC,QAAQF,SAASL,IAAIQ,gBAAgB,MAAM,wBAAA;IAC3CC,YAAYJ,SAASL,IAAIU,gBAAgB,MAAM,wBAAA;IAC/CC,YAAYN,SAASL,IAAIY,gBAAgB,MAAM,wBAAA;EACjD;AACF,GAT4C;AAWrC,IAAMC,kBAAkB,wBAAqBC,eAAAA;AAClD,SAAO,IAAIC,aAAgB;IAAE,GAAGhB,6BAAAA;IAAgCe;EAAW,CAAA;AAC7E,GAF+B;;;AEjB/B,SAASE,cAAc;AAIhB,IAAMC,mBAAmB,6BAAA;AAC9B,QAAMC,MAAMC,iBAAAA;AACZ,QAAMC,iBAAiB;IAACF,IAAIG;IAAyBH,IAAII;IAAgBJ,IAAIK;IAAcL,IAAIM;IAAgBN,IAAIO;;AACnH,SAAOL,eAAeM,MAAMC,MAAAA;AAC9B,GAJgC;;;ACJzB,IAAMC,YAAY;EACvBC,WAAW;AACb;;;ACFO,IAAMC,4BAA4B;AAClC,IAAMC,eAAe;AACrB,IAAMC,mBAAmB;AACzB,IAAMC,eAAe;;;ACH5B,SAASC,YAAAA,iBAAgB;AACzB,SAASC,aAAa;AACtB,SAASC,wBAAwB;AAEjC,SAAkEC,iCAAiC;AAEnG,SAASC,gBAAAA,qBAAwC;;;;;;;;AAU1C,IAAMC,qBAAqB,wBAIhCC,eAAAA;;AAGA,MAAeC,mBAAf,mBAAuCD,WAAAA;IAErCE;IACAC;IAEA,IAAIC,wBAA4C;;AAC9C,YAAMC,SAAS;QAAEC,YAAYC,YAAYC;QAAgB,GAAGC,6BAAAA;MAA+B;AAC3F,aAAOC,MAAML,QAAQ,KAAKM,OAAOP,uBAAuB,KAAKC,OAAOD,uBAAuB;QACzFE,cAAYM,MAAA,KAAKP,OAAOD,0BAAZ,gBAAAQ,IAAmCN,iBAAc,UAAKK,OAAOP,0BAAZ,mBAAmCE,eAAcC,YAAYC;MAC5H,CAAA;IACF;IAEA,IAAIK,iBAAiB;AACnB,WAAKX,mBAAmB,KAAKA,oBAAoB,IAAIY,cAAwC,KAAKV,qBAAqB;AACvH,aAAOW,UAAS,KAAKb,gBAAgB;IACvC;IAEA,IAAIc,WAAW;AACb,aAAOD,UAAS,KAAKJ,OAAOK,UAAU,MAAM,2EAAA;IAC9C;IAEA,IAAIC,mBAAuC;;AACzC,YAAMZ,SAAS;QAAEC,YAAYC,YAAYW;QAAU,GAAGT,6BAAAA;MAA+B;AACrF,aAAOC,MAAML,QAAQ,KAAKM,OAAOM,kBAAkB,KAAKZ,OAAOY,kBAAkB;QAC/EX,cAAYM,MAAA,KAAKP,OAAOY,qBAAZ,gBAAAL,IAA8BN,iBAAc,UAAKK,OAAOM,qBAAZ,mBAA8BX,eAAcC,YAAYW;MAClH,CAAA;IACF;IAEA,IAAIC,WAAW;AACb,WAAKhB,cAAc,KAAKA,eAAe,IAAIW,cAAmC,KAAKG,gBAAgB;AACnG,aAAOF,UAAS,KAAKZ,WAAW;IAClC;;;;;IAMA,MAAMiB,gBAA+B;;AACnC,YAAMC,kBAAiB,MAAAT,MAAA,KAAKP,WAAL,gBAAAO,IAAgEU,YAAhE,mBAAyEC,YAAW,CAAA;AAC3G,YAAMC,+BAA+B,KAAKX,gBAAgBQ,aAAAA;AAC1D,YAAMG,+BAA+B,KAAKL,UAAUE,aAAAA;IACtD;EACF,GA1CuCrB,+BACrC,cADF,IACSyB,UAASC,4BADlB;;;;AA2CA,SAAOzB;AACT,GAnDkC;AA0DlC,IAAMuB,iCAAiC,8BACrCG,KACAN,kBAAAA;AAEA,QAAMM,IAAIC,cAAc,OAAOtB,eAAAA;AAC7B,UAAMuB,iBAAiBvB,WAAWuB,eAAeC,YAAW;AAC5D,UAAMP,UAAUF,cAAcU,OAAO,CAACC,OAAAA;;AAAOA,4CAAIC,SAAJD,mBAAUF,cAAcI,WAAWL;KAAAA;AAChF,QAAIN,QAAQY,WAAW,EAAG;AAC1B,eAAWH,MAAMT,SAAS;AACxB,UAAI;AACF,cAAMjB,WAAW8B,cAAc;UAACJ;SAAG;MACrC,SAASK,OAAO;AACd,cAAMC,mBAAmBD;AACzB,cAAM,EAAEE,SAAQ,IAAKD;AACrB,YAAIC,aAAa,2BAA2BA,aAAa,wBAAwB;AAK/E;QACF;AACAC,gBAAQH,MAAM,wBAAwBL,GAAGC,IAAI,mBAAmBJ,cAAAA,KAAmBQ,KAAAA,EAAO;AAC1F,cAAMA;MACR;IACF;EACF,CAAA;AACF,GA1BuC;;;AC1EhC,IAAMI,aAAa;AAEnB,IAAMC,eAAe,wBAACC,UAAkBA,MAAMC,WAAW,KAAKH,UAAAA,GAAzC;AAErB,IAAMI,iBAAiB,wBAACF,UAAkBA,MAAMC,WAAWH,YAAY,GAAA,GAAhD;","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","_boundWitnessSdk","_payloadSdk","boundWitnessSdkConfig","config","collection","COLLECTIONS","BoundWitnesses","getBaseMongoSdkPrivateConfig","merge","params","_a","boundWitnesses","BaseMongoSdk","assertEx","jobQueue","payloadSdkConfig","Payloads","payloads","ensureIndexes","configIndexes","storage","indexes","ensureIndexesExistOnCollection","labels","MongoDBStorageClassLabels","sdk","useCollection","collectionName","toLowerCase","filter","ix","name","startsWith","length","createIndexes","error","mongoServerError","codeName","console","escapeChar","toDbProperty","value","replaceAll","fromDbProperty"]}
package/package.json CHANGED
@@ -14,15 +14,15 @@
14
14
  "@xylabs/exists": "^3.5.1",
15
15
  "@xylabs/lodash": "^3.5.1",
16
16
  "@xylabs/static-implements": "^3.5.1",
17
- "@xyo-network/module-model": "^2.103.6",
18
- "@xyo-network/module-model-mongodb": "~2.88.6",
19
- "@xyo-network/payload-mongodb": "~2.88.6",
20
- "@xyo-network/sdk-xyo-mongo-js": "~2.88.6",
21
- "mongodb": "^6.6.2"
17
+ "@xyo-network/module-model": "^2.106.0",
18
+ "@xyo-network/module-model-mongodb": "~2.88.8",
19
+ "@xyo-network/payload-mongodb": "~2.88.8",
20
+ "@xyo-network/sdk-xyo-mongo-js": "~2.88.8",
21
+ "mongodb": "^6.7.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@xylabs/ts-scripts-yarn3": "^3.10.4",
25
- "@xylabs/tsconfig": "^3.10.4",
24
+ "@xylabs/ts-scripts-yarn3": "^3.11.2",
25
+ "@xylabs/tsconfig": "^3.11.2",
26
26
  "fake-indexeddb": "^4.0.2",
27
27
  "typescript": "^5.4.5"
28
28
  },
@@ -65,6 +65,6 @@
65
65
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
66
66
  },
67
67
  "sideEffects": false,
68
- "version": "2.88.6",
68
+ "version": "2.88.8",
69
69
  "type": "module"
70
70
  }