ts-patch-mongoose 2.2.0 → 2.3.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/dist/esm/em.js +6 -3
- package/dist/esm/em.js.map +1 -1
- package/dist/esm/interfaces/IContext.js +2 -1
- package/dist/esm/interfaces/IEvent.js +2 -1
- package/dist/esm/interfaces/IHistory.js +2 -1
- package/dist/esm/interfaces/IHookContext.js +2 -1
- package/dist/esm/interfaces/IPluginOptions.js +2 -1
- package/dist/esm/models/History.js +7 -5
- package/dist/esm/models/History.js.map +1 -1
- package/dist/esm/patch.js +45 -30
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/plugin.mjs +33 -28
- package/dist/esm/version.js +10 -6
- package/dist/esm/version.js.map +1 -1
- package/jest.config.ts +4 -5
- package/package.json +13 -13
- package/tests/plugin-omit-all.test.ts +2 -4
- package/tests/plugin-patch-history-disabled.test.ts +2 -4
- package/tests/plugin.test.ts +2 -4
- package/tsconfig.json +1 -4
package/dist/esm/em.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const events_1 = tslib_1.__importDefault(require("events"));
|
|
5
|
+
class PatchEventEmitter extends events_1.default {
|
|
3
6
|
}
|
|
4
7
|
const em = new PatchEventEmitter();
|
|
5
|
-
|
|
8
|
+
exports.default = em;
|
|
6
9
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"em.js","sourceRoot":"","sources":["../../src/em.ts"],"names":[],"mappings":";;;AAAA,4DAAiC;AAEjC,MAAM,iBAAkB,SAAQ,gBAAY;CAAG;AAC/C,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAA;AAElC,kBAAe,EAAE,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mongoose_1 = require("mongoose");
|
|
4
|
+
const HistorySchema = new mongoose_1.Schema({
|
|
3
5
|
op: {
|
|
4
6
|
type: String,
|
|
5
7
|
required: true
|
|
@@ -13,7 +15,7 @@ const HistorySchema = new Schema({
|
|
|
13
15
|
required: true
|
|
14
16
|
},
|
|
15
17
|
collectionId: {
|
|
16
|
-
type: Schema.Types.ObjectId,
|
|
18
|
+
type: mongoose_1.Schema.Types.ObjectId,
|
|
17
19
|
required: true
|
|
18
20
|
},
|
|
19
21
|
doc: {
|
|
@@ -39,6 +41,6 @@ const HistorySchema = new Schema({
|
|
|
39
41
|
}, { timestamps: true });
|
|
40
42
|
HistorySchema.index({ collectionId: 1, version: -1 });
|
|
41
43
|
HistorySchema.index({ op: 1, modelName: 1, collectionName: 1, collectionId: 1, reason: 1, version: 1 });
|
|
42
|
-
const History = model('History', HistorySchema, 'history');
|
|
43
|
-
|
|
44
|
+
const History = (0, mongoose_1.model)('History', HistorySchema, 'history');
|
|
45
|
+
exports.default = History;
|
|
44
46
|
//# sourceMappingURL=History.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../../src/models/History.ts"],"names":[],"mappings":"AAAA,
|
|
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,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,IAAA,gBAAK,EAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAE1D,kBAAe,OAAO,CAAA"}
|
package/dist/esm/patch.js
CHANGED
|
@@ -1,42 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deletePatch = exports.updatePatch = exports.createPatch = exports.bulkPatch = exports.emitEvent = exports.getData = exports.getValue = exports.getMetadata = exports.getReason = exports.getUser = exports.getObjects = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
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"));
|
|
6
10
|
function isPatchHistoryEnabled(opts, context) {
|
|
7
11
|
return !opts.patchHistoryDisabled && !context.ignorePatchHistory;
|
|
8
12
|
}
|
|
9
|
-
|
|
13
|
+
function getObjects(opts, current, original) {
|
|
10
14
|
let currentObject = JSON.parse(JSON.stringify(current));
|
|
11
15
|
let originalObject = JSON.parse(JSON.stringify(original));
|
|
12
16
|
if (opts.omit) {
|
|
13
|
-
currentObject =
|
|
14
|
-
originalObject =
|
|
17
|
+
currentObject = (0, omit_deep_1.default)(currentObject, opts.omit);
|
|
18
|
+
originalObject = (0, omit_deep_1.default)(originalObject, opts.omit);
|
|
15
19
|
}
|
|
16
20
|
return { currentObject, originalObject };
|
|
17
21
|
}
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
exports.getObjects = getObjects;
|
|
23
|
+
async function getUser(opts) {
|
|
24
|
+
if (lodash_1.default.isFunction(opts.getUser)) {
|
|
20
25
|
return await opts.getUser();
|
|
21
26
|
}
|
|
22
27
|
return undefined;
|
|
23
28
|
}
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
exports.getUser = getUser;
|
|
30
|
+
async function getReason(opts) {
|
|
31
|
+
if (lodash_1.default.isFunction(opts.getReason)) {
|
|
26
32
|
return await opts.getReason();
|
|
27
33
|
}
|
|
28
34
|
return undefined;
|
|
29
35
|
}
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
exports.getReason = getReason;
|
|
37
|
+
async function getMetadata(opts) {
|
|
38
|
+
if (lodash_1.default.isFunction(opts.getMetadata)) {
|
|
32
39
|
return await opts.getMetadata();
|
|
33
40
|
}
|
|
34
41
|
return undefined;
|
|
35
42
|
}
|
|
36
|
-
|
|
43
|
+
exports.getMetadata = getMetadata;
|
|
44
|
+
function getValue(item) {
|
|
37
45
|
return item.status === 'fulfilled' ? item.value : undefined;
|
|
38
46
|
}
|
|
39
|
-
|
|
47
|
+
exports.getValue = getValue;
|
|
48
|
+
async function getData(opts) {
|
|
40
49
|
return Promise
|
|
41
50
|
.allSettled([getUser(opts), getReason(opts), getMetadata(opts)])
|
|
42
51
|
.then(([user, reason, metadata]) => {
|
|
@@ -47,20 +56,22 @@ export async function getData(opts) {
|
|
|
47
56
|
];
|
|
48
57
|
});
|
|
49
58
|
}
|
|
50
|
-
|
|
59
|
+
exports.getData = getData;
|
|
60
|
+
function emitEvent(context, event, data) {
|
|
51
61
|
if (event && !context.ignoreEvent) {
|
|
52
|
-
|
|
62
|
+
em_1.default.emit(event, data);
|
|
53
63
|
}
|
|
54
64
|
}
|
|
55
|
-
|
|
65
|
+
exports.emitEvent = emitEvent;
|
|
66
|
+
async function bulkPatch(opts, context, eventKey, docsKey) {
|
|
56
67
|
const history = isPatchHistoryEnabled(opts, context);
|
|
57
68
|
const event = opts[eventKey];
|
|
58
69
|
const docs = context[docsKey];
|
|
59
70
|
const key = eventKey === 'eventCreated' ? 'doc' : 'oldDoc';
|
|
60
|
-
if (
|
|
71
|
+
if (lodash_1.default.isEmpty(docs) || (!event && !history))
|
|
61
72
|
return;
|
|
62
73
|
const [user, reason, metadata] = await getData(opts);
|
|
63
|
-
const chunks =
|
|
74
|
+
const chunks = lodash_1.default.chunk(docs, 1000);
|
|
64
75
|
for await (const chunk of chunks) {
|
|
65
76
|
const bulk = [];
|
|
66
77
|
for (const doc of chunk) {
|
|
@@ -84,30 +95,32 @@ export async function bulkPatch(opts, context, eventKey, docsKey) {
|
|
|
84
95
|
}
|
|
85
96
|
}
|
|
86
97
|
if (history) {
|
|
87
|
-
await
|
|
98
|
+
await History_1.default.bulkWrite(bulk, { ordered: false });
|
|
88
99
|
}
|
|
89
100
|
}
|
|
90
101
|
}
|
|
91
|
-
|
|
102
|
+
exports.bulkPatch = bulkPatch;
|
|
103
|
+
async function createPatch(opts, context) {
|
|
92
104
|
await bulkPatch(opts, context, 'eventCreated', 'createdDocs');
|
|
93
105
|
}
|
|
94
|
-
|
|
106
|
+
exports.createPatch = createPatch;
|
|
107
|
+
async function updatePatch(opts, context, current, original) {
|
|
95
108
|
const history = isPatchHistoryEnabled(opts, context);
|
|
96
109
|
const { currentObject, originalObject } = getObjects(opts, current, original);
|
|
97
|
-
if (
|
|
110
|
+
if (lodash_1.default.isEmpty(originalObject) || lodash_1.default.isEmpty(currentObject))
|
|
98
111
|
return;
|
|
99
|
-
const patch =
|
|
100
|
-
if (
|
|
112
|
+
const patch = fast_json_patch_1.default.compare(originalObject, currentObject, true);
|
|
113
|
+
if (lodash_1.default.isEmpty(patch))
|
|
101
114
|
return;
|
|
102
115
|
emitEvent(context, opts.eventUpdated, { oldDoc: original, doc: current, patch });
|
|
103
116
|
if (history) {
|
|
104
117
|
let version = 0;
|
|
105
|
-
const lastHistory = await
|
|
118
|
+
const lastHistory = await History_1.default.findOne({ collectionId: original._id }).sort('-version').exec();
|
|
106
119
|
if (lastHistory && lastHistory.version >= 0) {
|
|
107
120
|
version = lastHistory.version + 1;
|
|
108
121
|
}
|
|
109
122
|
const [user, reason, metadata] = await getData(opts);
|
|
110
|
-
await
|
|
123
|
+
await History_1.default.create({
|
|
111
124
|
op: context.op,
|
|
112
125
|
modelName: context.modelName,
|
|
113
126
|
collectionName: context.collectionName,
|
|
@@ -120,7 +133,9 @@ export async function updatePatch(opts, context, current, original) {
|
|
|
120
133
|
});
|
|
121
134
|
}
|
|
122
135
|
}
|
|
123
|
-
|
|
136
|
+
exports.updatePatch = updatePatch;
|
|
137
|
+
async function deletePatch(opts, context) {
|
|
124
138
|
await bulkPatch(opts, context, 'eventDeleted', 'deletedDocs');
|
|
125
139
|
}
|
|
140
|
+
exports.deletePatch = deletePatch;
|
|
126
141
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AACtB,kEAA4B;AAC5B,8EAAuC;AASvC,uEAAsC;AACtC,sDAAqB;AAErB,SAAS,qBAAqB,CAAK,IAAuB,EAAE,OAAoB;IAC9E,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAA;AAClE,CAAC;AAED,SAAgB,UAAU,CAAK,IAAuB,EAAE,OAA4B,EAAE,QAA6B;IACjH,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAe,CAAA;IACrE,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAe,CAAA;IAEvE,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,aAAa,GAAG,IAAA,mBAAI,EAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,cAAc,GAAG,IAAA,mBAAI,EAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KACjD;IAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA;AAC1C,CAAC;AAVD,gCAUC;AAEM,KAAK,UAAU,OAAO,CAAK,IAAuB;IACvD,IAAI,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9B,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;KAC5B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AALD,0BAKC;AAEM,KAAK,UAAU,SAAS,CAAK,IAAuB;IACzD,IAAI,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAChC,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;KAC9B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AALD,8BAKC;AAEM,KAAK,UAAU,WAAW,CAAK,IAAuB;IAC3D,IAAI,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAClC,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;KAChC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AALD,kCAKC;AAED,SAAgB,QAAQ,CAAM,IAA6B;IACzD,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC;AAFD,4BAEC;AAEM,KAAK,UAAU,OAAO,CAAK,IAAuB;IACvD,OAAO,OAAO;SACX,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/D,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;QACjC,OAAO;YACL,QAAQ,CAAC,IAAI,CAAC;YACd,QAAQ,CAAC,MAAM,CAAC;YAChB,QAAQ,CAAC,QAAQ,CAAC;SACnB,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAVD,0BAUC;AAED,SAAgB,SAAS,CAAK,OAAoB,EAAE,KAAyB,EAAE,IAAe;IAC5F,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QACjC,YAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;KACrB;AACH,CAAC;AAJD,8BAIC;AAEM,KAAK,UAAU,SAAS,CAAK,IAAuB,EAAE,OAAoB,EAAE,QAAyC,EAAE,OAAsC;IAClK,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE1D,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC;QAAE,OAAM;IAEnD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAEpD,MAAM,MAAM,GAAG,gBAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,MAAM,IAAI,GAAG,EAAE,CAAA;QAEf,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACvB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAEzC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC;oBACR,SAAS,EAAE;wBACT,QAAQ,EAAE;4BACR,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;4BACtC,YAAY,EAAE,GAAG,CAAC,GAAqB;4BACvC,GAAG;4BACH,IAAI;4BACJ,MAAM;4BACN,QAAQ;4BACR,OAAO,EAAE,CAAC;yBACX;qBACF;iBACF,CAAC,CAAA;aACH;SACF;QAED,IAAI,OAAO,EAAE;YACX,MAAM,iBAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;SAClD;KACF;AACH,CAAC;AAxCD,8BAwCC;AAEM,KAAK,UAAU,WAAW,CAAK,IAAuB,EAAE,OAAoB;IACjF,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;AAC/D,CAAC;AAFD,kCAEC;AAEM,KAAK,UAAU,WAAW,CAAK,IAAuB,EAAE,OAAoB,EAAE,OAA4B,EAAE,QAA6B;IAC9I,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAEpD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC7E,IAAI,gBAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAM;IAEjE,MAAM,KAAK,GAAG,yBAAS,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IACpE,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAM;IAE5B,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhF,IAAI,OAAO,EAAE;QACX,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,MAAM,WAAW,GAAG,MAAM,iBAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;QAEnH,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,EAAE;YAC3C,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,CAAC,CAAA;SAClC;QAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAEpD,MAAM,iBAAO,CAAC,MAAM,CAAC;YACnB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,YAAY,EAAE,QAAQ,CAAC,GAAqB;YAC5C,KAAK;YACL,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,OAAO;SACR,CAAC,CAAA;KACH;AACH,CAAC;AAlCD,kCAkCC;AAEM,KAAK,UAAU,WAAW,CAAK,IAAuB,EAAE,OAAoB;IACjF,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;AAC/D,CAAC;AAFD,kCAEC"}
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/plugin.mjs
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
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 power_assign_1 = require("power-assign");
|
|
7
|
+
const patch_1 = require("./patch");
|
|
8
|
+
const version_1 = require("./version");
|
|
9
|
+
const em_1 = tslib_1.__importDefault(require("./em"));
|
|
10
|
+
const remove = version_1.isMongooseLessThan7 ? 'remove' : 'deleteOne';
|
|
7
11
|
const toObjectOptions = {
|
|
8
12
|
depopulate: true,
|
|
9
13
|
virtuals: false
|
|
@@ -32,11 +36,11 @@ function isHookIgnored(options) {
|
|
|
32
36
|
function splitUpdateAndCommands(updateQuery) {
|
|
33
37
|
let update = {};
|
|
34
38
|
const commands = [];
|
|
35
|
-
if (!
|
|
36
|
-
update =
|
|
37
|
-
const keys =
|
|
38
|
-
if (!
|
|
39
|
-
|
|
39
|
+
if (!lodash_1.default.isEmpty(updateQuery) && !lodash_1.default.isArray(updateQuery) && lodash_1.default.isObjectLike(updateQuery)) {
|
|
40
|
+
update = lodash_1.default.cloneDeep(updateQuery);
|
|
41
|
+
const keys = lodash_1.default.keys(update).filter((key) => key.startsWith('$'));
|
|
42
|
+
if (!lodash_1.default.isEmpty(keys)) {
|
|
43
|
+
lodash_1.default.forEach(keys, (key) => {
|
|
40
44
|
commands.push({ [key]: update[key] });
|
|
41
45
|
delete update[key];
|
|
42
46
|
});
|
|
@@ -45,18 +49,18 @@ function splitUpdateAndCommands(updateQuery) {
|
|
|
45
49
|
return { update, commands };
|
|
46
50
|
}
|
|
47
51
|
function assignUpdate(document, update, commands) {
|
|
48
|
-
let updated = assign(document, update);
|
|
49
|
-
|
|
52
|
+
let updated = (0, power_assign_1.assign)(document, update);
|
|
53
|
+
lodash_1.default.forEach(commands, (command) => {
|
|
50
54
|
try {
|
|
51
|
-
updated = assign(updated, command);
|
|
55
|
+
updated = (0, power_assign_1.assign)(updated, command);
|
|
52
56
|
}
|
|
53
57
|
catch {
|
|
54
58
|
}
|
|
55
59
|
});
|
|
56
60
|
return updated;
|
|
57
61
|
}
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
exports.patchEventEmitter = em_1.default;
|
|
63
|
+
const patchHistoryPlugin = function plugin(schema, opts) {
|
|
60
64
|
schema.pre('save', async function () {
|
|
61
65
|
const current = this.toObject(toObjectOptions);
|
|
62
66
|
const model = this.constructor;
|
|
@@ -67,12 +71,12 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
67
71
|
createdDocs: [current]
|
|
68
72
|
};
|
|
69
73
|
if (this.isNew) {
|
|
70
|
-
await createPatch(opts, context);
|
|
74
|
+
await (0, patch_1.createPatch)(opts, context);
|
|
71
75
|
}
|
|
72
76
|
else {
|
|
73
77
|
const original = await model.findById(current._id).lean().exec();
|
|
74
78
|
if (original) {
|
|
75
|
-
await updatePatch(opts, context, current, original);
|
|
79
|
+
await (0, patch_1.updatePatch)(opts, context, current, original);
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
});
|
|
@@ -83,7 +87,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
83
87
|
collectionName: opts.collectionName ?? this.collection.collectionName,
|
|
84
88
|
createdDocs: docs
|
|
85
89
|
};
|
|
86
|
-
await createPatch(opts, context);
|
|
90
|
+
await (0, patch_1.createPatch)(opts, context);
|
|
87
91
|
});
|
|
88
92
|
schema.pre(updateMethods, async function () {
|
|
89
93
|
const options = this.getOptions();
|
|
@@ -104,7 +108,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
104
108
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
105
109
|
const cursor = model.find(filter).lean().cursor();
|
|
106
110
|
await cursor.eachAsync(async (doc) => {
|
|
107
|
-
await updatePatch(opts, this._context, assignUpdate(doc, update, commands), doc);
|
|
111
|
+
await (0, patch_1.updatePatch)(opts, this._context, assignUpdate(doc, update, commands), doc);
|
|
108
112
|
});
|
|
109
113
|
});
|
|
110
114
|
schema.post(updateMethods, async function () {
|
|
@@ -117,17 +121,17 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
117
121
|
const updateQuery = this.getUpdate();
|
|
118
122
|
const { update, commands } = splitUpdateAndCommands(updateQuery);
|
|
119
123
|
const filter = assignUpdate({}, update, commands);
|
|
120
|
-
if (!
|
|
124
|
+
if (!lodash_1.default.isEmpty(filter)) {
|
|
121
125
|
const current = await model.findOne(update).lean().exec();
|
|
122
126
|
if (current) {
|
|
123
127
|
this._context.createdDocs = [current];
|
|
124
|
-
await createPatch(opts, this._context);
|
|
128
|
+
await (0, patch_1.createPatch)(opts, this._context);
|
|
125
129
|
}
|
|
126
130
|
}
|
|
127
131
|
});
|
|
128
132
|
schema.pre(remove, { document: true, query: false }, async function () {
|
|
129
133
|
const original = this.toObject(toObjectOptions);
|
|
130
|
-
if (opts.preDelete && !
|
|
134
|
+
if (opts.preDelete && !lodash_1.default.isEmpty(original)) {
|
|
131
135
|
await opts.preDelete([original]);
|
|
132
136
|
}
|
|
133
137
|
});
|
|
@@ -140,7 +144,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
140
144
|
collectionName: opts.collectionName ?? model.collection.collectionName,
|
|
141
145
|
deletedDocs: [original]
|
|
142
146
|
};
|
|
143
|
-
await deletePatch(opts, context);
|
|
147
|
+
await (0, patch_1.deletePatch)(opts, context);
|
|
144
148
|
});
|
|
145
149
|
schema.pre(deleteMethods, { document: false, query: true }, async function () {
|
|
146
150
|
const options = this.getOptions();
|
|
@@ -157,17 +161,17 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
157
161
|
};
|
|
158
162
|
if (['remove', 'deleteMany'].includes(this._context.op) && !options.single) {
|
|
159
163
|
const docs = await model.find(filter).lean().exec();
|
|
160
|
-
if (!
|
|
164
|
+
if (!lodash_1.default.isEmpty(docs)) {
|
|
161
165
|
this._context.deletedDocs = docs;
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
else {
|
|
165
169
|
const doc = await model.findOne(filter).lean().exec();
|
|
166
|
-
if (!
|
|
170
|
+
if (!lodash_1.default.isEmpty(doc)) {
|
|
167
171
|
this._context.deletedDocs = [doc];
|
|
168
172
|
}
|
|
169
173
|
}
|
|
170
|
-
if (opts.preDelete &&
|
|
174
|
+
if (opts.preDelete && lodash_1.default.isArray(this._context.deletedDocs) && !lodash_1.default.isEmpty(this._context.deletedDocs)) {
|
|
171
175
|
await opts.preDelete(this._context.deletedDocs);
|
|
172
176
|
}
|
|
173
177
|
});
|
|
@@ -175,7 +179,8 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
175
179
|
const options = this.getOptions();
|
|
176
180
|
if (isHookIgnored(options))
|
|
177
181
|
return;
|
|
178
|
-
await deletePatch(opts, this._context);
|
|
182
|
+
await (0, patch_1.deletePatch)(opts, this._context);
|
|
179
183
|
});
|
|
180
184
|
};
|
|
185
|
+
exports.patchHistoryPlugin = patchHistoryPlugin;
|
|
181
186
|
//# sourceMappingURL=plugin.js.map
|
package/dist/esm/version.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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);
|
|
7
11
|
}
|
|
8
12
|
//# 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":"AAAA,
|
|
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"}
|
package/jest.config.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import mongo from '@shelf/jest-mongodb/jest-preset'
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
+
const { recursive } = require('merge')
|
|
3
|
+
const mongo = require('@shelf/jest-mongodb/jest-preset')
|
|
5
4
|
|
|
6
5
|
const config = recursive(mongo, {
|
|
7
6
|
roots: [
|
|
@@ -30,4 +29,4 @@ const config = recursive(mongo, {
|
|
|
30
29
|
]
|
|
31
30
|
})
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
module.exports = config
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-patch-mongoose",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Patch history & events for mongoose models",
|
|
5
5
|
"author": "Alex Eagle",
|
|
6
6
|
"license": "MIT",
|
|
@@ -85,25 +85,25 @@
|
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@shelf/jest-mongodb": "4.1.7",
|
|
87
87
|
"@swc/cli": "0.1.62",
|
|
88
|
-
"@swc/core": "1.3.
|
|
89
|
-
"@swc/helpers": "0.5.
|
|
88
|
+
"@swc/core": "1.3.91",
|
|
89
|
+
"@swc/helpers": "0.5.2",
|
|
90
90
|
"@swc/jest": "0.2.29",
|
|
91
91
|
"@swc/register": "0.1.10",
|
|
92
|
-
"@types/jest": "29.5.
|
|
93
|
-
"@types/lodash": "4.14.
|
|
92
|
+
"@types/jest": "29.5.5",
|
|
93
|
+
"@types/lodash": "4.14.199",
|
|
94
94
|
"@types/node": "18",
|
|
95
|
-
"@typescript-eslint/eslint-plugin": "6.3
|
|
96
|
-
"@typescript-eslint/parser": "6.3
|
|
97
|
-
"eslint": "8.
|
|
98
|
-
"eslint-plugin-jest": "27.2
|
|
95
|
+
"@typescript-eslint/eslint-plugin": "6.7.3",
|
|
96
|
+
"@typescript-eslint/parser": "6.7.3",
|
|
97
|
+
"eslint": "8.50.0",
|
|
98
|
+
"eslint-plugin-jest": "27.4.2",
|
|
99
99
|
"eslint-plugin-jest-formatting": "3.1.0",
|
|
100
|
-
"eslint-plugin-sonarjs": "0.
|
|
101
|
-
"jest": "29.
|
|
100
|
+
"eslint-plugin-sonarjs": "0.21.0",
|
|
101
|
+
"jest": "29.7.0",
|
|
102
102
|
"merge": "2.1.1",
|
|
103
|
-
"mongoose": "6.
|
|
103
|
+
"mongoose": "6.12.0",
|
|
104
104
|
"open-cli": "7.2.0",
|
|
105
105
|
"ts-node": "10.9.1",
|
|
106
|
-
"typescript": "5.
|
|
106
|
+
"typescript": "5.2.2"
|
|
107
107
|
},
|
|
108
108
|
"peerDependencies": {
|
|
109
109
|
"mongoose": ">=6.6.0 < 8"
|
|
@@ -240,10 +240,8 @@ describe('plugin - omit all', () => {
|
|
|
240
240
|
})
|
|
241
241
|
|
|
242
242
|
it('should create many', async () => {
|
|
243
|
-
await User.create(
|
|
244
|
-
|
|
245
|
-
{ name: 'Alice', role: 'user' }
|
|
246
|
-
])
|
|
243
|
+
await User.create({ name: 'John', role: 'user' })
|
|
244
|
+
await User.create({ name: 'Alice', role: 'user' })
|
|
247
245
|
|
|
248
246
|
const history = await History.find({})
|
|
249
247
|
expect(history).toHaveLength(2)
|
|
@@ -122,10 +122,8 @@ describe('plugin - patch history disabled', () => {
|
|
|
122
122
|
})
|
|
123
123
|
|
|
124
124
|
it('should create many', async () => {
|
|
125
|
-
await User.create(
|
|
126
|
-
|
|
127
|
-
{ name: 'Alice', role: 'user' }
|
|
128
|
-
])
|
|
125
|
+
await User.create({ name: 'John', role: 'user' })
|
|
126
|
+
await User.create({ name: 'Alice', role: 'user' })
|
|
129
127
|
|
|
130
128
|
const history = await History.find({})
|
|
131
129
|
expect(history).toHaveLength(0)
|
package/tests/plugin.test.ts
CHANGED
|
@@ -408,10 +408,8 @@ describe('plugin', () => {
|
|
|
408
408
|
})
|
|
409
409
|
|
|
410
410
|
it('should create many', async () => {
|
|
411
|
-
await User.create(
|
|
412
|
-
|
|
413
|
-
{ name: 'John', role: 'user' }
|
|
414
|
-
])
|
|
411
|
+
await User.create({ name: 'John', role: 'user' })
|
|
412
|
+
await User.create({ name: 'Alice', role: 'user' })
|
|
415
413
|
|
|
416
414
|
const history = await History.find({}).sort('doc.name')
|
|
417
415
|
expect(history).toHaveLength(2)
|