@treatwell/moleculer-essentials 2.1.1-beta.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,7 @@
14
14
  - [Basic Example](#basic-example)
15
15
  - [Mixins](#mixins)
16
16
  - [License](#license)
17
+
17
18
  <!-- TOC -->
18
19
 
19
20
  > [!WARNING]
@@ -216,25 +216,29 @@ function zodToOpenAPISchema(schema, extractor) {
216
216
  }
217
217
  return res;
218
218
  }
219
- const zodDate = z.transform((val) => {
220
- if (typeof val === "string") {
221
- const date = parseISO(val);
222
- if (!Number.isNaN(date.getTime())) {
223
- return date;
219
+ const zodDate = z.nonoptional(
220
+ z.transform((val) => {
221
+ if (typeof val === "string") {
222
+ const date = parseISO(val);
223
+ if (!Number.isNaN(date.getTime())) {
224
+ return date;
225
+ }
224
226
  }
225
- }
226
- return val;
227
- }).pipe(z.date());
227
+ return val;
228
+ }).pipe(z.date())
229
+ );
228
230
  const OBJECT_ID_PATTERN = /^[a-f\d]{24}$/i;
229
231
  function isObjectId(val) {
230
232
  return val instanceof ObjectId;
231
233
  }
232
- const zodObjectId = z.transform((val) => {
233
- if (typeof val === "string" && OBJECT_ID_PATTERN.test(val)) {
234
- return new ObjectId(val);
235
- }
236
- return val;
237
- }).pipe(z.custom(isObjectId, { abort: true })).meta({ id: "ObjectId" });
234
+ const zodObjectId = z.nonoptional(
235
+ z.transform((val) => {
236
+ if (typeof val === "string" && OBJECT_ID_PATTERN.test(val)) {
237
+ return new ObjectId(val);
238
+ }
239
+ return val;
240
+ }).pipe(z.custom(isObjectId, { abort: true })).meta({ id: "ObjectId" })
241
+ );
238
242
  function zodCoerceArray(element, params) {
239
243
  return z.transform((val) => !Array.isArray(val) && val !== void 0 ? [val] : val).pipe(z.array(element, params));
240
244
  }
@@ -218,25 +218,29 @@ function zodToOpenAPISchema(schema, extractor) {
218
218
  }
219
219
  return res;
220
220
  }
221
- const zodDate = v4.z.transform((val) => {
222
- if (typeof val === "string") {
223
- const date = dateFns.parseISO(val);
224
- if (!Number.isNaN(date.getTime())) {
225
- return date;
221
+ const zodDate = v4.z.nonoptional(
222
+ v4.z.transform((val) => {
223
+ if (typeof val === "string") {
224
+ const date = dateFns.parseISO(val);
225
+ if (!Number.isNaN(date.getTime())) {
226
+ return date;
227
+ }
226
228
  }
227
- }
228
- return val;
229
- }).pipe(v4.z.date());
229
+ return val;
230
+ }).pipe(v4.z.date())
231
+ );
230
232
  const OBJECT_ID_PATTERN = /^[a-f\d]{24}$/i;
231
233
  function isObjectId(val) {
232
234
  return val instanceof bson.ObjectId;
233
235
  }
234
- const zodObjectId = v4.z.transform((val) => {
235
- if (typeof val === "string" && OBJECT_ID_PATTERN.test(val)) {
236
- return new bson.ObjectId(val);
237
- }
238
- return val;
239
- }).pipe(v4.z.custom(isObjectId, { abort: true })).meta({ id: "ObjectId" });
236
+ const zodObjectId = v4.z.nonoptional(
237
+ v4.z.transform((val) => {
238
+ if (typeof val === "string" && OBJECT_ID_PATTERN.test(val)) {
239
+ return new bson.ObjectId(val);
240
+ }
241
+ return val;
242
+ }).pipe(v4.z.custom(isObjectId, { abort: true })).meta({ id: "ObjectId" })
243
+ );
240
244
  function zodCoerceArray(element, params) {
241
245
  return v4.z.transform((val) => !Array.isArray(val) && val !== void 0 ? [val] : val).pipe(v4.z.array(element, params));
242
246
  }
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-lmnhNH-8.cjs');
3
+ var index = require('./index-CbFCa8NT.cjs');
4
4
  var _2019_js = require('ajv/dist/2019.js');
5
5
  var moleculer = require('moleculer');
6
6
  var addFormats = require('ajv-formats');
package/dist/index.d.cts CHANGED
@@ -173,8 +173,8 @@ declare function createOpenAPIResponses(model: OpenAPIResponses, description?: s
173
173
  * For this, you should use helpers provided by this package.
174
174
  */
175
175
  declare function zodToOpenAPISchema(schema: ZodType, extractor: OpenAPIExtractor): SchemaObject | ReferenceObject;
176
- declare const zodDate: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
177
- declare const zodObjectId: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodCustom<ObjectId, ObjectId>>;
176
+ declare const zodDate: z.ZodNonOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>>;
177
+ declare const zodObjectId: z.ZodNonOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodCustom<ObjectId, ObjectId>>>;
178
178
  declare function zodCoerceArray<T extends ZodType>(element: T, params?: Parameters<typeof z.array>[1]): z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodArray<T>>;
179
179
  declare function isZodSchema<S extends z.ZodType>(schema: unknown, type?: S['type']): schema is S;
180
180
 
package/dist/index.d.mts CHANGED
@@ -173,8 +173,8 @@ declare function createOpenAPIResponses(model: OpenAPIResponses, description?: s
173
173
  * For this, you should use helpers provided by this package.
174
174
  */
175
175
  declare function zodToOpenAPISchema(schema: ZodType, extractor: OpenAPIExtractor): SchemaObject | ReferenceObject;
176
- declare const zodDate: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
177
- declare const zodObjectId: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodCustom<ObjectId, ObjectId>>;
176
+ declare const zodDate: z.ZodNonOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>>;
177
+ declare const zodObjectId: z.ZodNonOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodCustom<ObjectId, ObjectId>>>;
178
178
  declare function zodCoerceArray<T extends ZodType>(element: T, params?: Parameters<typeof z.array>[1]): z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodArray<T>>;
179
179
  declare function isZodSchema<S extends z.ZodType>(schema: unknown, type?: S['type']): schema is S;
180
180
 
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { S as SCHEMA_REF_NAME, i as isZodSchema, z as zodToOpenAPISchema, o as omitFields, G as GetOpenApiParamsSchema, V as ValidationErrorSchema, F as FileTooBigSchema, a as FileNotExistSchema, U as UnauthorizedErrorSchema, b as ServerErrorSchema, C as COERCE_ARRAY_ATTRIBUTE } from './index-8Cv0B4uH.mjs';
2
- export { D as DATE_TYPE, E as EMPTY_OBJECT_SCHEMA, O as OBJECTID_TYPE, c as addFieldsToSchema, d as composeSchemas, e as createOpenAPIResponses, f as optionalExceptFields, g as optionalFields, p as pickFields, t as toPartialSchema, h as zodCoerceArray, j as zodDate, k as zodObjectId } from './index-8Cv0B4uH.mjs';
1
+ import { S as SCHEMA_REF_NAME, i as isZodSchema, z as zodToOpenAPISchema, o as omitFields, G as GetOpenApiParamsSchema, V as ValidationErrorSchema, F as FileTooBigSchema, a as FileNotExistSchema, U as UnauthorizedErrorSchema, b as ServerErrorSchema, C as COERCE_ARRAY_ATTRIBUTE } from './index-BMLRFTWF.mjs';
2
+ export { D as DATE_TYPE, E as EMPTY_OBJECT_SCHEMA, O as OBJECTID_TYPE, c as addFieldsToSchema, d as composeSchemas, e as createOpenAPIResponses, f as optionalExceptFields, g as optionalFields, p as pickFields, t as toPartialSchema, h as zodCoerceArray, j as zodDate, k as zodObjectId } from './index-BMLRFTWF.mjs';
3
3
  import { Ajv2019 } from 'ajv/dist/2019.js';
4
4
  import { Validators, Errors, Context, ServiceBroker, Service, TracerExporters, MetricReporters } from 'moleculer';
5
5
  import addFormats from 'ajv-formats';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../index-lmnhNH-8.cjs');
3
+ var index = require('../index-CbFCa8NT.cjs');
4
4
  var moleculer = require('moleculer');
5
5
  var esToolkit = require('es-toolkit');
6
6
  var v4 = require('zod/v4');
@@ -783,8 +783,16 @@ function DatabaseConnectionMixin(opts) {
783
783
  getMongoClient() {
784
784
  return this.mongoClient;
785
785
  },
786
- getCollection(options) {
787
- return this.getMongoClient().db(dbName).collection(collectionName, options);
786
+ getMongoDb(options) {
787
+ return this.getMongoClient().db(dbName, options);
788
+ },
789
+ getCollection(options, dbOptions) {
790
+ if (!collectionName) {
791
+ throw new Error(
792
+ "No collectionName was provided in DatabaseConnectionMixin"
793
+ );
794
+ }
795
+ return this.getMongoClient().db(dbName, dbOptions).collection(collectionName, options);
788
796
  }
789
797
  },
790
798
  created() {
@@ -809,13 +817,19 @@ function DatabaseConnectionMixin(opts) {
809
817
  async started() {
810
818
  this.logger.debug("Service connecting to mongoDB");
811
819
  await this.getMongoClient().connect();
812
- this.logger.debug("Service connected to mongoDB, creating collection");
813
- try {
814
- await this.getMongoClient().db(dbName).createCollection(collectionName, createCollectionOptions);
815
- } catch (err) {
816
- if (err?.code !== 48) {
817
- this.logger.error("Error while creating collection", { err });
820
+ if (collectionName) {
821
+ this.logger.debug("Service connected to mongoDB, creating collection");
822
+ try {
823
+ await this.getMongoClient().db(dbName).createCollection(collectionName, createCollectionOptions);
824
+ } catch (err) {
825
+ if (err?.code !== 48) {
826
+ this.logger.error("Error while creating collection", { err });
827
+ }
818
828
  }
829
+ } else {
830
+ this.logger.debug(
831
+ "Service connected to mongoDB, no collection defined"
832
+ );
819
833
  }
820
834
  },
821
835
  async stopped() {
@@ -1,4 +1,4 @@
1
- import { Document, ObjectId, WithoutId, InferIdType, Filter, OptionalId, WithId, CountDocumentsOptions, DeleteOptions, FindOneAndDeleteOptions, FindOptions, BulkWriteOptions, FindOneAndUpdateOptions, UpdateOptions, FindOneAndReplaceOptions, CollationOptions, CreateCollectionOptions, MongoClient, CollectionOptions, Collection, UpdateFilter, FindCursor, UpdateResult } from 'mongodb';
1
+ import { Document, ObjectId, WithoutId, InferIdType, Filter, OptionalId, WithId, CountDocumentsOptions, DeleteOptions, FindOneAndDeleteOptions, FindOptions, BulkWriteOptions, FindOneAndUpdateOptions, UpdateOptions, FindOneAndReplaceOptions, CollationOptions, CreateCollectionOptions, MongoClient, DbOptions, Db, CollectionOptions, Collection, UpdateFilter, FindCursor, UpdateResult } from 'mongodb';
2
2
  import { ActionVisibility, Validators, Errors, Context } from 'moleculer';
3
3
  import { ZodType, ZodObject } from 'zod/v4';
4
4
  import { _ as ValidationSchema, J as JSONSchemaType, C as CustomActionSchema, P as PartialCustomServiceSchema } from '../newrelic-metrics-reporter-CmRMT4LG.cjs';
@@ -468,13 +468,14 @@ type DatabaseConnectionOptions = {
468
468
  * Name of the database to use.
469
469
  * If not specified, will use the default one (inferred from uri).
470
470
  *
471
- * OVERRIDDEN by globalThis.__MONGO_DB_NAME__ if set, which is useful for tests.
471
+ * OVERRIDDEN by `globalThis.__MONGO_DB_NAME__` if set, which is useful for tests.
472
472
  */
473
473
  databaseName?: string;
474
474
  /**
475
- * Name of the collection in the DB.
475
+ * Name of the collection in the DB. If undefined, will throw on `getCollection` method
476
+ * and will not try to create the collection.
476
477
  */
477
- collectionName: string;
478
+ collectionName: string | undefined;
478
479
  /**
479
480
  * Collection creation options.
480
481
  * If not specified, will use the default one.
@@ -488,13 +489,14 @@ type DatabaseConnectionOptions = {
488
489
  * - process.env.MONGODB_URL
489
490
  * - 'mongodb://localhost:27017' (default)
490
491
  *
491
- * OVERRIDDEN by globalThis.__MONGO_URI__ if set, which is useful for tests.
492
+ * OVERRIDDEN by `globalThis.__MONGO_URI__` if set, which is useful for tests.
492
493
  */
493
494
  uri?: string;
494
495
  };
495
496
  declare function DatabaseConnectionMixin<TSchema extends Record<string, unknown> = never>(opts: DatabaseConnectionOptions): PartialCustomServiceSchema<unknown, {
496
497
  getMongoClient(): MongoClient;
497
- getCollection(options?: CollectionOptions): Collection<TSchema>;
498
+ getMongoDb(options?: DbOptions): Db;
499
+ getCollection(options?: CollectionOptions, dbOptions?: DbOptions): Collection<TSchema>;
498
500
  }, PartialCustomServiceSchema<unknown, {
499
501
  getStore(storeName: string): Map<string, {
500
502
  services: Set<unknown>;
@@ -839,7 +841,7 @@ declare function optimizeQuery<T extends Record<string, unknown>>(query: Filter<
839
841
  * Return an object with each list item as key and 1/0/-1 as value
840
842
  * to be used in mongo projection or sort.
841
843
  */
842
- declare function getQueryFromList<T extends 'sort' | 'projection', NotOp extends T extends 'sort' ? -1 : 0>(type: T, list?: string[]): Record<string, 1 | NotOp> | undefined;
844
+ declare function getQueryFromList<T extends 'sort' | 'projection', NotOp extends (T extends 'sort' ? -1 : 0)>(type: T, list?: string[]): Record<string, 1 | NotOp> | undefined;
843
845
 
844
846
  declare function DatabaseMethodsMixin<TSchema extends Document & {
845
847
  _id: ObjectId | string;
@@ -1,4 +1,4 @@
1
- import { Document, ObjectId, WithoutId, InferIdType, Filter, OptionalId, WithId, CountDocumentsOptions, DeleteOptions, FindOneAndDeleteOptions, FindOptions, BulkWriteOptions, FindOneAndUpdateOptions, UpdateOptions, FindOneAndReplaceOptions, CollationOptions, CreateCollectionOptions, MongoClient, CollectionOptions, Collection, UpdateFilter, FindCursor, UpdateResult } from 'mongodb';
1
+ import { Document, ObjectId, WithoutId, InferIdType, Filter, OptionalId, WithId, CountDocumentsOptions, DeleteOptions, FindOneAndDeleteOptions, FindOptions, BulkWriteOptions, FindOneAndUpdateOptions, UpdateOptions, FindOneAndReplaceOptions, CollationOptions, CreateCollectionOptions, MongoClient, DbOptions, Db, CollectionOptions, Collection, UpdateFilter, FindCursor, UpdateResult } from 'mongodb';
2
2
  import { ActionVisibility, Validators, Errors, Context } from 'moleculer';
3
3
  import { ZodType, ZodObject } from 'zod/v4';
4
4
  import { _ as ValidationSchema, J as JSONSchemaType, C as CustomActionSchema, P as PartialCustomServiceSchema } from '../newrelic-metrics-reporter-CmRMT4LG.mjs';
@@ -468,13 +468,14 @@ type DatabaseConnectionOptions = {
468
468
  * Name of the database to use.
469
469
  * If not specified, will use the default one (inferred from uri).
470
470
  *
471
- * OVERRIDDEN by globalThis.__MONGO_DB_NAME__ if set, which is useful for tests.
471
+ * OVERRIDDEN by `globalThis.__MONGO_DB_NAME__` if set, which is useful for tests.
472
472
  */
473
473
  databaseName?: string;
474
474
  /**
475
- * Name of the collection in the DB.
475
+ * Name of the collection in the DB. If undefined, will throw on `getCollection` method
476
+ * and will not try to create the collection.
476
477
  */
477
- collectionName: string;
478
+ collectionName: string | undefined;
478
479
  /**
479
480
  * Collection creation options.
480
481
  * If not specified, will use the default one.
@@ -488,13 +489,14 @@ type DatabaseConnectionOptions = {
488
489
  * - process.env.MONGODB_URL
489
490
  * - 'mongodb://localhost:27017' (default)
490
491
  *
491
- * OVERRIDDEN by globalThis.__MONGO_URI__ if set, which is useful for tests.
492
+ * OVERRIDDEN by `globalThis.__MONGO_URI__` if set, which is useful for tests.
492
493
  */
493
494
  uri?: string;
494
495
  };
495
496
  declare function DatabaseConnectionMixin<TSchema extends Record<string, unknown> = never>(opts: DatabaseConnectionOptions): PartialCustomServiceSchema<unknown, {
496
497
  getMongoClient(): MongoClient;
497
- getCollection(options?: CollectionOptions): Collection<TSchema>;
498
+ getMongoDb(options?: DbOptions): Db;
499
+ getCollection(options?: CollectionOptions, dbOptions?: DbOptions): Collection<TSchema>;
498
500
  }, PartialCustomServiceSchema<unknown, {
499
501
  getStore(storeName: string): Map<string, {
500
502
  services: Set<unknown>;
@@ -839,7 +841,7 @@ declare function optimizeQuery<T extends Record<string, unknown>>(query: Filter<
839
841
  * Return an object with each list item as key and 1/0/-1 as value
840
842
  * to be used in mongo projection or sort.
841
843
  */
842
- declare function getQueryFromList<T extends 'sort' | 'projection', NotOp extends T extends 'sort' ? -1 : 0>(type: T, list?: string[]): Record<string, 1 | NotOp> | undefined;
844
+ declare function getQueryFromList<T extends 'sort' | 'projection', NotOp extends (T extends 'sort' ? -1 : 0)>(type: T, list?: string[]): Record<string, 1 | NotOp> | undefined;
843
845
 
844
846
  declare function DatabaseMethodsMixin<TSchema extends Document & {
845
847
  _id: ObjectId | string;
@@ -1,4 +1,4 @@
1
- import { g as optionalFields, o as omitFields, S as SCHEMA_REF_NAME, O as OBJECTID_TYPE, C as COERCE_ARRAY_ATTRIBUTE, i as isZodSchema, k as zodObjectId, h as zodCoerceArray, e as createOpenAPIResponses } from '../index-8Cv0B4uH.mjs';
1
+ import { g as optionalFields, o as omitFields, S as SCHEMA_REF_NAME, O as OBJECTID_TYPE, C as COERCE_ARRAY_ATTRIBUTE, i as isZodSchema, k as zodObjectId, h as zodCoerceArray, e as createOpenAPIResponses } from '../index-BMLRFTWF.mjs';
2
2
  import { Errors } from 'moleculer';
3
3
  import { isEqual as isEqual$1 } from 'es-toolkit';
4
4
  import { z } from 'zod/v4';
@@ -781,8 +781,16 @@ function DatabaseConnectionMixin(opts) {
781
781
  getMongoClient() {
782
782
  return this.mongoClient;
783
783
  },
784
- getCollection(options) {
785
- return this.getMongoClient().db(dbName).collection(collectionName, options);
784
+ getMongoDb(options) {
785
+ return this.getMongoClient().db(dbName, options);
786
+ },
787
+ getCollection(options, dbOptions) {
788
+ if (!collectionName) {
789
+ throw new Error(
790
+ "No collectionName was provided in DatabaseConnectionMixin"
791
+ );
792
+ }
793
+ return this.getMongoClient().db(dbName, dbOptions).collection(collectionName, options);
786
794
  }
787
795
  },
788
796
  created() {
@@ -807,13 +815,19 @@ function DatabaseConnectionMixin(opts) {
807
815
  async started() {
808
816
  this.logger.debug("Service connecting to mongoDB");
809
817
  await this.getMongoClient().connect();
810
- this.logger.debug("Service connected to mongoDB, creating collection");
811
- try {
812
- await this.getMongoClient().db(dbName).createCollection(collectionName, createCollectionOptions);
813
- } catch (err) {
814
- if (err?.code !== 48) {
815
- this.logger.error("Error while creating collection", { err });
818
+ if (collectionName) {
819
+ this.logger.debug("Service connected to mongoDB, creating collection");
820
+ try {
821
+ await this.getMongoClient().db(dbName).createCollection(collectionName, createCollectionOptions);
822
+ } catch (err) {
823
+ if (err?.code !== 48) {
824
+ this.logger.error("Error while creating collection", { err });
825
+ }
816
826
  }
827
+ } else {
828
+ this.logger.debug(
829
+ "Service connected to mongoDB, no collection defined"
830
+ );
817
831
  }
818
832
  },
819
833
  async stopped() {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "type": "git",
7
7
  "url": "https://github.com/treatwell/moleculer-essentials"
8
8
  },
9
- "version": "2.1.1-beta.2",
9
+ "version": "2.2.0",
10
10
  "main": "./dist/index.cjs",
11
11
  "module": "./dist/index.mjs",
12
12
  "types": "./dist/index.d.cts",
@@ -113,11 +113,11 @@
113
113
  "pino-pretty": "^13.1.3"
114
114
  },
115
115
  "peerDependencies": {
116
- "@aws-crypto/client-node": "^4.2.1",
116
+ "@aws-crypto/client-node": "^4.2.1 || ^5.0.0",
117
117
  "bullmq": "^5.12.10",
118
118
  "ioredis": "^5.2.3",
119
119
  "jsonwebtoken": "^9.0.2",
120
- "jwks-rsa": "^3.0.1",
120
+ "jwks-rsa": "^3.0.1 || ^4.0.1",
121
121
  "moleculer": "^0.15.0",
122
122
  "mongodb": "^6.15.0 || ^7.1.0",
123
123
  "redlock": "^4.2.0",
@@ -149,32 +149,32 @@
149
149
  "devDependencies": {
150
150
  "@aws-crypto/client-node": "^4.2.2",
151
151
  "@eslint/js": "^10.0.1",
152
- "@treatwell/eslint-plugin-moleculer": "^1.1.3",
152
+ "@treatwell/eslint-plugin-moleculer": "^1.1.4",
153
153
  "@tsconfig/node-lts": "^24.0.0",
154
154
  "@types/jsonwebtoken": "^9.0.10",
155
- "@types/node": "^24.12.0",
155
+ "@types/node": "^24.13.3",
156
156
  "@types/redlock": "^4.0.8",
157
157
  "bullmq": "^5.71.1",
158
- "eslint": "^10.1.0",
158
+ "eslint": "^10.8.1",
159
159
  "eslint-config-prettier": "^10.1.8",
160
- "eslint-import-resolver-typescript": "^4.4.4",
160
+ "eslint-import-resolver-typescript": "^4.4.5",
161
161
  "eslint-plugin-import": "^2.32.0",
162
- "eslint-plugin-prettier": "^5.5.5",
162
+ "eslint-plugin-prettier": "^5.5.6",
163
163
  "ioredis": "^5.10.1",
164
- "jiti": "^2.6.1",
164
+ "jiti": "^2.7.0",
165
165
  "jsonwebtoken": "^9.0.3",
166
166
  "jwks-rsa": "^4.0.1",
167
- "moleculer": "^0.15.0",
168
- "mongodb": "^7.1.1",
169
- "mongodb-memory-server": "^11.0.1",
170
- "pkgroll": "2.27.0",
171
- "prettier": "^3.8.1",
167
+ "moleculer": "^0.15.1",
168
+ "mongodb": "^7.5.0",
169
+ "mongodb-memory-server": "^11.2.0",
170
+ "pkgroll": "2.27.1",
171
+ "prettier": "^3.9.6",
172
172
  "redlock": "^4.2.0",
173
- "semantic-release": "^25.0.3",
173
+ "semantic-release": "^25.0.9",
174
174
  "typescript": "~5.9.3",
175
- "typescript-eslint": "^8.57.2",
176
- "vitest": "^4.1.2",
177
- "zod": "^4.3.6"
175
+ "typescript-eslint": "^8.67.0",
176
+ "vitest": "^4.1.10",
177
+ "zod": "^4.4.3"
178
178
  },
179
179
  "files": [
180
180
  "dist"
@@ -182,5 +182,5 @@
182
182
  "publishConfig": {
183
183
  "access": "public"
184
184
  },
185
- "packageManager": "yarn@4.13.0"
185
+ "packageManager": "yarn@4.18.0"
186
186
  }