From b87b471c38aefcfee76a030b37b11b9b35e77d63 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Apr 2023 11:02:36 +0200 Subject: [PATCH 1/4] Update dependency and documentation --- README.md | 23 +++++++++++- package-lock.json | 93 +++++++++++++++++++++++++---------------------- package.json | 6 ++- 3 files changed, 74 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 6bcc5b5..0c8867e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Patch history & events for mongoose models ts-patch-mongoose is a plugin for mongoose \ -I needed to track changes in my mongoose models and save them as patch history (audit log) in separate collection. Events will allow me to track changes in my models and react to them in other parts of the application. I also wanted to omit some fields from patch history. +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. ## Features @@ -42,6 +42,8 @@ yarn add ts-patch-mongoose ## Example +How to use it with express [ts-express-swc](https://github.com/ilovepixelart/ts-express-swc) + Create your event constants `events.ts` ```typescript @@ -50,6 +52,19 @@ export const USER_UPDATED = 'user-updated' export const USER_DELETED = 'user-deleted' ``` +Create your interface `IUser.ts` + +```typescript +interface IUser { + name: string + role: string + createdAt?: Date + updatedAt?: Date +} + +export default IUser +``` + Setup your mongoose model `User.ts` ```typescript @@ -103,10 +118,14 @@ patchEventEmitter.on(USER_CREATED, ({ doc }) => { }) patchEventEmitter.on(USER_UPDATED, ({ doc, oldDoc, patch }) => { - console.log('User updated', doc, patch) + console.log('User updated', doc, oldDoc, patch) }) patchEventEmitter.on(USER_DELETED, ({ doc }) => { console.log('User deleted', doc) }) ``` + +## Check my other projects + +- [ts-migrate-mongoose](https://github.com/ilovepixelart/ts-express-swc) - Migration framework for mongoose \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bf7d546..7fe7040 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@shelf/jest-mongodb": "4.1.7", "@swc/cli": "0.1.62", - "@swc/core": "1.3.46", + "@swc/core": "1.3.49", "@swc/helpers": "0.5.0", "@swc/jest": "0.2.24", "@swc/register": "0.1.10", @@ -2693,9 +2693,9 @@ } }, "node_modules/@swc/core": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.46.tgz", - "integrity": "sha512-WxzgJMWUBVJ95HsvEqlWzM3Qxp2FQrPa4QdAkQQuuvCMnfdctGUbhX/c3LiSRlWrl2LIkYAi4bLansTOol4QcQ==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.49.tgz", + "integrity": "sha512-br44ZHOfE9YyRGcORSLkHFQHTvhwRcaithBJ1Q5y5iMGpLbH0Wai3GN49L60RvmGwxNJfWzT+E7+rNNR7ewKgA==", "dev": true, "hasInstallScript": true, "engines": { @@ -2706,25 +2706,30 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.46", - "@swc/core-darwin-x64": "1.3.46", - "@swc/core-linux-arm-gnueabihf": "1.3.46", - "@swc/core-linux-arm64-gnu": "1.3.46", - "@swc/core-linux-arm64-musl": "1.3.46", - "@swc/core-linux-x64-gnu": "1.3.46", - "@swc/core-linux-x64-musl": "1.3.46", - "@swc/core-win32-arm64-msvc": "1.3.46", - "@swc/core-win32-ia32-msvc": "1.3.46", - "@swc/core-win32-x64-msvc": "1.3.46" + "@swc/core-darwin-arm64": "1.3.49", + "@swc/core-darwin-x64": "1.3.49", + "@swc/core-linux-arm-gnueabihf": "1.3.49", + "@swc/core-linux-arm64-gnu": "1.3.49", + "@swc/core-linux-arm64-musl": "1.3.49", + "@swc/core-linux-x64-gnu": "1.3.49", + "@swc/core-linux-x64-musl": "1.3.49", + "@swc/core-win32-arm64-msvc": "1.3.49", + "@swc/core-win32-ia32-msvc": "1.3.49", + "@swc/core-win32-x64-msvc": "1.3.49" }, "peerDependencies": { "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.46.tgz", - "integrity": "sha512-kY4ASe7SsntDw2B1T70H9K1CFmK8POi+LyIpeCyC96EB9wbH2Sax+ploBB/wZALbYzr/dMJzOCU8QXzdmVS4Rg==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.49.tgz", + "integrity": "sha512-g7aIfXh6uPHmhLXdjXQq5t3HAyS/EdvujasW1DIS5k8UqOBaSoCcSGtLIjzcLv3KujqNfYcm118E+12H0nY6fQ==", "cpu": [ "arm64" ], @@ -2738,9 +2743,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.46.tgz", - "integrity": "sha512-kE3PMk8xW+2BZ3oZiTxxsUU/GzrGwM+qS4frOBz9TYHZe+W1dTtj4F9vBit4PFJ+tv4O6DPt9neGobzdq0UmRw==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.49.tgz", + "integrity": "sha512-eSIxVX0YDw40Bre5sAx2BV3DzdIGzmQvCf2yiBvLqiiL6GC0mmuDeWbUCAzdUX6fJ6FUVEBMUVqNOc9oJ2/d5w==", "cpu": [ "x64" ], @@ -2754,9 +2759,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.46.tgz", - "integrity": "sha512-7TbiUr9MYxT+mC7sVrayag/isFoaZUG/ogkEK8B/ouA1pnIYqWh3N5ifqCzfcSRiOURt+vVqPyoO1puSiNzVuQ==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.49.tgz", + "integrity": "sha512-8mj3IcRVr/OJY0mVITz6Z5osNAMJK5GiKDaZ+3QejPLbl6aiu4sH4GmTHDRN14RnaVXOpecsGcUoQmNoNa3u3w==", "cpu": [ "arm" ], @@ -2770,9 +2775,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.46.tgz", - "integrity": "sha512-Ycw4LU/wsUK9R+Y/2qFOPQseZDfM5D5gbWGrrYj5RoTm57FbnUsSsO26QeZxUNvams1oAQDkZDuerCc9qBRzIQ==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.49.tgz", + "integrity": "sha512-Rmg9xw6tmpOpf6GKKjpHQGmjfHzqSths5ebI2ahrHlhekzZF2HYmPkVw4bHda8Bja6mbaw8FVBgBHjPU8mMeDA==", "cpu": [ "arm64" ], @@ -2786,9 +2791,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.46.tgz", - "integrity": "sha512-cBclyr6IW1PBr8l9D4FkebgbqlkiIYnSJCbY84J/6PfTzQlD6w9a1TAoYxdGZpJ7SGHdmB0oDiZS1rhxCSCV/Q==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.49.tgz", + "integrity": "sha512-nlKPYMogAI3Aak6Mlkag8/2AlHAZ/DpH7RjhfMazsaGhD/sQOmYdyY9Al69ejpa419YJuREeeeLoojFlSsd30g==", "cpu": [ "arm64" ], @@ -2802,9 +2807,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.46.tgz", - "integrity": "sha512-amqMhTA2CXB6t11hVAZSSPKq4DZ9/sWbW3wYYQHxzqrMJML0726OJs4pt0XnlU7FzdP/9M9j2B/gWCRaCMxXVA==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.49.tgz", + "integrity": "sha512-QOyeJQ6NVi73SJcizbwvIZTiGA/N+BxX9liRrvibumaQmRh8fWjJiLNsv3ODSHeuonak7E8Bf7a7NnSTyu48Mw==", "cpu": [ "x64" ], @@ -2818,9 +2823,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.46.tgz", - "integrity": "sha512-WOQZTIkJ9khIj5Z2unf6OTrWV9k8br+HZ93RvnamEmJBlLPUuT9IjB+agNhjaDgOpz9/ZldSGqV7vzl5FGQl1Q==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.49.tgz", + "integrity": "sha512-WlDMz+SOpYC9O/ZBUw1oiyWI7HyUCMlf/HS8Fy/kRI3eGoGCUxVTCJ1mP57GdQr4Wg32Y/ZpO2KSNQFWnT8mAw==", "cpu": [ "x64" ], @@ -2834,9 +2839,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.46.tgz", - "integrity": "sha512-4JSREbqaTRQ6QO0EeoiB6G5vuFT8zI8aTOLu5At7Cvlw+X7bOGNO+wJ3Tqw7O+68OL+0bPHzHGTXKL9kUccY1A==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.49.tgz", + "integrity": "sha512-41LZOeI94Za3twib8KOIjnHYAZ+nkBFmboaREsFR1760S7jiMVywqWX8nFZvn/CXj15Fjjgdgyuig+zMREwXwQ==", "cpu": [ "arm64" ], @@ -2850,9 +2855,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.46.tgz", - "integrity": "sha512-kC8dIDzcArm1e85yHJsEZFxcNq5NztLkrqkP1nVOQ+9QXD9DKhjbZtWy2gnpclinii6KEGng8SieWiJiOA0CBQ==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.49.tgz", + "integrity": "sha512-IdqLPoMKssyAoOCZdNXmnAd6/uyx+Hb9KSfZUHepZaNfwMy6J5XXrOsbYs3v53FH8MtekUUdV+mMX4me9bcv9w==", "cpu": [ "ia32" ], @@ -2866,9 +2871,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.46", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.46.tgz", - "integrity": "sha512-rrSAfq+DvpJioBxUsnuH+sKl0eXid1DwkwNzkVGHEreN9GoP7GospWtFq7VDcO6DrS/s3HtR4/TzoIYFEBCRIg==", + "version": "1.3.49", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.49.tgz", + "integrity": "sha512-7Fqjo5pS3uIohhSbYSaR0+e/bJdxmQb4oG97FIh5qvlCCGQaQ9UiaEeYy4uK0Ad+Menum1IXCAEiG7RHcl6Eyw==", "cpu": [ "x64" ], diff --git a/package.json b/package.json index c76adfd..66682b2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,9 @@ "emit", "create", "update", - "delete" + "delete", + "audit", + "log" ], "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -71,7 +73,7 @@ "devDependencies": { "@shelf/jest-mongodb": "4.1.7", "@swc/cli": "0.1.62", - "@swc/core": "1.3.46", + "@swc/core": "1.3.49", "@swc/helpers": "0.5.0", "@swc/jest": "0.2.24", "@swc/register": "0.1.10", From d24c5670f79ead99ff61b6e48e1ac3055d8b1c45 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Apr 2023 11:04:07 +0200 Subject: [PATCH 2/4] Link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c8867e..13d7b26 100644 --- a/README.md +++ b/README.md @@ -128,4 +128,4 @@ patchEventEmitter.on(USER_DELETED, ({ doc }) => { ## Check my other projects -- [ts-migrate-mongoose](https://github.com/ilovepixelart/ts-express-swc) - Migration framework for mongoose \ No newline at end of file +- [ts-migrate-mongoose](https://github.com/ilovepixelart/ts-migrate-mongoose) - Migration framework for mongoose \ No newline at end of file From 62b66d723fb0578020b1d238690c9e02cd0a2959 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Apr 2023 11:04:19 +0200 Subject: [PATCH 3/4] Lint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 13d7b26..a69e3a0 100644 --- a/README.md +++ b/README.md @@ -128,4 +128,4 @@ patchEventEmitter.on(USER_DELETED, ({ doc }) => { ## Check my other projects -- [ts-migrate-mongoose](https://github.com/ilovepixelart/ts-migrate-mongoose) - Migration framework for mongoose \ No newline at end of file +- [ts-migrate-mongoose](https://github.com/ilovepixelart/ts-migrate-mongoose) - Migration framework for mongoose From 151c1cc2f6fee55c065e3028b7a531bf37894a85 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 10 Apr 2023 11:05:41 +0200 Subject: [PATCH 4/4] Description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a69e3a0..a6d490e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ts-patch-mongoose -Patch history & events for mongoose models +Patch history & events plugin for mongoose [![npm](https://img.shields.io/npm/v/ts-patch-mongoose)](https://www.npmjs.com/package/ts-patch-mongoose) [![npm](https://img.shields.io/npm/dt/ts-patch-mongoose)](https://www.npmjs.com/package/ts-patch-mongoose)