ts-patch-mongoose 2.3.0 → 2.4.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.
Files changed (61) hide show
  1. package/README.md +9 -6
  2. package/dist/cjs/helpers.js +12 -0
  3. package/dist/cjs/helpers.js.map +1 -0
  4. package/dist/cjs/hooks/delete-hooks.js +55 -0
  5. package/dist/cjs/hooks/delete-hooks.js.map +1 -0
  6. package/dist/cjs/hooks/save-hooks.js +28 -0
  7. package/dist/cjs/hooks/save-hooks.js.map +1 -0
  8. package/dist/cjs/hooks/update-hooks.js +89 -0
  9. package/dist/cjs/hooks/update-hooks.js.map +1 -0
  10. package/dist/cjs/plugin.js +26 -163
  11. package/dist/cjs/plugin.js.map +1 -1
  12. package/dist/cjs/types/helpers.d.ts +4 -0
  13. package/dist/cjs/types/helpers.d.ts.map +1 -0
  14. package/dist/cjs/types/hooks/delete-hooks.d.ts +28 -0
  15. package/dist/cjs/types/hooks/delete-hooks.d.ts.map +1 -0
  16. package/dist/cjs/types/hooks/save-hooks.d.ts +28 -0
  17. package/dist/cjs/types/hooks/save-hooks.d.ts.map +1 -0
  18. package/dist/cjs/types/hooks/update-hooks.d.ts +33 -0
  19. package/dist/cjs/types/hooks/update-hooks.d.ts.map +1 -0
  20. package/dist/cjs/types/models/History.d.ts +7 -1
  21. package/dist/cjs/types/models/History.d.ts.map +1 -1
  22. package/dist/cjs/types/plugin.d.ts +3 -1
  23. package/dist/cjs/types/plugin.d.ts.map +1 -1
  24. package/dist/cjs/types/version.d.ts +1 -0
  25. package/dist/cjs/types/version.d.ts.map +1 -1
  26. package/dist/cjs/version.js +2 -1
  27. package/dist/cjs/version.js.map +1 -1
  28. package/dist/esm/helpers.js +12 -0
  29. package/dist/esm/helpers.js.map +1 -0
  30. package/dist/esm/hooks/delete-hooks.js +55 -0
  31. package/dist/esm/hooks/delete-hooks.js.map +1 -0
  32. package/dist/esm/hooks/save-hooks.js +28 -0
  33. package/dist/esm/hooks/save-hooks.js.map +1 -0
  34. package/dist/esm/hooks/update-hooks.js +89 -0
  35. package/dist/esm/hooks/update-hooks.js.map +1 -0
  36. package/dist/esm/plugin.js.map +1 -1
  37. package/dist/esm/plugin.mjs +26 -163
  38. package/dist/esm/types/helpers.d.ts +4 -0
  39. package/dist/esm/types/helpers.d.ts.map +1 -0
  40. package/dist/esm/types/hooks/delete-hooks.d.ts +28 -0
  41. package/dist/esm/types/hooks/delete-hooks.d.ts.map +1 -0
  42. package/dist/esm/types/hooks/save-hooks.d.ts +28 -0
  43. package/dist/esm/types/hooks/save-hooks.d.ts.map +1 -0
  44. package/dist/esm/types/hooks/update-hooks.d.ts +33 -0
  45. package/dist/esm/types/hooks/update-hooks.d.ts.map +1 -0
  46. package/dist/esm/types/models/History.d.ts +7 -1
  47. package/dist/esm/types/models/History.d.ts.map +1 -1
  48. package/dist/esm/types/plugin.d.ts +3 -1
  49. package/dist/esm/types/plugin.d.ts.map +1 -1
  50. package/dist/esm/types/version.d.ts +1 -0
  51. package/dist/esm/types/version.d.ts.map +1 -1
  52. package/dist/esm/version.js +2 -1
  53. package/dist/esm/version.js.map +1 -1
  54. package/package.json +12 -12
  55. package/src/helpers.ts +10 -0
  56. package/src/hooks/delete-hooks.ts +59 -0
  57. package/src/hooks/save-hooks.ts +29 -0
  58. package/src/hooks/update-hooks.ts +100 -0
  59. package/src/plugin.ts +42 -194
  60. package/src/version.ts +1 -0
  61. package/tests/plugin-event-deleted.test.ts +13 -10
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  /// <reference types="mongoose/types/aggregate" />
2
3
  /// <reference types="mongoose/types/callback" />
