ts-patch-mongoose 1.2.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -36
- package/dist/cjs/models/History.js +1 -1
- package/dist/cjs/models/History.js.map +1 -1
- package/dist/cjs/plugin.js +25 -23
- package/dist/cjs/plugin.js.map +1 -1
- package/dist/cjs/types/interfaces/IPluginOptions.d.ts +2 -2
- package/dist/cjs/types/interfaces/IPluginOptions.d.ts.map +1 -1
- package/dist/cjs/types/plugin.d.ts +1 -1
- package/dist/cjs/types/plugin.d.ts.map +1 -1
- package/dist/cjs/types/version.d.ts +3 -0
- package/dist/cjs/types/version.d.ts.map +1 -0
- package/dist/cjs/version.js +12 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/models/History.js +1 -1
- package/dist/esm/models/History.js.map +1 -1
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/plugin.mjs +25 -23
- package/dist/esm/types/interfaces/IPluginOptions.d.ts +2 -2
- package/dist/esm/types/interfaces/IPluginOptions.d.ts.map +1 -1
- package/dist/esm/types/plugin.d.ts +1 -1
- package/dist/esm/types/plugin.d.ts.map +1 -1
- package/dist/esm/types/version.d.ts +3 -0
- package/dist/esm/types/version.d.ts.map +1 -0
- package/dist/esm/version.js +8 -0
- package/dist/esm/version.js.map +1 -0
- package/jest.config.ts +3 -5
- package/package.json +6 -5
- package/src/interfaces/IPluginOptions.ts +2 -2
- package/src/models/History.ts +1 -1
- package/src/plugin.ts +33 -31
- package/src/version.ts +9 -0
- package/tests/plugin-event-created.test.ts +14 -5
- package/tests/plugin-event-deleted.test.ts +28 -5
- package/tests/plugin-event-updated.test.ts +8 -1
- package/tests/plugin-omit-all.test.ts +12 -2
- package/tests/plugin-patch-history-disabled.test.ts +12 -2
- package/tests/plugin-pre-delete.test.ts +157 -0
- package/tests/plugin.test.ts +12 -5
- package/tests/mongose.test.ts +0 -28
- package/tests/plugin-callback.test.ts +0 -50
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ts-patch-mongoose
|
|
2
2
|
|
|
3
|
-
Patch history & events plugin for mongoose
|
|
3
|
+
Patch history (audit log) & events plugin for mongoose
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/ts-patch-mongoose)
|
|
6
6
|
[](https://www.npmjs.com/package/ts-patch-mongoose)
|
|
@@ -21,6 +21,15 @@ ts-patch-mongoose is a plugin for mongoose
|
|
|
21
21
|
\
|
|
22
22
|
I need to track changes of mongoose models and save them as patch history (audit log) in separate collection. Changes must also emit events that I can subscribe to and react in other parts of my application. I also want to omit some fields from patch history.
|
|
23
23
|
|
|
24
|
+
## Supports and tested with
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"node": "16.x || 18.x || 20.x",
|
|
29
|
+
"mongoose": ">=6.6.x || 7.x",
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
24
33
|
## Features
|
|
25
34
|
|
|
26
35
|
- Track changes in mongoose models
|
|
@@ -40,6 +49,17 @@ npm install ts-patch-mongoose
|
|
|
40
49
|
yarn add ts-patch-mongoose
|
|
41
50
|
```
|
|
42
51
|
|
|
52
|
+
- This plugin requires mongoose `>=6.6.x || 7.x` to be installed as a peer dependency
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# For mongoose 6
|
|
56
|
+
npm install mongoose@legacy
|
|
57
|
+
yarn add mongoose mongoose@legacy
|
|
58
|
+
# For mongoose 7
|
|
59
|
+
npm install mongoose@latest
|
|
60
|
+
yarn add mongoose@latest
|
|
61
|
+
```
|
|
62
|
+
|
|
43
63
|
## Example
|
|
44
64
|
|
|
45
65
|
How to use it with express [ts-express-swc](https://github.com/ilovepixelart/ts-express-swc)
|
|
@@ -47,94 +67,132 @@ How to use it with express [ts-express-swc](https://github.com/ilovepixelart/ts-
|
|
|
47
67
|
Create your event constants `events.ts`
|
|
48
68
|
|
|
49
69
|
```typescript
|
|
50
|
-
export const
|
|
51
|
-
export const
|
|
52
|
-
export const
|
|
70
|
+
export const BOOK_CREATED = 'book-created'
|
|
71
|
+
export const BOOK_UPDATED = 'book-updated'
|
|
72
|
+
export const BOOK_DELETED = 'book-deleted'
|
|
53
73
|
```
|
|
54
74
|
|
|
55
|
-
Create your interface `
|
|
75
|
+
Create your interface `IBook.ts`
|
|
56
76
|
|
|
57
77
|
```typescript
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
78
|
+
import type { Types } from 'mongoose'
|
|
79
|
+
|
|
80
|
+
interface IBook {
|
|
81
|
+
title: string
|
|
82
|
+
description?: string
|
|
83
|
+
authorId: Types.ObjectId
|
|
61
84
|
createdAt?: Date
|
|
62
85
|
updatedAt?: Date
|
|
63
86
|
}
|
|
64
87
|
|
|
65
|
-
export default
|
|
88
|
+
export default IBook
|
|
66
89
|
```
|
|
67
90
|
|
|
68
|
-
Setup your mongoose model `
|
|
91
|
+
Setup your mongoose model `Book.ts`
|
|
69
92
|
|
|
70
93
|
```typescript
|
|
71
94
|
import { Schema, model } from 'mongoose'
|
|
72
95
|
|
|
73
|
-
import type
|
|
96
|
+
import type { HydratedDocument, Types } from 'mongoose'
|
|
97
|
+
import type IBook from '../interfaces/IBook'
|
|
74
98
|
|
|
75
99
|
import { patchHistoryPlugin } from 'ts-patch-mongoose'
|
|
76
|
-
import {
|
|
100
|
+
import { BOOK_CREATED, BOOK_UPDATED, BOOK_DELETED } from '../constants/events'
|
|
77
101
|
|
|
78
|
-
const
|
|
102
|
+
const BookSchema = new Schema<IBook>({
|
|
79
103
|
name: {
|
|
80
|
-
|
|
104
|
+
title: String,
|
|
81
105
|
required: true
|
|
82
106
|
},
|
|
83
|
-
|
|
107
|
+
description: {
|
|
84
108
|
type: String,
|
|
85
|
-
|
|
109
|
+
},
|
|
110
|
+
authorId: {
|
|
111
|
+
type: Types.ObjectId,
|
|
86
112
|
required: true
|
|
87
113
|
}
|
|
88
114
|
}, { timestamps: true })
|
|
89
115
|
|
|
90
|
-
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// Create event constants provide them to plugin and use them to subscribe to events
|
|
96
|
-
eventCreated: USER_CREATED,
|
|
97
|
-
eventUpdated: USER_UPDATED,
|
|
98
|
-
eventDeleted: USER_DELETED,
|
|
116
|
+
BookSchema.plugin(patchHistoryPlugin, {
|
|
117
|
+
// Provide your event constants to plugin
|
|
118
|
+
eventCreated: BOOK_CREATED,
|
|
119
|
+
eventUpdated: BOOK_UPDATED,
|
|
120
|
+
eventDeleted: BOOK_DELETED,
|
|
99
121
|
|
|
100
122
|
// You can omit some properties in case you don't want to save them to patch history
|
|
101
|
-
omit: ['__v', 'createdAt', 'updatedAt']
|
|
123
|
+
omit: ['__v', 'createdAt', 'updatedAt'],
|
|
124
|
+
|
|
125
|
+
// Addition options for ts-match-mongoose plugin
|
|
126
|
+
// Everything bellow is optional and just shows you what you can do:
|
|
127
|
+
|
|
128
|
+
// Code bellow is abstract example, you can use any other way to get user, reason, metadata
|
|
129
|
+
// These three properties will be added to patch history document automatically and give you flexibility to track who, why and when made changes to your documents
|
|
130
|
+
getUser: async () => {
|
|
131
|
+
// For example: get user from http context
|
|
132
|
+
// You should return an object, in case you want to save user to patch history
|
|
133
|
+
return httpContext.get('user') as Record<string, unknown>
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// Reason of document (create/update/delete) like: 'Excel upload', 'Manual update', 'API call', etc.
|
|
137
|
+
getReason: async () => {
|
|
138
|
+
// For example: get reason from http context, or any other place of your application
|
|
139
|
+
// You shout return a string, in case you want to save reason to patch history
|
|
140
|
+
return httpContext.get('reason') as string
|
|
141
|
+
},
|
|
142
|
+
|
|
143
|
+
// You can provide any information you want to save in along with patch history
|
|
144
|
+
getMetadata: async () => {
|
|
145
|
+
// For example: get metadata from http context, or any other place of your application
|
|
146
|
+
// You should return an object, in case you want to save metadata to patch history
|
|
147
|
+
return httpContext.get('metadata') as Record<string, unknown>
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
// Do something before deleting documents
|
|
151
|
+
// This method will be executed before deleting document or documents and always returns a nonempty array of documents
|
|
152
|
+
preDelete: async (docs: HydratedDocument<IBook>[]) => {
|
|
153
|
+
const bookIds = docs.map((doc) => doc._id)
|
|
154
|
+
await SomeOtherModel.deleteMany({ bookId: { $in: bookIds } })
|
|
155
|
+
},
|
|
156
|
+
|
|
157
|
+
// In case you just want to track changes in your models using events below.
|
|
158
|
+
// And don't want to save changes to patch history collection
|
|
159
|
+
patchHistoryDisabled: true,
|
|
102
160
|
})
|
|
103
161
|
|
|
104
|
-
const
|
|
162
|
+
const Book = model('Book', BookSchema)
|
|
105
163
|
|
|
106
|
-
export default
|
|
164
|
+
export default Book
|
|
107
165
|
```
|
|
108
166
|
|
|
109
167
|
## Subscribe
|
|
110
168
|
|
|
111
|
-
You can subscribe to events using patchEventEmitter anywhere in your application `handlers/
|
|
169
|
+
You can subscribe to events using patchEventEmitter anywhere in your application `handlers/BookHandler.ts`
|
|
112
170
|
|
|
113
171
|
```typescript
|
|
114
172
|
import { patchEventEmitter } from 'ts-patch-mongoose'
|
|
115
|
-
import {
|
|
173
|
+
import { BOOK_CREATED, BOOK_UPDATED, BOOK_DELETED } from '../constants/events'
|
|
116
174
|
|
|
117
|
-
patchEventEmitter.on(
|
|
175
|
+
patchEventEmitter.on(BOOK_CREATED, ({ doc }) => {
|
|
118
176
|
try {
|
|
119
|
-
console.log('Event -
|
|
177
|
+
console.log('Event - book created', doc)
|
|
120
178
|
// Do something with doc here
|
|
121
179
|
} catch (error) {
|
|
122
180
|
console.error(error)
|
|
123
181
|
}
|
|
124
182
|
})
|
|
125
183
|
|
|
126
|
-
patchEventEmitter.on(
|
|
184
|
+
patchEventEmitter.on(BOOK_UPDATED, ({ doc, oldDoc, patch }) => {
|
|
127
185
|
try {
|
|
128
|
-
console.log('Event -
|
|
186
|
+
console.log('Event - book updated', doc, oldDoc, patch)
|
|
129
187
|
// Do something with doc, oldDoc and patch here
|
|
130
188
|
} catch (error) {
|
|
131
189
|
console.error(error)
|
|
132
190
|
}
|
|
133
191
|
})
|
|
134
192
|
|
|
135
|
-
patchEventEmitter.on(
|
|
193
|
+
patchEventEmitter.on(BOOK_DELETED, ({ oldDoc }) => {
|
|
136
194
|
try {
|
|
137
|
-
console.log('Event -
|
|
195
|
+
console.log('Event - book deleted', oldDoc)
|
|
138
196
|
// Do something with doc here
|
|
139
197
|
} catch (error) {
|
|
140
198
|
console.error(error)
|
|
@@ -39,7 +39,7 @@ const HistorySchema = new mongoose_1.Schema({
|
|
|
39
39
|
default: 0
|
|
40
40
|
}
|
|
41
41
|
}, { timestamps: true });
|
|
42
|
-
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, version: 1 });
|
|
42
|
+
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, reason: 1, version: 1 });
|
|
43
43
|
const History = (0, mongoose_1.model)('History', HistorySchema, 'history');
|
|
44
44
|
exports.default = History;
|
|
45
45
|
//# sourceMappingURL=History.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../../src/models/History.ts"],"names":[],"mappings":";;AAAA,uCAAwC;AAIxC,MAAM,aAAa,GAAG,IAAI,iBAAM,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,iBAAM,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,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../../src/models/History.ts"],"names":[],"mappings":";;AAAA,uCAAwC;AAIxC,MAAM,aAAa,GAAG,IAAI,iBAAM,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,iBAAM,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,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,IAAA,gBAAK,EAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAE1D,kBAAe,OAAO,CAAA"}
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -5,11 +5,9 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
6
6
|
const power_assign_1 = require("power-assign");
|
|
7
7
|
const patch_1 = require("./patch");
|
|
8
|
+
const version_1 = require("./version");
|
|
8
9
|
const em_1 = tslib_1.__importDefault(require("./em"));
|
|
9
|
-
const
|
|
10
|
-
document: false,
|
|
11
|
-
query: true
|
|
12
|
-
};
|
|
10
|
+
const remove = version_1.isMongooseLessThan7 ? 'remove' : 'deleteOne';
|
|
13
11
|
const toObjectOptions = {
|
|
14
12
|
depopulate: true,
|
|
15
13
|
virtuals: false
|
|
@@ -73,7 +71,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
73
71
|
await (0, patch_1.createPatch)(opts, context);
|
|
74
72
|
}
|
|
75
73
|
else {
|
|
76
|
-
const original = await model.findById(current._id).exec();
|
|
74
|
+
const original = await model.findById(current._id).lean().exec();
|
|
77
75
|
if (original) {
|
|
78
76
|
await (0, patch_1.updatePatch)(opts, context, current, original);
|
|
79
77
|
}
|
|
@@ -92,6 +90,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
92
90
|
const options = this.getOptions();
|
|
93
91
|
if (options.ignoreHook)
|
|
94
92
|
return;
|
|
93
|
+
const model = this.model;
|
|
95
94
|
const filter = this.getFilter();
|
|
96
95
|
const count = await this.model.count(filter).exec();
|
|
97
96
|
this._context = {
|
|
@@ -102,11 +101,9 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
102
101
|
};
|
|
103
102
|
const updateQuery = this.getUpdate();
|
|
104
103
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
105
|
-
const cursor =
|
|
104
|
+
const cursor = model.find(filter).lean().cursor();
|
|
106
105
|
await cursor.eachAsync(async (doc) => {
|
|
107
|
-
|
|
108
|
-
const original = doc.toObject(toObjectOptions);
|
|
109
|
-
await (0, patch_1.updatePatch)(opts, this._context, current, original);
|
|
106
|
+
await (0, patch_1.updatePatch)(opts, this._context, assignUpdate(doc, update, commands), doc);
|
|
110
107
|
});
|
|
111
108
|
});
|
|
112
109
|
schema.post(updateMethods, async function () {
|
|
@@ -115,35 +112,40 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
115
112
|
return;
|
|
116
113
|
if (!this._context.isNew)
|
|
117
114
|
return;
|
|
115
|
+
const model = this.model;
|
|
118
116
|
const updateQuery = this.getUpdate();
|
|
119
117
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
120
118
|
const filter = assignUpdate({}, update, commands);
|
|
121
119
|
if (!lodash_1.default.isEmpty(filter)) {
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
const current = found.toObject(toObjectOptions);
|
|
120
|
+
const current = await model.findOne(update).lean().exec();
|
|
121
|
+
if (current) {
|
|
125
122
|
this._context.createdDocs = [current];
|
|
126
123
|
await (0, patch_1.createPatch)(opts, this._context);
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
126
|
});
|
|
130
|
-
schema.
|
|
127
|
+
schema.pre(remove, { document: true, query: false }, async function () {
|
|
128
|
+
const original = this.toObject(toObjectOptions);
|
|
129
|
+
if (opts.preDelete && !lodash_1.default.isEmpty(original)) {
|
|
130
|
+
await opts.preDelete([original]);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
schema.post(remove, { document: true, query: false }, async function () {
|
|
131
134
|
const original = this.toObject(toObjectOptions);
|
|
132
135
|
const model = this.constructor;
|
|
133
136
|
const context = {
|
|
134
137
|
op: 'delete',
|
|
135
138
|
modelName: opts.modelName ?? model.modelName,
|
|
136
|
-
collectionName: opts.collectionName ?? model.collection.collectionName
|
|
139
|
+
collectionName: opts.collectionName ?? model.collection.collectionName,
|
|
140
|
+
deletedDocs: [original]
|
|
137
141
|
};
|
|
138
|
-
if (opts.eventDeleted) {
|
|
139
|
-
em_1.default.emit(opts.eventDeleted, { oldDoc: original });
|
|
140
|
-
}
|
|
141
142
|
await (0, patch_1.deletePatch)(opts, context);
|
|
142
143
|
});
|
|
143
|
-
schema.pre(deleteMethods,
|
|
144
|
+
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
144
145
|
const options = this.getOptions();
|
|
145
146
|
if (options.ignoreHook)
|
|
146
147
|
return;
|
|
148
|
+
const model = this.model;
|
|
147
149
|
const filter = this.getFilter();
|
|
148
150
|
this._context = {
|
|
149
151
|
op: this.op,
|
|
@@ -151,22 +153,22 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
151
153
|
collectionName: opts.collectionName ?? this.model.collection.collectionName
|
|
152
154
|
};
|
|
153
155
|
if (['remove', 'deleteMany'].includes(this._context.op) && !options.single) {
|
|
154
|
-
const docs = await
|
|
156
|
+
const docs = await model.find(filter).lean().exec();
|
|
155
157
|
if (!lodash_1.default.isEmpty(docs)) {
|
|
156
158
|
this._context.deletedDocs = docs;
|
|
157
159
|
}
|
|
158
160
|
}
|
|
159
161
|
else {
|
|
160
|
-
const doc = await
|
|
162
|
+
const doc = await model.findOne(filter).lean().exec();
|
|
161
163
|
if (!lodash_1.default.isEmpty(doc)) {
|
|
162
164
|
this._context.deletedDocs = [doc];
|
|
163
165
|
}
|
|
164
166
|
}
|
|
165
|
-
if (opts.
|
|
166
|
-
await opts.
|
|
167
|
+
if (opts.preDelete && lodash_1.default.isArray(this._context.deletedDocs) && !lodash_1.default.isEmpty(this._context.deletedDocs)) {
|
|
168
|
+
await opts.preDelete(this._context.deletedDocs);
|
|
167
169
|
}
|
|
168
170
|
});
|
|
169
|
-
schema.post(deleteMethods,
|
|
171
|
+
schema.post(deleteMethods, { document: false, query: true }, async function () {
|
|
170
172
|
const options = this.getOptions();
|
|
171
173
|
if (options.ignoreHook)
|
|
172
174
|
return;
|
package/dist/cjs/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AACtB,+CAAqC;AAQrC,mCAA+D;AAC/D,sDAAqB;AAErB,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,12 @@ interface IPluginOptions<T> {
|
|
|
8
8
|
eventUpdated?: string;
|
|
9
9
|
eventCreated?: string;
|
|
10
10
|
eventDeleted?: string;
|
|
11
|
-
patchHistoryDisabled?: boolean;
|
|
12
|
-
preDeleteCallback?: (docs: HydratedDocument<T>[]) => Promise<void>;
|
|
13
11
|
getUser?: () => Promise<User> | User;
|
|
14
12
|
getReason?: () => Promise<Reason> | Reason;
|
|
15
13
|
getMetadata?: () => Promise<Metadata> | Metadata;
|
|
16
14
|
omit?: string[];
|
|
15
|
+
patchHistoryDisabled?: boolean;
|
|
16
|
+
preDelete?: (docs: HydratedDocument<T>[]) => Promise<void>;
|
|
17
17
|
}
|
|
18
18
|
export default IPluginOptions;
|
|
19
19
|
//# sourceMappingURL=IPluginOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPluginOptions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IPluginOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC1C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAC3B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,UAAU,cAAc,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,
|
|
1
|
+
{"version":3,"file":"IPluginOptions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/IPluginOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC1C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAC3B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,UAAU,cAAc,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC1C,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;IAChD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -36,7 +36,7 @@ export declare const patchEventEmitter: {
|
|
|
36
36
|
listeners(eventName: string | symbol): Function[];
|
|
37
37
|
rawListeners(eventName: string | symbol): Function[];
|
|
38
38
|
emit(eventName: string | symbol, ...args: any[]): boolean;
|
|
39
|
-
listenerCount(eventName: string | symbol): number;
|
|
39
|
+
listenerCount(eventName: string | symbol, listener?: Function | undefined): number;
|
|
40
40
|
prependListener(eventName: string | symbol, listener: (...args: any[]) => void): any;
|
|
41
41
|
prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): any;
|
|
42
42
|
eventNames(): (string | symbol)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAA+D,MAAM,UAAU,CAAA;AAErJ,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAA+D,MAAM,UAAU,CAAA;AAErJ,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAsE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAwIlG,CAAA"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMongoose6 = exports.isMongooseLessThan7 = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const semver_1 = require("semver");
|
|
6
|
+
const mongoose_1 = tslib_1.__importDefault(require("mongoose"));
|
|
7
|
+
exports.isMongooseLessThan7 = (0, semver_1.satisfies)(mongoose_1.default.version, '<7');
|
|
8
|
+
exports.isMongoose6 = (0, semver_1.satisfies)(mongoose_1.default.version, '6');
|
|
9
|
+
if (exports.isMongoose6) {
|
|
10
|
+
mongoose_1.default.set('strictQuery', false);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -37,7 +37,7 @@ const HistorySchema = new Schema({
|
|
|
37
37
|
default: 0
|
|
38
38
|
}
|
|
39
39
|
}, { timestamps: true });
|
|
40
|
-
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, version: 1 });
|
|
40
|
+
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, reason: 1, version: 1 });
|
|
41
41
|
const History = model('History', HistorySchema, 'history');
|
|
42
42
|
export default History;
|
|
43
43
|
//# sourceMappingURL=History.js.map
|
|
@@ -1 +1 @@
|
|
|
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,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;
|
|
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,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"}
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAQrC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,MAAM,MAAM,CAAA;AAErB,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/plugin.mjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import { assign } from 'power-assign';
|
|
3
3
|
import { createPatch, updatePatch, deletePatch } from './patch';
|
|
4
|
+
import { isMongooseLessThan7 } from './version';
|
|
4
5
|
import em from './em';
|
|
5
|
-
const
|
|
6
|
-
document: false,
|
|
7
|
-
query: true
|
|
8
|
-
};
|
|
6
|
+
const remove = isMongooseLessThan7 ? 'remove' : 'deleteOne';
|
|
9
7
|
const toObjectOptions = {
|
|
10
8
|
depopulate: true,
|
|
11
9
|
virtuals: false
|
|
@@ -69,7 +67,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
69
67
|
await createPatch(opts, context);
|
|
70
68
|
}
|
|
71
69
|
else {
|
|
72
|
-
const original = await model.findById(current._id).exec();
|
|
70
|
+
const original = await model.findById(current._id).lean().exec();
|
|
73
71
|
if (original) {
|
|
74
72
|
await updatePatch(opts, context, current, original);
|
|
75
73
|
}
|
|
@@ -88,6 +86,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
88
86
|
const options = this.getOptions();
|
|
89
87
|
if (options.ignoreHook)
|
|
90
88
|
return;
|
|
89
|
+
const model = this.model;
|
|
91
90
|
const filter = this.getFilter();
|
|
92
91
|
const count = await this.model.count(filter).exec();
|
|
93
92
|
this._context = {
|
|
@@ -98,11 +97,9 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
98
97
|
};
|
|
99
98
|
const updateQuery = this.getUpdate();
|
|
100
99
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
101
|
-
const cursor =
|
|
100
|
+
const cursor = model.find(filter).lean().cursor();
|
|
102
101
|
await cursor.eachAsync(async (doc) => {
|
|
103
|
-
|
|
104
|
-
const original = doc.toObject(toObjectOptions);
|
|
105
|
-
await updatePatch(opts, this._context, current, original);
|
|
102
|
+
await updatePatch(opts, this._context, assignUpdate(doc, update, commands), doc);
|
|
106
103
|
});
|
|
107
104
|
});
|
|
108
105
|
schema.post(updateMethods, async function () {
|
|
@@ -111,35 +108,40 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
111
108
|
return;
|
|
112
109
|
if (!this._context.isNew)
|
|
113
110
|
return;
|
|
111
|
+
const model = this.model;
|
|
114
112
|
const updateQuery = this.getUpdate();
|
|
115
113
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
116
114
|
const filter = assignUpdate({}, update, commands);
|
|
117
115
|
if (!_.isEmpty(filter)) {
|
|
118
|
-
const
|
|
119
|
-
if (
|
|
120
|
-
const current = found.toObject(toObjectOptions);
|
|
116
|
+
const current = await model.findOne(update).lean().exec();
|
|
117
|
+
if (current) {
|
|
121
118
|
this._context.createdDocs = [current];
|
|
122
119
|
await createPatch(opts, this._context);
|
|
123
120
|
}
|
|
124
121
|
}
|
|
125
122
|
});
|
|
126
|
-
schema.
|
|
123
|
+
schema.pre(remove, { document: true, query: false }, async function () {
|
|
124
|
+
const original = this.toObject(toObjectOptions);
|
|
125
|
+
if (opts.preDelete && !_.isEmpty(original)) {
|
|
126
|
+
await opts.preDelete([original]);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
schema.post(remove, { document: true, query: false }, async function () {
|
|
127
130
|
const original = this.toObject(toObjectOptions);
|
|
128
131
|
const model = this.constructor;
|
|
129
132
|
const context = {
|
|
130
133
|
op: 'delete',
|
|
131
134
|
modelName: opts.modelName ?? model.modelName,
|
|
132
|
-
collectionName: opts.collectionName ?? model.collection.collectionName
|
|
135
|
+
collectionName: opts.collectionName ?? model.collection.collectionName,
|
|
136
|
+
deletedDocs: [original]
|
|
133
137
|
};
|
|
134
|
-
if (opts.eventDeleted) {
|
|
135
|
-
em.emit(opts.eventDeleted, { oldDoc: original });
|
|
136
|
-
}
|
|
137
138
|
await deletePatch(opts, context);
|
|
138
139
|
});
|
|
139
|
-
schema.pre(deleteMethods,
|
|
140
|
+
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
140
141
|
const options = this.getOptions();
|
|
141
142
|
if (options.ignoreHook)
|
|
142
143
|
return;
|
|
144
|
+
const model = this.model;
|
|
143
145
|
const filter = this.getFilter();
|
|
144
146
|
this._context = {
|
|
145
147
|
op: this.op,
|
|
@@ -147,22 +149,22 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
147
149
|
collectionName: opts.collectionName ?? this.model.collection.collectionName
|
|
148
150
|
};
|
|
149
151
|
if (['remove', 'deleteMany'].includes(this._context.op) && !options.single) {
|
|
150
|
-
const docs = await
|
|
152
|
+
const docs = await model.find(filter).lean().exec();
|
|
151
153
|
if (!_.isEmpty(docs)) {
|
|
152
154
|
this._context.deletedDocs = docs;
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
157
|
else {
|
|
156
|
-
const doc = await
|
|
158
|
+
const doc = await model.findOne(filter).lean().exec();
|
|
157
159
|
if (!_.isEmpty(doc)) {
|
|
158
160
|
this._context.deletedDocs = [doc];
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
if (opts.
|
|
162
|
-
await opts.
|
|
163
|
+
if (opts.preDelete && _.isArray(this._context.deletedDocs) && !_.isEmpty(this._context.deletedDocs)) {
|
|
164
|
+
await opts.preDelete(this._context.deletedDocs);
|
|
163
165
|
}
|
|
164
166
|
});
|
|
165
|
-
schema.post(deleteMethods,
|
|
167
|
+
schema.post(deleteMethods, { document: false, query: true }, async function () {
|
|
166
168
|
const options = this.getOptions();
|
|
167
169
|
if (options.ignoreHook)
|
|
168
170
|
return;
|