@unchainedshop/mongodb 4.0.0-rc.16 → 4.0.0-rc.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"build-db-indexes.d.ts","sourceRoot":"","sources":["../src/build-db-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKzF,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,EAAE,CAAC;AAiBJ,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,QAAQ,EACrD,YAAY,UAAU,CAAC,CAAC,CAAC,EACzB,SAAS,OAAO,qBAwBjB,CAAC"}
1
+ {"version":3,"file":"build-db-indexes.d.ts","sourceRoot":"","sources":["../src/build-db-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKzF,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,EAAE,CAAC;AAwBJ,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,QAAQ,EACrD,YAAY,UAAU,CAAC,CAAC,CAAC,EACzB,SAAS,OAAO,qBAwBjB,CAAC"}
@@ -1,18 +1,21 @@
1
1
  import { createLogger } from '@unchainedshop/logger';
2
2
  const logger = createLogger('unchained:mongodb');
3
- const buildIndexes = (collection, indexes) => Promise.all(indexes.map(async (indexOptions) => {
4
- if (!indexOptions)
5
- return;
6
- const { index, options } = indexOptions;
7
- try {
8
- await collection.createIndex(index, options);
9
- return false;
10
- }
11
- catch (e) {
12
- logger.error(e);
13
- return e;
14
- }
15
- }));
3
+ const buildIndexes = async (collection, indexes) => {
4
+ const errors = (await Promise.all(indexes.map(async (indexOptions) => {
5
+ if (!indexOptions)
6
+ return null;
7
+ const { index, options } = indexOptions;
8
+ try {
9
+ await collection.createIndex(index, options);
10
+ return null;
11
+ }
12
+ catch (e) {
13
+ logger.error(e);
14
+ return e;
15
+ }
16
+ }))).filter(Boolean);
17
+ return errors;
18
+ };
16
19
  export const buildDbIndexes = async (collection, indexes) => {
17
20
  let success = true;
18
21
  const buildErrors = (await buildIndexes(collection, indexes)).filter(Boolean);
@@ -1 +1 @@
1
- {"version":3,"file":"build-db-indexes.js","sourceRoot":"","sources":["../src/build-db-indexes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAOjD,MAAM,YAAY,GAAG,CAAI,UAAyB,EAAE,OAAgB,EAA8B,EAAE,CAClG,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;IACjC,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,CAAU,CAAC;IACpB,CAAC;AACH,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAyB,EACzB,OAAgB,EAChB,EAAE;IACF,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,MAAM,WAAW,GAAG,CAAC,MAAM,YAAY,CAAI,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,QAAQ;QACR,sDAAsD;QACtD,gBAAgB;QAChB,UAAU;QACV,IAAI;QAEJ,oBAAoB;QACpB,MAAM,aAAa,GAAG,CAAC,MAAM,YAAY,CAAI,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC5B,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,IAAI;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"build-db-indexes.js","sourceRoot":"","sources":["../src/build-db-indexes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAOjD,MAAM,YAAY,GAAG,KAAK,EACxB,UAAyB,EACzB,OAAgB,EACE,EAAE;IACpB,MAAM,MAAM,GAAG,CACb,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QACjC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,CAAU,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC,MAAM,CAAC,OAAO,CAAY,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAyB,EACzB,OAAgB,EAChB,EAAE;IACF,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,MAAM,WAAW,GAAG,CAAC,MAAM,YAAY,CAAI,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,QAAQ;QACR,sDAAsD;QACtD,gBAAgB;QAChB,UAAU;QACV,IAAI;QAEJ,oBAAoB;QACpB,MAAM,aAAa,GAAG,CAAC,MAAM,YAAY,CAAI,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC5B,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,IAAI;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const checkId: (value: string, error?: {
2
+ message: string;
3
+ path?: string | undefined;
4
+ } | undefined) => void;
5
+ //# sourceMappingURL=check-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-id.d.ts","sourceRoot":"","sources":["../src/check-id.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UACX,MAAM,UAET;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GACD,SAAS,KACZ,IAIF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const checkId = (value, error) => {
2
+ if (typeof value !== 'string') {
3
+ throw error || { message: 'Invalid id' };
4
+ }
5
+ };
6
+ //# sourceMappingURL=check-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-id.js","sourceRoot":"","sources":["../src/check-id.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,KAAa,EACb,KAKa,EACP,EAAE;IACR,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function emailRegexOperator(string: any): {
2
+ $regex: RegExp;
3
+ };
4
+ //# sourceMappingURL=email-regex-operator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-regex-operator.d.ts","sourceRoot":"","sources":["../src/email-regex-operator.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,MAAM,KAAA;;EAUxC"}
@@ -0,0 +1,12 @@
1
+ export function emailRegexOperator(string) {
2
+ if (typeof string !== 'string') {
3
+ throw new TypeError('Expected a string');
4
+ }
5
+ const escapped = string.trim().replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
6
+ if (escapped.length === 0)
7
+ throw new Error('String is empty after trimming');
8
+ if (escapped.length > 255)
9
+ throw new Error('String exceeds maximum allowed length');
10
+ return { $regex: new RegExp(`^${escapped}$`, 'i') };
11
+ }
12
+ //# sourceMappingURL=email-regex-operator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-regex-operator.js","sourceRoot":"","sources":["../src/email-regex-operator.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,MAAM;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAExE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAEpF,OAAO,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -1,3 +1,3 @@
1
- import { Collection, FindOptions, Filter } from 'mongodb';
2
- export declare const findPreservingIds: <T>(collection: Collection<T>) => ((selector: Filter<T>, ids: string[], options?: FindOptions) => Promise<T[]>);
1
+ import { Collection, FindOptions, Filter, Document } from 'mongodb';
2
+ export declare const findPreservingIds: <T extends Document>(collection: Collection<T>) => ((selector: Filter<T>, ids: string[], options?: FindOptions) => Promise<T[]>);
3
3
  //# sourceMappingURL=find-preserving-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-preserving-ids.d.ts","sourceRoot":"","sources":["../src/find-preserving-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAQ1D,eAAO,MAAM,iBAAiB,GAC3B,CAAC,EACA,YAAY,UAAU,CAAC,CAAC,CAAC,KACxB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CA0B9E,CAAC"}
1
+ {"version":3,"file":"find-preserving-ids.d.ts","sourceRoot":"","sources":["../src/find-preserving-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQpE,eAAO,MAAM,iBAAiB,GAC3B,CAAC,SAAS,QAAQ,EACjB,YAAY,UAAU,CAAC,CAAC,CAAC,KACxB,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CA0B9E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"find-preserving-ids.js","sourceRoot":"","sources":["../src/find-preserving-ids.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CACE,UAAyB,EACsD,EAAE,CACnF,KAAK,EAAE,QAAmB,EAAE,GAAa,EAAE,OAAqB,EAAgB,EAAE;IAChF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1D,MAAM,gBAAgB,GAAG;QACvB,GAAG,QAAQ;QACX,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;KAClB,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB;YACE,MAAM,EAAE,gBAAgB;SACzB;QACD,OAAO,IAAI,KAAK,QAAQ;YACtB,OAAO,IAAI,IAAI,IAAI;YACjB,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;aACxC;SACF;QACH,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACvB,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACvB,KAAK,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;KAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACjD,OAAO,KAAY,CAAC;AACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"find-preserving-ids.js","sourceRoot":"","sources":["../src/find-preserving-ids.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CACE,UAAyB,EACsD,EAAE,CACnF,KAAK,EAAE,QAAmB,EAAE,GAAa,EAAE,OAAqB,EAAgB,EAAE;IAChF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1D,MAAM,gBAAgB,GAAG;QACvB,GAAG,QAAQ;QACX,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;KAClB,CAAC;IAEF,MAAM,gBAAgB,GAAQ;QAC5B;YACE,MAAM,EAAE,gBAAgB;SACzB;QACD,OAAO,IAAI,KAAK,QAAQ;YACtB,OAAO,IAAI,IAAI,IAAI;YACjB,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;aACxC;SACF;QACH,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACvB,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACvB,KAAK,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;KAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACjD,OAAO,KAAY,CAAC;AACtB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Filter } from 'mongodb';
2
2
  export declare const generateDbFilterById: <T extends {
3
- _id?: string;
3
+ _id: string;
4
4
  }>(id: unknown, query?: Filter<T>) => Filter<T>;
5
5
  //# sourceMappingURL=generate-db-filter-by-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-db-filter-by-id.d.ts","sourceRoot":"","sources":["../src/generate-db-filter-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,OAAO,EACX,QAAO,MAAM,CAAC,CAAC,CAAM,KACpB,MAAM,CAAC,CAAC,CAGV,CAAC"}
1
+ {"version":3,"file":"generate-db-filter-by-id.d.ts","sourceRoot":"","sources":["../src/generate-db-filter-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAC5D,IAAI,OAAO,EACX,QAAO,MAAM,CAAC,CAAC,CAAM,KACpB,MAAM,CAAC,CAAC,CAGV,CAAC"}
@@ -0,0 +1,11 @@
1
+ import SimpleSchema from 'simpl-schema';
2
+ import { TimestampFields } from '@unchainedshop/types/common.js';
3
+ import { ModuleCreateMutation, ModuleMutations } from '@unchainedshop/types/core.js';
4
+ import { Collection } from 'mongodb';
5
+ export declare const generateDbMutations: <T extends TimestampFields & {
6
+ _id?: string;
7
+ }>(collection: Collection<T>, schema: SimpleSchema, options?: {
8
+ hasCreateOnly?: boolean;
9
+ permanentlyDeleteByDefault?: boolean;
10
+ }) => ModuleMutations<T> | ModuleCreateMutation<T>;
11
+ //# sourceMappingURL=generate-db-mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-db-mutations.d.ts","sourceRoot":"","sources":["../src/generate-db-mutations.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;AAKnD,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,eAAe,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,cAClE,UAAU,CAAC,CAAC,CAAC,UACjB,YAAY,YACV;IACR,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,KACA,eAAe,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CA6E7C,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { checkId } from './check-id.js';
2
+ import { generateDbObjectId } from './generate-db-object-id.js';
3
+ import { generateDbFilterById } from './generate-db-filter-by-id.js';
4
+ export const generateDbMutations = (collection, schema, options) => {
5
+ if (!collection)
6
+ throw new Error('Collection is missing');
7
+ if (!schema)
8
+ throw new Error('Schema is missing');
9
+ const { hasCreateOnly, permanentlyDeleteByDefault } = options || {
10
+ hasCreateOnly: false,
11
+ permanentlyDeleteByDefault: false,
12
+ };
13
+ const deletePermanently = async (_id) => {
14
+ checkId(_id);
15
+ const filter = generateDbFilterById(_id);
16
+ const result = await collection.deleteOne(filter);
17
+ return result.deletedCount;
18
+ };
19
+ return {
20
+ create: async (doc) => {
21
+ const values = schema.clean(doc);
22
+ values.created = new Date();
23
+ schema.validate(values);
24
+ values._id = doc._id || generateDbObjectId();
25
+ const result = await collection.insertOne(values);
26
+ return result.insertedId;
27
+ },
28
+ update: hasCreateOnly
29
+ ? undefined
30
+ : async (_id, doc) => {
31
+ checkId(_id);
32
+ let modifier;
33
+ if (doc?.$set) {
34
+ const values = schema.clean(doc, { isModifier: true });
35
+ modifier = {
36
+ ...values,
37
+ $set: {
38
+ ...(values.$set || {}),
39
+ updated: new Date(),
40
+ },
41
+ };
42
+ }
43
+ else {
44
+ const values = schema.clean(doc);
45
+ modifier = {
46
+ $set: {
47
+ ...values,
48
+ updated: new Date(),
49
+ },
50
+ };
51
+ }
52
+ schema.validate(modifier, { modifier: true });
53
+ const filter = generateDbFilterById(_id, { deleted: null });
54
+ await collection.updateOne(filter, modifier);
55
+ return _id;
56
+ },
57
+ deletePermanently: hasCreateOnly ? undefined : deletePermanently,
58
+ delete: hasCreateOnly
59
+ ? undefined
60
+ : async (_id) => {
61
+ if (permanentlyDeleteByDefault) {
62
+ return deletePermanently(_id);
63
+ }
64
+ checkId(_id);
65
+ const filter = generateDbFilterById(_id, { deleted: null });
66
+ const modifier = { $set: { deleted: new Date() } };
67
+ const values = schema.clean(modifier, { isModifier: true });
68
+ const result = await collection.updateOne(filter, values);
69
+ return result.modifiedCount;
70
+ },
71
+ };
72
+ };
73
+ //# sourceMappingURL=generate-db-mutations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-db-mutations.js","sourceRoot":"","sources":["../src/generate-db-mutations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAAyB,EACzB,MAAoB,EACpB,OAGC,EAC6C,EAAE;IAChD,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAElD,MAAM,EAAE,aAAa,EAAE,0BAA0B,EAAE,GAAG,OAAO,IAAI;QAC/D,aAAa,EAAE,KAAK;QACpB,0BAA0B,EAAE,KAAK;KAClC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,oBAAoB,CAAI,GAAG,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,MAAM,GAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,UAAoB,CAAC;QACrC,CAAC;QAED,MAAM,EAAE,aAAa;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEb,IAAI,QAAyB,CAAC;gBAE9B,IAAK,GAAuB,EAAE,IAAI,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAQ,MAAM,CAAC,KAAK,CAAC,GAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnE,QAAQ,GAAG;wBACT,GAAG,MAAM;wBACT,IAAI,EAAE;4BACJ,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;4BACtB,OAAO,EAAE,IAAI,IAAI,EAAE;yBACpB;qBACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAQ,MAAM,CAAC,KAAK,CAAC,GAAU,CAAC,CAAC;oBAC7C,QAAQ,GAAG;wBACT,IAAI,EAAE;4BACJ,GAAG,MAAM;4BACT,OAAO,EAAE,IAAI,IAAI,EAAE;yBACpB;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAE7C,OAAO,GAAG,CAAC;YACb,CAAC;QAEL,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB;QAEhE,MAAM,EAAE,aAAa;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACZ,IAAI,0BAA0B,EAAE,CAAC;oBAC/B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,oBAAoB,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAE1D,OAAO,MAAM,CAAC,aAAa,CAAC;YAC9B,CAAC;KACN,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"initDb.d.ts","sourceRoot":"","sources":["../src/initDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAe1C,eAAO,MAAM,OAAO,uBA8BnB,CAAC;AAEF,eAAO,MAAM,MAAM,qBAOlB,CAAC;AAEF,QAAA,MAAM,MAAM,QAAa,OAAO,CAAC,EAAE,CAQlC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"initDb.d.ts","sourceRoot":"","sources":["../src/initDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAiB1C,eAAO,MAAM,OAAO,uBA8BnB,CAAC;AAEF,eAAO,MAAM,MAAM,qBAOlB,CAAC;AAEF,QAAA,MAAM,MAAM,QAAa,OAAO,CAAC,EAAE,CAQlC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/lib/initDb.js CHANGED
@@ -2,6 +2,7 @@ import { MongoClient } from 'mongodb';
2
2
  let zstdEnabled = false;
3
3
  let mongod;
4
4
  let mongoClient;
5
+ const { PORT = '4010' } = process.env;
5
6
  try {
6
7
  // eslint-disable-next-line
7
8
  // @ts-expect-error
@@ -23,11 +24,11 @@ export const startDb = async () => {
23
24
  try {
24
25
  mongod = MongoMemoryServer.create({
25
26
  instance: process.env.NODE_ENV === 'test'
26
- ? { dbName: 'test', port: parseInt(process.env.PORT, 10) + 1 }
27
+ ? { dbName: 'test', port: parseInt(PORT, 10) + 1 }
27
28
  : {
28
29
  dbPath: `${process.cwd()}/.db`,
29
30
  storageEngine: 'wiredTiger',
30
- port: parseInt(process.env.PORT, 10) + 1,
31
+ port: parseInt(PORT, 10) + 1,
31
32
  },
32
33
  });
33
34
  const mongoInstance = await mongod;
package/lib/initDb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"initDb.js","sourceRoot":"","sources":["../src/initDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1C,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,MAAM,CAAC;AACX,IAAI,WAA+B,CAAC;AAEpC,IAAI,CAAC;IACH,2BAA2B;IAC3B,mBAAmB;IACnB,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACjC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAAC,MAAM,CAAC;IACP,KAAK;AACP,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAChC,QAAQ,EACN,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;gBAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;gBAC9D,CAAC,CAAC;oBACE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM;oBAC9B,aAAa,EAAE,YAAY;oBAC3B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;iBACzC;SACR,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;QACnC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,IAAiB,EAAE;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IACvD,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE;QACjC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"initDb.js","sourceRoot":"","sources":["../src/initDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1C,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,MAAM,CAAC;AACX,IAAI,WAA+B,CAAC;AAEpC,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEtC,IAAI,CAAC;IACH,2BAA2B;IAC3B,mBAAmB;IACnB,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACjC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAAC,MAAM,CAAC;IACP,KAAK;AACP,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAChC,QAAQ,EACN,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;gBAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;gBAClD,CAAC,CAAC;oBACE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM;oBAC9B,aAAa,EAAE,YAAY;oBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;iBAC7B;SACR,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;QACnC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,IAAiB,EAAE;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IACvD,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE;QACjC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -10,16 +10,20 @@ export { insensitiveTrimmedRegexOperator } from './insensitive-trimmed-regex-ope
10
10
  export * from './documentdb-compat-mode.js';
11
11
  export { mongodb };
12
12
  export interface LogFields {
13
- log: {
13
+ log: ({
14
+ date: Date;
15
+ status: string | null;
16
+ info?: string;
17
+ } | {
14
18
  date: Date;
15
19
  status?: string;
16
20
  info: string;
17
- }[];
21
+ })[];
18
22
  }
19
23
  export interface TimestampFields {
20
- created?: Date;
24
+ created: Date;
21
25
  updated?: Date;
22
- deleted?: Date;
26
+ deleted?: Date | null;
23
27
  }
24
28
  export interface Address {
25
29
  addressLine?: string;
@@ -52,7 +56,7 @@ export interface MigrationRepository<Context = unknown> {
52
56
  }
53
57
  export interface ModuleInput<Options extends Record<string, any>> {
54
58
  db: mongodb.Db;
55
- migrationRepository?: MigrationRepository;
59
+ migrationRepository: MigrationRepository;
56
60
  options?: Options;
57
61
  }
58
62
  //# sourceMappingURL=mongodb-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb-index.d.ts","sourceRoot":"","sources":["../src/mongodb-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,GAAG,OAAO;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACf,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"mongodb-index.d.ts","sourceRoot":"","sources":["../src/mongodb-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,CACD;QACE,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GACD;QACE,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CACJ,EAAE,CAAC;CACL;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,GAAG,OAAO;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACpD,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACf,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/mongodb",
3
- "version": "4.0.0-rc.16",
3
+ "version": "4.0.0-rc.17",
4
4
  "description": "MongoDB provider for unchained platform",
5
5
  "main": "lib/mongodb-index.js",
6
6
  "types": "lib/mongodb-index.d.ts",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
- "@unchainedshop/utils": "^4.0.0-rc.15"
34
+ "@unchainedshop/utils": "^4.0.0-rc.17"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@mongodb-js/zstd": ">= 2.0 < 3",
@@ -8,20 +8,27 @@ export type Indexes = {
8
8
  options?: CreateIndexesOptions;
9
9
  }[];
10
10
 
11
- const buildIndexes = <T>(collection: Collection<T>, indexes: Indexes): Promise<(false | Error)[]> =>
12
- Promise.all(
13
- indexes.map(async (indexOptions) => {
14
- if (!indexOptions) return;
15
- const { index, options } = indexOptions;
16
- try {
17
- await collection.createIndex(index, options);
18
- return false;
19
- } catch (e: any) {
20
- logger.error(e);
21
- return e as Error;
22
- }
23
- }),
24
- );
11
+ const buildIndexes = async <T extends Document>(
12
+ collection: Collection<T>,
13
+ indexes: Indexes,
14
+ ): Promise<Error[]> => {
15
+ const errors = (
16
+ await Promise.all(
17
+ indexes.map(async (indexOptions) => {
18
+ if (!indexOptions) return null;
19
+ const { index, options } = indexOptions;
20
+ try {
21
+ await collection.createIndex(index, options);
22
+ return null;
23
+ } catch (e: any) {
24
+ logger.error(e);
25
+ return e as Error;
26
+ }
27
+ }),
28
+ )
29
+ ).filter(Boolean) as Error[];
30
+ return errors;
31
+ };
25
32
 
26
33
  export const buildDbIndexes = async <T extends Document>(
27
34
  collection: Collection<T>,
@@ -1,4 +1,4 @@
1
- import { Collection, FindOptions, Filter } from 'mongodb';
1
+ import { Collection, FindOptions, Filter, Document } from 'mongodb';
2
2
 
3
3
  const sortByIndex = {
4
4
  index: 1,
@@ -7,7 +7,7 @@ const sortByIndex = {
7
7
  const defaultSort = sortByIndex;
8
8
 
9
9
  export const findPreservingIds =
10
- <T>(
10
+ <T extends Document>(
11
11
  collection: Collection<T>,
12
12
  ): ((selector: Filter<T>, ids: string[], options?: FindOptions) => Promise<T[]>) =>
13
13
  async (selector: Filter<T>, ids: string[], options?: FindOptions): Promise<T[]> => {
@@ -17,7 +17,7 @@ export const findPreservingIds =
17
17
  _id: { $in: ids },
18
18
  };
19
19
 
20
- const filteredPipeline = [
20
+ const filteredPipeline: any = [
21
21
  {
22
22
  $match: filteredSelector,
23
23
  },
@@ -1,6 +1,6 @@
1
1
  import { Filter } from 'mongodb';
2
2
 
3
- export const generateDbFilterById = <T extends { _id?: string }>(
3
+ export const generateDbFilterById = <T extends { _id: string }>(
4
4
  id: unknown,
5
5
  query: Filter<T> = {},
6
6
  ): Filter<T> => {
package/src/initDb.ts CHANGED
@@ -4,6 +4,8 @@ let zstdEnabled = false;
4
4
  let mongod;
5
5
  let mongoClient: MongoClient | null;
6
6
 
7
+ const { PORT = '4010' } = process.env;
8
+
7
9
  try {
8
10
  // eslint-disable-next-line
9
11
  // @ts-expect-error
@@ -25,11 +27,11 @@ export const startDb = async () => {
25
27
  mongod = MongoMemoryServer.create({
26
28
  instance:
27
29
  process.env.NODE_ENV === 'test'
28
- ? { dbName: 'test', port: parseInt(process.env.PORT, 10) + 1 }
30
+ ? { dbName: 'test', port: parseInt(PORT, 10) + 1 }
29
31
  : {
30
32
  dbPath: `${process.cwd()}/.db`,
31
33
  storageEngine: 'wiredTiger',
32
- port: parseInt(process.env.PORT, 10) + 1,
34
+ port: parseInt(PORT, 10) + 1,
33
35
  },
34
36
  });
35
37
  const mongoInstance = await mongod;
@@ -18,17 +18,24 @@ export * from './documentdb-compat-mode.js';
18
18
  export { mongodb };
19
19
 
20
20
  export interface LogFields {
21
- log: {
22
- date: Date;
23
- status?: string;
24
- info: string;
25
- }[];
21
+ log: (
22
+ | {
23
+ date: Date;
24
+ status: string | null;
25
+ info?: string;
26
+ }
27
+ | {
28
+ date: Date;
29
+ status?: string;
30
+ info: string;
31
+ }
32
+ )[];
26
33
  }
27
34
 
28
35
  export interface TimestampFields {
29
- created?: Date;
36
+ created: Date;
30
37
  updated?: Date;
31
- deleted?: Date;
38
+ deleted?: Date | null;
32
39
  }
33
40
 
34
41
  export interface Address {
@@ -63,6 +70,6 @@ export interface MigrationRepository<Context = unknown> {
63
70
 
64
71
  export interface ModuleInput<Options extends Record<string, any>> {
65
72
  db: mongodb.Db;
66
- migrationRepository?: MigrationRepository;
73
+ migrationRepository: MigrationRepository;
67
74
  options?: Options;
68
75
  }
package/tsconfig.json CHANGED
@@ -3,7 +3,8 @@
3
3
  "compilerOptions": {
4
4
  "declarationDir": "./lib",
5
5
  "rootDir": "./src",
6
- "outDir": "./lib"
6
+ "outDir": "./lib",
7
+
7
8
  },
8
9
  "exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
9
10
  }