3
4
  /// <reference types="mongoose/types/collection" />
@@ -25,6 +26,7 @@
25
26
  import type { Model, Schema } from 'mongoose';
26
27
  import type IPluginOptions from './interfaces/IPluginOptions';
27
28
  export declare const patchEventEmitter: {
29
+ [EventEmitter.captureRejectionSymbol]?(error: Error, event: string, ...args: any[]): void;
28
30
  addListener(eventName: string | symbol, listener: (...args: any[]) => void): any;
29
31
  on(eventName: string | symbol, listener: (...args: any[]) => void): any;
30
32
  once(eventName: string | symbol, listener: (...args: any[]) => void): any;
@@ -41,5 +43,5 @@ export declare const patchEventEmitter: {
41
43
  prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): any;
42
44
  eventNames(): (string | symbol)[];
43
45
  };
44
- export declare const patchHistoryPlugin: <T>(schema: Schema<T, Model<T, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, T, import("mongoose").DefaultSchemaOptions>>, opts: IPluginOptions<T>) => void;
46
+ export declare const patchHistoryPlugin: <T>(schema: Schema<T, Model<T, any, any, any, import("mongoose").IfAny<T, any, import("mongoose").Document<unknown, any, T> & import("mongoose").Require_id<T>>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>, import("mongoose").IfAny<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, any, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>> & import("mongoose").Require_id<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>>>>, opts: IPluginOptions<T>) => void;
45
47
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAAyC,MAAM,EAA+D,MAAM,UAAU,CAAA;AAEnK,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AA0E7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IA4IlG,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA,OAAO,KAAK,EAAoB,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAQ7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,y8BAAoE,IA+ClG,CAAA"}
@@ -1,3 +1,4 @@
1
+ export declare const isMongooseLessThan8: boolean;
1
2
  export declare const isMongooseLessThan7: boolean;
2
3
  export declare const isMongoose6: boolean;
3
4
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,SAAoC,CAAA;AACpE,eAAO,MAAM,WAAW,SAAmC,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,SAAoC,CAAA;AACpE,eAAO,MAAM,mBAAmB,SAAoC,CAAA;AACpE,eAAO,MAAM,WAAW,SAAmC,CAAA"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMongoose6 = exports.isMongooseLessThan7 = void 0;
3
+ exports.isMongoose6 = exports.isMongooseLessThan7 = exports.isMongooseLessThan8 = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const semver_1 = require("semver");
6
6
  const mongoose_1 = tslib_1.__importDefault(require("mongoose"));
7
+ exports.isMongooseLessThan8 = (0, semver_1.satisfies)(mongoose_1.default.version, '<8');
7
8
  exports.isMongooseLessThan7 = (0, semver_1.satisfies)(mongoose_1.default.version, '<7');
8
9
  exports.isMongoose6 = (0, semver_1.satisfies)(mongoose_1.default.version, '6');
