ts-patch-mongoose 1.2.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -36
- package/dist/cjs/models/History.js +1 -1
- package/dist/cjs/models/History.js.map +1 -1
- package/dist/cjs/plugin.js +7 -9
- 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 +7 -9
- 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 +7 -9
- 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-callback.test.ts → plugin-pre-delete.test.ts} +5 -5
- package/tests/plugin.test.ts +12 -5
- package/tests/mongose.test.ts +0 -28
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
|
|
@@ -127,7 +125,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
127
125
|
}
|
|
128
126
|
}
|
|
129
127
|
});
|
|
130
|
-
schema.post(
|
|
128
|
+
schema.post(remove, { document: true, query: false }, async function () {
|
|
131
129
|
const original = this.toObject(toObjectOptions);
|
|
132
130
|
const model = this.constructor;
|
|
133
131
|
const context = {
|
|
@@ -140,7 +138,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
140
138
|
}
|
|
141
139
|
await (0, patch_1.deletePatch)(opts, context);
|
|
142
140
|
});
|
|
143
|
-
schema.pre(deleteMethods,
|
|
141
|
+
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
144
142
|
const options = this.getOptions();
|
|
145
143
|
if (options.ignoreHook)
|
|
146
144
|
return;
|
|
@@ -162,11 +160,11 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
162
160
|
this._context.deletedDocs = [doc];
|
|
163
161
|
}
|
|
164
162
|
}
|
|
165
|
-
if (opts.
|
|
166
|
-
await opts.
|
|
163
|
+
if (opts.preDelete && lodash_1.default.isArray(this._context.deletedDocs) && !lodash_1.default.isEmpty(this._context.deletedDocs)) {
|
|
164
|
+
await opts.preDelete(this._context.deletedDocs);
|
|
167
165
|
}
|
|
168
166
|
});
|
|
169
|
-
schema.post(deleteMethods,
|
|
167
|
+
schema.post(deleteMethods, { document: false, query: true }, async function () {
|
|
170
168
|
const options = this.getOptions();
|
|
171
169
|
if (options.ignoreHook)
|
|
172
170
|
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,IAoIlG,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
|
|
@@ -123,7 +121,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
123
|
});
|
|
126
|
-
schema.post(
|
|
124
|
+
schema.post(remove, { document: true, query: false }, async function () {
|
|
127
125
|
const original = this.toObject(toObjectOptions);
|
|
128
126
|
const model = this.constructor;
|
|
129
127
|
const context = {
|
|
@@ -136,7 +134,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
136
134
|
}
|
|
137
135
|
await deletePatch(opts, context);
|
|
138
136
|
});
|
|
139
|
-
schema.pre(deleteMethods,
|
|
137
|
+
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
140
138
|
const options = this.getOptions();
|
|
141
139
|
if (options.ignoreHook)
|
|
142
140
|
return;
|
|
@@ -158,11 +156,11 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
158
156
|
this._context.deletedDocs = [doc];
|
|
159
157
|
}
|
|
160
158
|
}
|
|
161
|
-
if (opts.
|
|
162
|
-
await opts.
|
|
159
|
+
if (opts.preDelete && _.isArray(this._context.deletedDocs) && !_.isEmpty(this._context.deletedDocs)) {
|
|
160
|
+
await opts.preDelete(this._context.deletedDocs);
|
|
163
161
|
}
|
|
164
162
|
});
|
|
165
|
-
schema.post(deleteMethods,
|
|
163
|
+
schema.post(deleteMethods, { document: false, query: true }, async function () {
|
|
166
164
|
const options = this.getOptions();
|
|
167
165
|
if (options.ignoreHook)
|
|
168
166
|
return;
|
|
@@ -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,IAoIlG,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,8 @@
|
|
|
1
|
+
import { satisfies } from 'semver';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
3
|
+
export const isMongooseLessThan7 = satisfies(mongoose.version, '<7');
|
|
4
|
+
export const isMongoose6 = satisfies(mongoose.version, '6');
|
|
5
|
+
if (isMongoose6) {
|
|
6
|
+
mongoose.set('strictQuery', false);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3D,IAAI,WAAW,EAAE;IACf,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;CACnC"}
|
package/jest.config.ts
CHANGED
|
@@ -11,18 +11,16 @@ const config = recursive(mongo, {
|
|
|
11
11
|
clearMocks: true,
|
|
12
12
|
collectCoverage: true,
|
|
13
13
|
collectCoverageFrom: [
|
|
14
|
-
'src/**/*.
|
|
15
|
-
'!src/bin.ts',
|
|
14
|
+
'src/**/*.ts',
|
|
16
15
|
'!src/**/*.d.ts',
|
|
17
|
-
'!src/interfaces/**/*.
|
|
18
|
-
'!src/template.ts'
|
|
16
|
+
'!src/interfaces/**/*.ts'
|
|
19
17
|
],
|
|
20
18
|
coverageDirectory: 'coverage',
|
|
21
19
|
testMatch: [
|
|
22
20
|
'<rootDir>/tests/**/*.test.ts'
|
|
23
21
|
],
|
|
24
22
|
transform: {
|
|
25
|
-
'^.+\\.
|
|
23
|
+
'^.+\\.(t|j)sx?$': '@swc/jest'
|
|
26
24
|
},
|
|
27
25
|
testPathIgnorePatterns: [
|
|
28
26
|
'node_modules'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-patch-mongoose",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Patch history & events for mongoose models",
|
|
5
5
|
"author": "Alex Eagle",
|
|
6
6
|
"license": "MIT",
|
|
@@ -72,13 +72,14 @@
|
|
|
72
72
|
"build": "npm run clean && npm run build:cjs && npm run build:esm",
|
|
73
73
|
"build:cjs": "tsc -p config/tsconfig.cjs.json",
|
|
74
74
|
"build:esm": "tsc -p config/tsconfig.esm.json && mv ./dist/esm/plugin.js ./dist/esm/plugin.mjs",
|
|
75
|
-
"release": "npm run lint && npm run build && np"
|
|
75
|
+
"release": "npm install && npm run lint && npm run build && np"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"fast-json-patch": "3.1.1",
|
|
79
79
|
"lodash": "4.17.21",
|
|
80
80
|
"omit-deep": "0.3.0",
|
|
81
|
-
"power-assign": "0.2.10"
|
|
81
|
+
"power-assign": "0.2.10",
|
|
82
|
+
"semver": "7.5.0"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
85
|
"@shelf/jest-mongodb": "4.1.7",
|
|
@@ -89,7 +90,7 @@
|
|
|
89
90
|
"@swc/register": "0.1.10",
|
|
90
91
|
"@types/jest": "29.5.1",
|
|
91
92
|
"@types/lodash": "4.14.194",
|
|
92
|
-
"@types/node": "18.
|
|
93
|
+
"@types/node": "18.16.0",
|
|
93
94
|
"@typescript-eslint/eslint-plugin": "5.59.0",
|
|
94
95
|
"@typescript-eslint/parser": "5.59.0",
|
|
95
96
|
"eslint": "8.39.0",
|
|
@@ -109,6 +110,6 @@
|
|
|
109
110
|
"typescript": "5.0.4"
|
|
110
111
|
},
|
|
111
112
|
"peerDependencies": {
|
|
112
|
-
"mongoose": ">=6.6.0 <
|
|
113
|
+
"mongoose": ">=6.6.0 < 8"
|
|
113
114
|
}
|
|
114
115
|
}
|
|
@@ -10,12 +10,12 @@ interface IPluginOptions<T> {
|
|
|
10
10
|
eventUpdated?: string
|
|
11
11
|
eventCreated?: string
|
|
12
12
|
eventDeleted?: string
|
|
13
|
-
patchHistoryDisabled?: boolean
|
|
14
|
-
preDeleteCallback?: (docs: HydratedDocument<T>[]) => Promise<void>
|
|
15
13
|
getUser?: () => Promise<User> | User
|
|
16
14
|
getReason?: () => Promise<Reason> | Reason
|
|
17
15
|
getMetadata?: () => Promise<Metadata> | Metadata
|
|
18
16
|
omit?: string[]
|
|
17
|
+
patchHistoryDisabled?: boolean
|
|
18
|
+
preDelete?: (docs: HydratedDocument<T>[]) => Promise<void>
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export default IPluginOptions
|
package/src/models/History.ts
CHANGED
|
@@ -41,7 +41,7 @@ const HistorySchema = new Schema<IHistory>({
|
|
|
41
41
|
}
|
|
42
42
|
}, { timestamps: true })
|
|
43
43
|
|
|
44
|
-
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, version: 1 })
|
|
44
|
+
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, reason: 1, version: 1 })
|
|
45
45
|
|
|
46
46
|
const History = model('History', HistorySchema, 'history')
|
|
47
47
|
|
package/src/plugin.ts
CHANGED
|
@@ -8,12 +8,10 @@ import type IContext from './interfaces/IContext'
|
|
|
8
8
|
import type IHookContext from './interfaces/IHookContext'
|
|
9
9
|
|
|
10
10
|
import { createPatch, updatePatch, deletePatch } from './patch'
|
|
11
|
+
import { isMongooseLessThan7 } from './version'
|
|
11
12
|
import em from './em'
|
|
12
13
|
|
|
13
|
-
const
|
|
14
|
-
document: false,
|
|
15
|
-
query: true
|
|
16
|
-
}
|
|
14
|
+
const remove = isMongooseLessThan7 ? 'remove' : 'deleteOne'
|
|
17
15
|
|
|
18
16
|
const toObjectOptions: ToObjectOptions = {
|
|
19
17
|
depopulate: true,
|
|
@@ -163,7 +161,7 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
163
161
|
}
|
|
164
162
|
})
|
|
165
163
|
|
|
166
|
-
schema.post(
|
|
164
|
+
schema.post(remove, { document: true, query: false }, async function (this: HydratedDocument<T>) {
|
|
167
165
|
const original = this.toObject(toObjectOptions)
|
|
168
166
|
const model = this.constructor as Model<T>
|
|
169
167
|
|
|
@@ -180,7 +178,7 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
180
178
|
await deletePatch(opts, context)
|
|
181
179
|
})
|
|
182
180
|
|
|
183
|
-
schema.pre(deleteMethods as MongooseQueryMiddleware[],
|
|
181
|
+
schema.pre(deleteMethods as MongooseQueryMiddleware[], { document: false, query: true }, async function (this: IHookContext<T>) {
|
|
184
182
|
const options = this.getOptions()
|
|
185
183
|
if (options.ignoreHook) return
|
|
186
184
|
|
|
@@ -204,12 +202,12 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
204
202
|
}
|
|
205
203
|
}
|
|
206
204
|
|
|
207
|
-
if (opts.
|
|
208
|
-
await opts.
|
|
205
|
+
if (opts.preDelete && _.isArray(this._context.deletedDocs) && !_.isEmpty(this._context.deletedDocs)) {
|
|
206
|
+
await opts.preDelete(this._context.deletedDocs)
|
|
209
207
|
}
|
|
210
208
|
})
|
|
211
209
|
|
|
212
|
-
schema.post(deleteMethods as MongooseQueryMiddleware[],
|
|
210
|
+
schema.post(deleteMethods as MongooseQueryMiddleware[], { document: false, query: true }, async function (this: IHookContext<T>) {
|
|
213
211
|
const options = this.getOptions()
|
|
214
212
|
if (options.ignoreHook) return
|
|
215
213
|
|
package/src/version.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { satisfies } from 'semver'
|
|
2
|
+
import mongoose from 'mongoose'
|
|
3
|
+
|
|
4
|
+
export const isMongooseLessThan7 = satisfies(mongoose.version, '<7')
|
|
5
|
+
export const isMongoose6 = satisfies(mongoose.version, '6')
|
|
6
|
+
|
|
7
|
+
if (isMongoose6) {
|
|
8
|
+
mongoose.set('strictQuery', false)
|
|
9
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
1
2
|
import mongoose, { Types, model } from 'mongoose'
|
|
2
3
|
|
|
3
4
|
import UserSchema from './schemas/UserSchema'
|
|
@@ -146,11 +147,19 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
146
147
|
|
|
147
148
|
describe('upsert cases', () => {
|
|
148
149
|
it('should update() + upsert and emit one create event', async () => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
150
|
+
if (isMongooseLessThan7) {
|
|
151
|
+
await User.update(
|
|
152
|
+
{ name: 'John' },
|
|
153
|
+
{ name: 'John', role: 'admin' },
|
|
154
|
+
{ upsert: true }
|
|
155
|
+
)
|
|
156
|
+
} else {
|
|
157
|
+
await User.findOneAndUpdate(
|
|
158
|
+
{ name: 'John' },
|
|
159
|
+
{ name: 'John', role: 'admin' },
|
|
160
|
+
{ upsert: true }
|
|
161
|
+
)
|
|
162
|
+
}
|
|
154
163
|
|
|
155
164
|
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
156
165
|
expect(user).not.toBeNull()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
1
2
|
import mongoose, { model } from 'mongoose'
|
|
2
3
|
|
|
3
4
|
import type { ToObjectOptions } from 'mongoose'
|
|
@@ -45,7 +46,12 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
45
46
|
|
|
46
47
|
it('should remove() and emit one delete event', async () => {
|
|
47
48
|
const john = await User.create({ name: 'John', role: 'user' })
|
|
48
|
-
|
|
49
|
+
|
|
50
|
+
if (isMongooseLessThan7) {
|
|
51
|
+
await john.remove()
|
|
52
|
+
} else {
|
|
53
|
+
await john.deleteOne()
|
|
54
|
+
}
|
|
49
55
|
|
|
50
56
|
const history = await History.find({})
|
|
51
57
|
expect(history).toHaveLength(0)
|
|
@@ -69,7 +75,11 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
69
75
|
|
|
70
76
|
const [john, alice] = users
|
|
71
77
|
|
|
72
|
-
|
|
78
|
+
if (isMongooseLessThan7) {
|
|
79
|
+
await User.remove({ role: 'user' }).exec()
|
|
80
|
+
} else {
|
|
81
|
+
await User.deleteMany({ role: 'user' }).exec()
|
|
82
|
+
}
|
|
73
83
|
|
|
74
84
|
const history = await History.find({})
|
|
75
85
|
expect(history).toHaveLength(0)
|
|
@@ -102,7 +112,11 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
102
112
|
|
|
103
113
|
const [john] = users
|
|
104
114
|
|
|
105
|
-
|
|
115
|
+
if (isMongooseLessThan7) {
|
|
116
|
+
await User.remove({ role: 'user' }, { single: true }).exec()
|
|
117
|
+
} else {
|
|
118
|
+
await User.deleteOne({ role: 'user' }).exec()
|
|
119
|
+
}
|
|
106
120
|
|
|
107
121
|
const history = await History.find({})
|
|
108
122
|
expect(history).toHaveLength(0)
|
|
@@ -297,7 +311,11 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
297
311
|
|
|
298
312
|
const [john] = users
|
|
299
313
|
|
|
300
|
-
|
|
314
|
+
if (isMongooseLessThan7) {
|
|
315
|
+
await User.deleteMany({ role: 'user' }, { single: true }).exec()
|
|
316
|
+
} else {
|
|
317
|
+
await User.deleteOne({ role: 'user' }).exec()
|
|
318
|
+
}
|
|
301
319
|
|
|
302
320
|
const history = await History.find({})
|
|
303
321
|
expect(history).toHaveLength(0)
|
|
@@ -317,7 +335,12 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
317
335
|
|
|
318
336
|
it('should create then delete and emit one delete event', async () => {
|
|
319
337
|
const john = await User.create({ name: 'John', role: 'user' })
|
|
320
|
-
|
|
338
|
+
|
|
339
|
+
if (isMongooseLessThan7) {
|
|
340
|
+
await john.delete()
|
|
341
|
+
} else {
|
|
342
|
+
await john.deleteOne()
|
|
343
|
+
}
|
|
321
344
|
|
|
322
345
|
const history = await History.find({})
|
|
323
346
|
expect(history).toHaveLength(0)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
2
|
+
|
|
1
3
|
import mongoose, { Types, model } from 'mongoose'
|
|
2
4
|
|
|
3
5
|
import UserSchema from './schemas/UserSchema'
|
|
@@ -88,7 +90,12 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
88
90
|
{ name: 'John', role: 'user' }
|
|
89
91
|
], { ordered: true })
|
|
90
92
|
|
|
91
|
-
|
|
93
|
+
if (isMongooseLessThan7) {
|
|
94
|
+
await User.update({ role: 'user' }, { role: 'manager' })
|
|
95
|
+
} else {
|
|
96
|
+
await User.updateMany({ role: 'user' }, { role: 'manager' })
|
|
97
|
+
}
|
|
98
|
+
|
|
92
99
|
const users = await User.find({ role: 'manager' })
|
|
93
100
|
expect(users).toHaveLength(3)
|
|
94
101
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
2
|
+
|
|
1
3
|
import mongoose, { Types, model } from 'mongoose'
|
|
2
4
|
|
|
3
5
|
import UserSchema from './schemas/UserSchema'
|
|
@@ -164,7 +166,11 @@ describe('plugin - omit all', () => {
|
|
|
164
166
|
const user = await User.create({ name: 'John', role: 'user' })
|
|
165
167
|
expect(user.name).toBe('John')
|
|
166
168
|
|
|
167
|
-
|
|
169
|
+
if (isMongooseLessThan7) {
|
|
170
|
+
await User.update({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
171
|
+
} else {
|
|
172
|
+
await User.findOneAndUpdate({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
173
|
+
}
|
|
168
174
|
|
|
169
175
|
const history = await History.find({})
|
|
170
176
|
expect(history).toHaveLength(1)
|
|
@@ -193,7 +199,11 @@ describe('plugin - omit all', () => {
|
|
|
193
199
|
const alice = await User.create({ name: 'Alice', role: 'user' })
|
|
194
200
|
expect(alice.name).toBe('Alice')
|
|
195
201
|
|
|
196
|
-
|
|
202
|
+
if (isMongooseLessThan7) {
|
|
203
|
+
await User.update({ role: 'user' }, { $set: { name: 'Bob' } }, { multi: true }).exec()
|
|
204
|
+
} else {
|
|
205
|
+
await User.updateMany({ role: 'user' }, { $set: { name: 'Bob' } }).exec()
|
|
206
|
+
}
|
|
197
207
|
|
|
198
208
|
const history = await History.find({})
|
|
199
209
|
expect(history).toHaveLength(2)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
2
|
+
|
|
1
3
|
import mongoose, { model } from 'mongoose'
|
|
2
4
|
|
|
3
5
|
import UserSchema from './schemas/UserSchema'
|
|
@@ -91,7 +93,11 @@ describe('plugin - patch history disabled', () => {
|
|
|
91
93
|
const user = await User.create({ name: 'John', role: 'user' })
|
|
92
94
|
expect(user.name).toBe('John')
|
|
93
95
|
|
|
94
|
-
|
|
96
|
+
if (isMongooseLessThan7) {
|
|
97
|
+
await User.update({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
98
|
+
} else {
|
|
99
|
+
await User.findOneAndUpdate({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
100
|
+
}
|
|
95
101
|
|
|
96
102
|
const history = await History.find({})
|
|
97
103
|
expect(history).toHaveLength(0)
|
|
@@ -103,7 +109,11 @@ describe('plugin - patch history disabled', () => {
|
|
|
103
109
|
const alice = await User.create({ name: 'Alice', role: 'user' })
|
|
104
110
|
expect(alice.name).toBe('Alice')
|
|
105
111
|
|
|
106
|
-
|
|
112
|
+
if (isMongooseLessThan7) {
|
|
113
|
+
await User.update({ role: 'user' }, { $set: { name: 'Bob' } }, { multi: true }).exec()
|
|
114
|
+
} else {
|
|
115
|
+
await User.updateMany({ role: 'user' }, { $set: { name: 'Bob' } }).exec()
|
|
116
|
+
}
|
|
107
117
|
|
|
108
118
|
const history = await History.find({})
|
|
109
119
|
expect(history).toHaveLength(0)
|
|
@@ -5,7 +5,7 @@ import { patchHistoryPlugin } from '../src/plugin'
|
|
|
5
5
|
|
|
6
6
|
import { USER_CREATED } from './constants/events'
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const preDeleteMock = jest.fn()
|
|
9
9
|
|
|
10
10
|
describe('plugin - event created & patch history disabled', () => {
|
|
11
11
|
const uri = `${globalThis.__MONGO_URI__}${globalThis.__MONGO_DB_NAME__}`
|
|
@@ -13,7 +13,7 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
13
13
|
UserSchema.plugin(patchHistoryPlugin, {
|
|
14
14
|
eventCreated: USER_CREATED,
|
|
15
15
|
patchHistoryDisabled: true,
|
|
16
|
-
|
|
16
|
+
preDelete: preDeleteMock
|
|
17
17
|
})
|
|
18
18
|
|
|
19
19
|
const User = model('User', UserSchema)
|
|
@@ -31,7 +31,7 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
31
31
|
await mongoose.connection.collection('history').deleteMany({})
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
it('should deleteMany and execute
|
|
34
|
+
it('should deleteMany and execute preDelete', async () => {
|
|
35
35
|
await User.create([
|
|
36
36
|
{ name: 'John', role: 'user' },
|
|
37
37
|
{ name: 'Jane', role: 'user' },
|
|
@@ -44,7 +44,7 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
44
44
|
const [john, jane, jack] = users
|
|
45
45
|
|
|
46
46
|
await User.deleteMany({ role: 'user' })
|
|
47
|
-
expect(
|
|
48
|
-
expect(
|
|
47
|
+
expect(preDeleteMock).toHaveBeenCalledTimes(1)
|
|
48
|
+
expect(preDeleteMock).toHaveBeenCalledWith([john, jane, jack])
|
|
49
49
|
})
|
|
50
50
|
})
|
package/tests/plugin.test.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isMongooseLessThan7 } from '../src/version'
|
|
2
|
+
|
|
1
3
|
import mongoose from 'mongoose'
|
|
2
4
|
|
|
3
5
|
import UserSchema from './schemas/UserSchema'
|
|
@@ -266,7 +268,11 @@ describe('plugin', () => {
|
|
|
266
268
|
const user = await User.create({ name: 'John', role: 'user' })
|
|
267
269
|
expect(user.name).toBe('John')
|
|
268
270
|
|
|
269
|
-
|
|
271
|
+
if (isMongooseLessThan7) {
|
|
272
|
+
await User.update({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
273
|
+
} else {
|
|
274
|
+
await User.findOneAndUpdate({ _id: user._id }, { $set: { name: 'Alice' } }).exec()
|
|
275
|
+
}
|
|
270
276
|
|
|
271
277
|
const history = await History.find({})
|
|
272
278
|
expect(history).toHaveLength(2)
|
|
@@ -290,7 +296,6 @@ describe('plugin', () => {
|
|
|
290
296
|
|
|
291
297
|
// 2 update
|
|
292
298
|
expect(second.version).toBe(1)
|
|
293
|
-
expect(second.op).toBe('update')
|
|
294
299
|
expect(second.modelName).toBe('User')
|
|
295
300
|
expect(second.collectionName).toBe('users')
|
|
296
301
|
expect(second.collectionId).toEqual(user._id)
|
|
@@ -318,7 +323,11 @@ describe('plugin', () => {
|
|
|
318
323
|
const alice = await User.create({ name: 'Alice', role: 'user' })
|
|
319
324
|
expect(alice.name).toBe('Alice')
|
|
320
325
|
|
|
321
|
-
|
|
326
|
+
if (isMongooseLessThan7) {
|
|
327
|
+
await User.update({ role: 'user' }, { $set: { name: 'Bob' } }, { multi: true }).exec()
|
|
328
|
+
} else {
|
|
329
|
+
await User.findOneAndUpdate({ role: 'user' }, { $set: { name: 'Bob' } }).exec()
|
|
330
|
+
}
|
|
322
331
|
|
|
323
332
|
const history = await History.find({})
|
|
324
333
|
expect(history).toHaveLength(4)
|
|
@@ -357,7 +366,6 @@ describe('plugin', () => {
|
|
|
357
366
|
|
|
358
367
|
// 3 update
|
|
359
368
|
expect(third.version).toBe(1)
|
|
360
|
-
expect(third.op).toBe('update')
|
|
361
369
|
expect(third.modelName).toBe('User')
|
|
362
370
|
expect(third.collectionName).toBe('users')
|
|
363
371
|
expect(third.collectionId).toEqual(john._id)
|
|
@@ -372,7 +380,6 @@ describe('plugin', () => {
|
|
|
372
380
|
|
|
373
381
|
// 4 update
|
|
374
382
|
expect(fourth.version).toBe(1)
|
|
375
|
-
expect(fourth.op).toBe('update')
|
|
376
383
|
expect(fourth.modelName).toBe('User')
|
|
377
384
|
expect(fourth.collectionName).toBe('users')
|
|
378
385
|
expect(fourth.collectionId).toEqual(alice._id)
|
package/tests/mongose.test.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import mongoose from 'mongoose'
|
|
2
|
-
|
|
3
|
-
describe('mongoose - in-memory test', () => {
|
|
4
|
-
const uri = `${globalThis.__MONGO_URI__}${globalThis.__MONGO_DB_NAME__}`
|
|
5
|
-
|
|
6
|
-
beforeAll(async () => {
|
|
7
|
-
await mongoose.connect(uri)
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
afterAll(async () => {
|
|
11
|
-
await mongoose.connection.close()
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
beforeEach(async () => {
|
|
15
|
-
await mongoose.connection.collection('tests').deleteMany({})
|
|
16
|
-
await mongoose.connection.collection('patches').deleteMany({})
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
it('should insert a doc into collection', async () => {
|
|
20
|
-
const users = mongoose.connection.db.collection('users')
|
|
21
|
-
|
|
22
|
-
const doc = { name: 'John' }
|
|
23
|
-
const user = await users.insertOne(doc)
|
|
24
|
-
|
|
25
|
-
const insertedUser = await users.findOne({ _id: user.insertedId })
|
|
26
|
-
expect(insertedUser).toEqual(doc)
|
|
27
|
-
})
|
|
28
|
-
})
|