ts-patch-mongoose 2.5.1 → 2.5.2
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/.eslintrc +17 -1
- package/README.md +7 -7
- package/dist/cjs/types/interfaces/IHistory.d.ts.map +1 -1
- package/dist/esm/em.js +3 -6
- package/dist/esm/em.js.map +1 -1
- package/dist/esm/helpers.js +2 -6
- package/dist/esm/helpers.js.map +1 -1
- package/dist/esm/hooks/delete-hooks.js +10 -15
- package/dist/esm/hooks/delete-hooks.js.map +1 -1
- package/dist/esm/hooks/save-hooks.js +6 -10
- package/dist/esm/hooks/save-hooks.js.map +1 -1
- package/dist/esm/hooks/update-hooks.js +23 -30
- package/dist/esm/hooks/update-hooks.js.map +1 -1
- package/dist/esm/interfaces/IContext.js +1 -2
- package/dist/esm/interfaces/IEvent.js +1 -2
- package/dist/esm/interfaces/IHistory.js +1 -2
- package/dist/esm/interfaces/IHookContext.js +1 -2
- package/dist/esm/interfaces/IPluginOptions.js +1 -2
- package/dist/esm/models/History.js +5 -7
- package/dist/esm/models/History.js.map +1 -1
- package/dist/esm/package.json +1 -0
- package/dist/esm/patch.js +30 -45
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/plugin.js +44 -0
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/types/interfaces/IHistory.d.ts.map +1 -1
- package/dist/esm/version.js +7 -11
- package/dist/esm/version.js.map +1 -1
- package/package.json +9 -8
- package/src/interfaces/IHistory.ts +1 -1
- package/tsconfig.json +4 -4
- package/dist/esm/plugin.mjs +0 -49
package/.eslintrc
CHANGED
|
@@ -25,7 +25,10 @@
|
|
|
25
25
|
"sourceType": "module"
|
|
26
26
|
},
|
|
27
27
|
"rules": {
|
|
28
|
-
"comma-dangle": [
|
|
28
|
+
"comma-dangle": [
|
|
29
|
+
"error",
|
|
30
|
+
"never"
|
|
31
|
+
],
|
|
29
32
|
"@typescript-eslint/array-type": "error",
|
|
30
33
|
"@typescript-eslint/consistent-type-imports": "error",
|
|
31
34
|
"@typescript-eslint/method-signature-style": "error",
|
|
@@ -86,6 +89,19 @@
|
|
|
86
89
|
"plugin:@typescript-eslint/stylistic-type-checked"
|
|
87
90
|
],
|
|
88
91
|
"rules": {
|
|
92
|
+
"@typescript-eslint/member-delimiter-style": [
|
|
93
|
+
"error",
|
|
94
|
+
{
|
|
95
|
+
"multiline": {
|
|
96
|
+
"delimiter": "none",
|
|
97
|
+
"requireLast": true
|
|
98
|
+
},
|
|
99
|
+
"singleline": {
|
|
100
|
+
"delimiter": "comma",
|
|
101
|
+
"requireLast": false
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
],
|
|
89
105
|
"@typescript-eslint/consistent-type-exports": "error",
|
|
90
106
|
"@typescript-eslint/explicit-function-return-type": "error",
|
|
91
107
|
"@typescript-eslint/explicit-module-boundary-types": "error",
|
package/README.md
CHANGED
|
@@ -32,13 +32,13 @@ I need to track changes of mongoose models and save them as patch history (audit
|
|
|
32
32
|
|
|
33
33
|
## Features
|
|
34
34
|
|
|
35
|
-
- Track changes in mongoose models
|
|
36
|
-
- Save changes in a separate collection as a patch history
|
|
37
|
-
- Emit events when a model is created, updated or deleted
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
35
|
+
- [x] Track changes in mongoose models
|
|
36
|
+
- [x] Save changes in a separate collection as a patch history
|
|
37
|
+
- [x] Emit events when a model is created, updated or deleted
|
|
38
|
+
- [x] Omit fields that you don't want to track in patch history
|
|
39
|
+
- [x] Subscribe to one/many types of event
|
|
40
|
+
- [x] Use events or patch history or both
|
|
41
|
+
- [x] Supports ESM and CommonJS
|
|
42
42
|
|
|
43
43
|
## Installation
|
|
44
44
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IHistory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IHistory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"IHistory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IHistory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;CACpB;AAED,eAAe,QAAQ,CAAA"}
|
package/dist/esm/em.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const events_1 = tslib_1.__importDefault(require("events"));
|
|
5
|
-
class PatchEventEmitter extends events_1.default {
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
class PatchEventEmitter extends EventEmitter {
|
|
6
3
|
}
|
|
7
4
|
const em = new PatchEventEmitter();
|
|
8
|
-
|
|
5
|
+
export default em;
|
|
9
6
|
//# sourceMappingURL=em.js.map
|
package/dist/esm/em.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"em.js","sourceRoot":"","sources":["../../src/em.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"em.js","sourceRoot":"","sources":["../../src/em.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,MAAM,iBAAkB,SAAQ,YAAY;CAAG;AAC/C,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAA;AAElC,eAAe,EAAE,CAAA"}
|
package/dist/esm/helpers.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toObjectOptions = exports.isHookIgnored = void 0;
|
|
4
|
-
const isHookIgnored = (options) => {
|
|
1
|
+
export const isHookIgnored = (options) => {
|
|
5
2
|
return options['ignoreHook'] === true || (options['ignoreEvent'] === true && options['ignorePatchHistory'] === true);
|
|
6
3
|
};
|
|
7
|
-
|
|
8
|
-
exports.toObjectOptions = {
|
|
4
|
+
export const toObjectOptions = {
|
|
9
5
|
depopulate: true,
|
|
10
6
|
virtuals: false
|
|
11
7
|
};
|
package/dist/esm/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,OAAwB,EAAW,EAAE;IACpE,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC,CAAA;AACtH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;CAChB,CAAA"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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");
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { deletePatch } from '../patch.js';
|
|
3
|
+
import { isHookIgnored } from '../helpers.js';
|
|
8
4
|
const deleteMethods = [
|
|
9
5
|
'remove',
|
|
10
6
|
'findOneAndDelete',
|
|
@@ -14,10 +10,10 @@ const deleteMethods = [
|
|
|
14
10
|
'deleteOne',
|
|
15
11
|
'deleteMany'
|
|
16
12
|
];
|
|
17
|
-
const deleteHooksInitialize = (schema, opts) => {
|
|
13
|
+
export const deleteHooksInitialize = (schema, opts) => {
|
|
18
14
|
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
19
15
|
const options = this.getOptions();
|
|
20
|
-
if (
|
|
16
|
+
if (isHookIgnored(options))
|
|
21
17
|
return;
|
|
22
18
|
const model = this.model;
|
|
23
19
|
const filter = this.getFilter();
|
|
@@ -30,26 +26,25 @@ const deleteHooksInitialize = (schema, opts) => {
|
|
|
30
26
|
};
|
|
31
27
|
if (['remove', 'deleteMany'].includes(this._context.op) && !options['single']) {
|
|
32
28
|
const docs = await model.find(filter).lean().exec();
|
|
33
|
-
if (!
|
|
29
|
+
if (!_.isEmpty(docs)) {
|
|
34
30
|
this._context.deletedDocs = docs;
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
else {
|
|
38
34
|
const doc = await model.findOne(filter).lean().exec();
|
|
39
|
-
if (!
|
|
35
|
+
if (!_.isEmpty(doc)) {
|
|
40
36
|
this._context.deletedDocs = [doc];
|
|
41
37
|
}
|
|
42
38
|
}
|
|
43
|
-
if (opts.preDelete &&
|
|
39
|
+
if (opts.preDelete && _.isArray(this._context.deletedDocs) && !_.isEmpty(this._context.deletedDocs)) {
|
|
44
40
|
await opts.preDelete(this._context.deletedDocs);
|
|
45
41
|
}
|
|
46
42
|
});
|
|
47
43
|
schema.post(deleteMethods, { document: false, query: true }, async function () {
|
|
48
44
|
const options = this.getOptions();
|
|
49
|
-
if (
|
|
45
|
+
if (isHookIgnored(options))
|
|
50
46
|
return;
|
|
51
|
-
await
|
|
47
|
+
await deletePatch(opts, this._context);
|
|
52
48
|
});
|
|
53
49
|
};
|
|
54
|
-
exports.deleteHooksInitialize = deleteHooksInitialize;
|
|
55
50
|
//# sourceMappingURL=delete-hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-hooks.js","sourceRoot":"","sources":["../../../src/hooks/delete-hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-hooks.js","sourceRoot":"","sources":["../../../src/hooks/delete-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM1C,MAAM,aAAa,GAAG;IACpB,QAAQ;IACR,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,WAAW;IACX,YAAY;CACb,CAAA;AAED,MAAM,CAAC,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,aAAa,CAAC,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,aAAa,CAAY;YAC9C,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAAY;SAC7D,CAAA;QAED,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YACnD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAA6B,CAAA;YAC3D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YACrD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,GAAG,CAA0B,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACjD,CAAC;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,aAAa,CAAC,OAAO,CAAC;YAAE,OAAM;QAElC,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const patch_1 = require("../patch");
|
|
5
|
-
const helpers_1 = require("../helpers");
|
|
6
|
-
const saveHooksInitialize = (schema, opts) => {
|
|
1
|
+
import { createPatch, updatePatch } from '../patch.js';
|
|
2
|
+
import { toObjectOptions } from '../helpers.js';
|
|
3
|
+
export const saveHooksInitialize = (schema, opts) => {
|
|
7
4
|
schema.pre('save', async function () {
|
|
8
|
-
const current = this.toObject(
|
|
5
|
+
const current = this.toObject(toObjectOptions);
|
|
9
6
|
const model = this.constructor;
|
|
10
7
|
const context = {
|
|
11
8
|
op: this.isNew ? 'create' : 'update',
|
|
@@ -14,15 +11,14 @@ const saveHooksInitialize = (schema, opts) => {
|
|
|
14
11
|
createdDocs: [current]
|
|
15
12
|
};
|
|
16
13
|
if (this.isNew) {
|
|
17
|
-
await
|
|
14
|
+
await createPatch(opts, context);
|
|
18
15
|
}
|
|
19
16
|
else {
|
|
20
17
|
const original = await model.findById(current._id).lean().exec();
|
|
21
18
|
if (original) {
|
|
22
|
-
await
|
|
19
|
+
await updatePatch(opts, context, current, original);
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
22
|
});
|
|
26
23
|
};
|
|
27
|
-
exports.saveHooksInitialize = saveHooksInitialize;
|
|
28
24
|
//# sourceMappingURL=save-hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-hooks.js","sourceRoot":"","sources":["../../../src/hooks/save-hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"save-hooks.js","sourceRoot":"","sources":["../../../src/hooks/save-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAM5C,MAAM,CAAC,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,eAAe,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,CAAC;YACf,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAChE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAA+B,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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");
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { assign } from 'power-assign';
|
|
3
|
+
import { createPatch, updatePatch } from '../patch.js';
|
|
4
|
+
import { isHookIgnored } from '../helpers.js';
|
|
9
5
|
const updateMethods = [
|
|
10
6
|
'update',
|
|
11
7
|
'updateOne',
|
|
@@ -15,26 +11,25 @@ const updateMethods = [
|
|
|
15
11
|
'findOneAndReplace',
|
|
16
12
|
'findByIdAndUpdate'
|
|
17
13
|
];
|
|
18
|
-
const assignUpdate = (document, update, commands) => {
|
|
19
|
-
let updated =
|
|
20
|
-
|
|
14
|
+
export const assignUpdate = (document, update, commands) => {
|
|
15
|
+
let updated = assign(document, update);
|
|
16
|
+
_.forEach(commands, (command) => {
|
|
21
17
|
try {
|
|
22
|
-
updated =
|
|
18
|
+
updated = assign(updated, command);
|
|
23
19
|
}
|
|
24
20
|
catch {
|
|
25
21
|
}
|
|
26
22
|
});
|
|
27
23
|
return updated;
|
|
28
24
|
};
|
|
29
|
-
|
|
30
|
-
const splitUpdateAndCommands = (updateQuery) => {
|
|
25
|
+
export const splitUpdateAndCommands = (updateQuery) => {
|
|
31
26
|
let update = {};
|
|
32
27
|
const commands = [];
|
|
33
|
-
if (!
|
|
34
|
-
update =
|
|
35
|
-
const keys =
|
|
36
|
-
if (!
|
|
37
|
-
|
|
28
|
+
if (!_.isEmpty(updateQuery) && !_.isArray(updateQuery) && _.isObjectLike(updateQuery)) {
|
|
29
|
+
update = _.cloneDeep(updateQuery);
|
|
30
|
+
const keys = _.keys(update).filter((key) => key.startsWith('$'));
|
|
31
|
+
if (!_.isEmpty(keys)) {
|
|
32
|
+
_.forEach(keys, (key) => {
|
|
38
33
|
commands.push({ [key]: update[key] });
|
|
39
34
|
delete update[key];
|
|
40
35
|
});
|
|
@@ -42,11 +37,10 @@ const splitUpdateAndCommands = (updateQuery) => {
|
|
|
42
37
|
}
|
|
43
38
|
return { update, commands };
|
|
44
39
|
};
|
|
45
|
-
|
|
46
|
-
const updateHooksInitialize = (schema, opts) => {
|
|
40
|
+
export const updateHooksInitialize = (schema, opts) => {
|
|
47
41
|
schema.pre(updateMethods, async function () {
|
|
48
42
|
const options = this.getOptions();
|
|
49
|
-
if (
|
|
43
|
+
if (isHookIgnored(options))
|
|
50
44
|
return;
|
|
51
45
|
const model = this.model;
|
|
52
46
|
const filter = this.getFilter();
|
|
@@ -60,30 +54,29 @@ const updateHooksInitialize = (schema, opts) => {
|
|
|
60
54
|
ignorePatchHistory: options['ignorePatchHistory']
|
|
61
55
|
};
|
|
62
56
|
const updateQuery = this.getUpdate();
|
|
63
|
-
const { update, commands } =
|
|
57
|
+
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
64
58
|
const cursor = model.find(filter).lean().cursor();
|
|
65
59
|
await cursor.eachAsync(async (doc) => {
|
|
66
|
-
await
|
|
60
|
+
await updatePatch(opts, this._context, assignUpdate(doc, update, commands), doc);
|
|
67
61
|
});
|
|
68
62
|
});
|
|
69
63
|
schema.post(updateMethods, async function () {
|
|
70
64
|
const options = this.getOptions();
|
|
71
|
-
if (
|
|
65
|
+
if (isHookIgnored(options))
|
|
72
66
|
return;
|
|
73
67
|
if (!this._context.isNew)
|
|
74
68
|
return;
|
|
75
69
|
const model = this.model;
|
|
76
70
|
const updateQuery = this.getUpdate();
|
|
77
|
-
const { update, commands } =
|
|
78
|
-
const filter =
|
|
79
|
-
if (!
|
|
71
|
+
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
72
|
+
const filter = assignUpdate({}, update, commands);
|
|
73
|
+
if (!_.isEmpty(filter)) {
|
|
80
74
|
const current = await model.findOne(update).lean().exec();
|
|
81
75
|
if (current) {
|
|
82
76
|
this._context.createdDocs = [current];
|
|
83
|
-
await
|
|
77
|
+
await createPatch(opts, this._context);
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
});
|
|
87
81
|
};
|
|
88
|
-
exports.updateHooksInitialize = updateHooksInitialize;
|
|
89
82
|
//# sourceMappingURL=update-hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-hooks.js","sourceRoot":"","sources":["../../../src/hooks/update-hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-hooks.js","sourceRoot":"","sources":["../../../src/hooks/update-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const mongoose_1 = require("mongoose");
|
|
4
|
-
const HistorySchema = new mongoose_1.Schema({
|
|
1
|
+
import { Schema, model } from 'mongoose';
|
|
2
|
+
const HistorySchema = new Schema({
|
|
5
3
|
op: {
|
|
6
4
|
type: String,
|
|
7
5
|
required: true
|
|
@@ -15,7 +13,7 @@ const HistorySchema = new mongoose_1.Schema({
|
|
|
15
13
|
required: true
|
|
16
14
|
},
|
|
17
15
|
collectionId: {
|
|
18
|
-
type:
|
|
16
|
+
type: Schema.Types.ObjectId,
|
|
19
17
|
required: true
|
|
20
18
|
},
|
|
21
19
|
doc: {
|
|
@@ -41,6 +39,6 @@ const HistorySchema = new mongoose_1.Schema({
|
|
|
41
39
|
}, { timestamps: true });
|
|
42
40
|
HistorySchema.index({ collectionId: 1, version: -1 });
|
|
43
41
|
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, reason: 1, version: 1 });
|
|
44
|
-
const History =
|
|
45
|
-
|
|
42
|
+
const History = model('History', HistorySchema, 'history');
|
|
43
|
+
export default History;
|
|
46
44
|
//# sourceMappingURL=History.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../../src/models/History.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../../src/models/History.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAIxC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAW;IACzC,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,QAAQ,EAAE,IAAI;KACf;IACD,GAAG,EAAE;QACH,IAAI,EAAE,MAAM;KACb;IACD,KAAK,EAAE;QACL,IAAI,EAAE,KAAK;KACZ;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;KACb;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;KACb;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;KACb;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,CAAC;QACN,OAAO,EAAE,CAAC;KACX;CACF,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;AAExB,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;AACrD,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AAEvG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAE1D,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "module" }
|
package/dist/esm/patch.js
CHANGED
|
@@ -1,51 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const omit_deep_1 = tslib_1.__importDefault(require("omit-deep"));
|
|
7
|
-
const fast_json_patch_1 = tslib_1.__importDefault(require("fast-json-patch"));
|
|
8
|
-
const History_1 = tslib_1.__importDefault(require("./models/History"));
|
|
9
|
-
const em_1 = tslib_1.__importDefault(require("./em"));
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import omit from 'omit-deep';
|
|
3
|
+
import jsonpatch from 'fast-json-patch';
|
|
4
|
+
import History from './models/History.js';
|
|
5
|
+
import em from './em.js';
|
|
10
6
|
function isPatchHistoryEnabled(opts, context) {
|
|
11
7
|
return !opts.patchHistoryDisabled && !context.ignorePatchHistory;
|
|
12
8
|
}
|
|
13
|
-
function getObjects(opts, current, original) {
|
|
9
|
+
export function getObjects(opts, current, original) {
|
|
14
10
|
let currentObject = JSON.parse(JSON.stringify(current));
|
|
15
11
|
let originalObject = JSON.parse(JSON.stringify(original));
|
|
16
12
|
if (opts.omit) {
|
|
17
|
-
currentObject = (
|
|
18
|
-
originalObject = (
|
|
13
|
+
currentObject = omit(currentObject, opts.omit);
|
|
14
|
+
originalObject = omit(originalObject, opts.omit);
|
|
19
15
|
}
|
|
20
16
|
return { currentObject, originalObject };
|
|
21
17
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (lodash_1.default.isFunction(opts.getUser)) {
|
|
18
|
+
export async function getUser(opts) {
|
|
19
|
+
if (_.isFunction(opts.getUser)) {
|
|
25
20
|
return await opts.getUser();
|
|
26
21
|
}
|
|
27
22
|
return undefined;
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (lodash_1.default.isFunction(opts.getReason)) {
|
|
24
|
+
export async function getReason(opts) {
|
|
25
|
+
if (_.isFunction(opts.getReason)) {
|
|
32
26
|
return await opts.getReason();
|
|
33
27
|
}
|
|
34
28
|
return undefined;
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (lodash_1.default.isFunction(opts.getMetadata)) {
|
|
30
|
+
export async function getMetadata(opts) {
|
|
31
|
+
if (_.isFunction(opts.getMetadata)) {
|
|
39
32
|
return await opts.getMetadata();
|
|
40
33
|
}
|
|
41
34
|
return undefined;
|
|
42
35
|
}
|
|
43
|
-
|
|
44
|
-
function getValue(item) {
|
|
36
|
+
export function getValue(item) {
|
|
45
37
|
return item.status === 'fulfilled' ? item.value : undefined;
|
|
46
38
|
}
|
|
47
|
-
|
|
48
|
-
async function getData(opts) {
|
|
39
|
+
export async function getData(opts) {
|
|
49
40
|
return Promise
|
|
50
41
|
.allSettled([getUser(opts), getReason(opts), getMetadata(opts)])
|
|
51
42
|
.then(([user, reason, metadata]) => {
|
|
@@ -56,22 +47,20 @@ async function getData(opts) {
|
|
|
56
47
|
];
|
|
57
48
|
});
|
|
58
49
|
}
|
|
59
|
-
|
|
60
|
-
function emitEvent(context, event, data) {
|
|
50
|
+
export function emitEvent(context, event, data) {
|
|
61
51
|
if (event && !context.ignoreEvent) {
|
|
62
|
-
|
|
52
|
+
em.emit(event, data);
|
|
63
53
|
}
|
|
64
54
|
}
|
|
65
|
-
|
|
66
|
-
async function bulkPatch(opts, context, eventKey, docsKey) {
|
|
55
|
+
export async function bulkPatch(opts, context, eventKey, docsKey) {
|
|
67
56
|
const history = isPatchHistoryEnabled(opts, context);
|
|
68
57
|
const event = opts[eventKey];
|
|
69
58
|
const docs = context[docsKey];
|
|
70
59
|
const key = eventKey === 'eventCreated' ? 'doc' : 'oldDoc';
|
|
71
|
-
if (
|
|
60
|
+
if (_.isEmpty(docs) || (!event && !history))
|
|
72
61
|
return;
|
|
73
62
|
const [user, reason, metadata] = await getData(opts);
|
|
74
|
-
const chunks =
|
|
63
|
+
const chunks = _.chunk(docs, 1000);
|
|
75
64
|
for await (const chunk of chunks) {
|
|
76
65
|
const bulk = [];
|
|
77
66
|
for (const doc of chunk) {
|
|
@@ -95,32 +84,30 @@ async function bulkPatch(opts, context, eventKey, docsKey) {
|
|
|
95
84
|
}
|
|
96
85
|
}
|
|
97
86
|
if (history) {
|
|
98
|
-
await
|
|
87
|
+
await History.bulkWrite(bulk, { ordered: false });
|
|
99
88
|
}
|
|
100
89
|
}
|
|
101
90
|
}
|
|
102
|
-
|
|
103
|
-
async function createPatch(opts, context) {
|
|
91
|
+
export async function createPatch(opts, context) {
|
|
104
92
|
await bulkPatch(opts, context, 'eventCreated', 'createdDocs');
|
|
105
93
|
}
|
|
106
|
-
|
|
107
|
-
async function updatePatch(opts, context, current, original) {
|
|
94
|
+
export async function updatePatch(opts, context, current, original) {
|
|
108
95
|
const history = isPatchHistoryEnabled(opts, context);
|
|
109
96
|
const { currentObject, originalObject } = getObjects(opts, current, original);
|
|
110
|
-
if (
|
|
97
|
+
if (_.isEmpty(originalObject) || _.isEmpty(currentObject))
|
|
111
98
|
return;
|
|
112
|
-
const patch =
|
|
113
|
-
if (
|
|
99
|
+
const patch = jsonpatch.compare(originalObject, currentObject, true);
|
|
100
|
+
if (_.isEmpty(patch))
|
|
114
101
|
return;
|
|
115
102
|
emitEvent(context, opts.eventUpdated, { oldDoc: original, doc: current, patch });
|
|
116
103
|
if (history) {
|
|
117
104
|
let version = 0;
|
|
118
|
-
const lastHistory = await
|
|
105
|
+
const lastHistory = await History.findOne({ collectionId: original._id }).sort('-version').exec();
|
|
119
106
|
if (lastHistory && lastHistory.version >= 0) {
|
|
120
107
|
version = lastHistory.version + 1;
|
|
121
108
|
}
|
|
122
109
|
const [user, reason, metadata] = await getData(opts);
|
|
123
|
-
await
|
|
110
|
+
await History.create({
|
|
124
111
|
op: context.op,
|
|
125
112
|
modelName: context.modelName,
|
|
126
113
|
collectionName: context.collectionName,
|
|
@@ -133,9 +120,7 @@ async function updatePatch(opts, context, current, original) {
|
|
|
133
120
|
});
|
|
134
121
|
}
|
|
135
122
|
}
|
|
136
|
-
|
|
137
|
-
async function deletePatch(opts, context) {
|
|
123
|
+
export async function deletePatch(opts, context) {
|
|
138
124
|
await bulkPatch(opts, context, 'eventDeleted', 'deletedDocs');
|
|
139
125
|
}
|
|
140
|
-
exports.deletePatch = deletePatch;
|
|
141
126
|
//# sourceMappingURL=patch.js.map
|
package/dist/esm/patch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import em from './em.js';
|
|
3
|
+
import { createPatch, deletePatch } from './patch.js';
|
|
4
|
+
import { isMongooseLessThan7, isMongooseLessThan8 } from './version.js';
|
|
5
|
+
import { toObjectOptions } from './helpers.js';
|
|
6
|
+
import { saveHooksInitialize } from './hooks/save-hooks.js';
|
|
7
|
+
import { updateHooksInitialize } from './hooks/update-hooks.js';
|
|
8
|
+
import { deleteHooksInitialize } from './hooks/delete-hooks.js';
|
|
9
|
+
const remove = isMongooseLessThan7 ? 'remove' : 'deleteOne';
|
|
10
|
+
export const patchEventEmitter = em;
|
|
11
|
+
export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
12
|
+
saveHooksInitialize(schema, opts);
|
|
13
|
+
updateHooksInitialize(schema, opts);
|
|
14
|
+
deleteHooksInitialize(schema, opts);
|
|
15
|
+
schema.post('insertMany', async function (docs) {
|
|
16
|
+
const context = {
|
|
17
|
+
op: 'create',
|
|
18
|
+
modelName: opts.modelName ?? this.modelName,
|
|
19
|
+
collectionName: opts.collectionName ?? this.collection.collectionName,
|
|
20
|
+
createdDocs: docs
|
|
21
|
+
};
|
|
22
|
+
await createPatch(opts, context);
|
|
23
|
+
});
|
|
24
|
+
if (isMongooseLessThan8) {
|
|
25
|
+
schema.pre(remove, { document: true, query: false }, async function () {
|
|
26
|
+
const original = this.toObject(toObjectOptions);
|
|
27
|
+
if (opts.preDelete && !_.isEmpty(original)) {
|
|
28
|
+
await opts.preDelete([original]);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
schema.post(remove, { document: true, query: false }, async function () {
|
|
32
|
+
const original = this.toObject(toObjectOptions);
|
|
33
|
+
const model = this.constructor;
|
|
34
|
+
const context = {
|
|
35
|
+
op: 'delete',
|
|
36
|
+
modelName: opts.modelName ?? model.modelName,
|
|
37
|
+
collectionName: opts.collectionName ?? model.collection.collectionName,
|
|
38
|
+
deletedDocs: [original]
|
|
39
|
+
};
|
|
40
|
+
await deletePatch(opts, context);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=plugin.js.map
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,MAAM,MAAM,CAAA;AAErB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAM5D,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;AAK3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAQnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,MAAM,CAAK,MAAiB,EAAE,IAAuB;IAE9F,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,qBAAqB,CAAC,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,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAIF,IAAI,mBAAmB,EAAE,CAAC;QAExB,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,eAAe,CAAwB,CAAA;YAEtE,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAClC,CAAC;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,eAAe,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,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IHistory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IHistory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"IHistory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IHistory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;CACpB;AAED,eAAe,QAAQ,CAAA"}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.isMongooseLessThan7 = (0, semver_1.satisfies)(mongoose_1.default.version, '<7');
|
|
9
|
-
exports.isMongoose6 = (0, semver_1.satisfies)(mongoose_1.default.version, '6');
|
|
10
|
-
if (exports.isMongoose6) {
|
|
11
|
-
mongoose_1.default.set('strictQuery', false);
|
|
1
|
+
import { satisfies } from 'semver';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
3
|
+
export const isMongooseLessThan8 = satisfies(mongoose.version, '<8');
|
|
4
|
+
export const isMongooseLessThan7 = satisfies(mongoose.version, '<7');
|
|
5
|
+
export const isMongoose6 = satisfies(mongoose.version, '6');
|
|
6
|
+
if (isMongoose6) {
|
|
7
|
+
mongoose.set('strictQuery', false);
|
|
12
8
|
}
|
|
13
9
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3D,IAAI,WAAW,EAAE,CAAC;IAChB,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-patch-mongoose",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.2",
|
|
4
4
|
"description": "Patch history & events for mongoose models",
|
|
5
5
|
"author": "Alex Eagle",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
".": {
|
|
55
55
|
"import": {
|
|
56
56
|
"types": "./dist/esm/types/plugin.d.ts",
|
|
57
|
-
"default": "./dist/esm/plugin.
|
|
57
|
+
"default": "./dist/esm/plugin.js"
|
|
58
58
|
},
|
|
59
59
|
"require": {
|
|
60
60
|
"types": "./dist/cjs/types/plugin.d.ts",
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"main": "dist/cjs/plugin.js",
|
|
66
|
+
"module": "dist/esm/plugin.js",
|
|
66
67
|
"types": "dist/cjs/types/plugin.d.ts",
|
|
67
68
|
"scripts": {
|
|
68
69
|
"lint": "eslint . --ext .js,.ts",
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
"clean": "rm -rf ./dist",
|
|
73
74
|
"build": "npm run clean && npm run build:cjs && npm run build:esm",
|
|
74
75
|
"build:cjs": "tsc -p config/tsconfig.cjs.json",
|
|
75
|
-
"build:esm": "tsc -p config/tsconfig.esm.json &&
|
|
76
|
+
"build:esm": "tsc -p config/tsconfig.esm.json && bash/esm.sh",
|
|
76
77
|
"release": "npm install && npm run lint && npm run build && np"
|
|
77
78
|
},
|
|
78
79
|
"dependencies": {
|
|
@@ -85,16 +86,16 @@
|
|
|
85
86
|
"devDependencies": {
|
|
86
87
|
"@shelf/jest-mongodb": "4.2.0",
|
|
87
88
|
"@swc/cli": "0.1.63",
|
|
88
|
-
"@swc/core": "1.3.
|
|
89
|
+
"@swc/core": "1.3.100",
|
|
89
90
|
"@swc/helpers": "0.5.3",
|
|
90
91
|
"@swc/jest": "0.2.29",
|
|
91
92
|
"@swc/register": "0.1.10",
|
|
92
|
-
"@types/jest": "29.5.
|
|
93
|
+
"@types/jest": "29.5.11",
|
|
93
94
|
"@types/lodash": "4.14.202",
|
|
94
95
|
"@types/node": "20",
|
|
95
|
-
"@typescript-eslint/eslint-plugin": "6.13.
|
|
96
|
-
"@typescript-eslint/parser": "6.13.
|
|
97
|
-
"eslint": "8.
|
|
96
|
+
"@typescript-eslint/eslint-plugin": "6.13.2",
|
|
97
|
+
"@typescript-eslint/parser": "6.13.2",
|
|
98
|
+
"eslint": "8.55.0",
|
|
98
99
|
"eslint-plugin-jest": "27.6.0",
|
|
99
100
|
"eslint-plugin-jest-formatting": "3.1.0",
|
|
100
101
|
"eslint-plugin-sonarjs": "0.23.0",
|
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "
|
|
3
|
+
"target": "ES2021",
|
|
4
4
|
"lib": [
|
|
5
|
-
"
|
|
5
|
+
"ES2021"
|
|
6
6
|
],
|
|
7
|
-
"module": "
|
|
8
|
-
"moduleResolution": "
|
|
7
|
+
"module": "CommonJS",
|
|
8
|
+
"moduleResolution": "Node",
|
|
9
9
|
"outDir": "dist",
|
|
10
10
|
"strict": true,
|
|
11
11
|
"allowSyntheticDefaultImports": true,
|
package/dist/esm/plugin.mjs
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.patchHistoryPlugin = exports.patchEventEmitter = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
6
|
-
const em_1 = tslib_1.__importDefault(require("./em"));
|
|
7
|
-
const patch_1 = require("./patch");
|
|
8
|
-
const version_1 = require("./version");
|
|
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");
|
|
13
|
-
const remove = version_1.isMongooseLessThan7 ? 'remove' : 'deleteOne';
|
|
14
|
-
exports.patchEventEmitter = em_1.default;
|
|
15
|
-
const patchHistoryPlugin = function plugin(schema, opts) {
|
|
16
|
-
(0, save_hooks_1.saveHooksInitialize)(schema, opts);
|
|
17
|
-
(0, update_hooks_1.updateHooksInitialize)(schema, opts);
|
|
18
|
-
(0, delete_hooks_1.deleteHooksInitialize)(schema, opts);
|
|
19
|
-
schema.post('insertMany', async function (docs) {
|
|
20
|
-
const context = {
|
|
21
|
-
op: 'create',
|
|
22
|
-
modelName: opts.modelName ?? this.modelName,
|
|
23
|
-
collectionName: opts.collectionName ?? this.collection.collectionName,
|
|
24
|
-
createdDocs: docs
|
|
25
|
-
};
|
|
26
|
-
await (0, patch_1.createPatch)(opts, context);
|
|
27
|
-
});
|
|
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]);
|
|
33
|
-
}
|
|
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
|
-
}
|
|
47
|
-
};
|
|
48
|
-
exports.patchHistoryPlugin = patchHistoryPlugin;
|
|
49
|
-
//# sourceMappingURL=plugin.js.map
|