9
10
  if (exports.isMongoose6) {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;;AAAA,mCAAkC;AAClC,gEAA+B;AAElB,QAAA,mBAAmB,GAAG,IAAA,kBAAS,EAAC,kBAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvD,QAAA,WAAW,GAAG,IAAA,kBAAS,EAAC,kBAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3D,IAAI,mBAAW,EAAE;IACf,kBAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;CACnC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;;AAAA,mCAAkC;AAClC,gEAA+B;AAElB,QAAA,mBAAmB,GAAG,IAAA,kBAAS,EAAC,kBAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvD,QAAA,mBAAmB,GAAG,IAAA,kBAAS,EAAC,kBAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvD,QAAA,WAAW,GAAG,IAAA,kBAAS,EAAC,kBAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3D,IAAI,mBAAW,EAAE;IACf,kBAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;CACnC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toObjectOptions = exports.isHookIgnored = void 0;
4
+ const isHookIgnored = (options) => {
5
+ return options.ignoreHook === true || (options.ignoreEvent === true && options.ignorePatchHistory === true);
6
+ };
7
+ exports.isHookIgnored = isHookIgnored;
8
+ exports.toObjectOptions = {
9
+ depopulate: true,
10
+ virtuals: false
11
+ };
12
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;AAEO,MAAM,aAAa,GAAG,CAAI,OAAwB,EAAW,EAAE;IACpE,OAAO,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAA;AAC7G,CAAC,CAAA;AAFY,QAAA,aAAa,iBAEzB;AAEY,QAAA,eAAe,GAAoB;IAC9C,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;CAChB,CAAA"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteHooksInitialize = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
+ const patch_1 = require("../patch");
7
+ const helpers_1 = require("../helpers");
8
+ const deleteMethods = [
9
+ 'remove',
10
+ 'findOneAndDelete',
11
+ 'findOneAndRemove',
12
+ 'findByIdAndDelete',
13
+ 'findByIdAndRemove',
14
+ 'deleteOne',
15
+ 'deleteMany'
16
+ ];
17
+ const deleteHooksInitialize = (schema, opts) => {
18
+ schema.pre(deleteMethods, { document: false, query: true }, async function () {
19
+ const options = this.getOptions();
20
+ if ((0, helpers_1.isHookIgnored)(options))
21
+ return;
22
+ const model = this.model;
23
+ const filter = this.getFilter();
24
+ this._context = {
25
+ op: this.op,
26
+ modelName: opts.modelName ?? this.model.modelName,
27
+ collectionName: opts.collectionName ?? this.model.collection.collectionName,
28
+ ignoreEvent: options.ignoreEvent,
29
+ ignorePatchHistory: options.ignorePatchHistory
30
+ };
31
+ if (['remove', 'deleteMany'].includes(this._context.op) && !options.single) {
32
+ const docs = await model.find(filter).lean().exec();
33
+ if (!lodash_1.default.isEmpty(docs)) {
34
+ this._context.deletedDocs = docs;
35
+ }
36
+ }
37
+ else {
38
+ const doc = await model.findOne(filter).lean().exec();
39
+ if (!lodash_1.default.isEmpty(doc)) {
40
+ this._context.deletedDocs = [doc];
41
+ }
42
+ }
43
+ if (opts.preDelete && lodash_1.default.isArray(this._context.deletedDocs) && !lodash_1.default.isEmpty(this._context.deletedDocs)) {
44
+ await opts.preDelete(this._context.deletedDocs);
45
+ }
46
+ });
47
+ schema.post(deleteMethods, { document: false, query: true }, async function () {
48
+ const options = this.getOptions();
49
+ if ((0, helpers_1.isHookIgnored)(options))
50
+ return;
51
+ await (0, patch_1.deletePatch)(opts, this._context);
52
+ });
53
+ };
54
+ exports.deleteHooksInitialize = deleteHooksInitialize;
55
+ //# sourceMappingURL=delete-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-hooks.js","sourceRoot":"","sources":["../../../src/hooks/delete-hooks.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AAEtB,oCAAsC;AACtC,wCAA0C;AAM1C,MAAM,aAAa,GAAG;IACpB,QAAQ;IACR,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,WAAW;IACX,YAAY;CACb,CAAA;AAEM,MAAM,qBAAqB,GAAG,CAAI,MAAiB,EAAE,IAAuB,EAAQ,EAAE;IAC3F,MAAM,CAAC,GAAG,CAAC,aAA0C,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK;QAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC;YAAE,OAAM;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAiB,CAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAE/B,IAAI,CAAC,QAAQ,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc;YAC3E,WAAW,EAAE,OAAO,CAAC,WAAsB;YAC3C,kBAAkB,EAAE,OAAO,CAAC,kBAA6B;SAC1D,CAAA;QAED,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC1E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YACnD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAA6B,CAAA;aAC1D;SACF;aAAM;YACL,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YACrD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,GAAG,CAA0B,CAAA;aAC3D;SACF;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;SAChD;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,aAA0C,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK;QAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC;YAAE,OAAM;QAElC,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAvCY,QAAA,qBAAqB,yBAuCjC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveHooksInitialize = void 0;
4
+ const patch_1 = require("../patch");
5
+ const helpers_1 = require("../helpers");
6
+ const saveHooksInitialize = (schema, opts) => {
7
+ schema.pre('save', async function () {
8
+ const current = this.toObject(helpers_1.toObjectOptions);
9
+ const model = this.constructor;
10
+ const context = {
11
+ op: this.isNew ? 'create' : 'update',
12
+ modelName: opts.modelName ?? model.modelName,
13
+ collectionName: opts.collectionName ?? model.collection.collectionName,
14
+ createdDocs: [current]
15
+ };
16
+ if (this.isNew) {
17
+ await (0, patch_1.createPatch)(opts, context);
18
+ }
19
+ else {
20
+ const original = await model.findById(current._id).lean().exec();
21
+ if (original) {
22
+ await (0, patch_1.updatePatch)(opts, context, current, original);
23
+ }
24
+ }
25
+ });
26
+ };
27
+ exports.saveHooksInitialize = saveHooksInitialize;
28
+ //# sourceMappingURL=save-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-hooks.js","sourceRoot":"","sources":["../../../src/hooks/save-hooks.ts"],"names":[],"mappings":";;;AAAA,oCAAmD;AACnD,wCAA4C;AAMrC,MAAM,mBAAmB,GAAG,CAAI,MAAiB,EAAE,IAAuB,EAAQ,EAAE;IACzF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,yBAAe,CAAwB,CAAA;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAuB,CAAA;QAE1C,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAC5C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc;YACtE,WAAW,EAAE,CAAC,OAAO,CAAC;SACvB,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;SACjC;aAAM;YACL,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAChE,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAA+B,CAAC,CAAA;aAC3E;SACF;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AArBY,QAAA,mBAAmB,uBAqB/B"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateHooksInitialize = exports.splitUpdateAndCommands = exports.assignUpdate = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
+ const power_assign_1 = require("power-assign");
7
+ const patch_1 = require("../patch");
8
+ const helpers_1 = require("../helpers");
9
+ const updateMethods = [
10
+ 'update',
11
+ 'updateOne',
12
+ 'replaceOne',
13
+ 'updateMany',
14
+ 'findOneAndUpdate',
15
+ 'findOneAndReplace',
16
+ 'findByIdAndUpdate'
17
+ ];
18
+ const assignUpdate = (document, update, commands) => {
19
+ let updated = (0, power_assign_1.assign)(document, update);
20
+ lodash_1.default.forEach(commands, (command) => {
21
+ try {
22
+ updated = (0, power_assign_1.assign)(updated, command);
23
+ }
24
+ catch {
25
+ }
26
+ });
27
+ return updated;
28
+ };
29
+ exports.assignUpdate = assignUpdate;
30
+ const splitUpdateAndCommands = (updateQuery) => {
31
+ let update = {};
32
+ const commands = [];
33
+ if (!lodash_1.default.isEmpty(updateQuery) && !lodash_1.default.isArray(updateQuery) && lodash_1.default.isObjectLike(updateQuery)) {
34
+ update = lodash_1.default.cloneDeep(updateQuery);
35
+ const keys = lodash_1.default.keys(update).filter((key) => key.startsWith('$'));
36
+ if (!lodash_1.default.isEmpty(keys)) {
37
+ lodash_1.default.forEach(keys, (key) => {
38
+ commands.push({ [key]: update[key] });
39
+ delete update[key];
40
+ });
41
+ }
42
+ }
43
+ return { update, commands };
44
+ };
45
+ exports.splitUpdateAndCommands = splitUpdateAndCommands;
46
+ const updateHooksInitialize = (schema, opts) => {
47
+ schema.pre(updateMethods, async function () {
48
+ const options = this.getOptions();
49
+ if ((0, helpers_1.isHookIgnored)(options))
50
+ return;
51
+ const model = this.model;
52
+ const filter = this.getFilter();
53
+ const count = await this.model.countDocuments(filter).exec();
54
+ this._context = {
55
+ op: this.op,
56
+ modelName: opts.modelName ?? this.model.modelName,
57
+ collectionName: opts.collectionName ?? this.model.collection.collectionName,
58
+ isNew: options.upsert && count === 0,
59
+ ignoreEvent: options.ignoreEvent,
60
+ ignorePatchHistory: options.ignorePatchHistory
61
+ };
62
+ const updateQuery = this.getUpdate();
63
+ const { update, commands } = (0, exports.splitUpdateAndCommands)(updateQuery);
64
+ const cursor = model.find(filter).lean().cursor();
65
+ await cursor.eachAsync(async (doc) => {
66
+ await (0, patch_1.updatePatch)(opts, this._context, (0, exports.assignUpdate)(doc, update, commands), doc);
67
+ });
68
+ });
69
+ schema.post(updateMethods, async function () {
70
+ const options = this.getOptions();
71
+ if ((0, helpers_1.isHookIgnored)(options))
72
+ return;
73
+ if (!this._context.isNew)
74
+ return;
75
+ const model = this.model;
76
+ const updateQuery = this.getUpdate();
77
+ const { update, commands } = (0, exports.splitUpdateAndCommands)(updateQuery);
78
+ const filter = (0, exports.assignUpdate)({}, update, commands);
79
+ if (!lodash_1.default.isEmpty(filter)) {
80
+ const current = await model.findOne(update).lean().exec();
81
+ if (current) {
82
+ this._context.createdDocs = [current];
83
+ await (0, patch_1.createPatch)(opts, this._context);
84
+ }
85
+ }
86
+ });
87
+ };
88
+ exports.updateHooksInitialize = updateHooksInitialize;
89
+ //# sourceMappingURL=update-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-hooks.js","sourceRoot":"","sources":["../../../src/hooks/update-hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AACtB,sDAAqB;AAErB,mCAAkD;AAClD,uCAAoE;AACpE,uCAA2C;AAE3C,mDAAwD;AACxD,uDAA4D;AAC5D,uDAA4D;AAM5D,MAAM,MAAM,GAAG,6BAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;AAK9C,QAAA,iBAAiB,GAAG,YAAE,CAAA;AAQ5B,MAAM,kBAAkB,GAAG,SAAS,MAAM,CAAK,MAAiB,EAAE,IAAuB;IAE9F,IAAA,gCAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjC,IAAA,oCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,IAAA,oCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAGnC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,WAAW,IAAI;QAC5C,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,QAAQ;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc;YACrE,WAAW,EAAE,IAAwC;SACtD,CAAA;QAED,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAIF,IAAI,6BAAmB,EAAE;QAEvB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK;YAGxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,yBAAe,CAAwB,CAAA;YAEtE,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;aACjC;QACH,CAAC,CAAC,CAAA;QAGF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,yBAAe,CAAwB,CAAA;YACtE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAuB,CAAA;YAE1C,MAAM,OAAO,GAAgB;gBAC3B,EAAE,EAAE,QAAQ;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;gBAC5C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc;gBACtE,WAAW,EAAE,CAAC,QAAQ,CAAC;aACxB,CAAA;YAED,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AA/CY,QAAA,kBAAkB,sBA+C9B"}
@@ -3,83 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.patchHistoryPlugin = exports.patchEventEmitter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const lodash_1 = tslib_1.__importDefault(require("lodash"));
6
- const power_assign_1 = require("power-assign");
6
+ const em_1 = tslib_1.__importDefault(require("./em"));
7
7
  const patch_1 = require("./patch");
8
8
  const version_1 = require("./version");
9
- const em_1 = tslib_1.__importDefault(require("./em"));
9
+ const helpers_1 = require("./helpers");
10
+ const save_hooks_1 = require("./hooks/save-hooks");
11
+ const update_hooks_1 = require("./hooks/update-hooks");
12
+ const delete_hooks_1 = require("./hooks/delete-hooks");
10
13
  const remove = version_1.isMongooseLessThan7 ? 'remove' : 'deleteOne';
11
- const toObjectOptions = {
12
- depopulate: true,
13
- virtuals: false
14
- };
15
- const updateMethods = [
16
- 'update',
17
- 'updateOne',
18
- 'replaceOne',
19
- 'updateMany',
20
- 'findOneAndUpdate',
21
- 'findOneAndReplace',
22
- 'findByIdAndUpdate'
23
- ];
24
- const deleteMethods = [
25
- 'remove',
26
- 'findOneAndDelete',
27
- 'findOneAndRemove',
28
- 'findByIdAndDelete',
29
- 'findByIdAndRemove',
30
- 'deleteOne',
31
- 'deleteMany'
32
- ];
33
- function isHookIgnored(options) {
34
- return options.ignoreHook === true || (options.ignoreEvent === true && options.ignorePatchHistory === true);
35
- }
36
- function splitUpdateAndCommands(updateQuery) {
37
- let update = {};
38
- const commands = [];
39
- if (!lodash_1.default.isEmpty(updateQuery) && !lodash_1.default.isArray(updateQuery) && lodash_1.default.isObjectLike(updateQuery)) {
40
- update = lodash_1.default.cloneDeep(updateQuery);
41
- const keys = lodash_1.default.keys(update).filter((key) => key.startsWith('$'));
42
- if (!lodash_1.default.isEmpty(keys)) {
43
- lodash_1.default.forEach(keys, (key) => {
44
- commands.push({ [key]: update[key] });
45
- delete update[key];
46
- });
47
- }
48
- }
49
- return { update, commands };
50
- }
51
- function assignUpdate(document, update, commands) {
52
- let updated = (0, power_assign_1.assign)(document, update);
53
- lodash_1.default.forEach(commands, (command) => {
54
- try {
55
- updated = (0, power_assign_1.assign)(updated, command);
56
- }
57
- catch {
58
- }
59
- });
60
- return updated;
61
- }
62
14
  exports.patchEventEmitter = em_1.default;
63
15
  const patchHistoryPlugin = function plugin(schema, opts) {
64
- schema.pre('save', async function () {
65
- const current = this.toObject(toObjectOptions);
66
- const model = this.constructor;
67
- const context = {
68
- op: this.isNew ? 'create' : 'update',
69
- modelName: opts.modelName ?? model.modelName,
70
- collectionName: opts.collectionName ?? model.collection.collectionName,
71
- createdDocs: [current]
72
- };
73
- if (this.isNew) {
74
- await (0, patch_1.createPatch)(opts, context);
75
- }
76
- else {
77
- const original = await model.findById(current._id).lean().exec();
78
- if (original) {
79
- await (0, patch_1.updatePatch)(opts, context, current, original);
80
- }
81
- }
82
- });
16
+ (0, save_hooks_1.saveHooksInitialize)(schema, opts);
17
+ (0, update_hooks_1.updateHooksInitialize)(schema, opts);
18
+ (0, delete_hooks_1.deleteHooksInitialize)(schema, opts);
83
19
  schema.post('insertMany', async function (docs) {
84
20
  const context = {
85
21
  op: 'create',
@@ -89,98 +25,25 @@ const patchHistoryPlugin = function plugin(schema, opts) {
89
25
  };
90
26
  await (0, patch_1.createPatch)(opts, context);
91
27
  });
92
- schema.pre(updateMethods, async function () {
93
- const options = this.getOptions();
94
- if (isHookIgnored(options))
95
- return;
96
- const model = this.model;
97
- const filter = this.getFilter();
98
- const count = await this.model.count(filter).exec();
99
- this._context = {
100
- op: this.op,
101
- modelName: opts.modelName ?? this.model.modelName,
102
- collectionName: opts.collectionName ?? this.model.collection.collectionName,
103
- isNew: options.upsert && count === 0,
104
- ignoreEvent: options.ignoreEvent,
105
- ignorePatchHistory: options.ignorePatchHistory
106
- };
107
- const updateQuery = this.getUpdate();
108
- const { update, commands } = splitUpdateAndCommands(updateQuery);
109
- const cursor = model.find(filter).lean().cursor();
110
- await cursor.eachAsync(async (doc) => {
111
- await (0, patch_1.updatePatch)(opts, this._context, assignUpdate(doc, update, commands), doc);
112
- });
113
- });
114
- schema.post(updateMethods, async function () {
115
- const options = this.getOptions();
116
- if (isHookIgnored(options))
117
- return;
118
- if (!this._context.isNew)
119
- return;
120
- const model = this.model;
121
- const updateQuery = this.getUpdate();
122
- const { update, commands } = splitUpdateAndCommands(updateQuery);
123
- const filter = assignUpdate({}, update, commands);
124
- if (!lodash_1.default.isEmpty(filter)) {
125
- const current = await model.findOne(update).lean().exec();
126
- if (current) {
127
- this._context.createdDocs = [current];
128
- await (0, patch_1.createPatch)(opts, this._context);
28
+ if (version_1.isMongooseLessThan8) {
29
+ schema.pre(remove, { document: true, query: false }, async function () {
30
+ const original = this.toObject(helpers_1.toObjectOptions);
31
+ if (opts.preDelete && !lodash_1.default.isEmpty(original)) {
32
+ await opts.preDelete([original]);
129
33
  }
130
- }
131
- });
132
- schema.pre(remove, { document: true, query: false }, async function () {
133
- const original = this.toObject(toObjectOptions);
134
- if (opts.preDelete && !lodash_1.default.isEmpty(original)) {
135
- await opts.preDelete([original]);
136
- }
137
- });
138
- schema.post(remove, { document: true, query: false }, async function () {
139
- const original = this.toObject(toObjectOptions);
140
- const model = this.constructor;
141
- const context = {
142
- op: 'delete',
143
- modelName: opts.modelName ?? model.modelName,
144
- collectionName: opts.collectionName ?? model.collection.collectionName,
145
- deletedDocs: [original]
146
- };
147
- await (0, patch_1.deletePatch)(opts, context);
148
- });
149
- schema.pre(deleteMethods, { document: false, query: true }, async function () {
150
- const options = this.getOptions();
151
- if (isHookIgnored(options))
152
- return;
153
- const model = this.model;
154
- const filter = this.getFilter();
155
- this._context = {
156
- op: this.op,
157
- modelName: opts.modelName ?? this.model.modelName,
158
- collectionName: opts.collectionName ?? this.model.collection.collectionName,
159
- ignoreEvent: options.ignoreEvent,
160
- ignorePatchHistory: options.ignorePatchHistory
161
- };
162
- if (['remove', 'deleteMany'].includes(this._context.op) && !options.single) {
163
- const docs = await model.find(filter).lean().exec();
164
- if (!lodash_1.default.isEmpty(docs)) {
165
- this._context.deletedDocs = docs;
166
- }
167
- }
168
- else {
169
- const doc = await model.findOne(filter).lean().exec();
170
- if (!lodash_1.default.isEmpty(doc)) {
171
- this._context.deletedDocs = [doc];
172
- }
173
- }
174
- if (opts.preDelete && lodash_1.default.isArray(this._context.deletedDocs) && !lodash_1.default.isEmpty(this._context.deletedDocs)) {
175
- await opts.preDelete(this._context.deletedDocs);
176
- }
177
- });
178
- schema.post(deleteMethods, { document: false, query: true }, async function () {
179
- const options = this.getOptions();
180
- if (isHookIgnored(options))
181
- return;
182
- await (0, patch_1.deletePatch)(opts, this._context);
183
- });
34
+ });
35
+ schema.post(remove, { document: true, query: false }, async function () {
36
+ const original = this.toObject(helpers_1.toObjectOptions);
37
+ const model = this.constructor;
38
+ const context = {
39
+ op: 'delete',
40
+ modelName: opts.modelName ?? model.modelName,
41
+ collectionName: opts.collectionName ?? model.collection.collectionName,
42
+ deletedDocs: [original]
43
+ };
44
+ await (0, patch_1.deletePatch)(opts, context);
45
+ });
46
+ }
184
47
  };
185
48
  exports.patchHistoryPlugin = patchHistoryPlugin;
186
49
  //# sourceMappingURL=plugin.js.map
@@ -0,0 +1,4 @@
1
+ import type { QueryOptions, ToObjectOptions } from 'mongoose';
2
+ export declare const isHookIgnored: <T>(options: QueryOptions<T>) => boolean;
3
+ export declare const toObjectOptions: ToObjectOptions;
4
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE7D,eAAO,MAAM,aAAa,mCAAkC,OAE3D,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAG7B,CAAA"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
25
+ import type { Model, Schema } from 'mongoose';
26
+ import type IPluginOptions from '../interfaces/IPluginOptions';
27
+ export declare const deleteHooksInitialize: <T>(schema: Schema<T, Model<T, any, any, any, import("mongoose").IfAny<T, any, import("mongoose").Document<unknown, any, T> & import("mongoose").Require_id<T>>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>, import("mongoose").IfAny<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, any, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>> & import("mongoose").Require_id<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>>>>, opts: IPluginOptions<T>) => void;
28
+ //# sourceMappingURL=delete-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-hooks.d.ts","sourceRoot":"","sources":["../../../../src/hooks/delete-hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAAE,MAAM,UAAU,CAAA;AACxF,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAa9D,eAAO,MAAM,qBAAqB,y8BAAoD,IAuCrF,CAAA"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
25
+ import type { Model, Schema } from 'mongoose';
26
+ import type IPluginOptions from '../interfaces/IPluginOptions';
27
+ export declare const saveHooksInitialize: <T>(schema: Schema<T, Model<T, any, any, any, import("mongoose").IfAny<T, any, import("mongoose").Document<unknown, any, T> & import("mongoose").Require_id<T>>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>, import("mongoose").IfAny<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, any, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>> & import("mongoose").Require_id<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>>>>, opts: IPluginOptions<T>) => void;
28
+ //# sourceMappingURL=save-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-hooks.d.ts","sourceRoot":"","sources":["../../../../src/hooks/save-hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAG9D,eAAO,MAAM,mBAAmB,y8BAAoD,IAqBnF,CAAA"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
25
+ import type { HydratedDocument, Model, Schema, UpdateQuery, UpdateWithAggregationPipeline } from 'mongoose';
26
+ import type IPluginOptions from '../interfaces/IPluginOptions';
27
+ export declare const assignUpdate: <T>(document: HydratedDocument<T>, update: UpdateQuery<T>, commands: Record<string, unknown>[]) => HydratedDocument<T>;
28
+ export declare const splitUpdateAndCommands: <T>(updateQuery: UpdateWithAggregationPipeline | UpdateQuery<T> | null) => {
29
+ update: UpdateQuery<T>;
30
+ commands: Record<string, unknown>[];
31
+ };
32
+ export declare const updateHooksInitialize: <T>(schema: Schema<T, Model<T, any, any, any, import("mongoose").IfAny<T, any, import("mongoose").Document<unknown, any, T> & import("mongoose").Require_id<T>>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>, import("mongoose").IfAny<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, any, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>> & import("mongoose").Require_id<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, T, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>>>>, opts: IPluginOptions<T>) => void;
33
+ //# sourceMappingURL=update-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-hooks.d.ts","sourceRoot":"","sources":["../../../../src/hooks/update-hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAA2B,MAAM,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AACpI,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAA;AAa9D,eAAO,MAAM,YAAY,uEAAwE,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,wBAWzH,CAAA;AAED,eAAO,MAAM,sBAAsB;;cAAgH,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE;CAiB3K,CAAA;AAED,eAAO,MAAM,qBAAqB,y8BAAoD,IA+CrF,CAAA"}