diff --git a/jest.config.js b/jest.config.js index 658fad79..7988797e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -90,7 +90,7 @@ module.exports = { global: { statements: '75', branches: '50', - functions: '55', + functions: '50', lines: '75', } }, diff --git a/package.json b/package.json index 1ad22559..1b00f313 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "license": "MIT", "dependencies": { "@deepkit/core": "1.0.1-alpha.77", + "@deepkit/event": "1.0.1-alpha.85", "@deepkit/type": "1.0.1-alpha.85", "@koa/cors": "^4.0.0", "@koa/multer": "^3.0.0", @@ -77,7 +78,6 @@ "nodemailer": "6.7.7", "pg-promise": "^10.11.1", "pino": "^8.10.0", - "promise-events": "^0.2.4", "qs": "^6.11.0", "reflect-metadata": "^0.1.13", "shelljs": "^0.8.5", @@ -89,8 +89,9 @@ "zod": "^3.20.2" }, "devDependencies": { - "@commitlint/cli": "^17.3.0", - "@commitlint/config-conventional": "^17.3.0", + "@commitlint/cli": "^17.4.4", + "@commitlint/config-conventional": "^17.4.4", + "@deepkit/type-compiler": "1.0.1-alpha.83", "@shelf/jest-mongodb": "^4.1.4", "@types/bcrypt": "^5.0.0", "@types/compression": "^1.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff5a1c36..04ec18ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,10 +1,12 @@ lockfileVersion: 5.4 specifiers: - '@commitlint/cli': ^17.3.0 - '@commitlint/config-conventional': ^17.3.0 + '@commitlint/cli': ^17.4.4 + '@commitlint/config-conventional': ^17.4.4 '@deepkit/core': 1.0.1-alpha.77 + '@deepkit/event': 1.0.1-alpha.85 '@deepkit/type': 1.0.1-alpha.85 + '@deepkit/type-compiler': 1.0.1-alpha.83 '@koa/cors': ^4.0.0 '@koa/multer': ^3.0.0 '@mikro-orm/core': ^5.6.2 @@ -99,7 +101,6 @@ specifiers: pino: ^8.10.0 pino-pretty: ^9.2.0 prettier: ^2.8.3 - promise-events: ^0.2.4 qs: ^6.11.0 reflect-metadata: ^0.1.13 rimraf: ^3.0.2 @@ -117,6 +118,7 @@ specifiers: dependencies: '@deepkit/core': 1.0.1-alpha.77 + '@deepkit/event': 1.0.1-alpha.85_snq4zqmy6xqcsypnjz7vpay3xu '@deepkit/type': 1.0.1-alpha.85_mcay55ktffdozwll5wgb6oqvwq '@koa/cors': 4.0.0 '@koa/multer': 3.0.2_multer@1.4.5-lts.1 @@ -161,7 +163,6 @@ dependencies: nodemailer: 6.7.7 pg-promise: 10.15.4 pino: 8.10.0 - promise-events: 0.2.4 qs: 6.11.0 reflect-metadata: 0.1.13 shelljs: 0.8.5 @@ -173,8 +174,9 @@ dependencies: zod: 3.20.2 devDependencies: - '@commitlint/cli': 17.3.0 - '@commitlint/config-conventional': 17.3.0 + '@commitlint/cli': 17.4.4 + '@commitlint/config-conventional': 17.4.4 + '@deepkit/type-compiler': 1.0.1-alpha.83_typescript@4.9.4 '@shelf/jest-mongodb': 4.1.4_xsglg7kzrgyixnruptip6gj6ja '@types/bcrypt': 5.0.0 '@types/compression': 1.7.2 @@ -1374,16 +1376,16 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli/17.3.0: - resolution: {integrity: sha512-/H0md7TsKflKzVPz226VfXzVafJFO1f9+r2KcFvmBu08V0T56lZU1s8WL7/xlxqLMqBTVaBf7Ixtc4bskdEEZg==} + /@commitlint/cli/17.4.4: + resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 17.0.0 - '@commitlint/lint': 17.3.0 - '@commitlint/load': 17.3.0 - '@commitlint/read': 17.2.0 - '@commitlint/types': 17.0.0 + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.4.4 + '@commitlint/load': 17.4.4 + '@commitlint/read': 17.4.4 + '@commitlint/types': 17.4.4 execa: 5.1.1 lodash.isfunction: 3.0.9 resolve-from: 5.0.0 @@ -1394,26 +1396,26 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.3.0: - resolution: {integrity: sha512-hgI+fN5xF8nhS9uG/V06xyT0nlcyvHHMkq0kwRSr96vl5BFlRGaL2C0/YY4kQagfU087tmj01bJkG9Ek98Wllw==} + /@commitlint/config-conventional/17.4.4: + resolution: {integrity: sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.1.0: - resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} + /@commitlint/config-validator/17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 ajv: 8.12.0 dev: true - /@commitlint/ensure/17.3.0: - resolution: {integrity: sha512-kWbrQHDoW5veIUQx30gXoLOCjWvwC6OOEofhPCLl5ytRPBDAQObMbxTha1Bt2aSyNE/IrJ0s0xkdZ1Gi3wJwQg==} + /@commitlint/ensure/17.4.4: + resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -1421,122 +1423,122 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.0.0: - resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} + /@commitlint/execute-rule/17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.0.0: - resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} + /@commitlint/format/17.4.4: + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.2.0: - resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==} + /@commitlint/is-ignored/17.4.4: + resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - semver: 7.3.7 + '@commitlint/types': 17.4.4 + semver: 7.3.8 dev: true - /@commitlint/lint/17.3.0: - resolution: {integrity: sha512-VilOTPg0i9A7CCWM49E9bl5jytfTvfTxf9iwbWAWNjxJ/A5mhPKbm3sHuAdwJ87tDk1k4j8vomYfH23iaY+1Rw==} + /@commitlint/lint/17.4.4: + resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.2.0 - '@commitlint/parse': 17.2.0 - '@commitlint/rules': 17.3.0 - '@commitlint/types': 17.0.0 + '@commitlint/is-ignored': 17.4.4 + '@commitlint/parse': 17.4.4 + '@commitlint/rules': 17.4.4 + '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.3.0: - resolution: {integrity: sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==} + /@commitlint/load/17.4.4: + resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/execute-rule': 17.0.0 - '@commitlint/resolve-extends': 17.3.0 - '@commitlint/types': 17.0.0 - '@types/node': 14.18.34 + '@commitlint/config-validator': 17.4.4 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.4 + '@commitlint/types': 17.4.4 + '@types/node': 18.11.18 chalk: 4.1.2 - cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.2.0_rlet5slz3ltveuzxg6noqqckla + cosmiconfig: 8.0.0 + cosmiconfig-typescript-loader: 4.2.0_bxtyj3et3xbsdyxhh3oblnfbj4 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_ewcgsh5jhk3o7xvttutb4bhery + ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq typescript: 4.9.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.2.0: - resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==} + /@commitlint/message/17.4.2: + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.2.0: - resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==} + /@commitlint/parse/17.4.4: + resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.2.0: - resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==} + /@commitlint/read/17.4.4: + resolution: {integrity: sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA==} engines: {node: '>=v14'} dependencies: - '@commitlint/top-level': 17.0.0 - '@commitlint/types': 17.0.0 - fs-extra: 10.1.0 + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.4 + fs-extra: 11.1.0 git-raw-commits: 2.0.11 minimist: 1.2.7 dev: true - /@commitlint/resolve-extends/17.3.0: - resolution: {integrity: sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==} + /@commitlint/resolve-extends/17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/types': 17.0.0 + '@commitlint/config-validator': 17.4.4 + '@commitlint/types': 17.4.4 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.3.0: - resolution: {integrity: sha512-s2UhDjC5yP2utx3WWqsnZRzjgzAX8BMwr1nltC0u0p8T/nzpkx4TojEfhlsOUj1t7efxzZRjUAV0NxNwdJyk+g==} + /@commitlint/rules/17.4.4: + resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.3.0 - '@commitlint/message': 17.2.0 - '@commitlint/to-lines': 17.0.0 - '@commitlint/types': 17.0.0 + '@commitlint/ensure': 17.4.4 + '@commitlint/message': 17.4.2 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.4 execa: 5.1.1 dev: true - /@commitlint/to-lines/17.0.0: - resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} + /@commitlint/to-lines/17.4.0: + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.0.0: - resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} + /@commitlint/top-level/17.4.0: + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.0.0: - resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} + /@commitlint/types/17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 @@ -1555,9 +1557,48 @@ packages: to-fast-properties: 3.0.1 dev: false + /@deepkit/event/1.0.1-alpha.85_snq4zqmy6xqcsypnjz7vpay3xu: + resolution: {integrity: sha512-w+hvt6A+Z9os2tTRJwHsX/cTSg1pHQh9xH9cPa9oyuNMoxeYy2f/cy7+jvDTgQzdfVAnCvbcp44sz8jufBMMog==} + peerDependencies: + '@deepkit/core': ^1.0.1-alpha.13 + '@deepkit/injector': ^1.0.1-alpha.13 + '@deepkit/type': ^1.0.1-alpha.13 + dependencies: + '@deepkit/core': 1.0.1-alpha.77 + '@deepkit/injector': 1.0.1-alpha.85_kjxwvp6biua2rjf3r3qaivgofe + '@deepkit/type': 1.0.1-alpha.85_mcay55ktffdozwll5wgb6oqvwq + dev: false + + /@deepkit/injector/1.0.1-alpha.85_kjxwvp6biua2rjf3r3qaivgofe: + resolution: {integrity: sha512-QbcAQkz8lzRt3f3UteDc55tVgAbSDaemnQYBosDCmcsKx25wTtOEzee8QBNntohzENj+p8CwjqtrS5wfa0gBug==} + peerDependencies: + '@deepkit/core': ^1.0.1-alpha.13 + '@deepkit/type': ^1.0.1-alpha.13 + dependencies: + '@deepkit/core': 1.0.1-alpha.77 + '@deepkit/type': 1.0.1-alpha.85_mcay55ktffdozwll5wgb6oqvwq + dev: false + + /@deepkit/type-compiler/1.0.1-alpha.83_typescript@4.9.4: + resolution: {integrity: sha512-5kwAgOSSSmhtpHaADYQ2lUOdRVIWoxZNmrfX51+EwqtVMKcCBzxb3kX+qJYfegdnSIG8eBapDwFOPZBCaIcIhQ==} + hasBin: true + requiresBuild: true + peerDependencies: + typescript: ^4.8.2 + dependencies: + '@deepkit/type-spec': 1.0.1-alpha.77 + '@marcj/ts-clone-node': 2.0.0_typescript@4.9.4 + '@typescript/vfs': 1.4.0 + lz-string: 1.4.4 + micromatch: 4.0.5 + strip-json-comments: 3.1.1 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + /@deepkit/type-spec/1.0.1-alpha.77: resolution: {integrity: sha512-YAY2mWR6r+oyeRP4hHbGSWcvhoN15Tc1ODdljbv4HrQPOyAPDrA0VARHy03zAUKl25K60ZH8eMa7XXYxMD7N/g==} - dev: false /@deepkit/type/1.0.1-alpha.85_mcay55ktffdozwll5wgb6oqvwq: resolution: {integrity: sha512-603LmckNa0RzGaEL6PIYkxVI9xpvE86jR1oJ1QtKP0S9c9kGXCSyAOiQGeEVw9U3B2Xg47AJSQG34zigeuVy1g==} @@ -2115,6 +2156,16 @@ packages: - supports-color dev: false + /@marcj/ts-clone-node/2.0.0_typescript@4.9.4: + resolution: {integrity: sha512-GPafMHAdvXPOFzJ8mtnOa+S4NR+fWQEggKo1laAejeSzzp9k223xZjogkNQSVLrzn8sinHCkvJv9f7nVaX3gPQ==} + engines: {node: '>=14.9.0'} + peerDependencies: + typescript: ^4.8 + dependencies: + compatfactory: 1.0.1_typescript@4.9.4 + typescript: 4.9.4 + dev: true + /@messageformat/core/3.0.1: resolution: {integrity: sha512-yxj2+0e46hcZqJfNf0ZYbC2q6WlcGoh4g11mCyRtTueR0AD8F9z4JMYAS1aOiFG8Vl1LZg/h5hZHKmWTAyZq8g==} dependencies: @@ -2737,10 +2788,6 @@ packages: resolution: {integrity: sha512-Qu9dpjkgj2JmzRmDMVzpt2dFKuJ7wma0mxEvbbgomwkhAdHKT2LpSLYHawzd9OeeP4HsyhmcV9o/xLgJyPNcgw==} dev: true - /@types/node/14.18.34: - resolution: {integrity: sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==} - dev: true - /@types/node/18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} @@ -2754,10 +2801,6 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true - /@types/parse5/6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: true @@ -3023,6 +3066,14 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@typescript/vfs/1.4.0: + resolution: {integrity: sha512-Pood7yv5YWMIX+yCHo176OnF8WUlKGImFG7XlsuH14Zb1YN5+dYD3uUtS7lqZtsH7tAveNUi2NzdpQCN0yRbaw==} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /@zxing/text-encoding/0.9.0: resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} requiresBuild: true @@ -4035,6 +4086,16 @@ packages: dot-prop: 5.3.0 dev: true + /compatfactory/1.0.1_typescript@4.9.4: + resolution: {integrity: sha512-hR9u0HSZTKDNNchPtMHg6myeNx0XO+av7UZIJPsi4rPALJBHi/W5Mbwi19hC/xm6y3JkYpxVYjTqnSGsU5X/iw==} + engines: {node: '>=14.9.0'} + peerDependencies: + typescript: '>=3.x || >= 4.x' + dependencies: + helpertypes: 0.0.18 + typescript: 4.9.4 + dev: true + /component-emitter/1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true @@ -4171,7 +4232,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.2.0_rlet5slz3ltveuzxg6noqqckla: + /cosmiconfig-typescript-loader/4.2.0_bxtyj3et3xbsdyxhh3oblnfbj4: resolution: {integrity: sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4180,21 +4241,20 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 14.18.34 - cosmiconfig: 7.1.0 - ts-node: 10.9.1_ewcgsh5jhk3o7xvttutb4bhery + '@types/node': 18.11.18 + cosmiconfig: 8.0.0 + ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq typescript: 4.9.4 dev: true - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + /cosmiconfig/8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} dependencies: - '@types/parse-json': 4.0.0 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 dev: true /cp-file/9.1.0: @@ -5630,15 +5690,6 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - /fs-extra/11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} @@ -5646,7 +5697,6 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: false /fs-extra/9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} @@ -6040,6 +6090,11 @@ packages: readable-stream: 3.6.0 dev: true + /helpertypes/0.0.18: + resolution: {integrity: sha512-XRhfbSEmR+poXUC5/8AbmYNJb2riOT6qPzjGJZr0S9YedHiaY+/tzPYzWMUclYMEdCYo/1l8PDYrQFCj02v97w==} + engines: {node: '>=10.0.0'} + dev: true + /hexoid/1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -7698,6 +7753,11 @@ packages: dependencies: yallist: 4.0.0 + /lz-string/1.4.4: + resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + hasBin: true + dev: true + /madge/6.0.0: resolution: {integrity: sha512-dddxP62sj5pL+l9MJnq9C34VFqmRj+2+uSOdn/7lOTSliLRH0WyQ8uCEF3VxkPRNOBvMKK2xumnIE15HRSAL9A==} engines: {node: '>=14'} @@ -9145,11 +9205,6 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - /promise-events/0.2.4: - resolution: {integrity: sha512-GCM6DmJcSCC8XboZIzYJAlADwkIS1P54XFUJQYhB7dpE7rtXPzPrT13dsV4Qm0FMCKptwMTyF8ZCir803RfKzA==} - engines: {node: '>=8.0.0'} - dev: false - /prompt-sync/4.2.0: resolution: {integrity: sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==} dependencies: @@ -9634,14 +9689,6 @@ packages: hasBin: true dev: true - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -10415,37 +10462,6 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /ts-node/10.9.1_ewcgsh5jhk3o7xvttutb4bhery: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 14.18.34 - acorn: 8.8.1 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -11037,11 +11053,6 @@ packages: /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - /yaml/2.1.3: resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} engines: {node: '>= 14'} diff --git a/src/Auth/Presentation/Validations/Auth/ConfirmationTokenSchemaValidation.ts b/src/Auth/Presentation/Validations/Auth/ConfirmationTokenSchemaValidation.ts deleted file mode 100644 index 243b76eb..00000000 --- a/src/Auth/Presentation/Validations/Auth/ConfirmationTokenSchemaValidation.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { z } from 'zod'; - -const ConfirmationSchemaValidation = z.object({ - confirmationToken: z.string() -}); - -export default ConfirmationSchemaValidation; diff --git a/src/File/Domain/Services/FileService.ts b/src/File/Domain/Services/FileService.ts index ede4bfc3..129259cf 100644 --- a/src/File/Domain/Services/FileService.ts +++ b/src/File/Domain/Services/FileService.ts @@ -5,10 +5,8 @@ import IFileVersionDomain from '../Entities/IFileVersionDomain'; import FilesystemFactory from '../../../Shared/Factories/FilesystemFactory'; import { REPOSITORIES } from '../../../Config/Injects'; import IFileVersionRepository from '../../Infrastructure/Repositories/IFileVersionRepository'; -import PresignedFileRepPayload from 'File/Domain/Payloads/PresignedFileRepPayload'; import ICriteria from '../../../Shared/Presentation/Requests/ICriteria'; import IPaginator from '../../../Shared/Infrastructure/Orm/IPaginator'; -import ListObjectsPayload from 'File/Domain/Payloads/ListObjectsPayload'; import FileBase64RepPayload from '../Payloads/FileBase64RepPayload'; import FileMultipartRepPayload from '../Payloads/FileMultipartRepPayload'; import CreateBucketPayload from '../Payloads/CreateBucketPayload'; @@ -31,6 +29,8 @@ import FileVersionOptimizeDTO from '../../Presentation/DTO/FileVersionOptimizeDT import IFileDTO from '../Models/IFileDTO'; import FileDTO from '../Models/FileDTO'; import DownloadPayload from '../Payloads/DownloadPayload'; +import PresignedFileRepPayload from '../Payloads/PresignedFileRepPayload'; +import ListObjectsPayload from '../Payloads/ListObjectsPayload'; // TODO: Refactor this file and separate responsibilities class FileService diff --git a/src/File/Presentation/DTO/FileBase64OptimizeDTO.ts b/src/File/Presentation/DTO/FileBase64OptimizeDTO.ts index 817bb3b8..81bdfc8d 100644 --- a/src/File/Presentation/DTO/FileBase64OptimizeDTO.ts +++ b/src/File/Presentation/DTO/FileBase64OptimizeDTO.ts @@ -1,4 +1,4 @@ -import FileOptionsQueryPayload from 'File/Domain/Payloads/FileOptionsQueryPayload'; +import FileOptionsQueryPayload from '../../Domain/Payloads/FileOptionsQueryPayload'; import FileBase64RepPayload from '../../Domain/Payloads/FileBase64RepPayload'; class FileBase64OptimizeDTO implements FileBase64RepPayload diff --git a/src/Shared/Infrastructure/Events/EventHandler.ts b/src/Shared/Infrastructure/Events/EventHandler.ts index 520ac636..f0ccf654 100644 --- a/src/Shared/Infrastructure/Events/EventHandler.ts +++ b/src/Shared/Infrastructure/Events/EventHandler.ts @@ -1,17 +1,21 @@ -import EventEmitter from 'promise-events'; +import { DataEventToken, EventDispatcher } from '@deepkit/event'; import UserCreatedEvent from './UserCreatedEvent'; import ForgotPasswordEvent from './ForgotPasswordEvent'; import SendMessageEvent from './SendMessageEvent'; import RegisterEvent from './RegisterEvent'; import VerifiedAccountEvent from './VerifiedAccountEvent'; +import IDataEvent from './IDataEvent'; -class EventHandler extends EventEmitter +class EventHandler { private static instance: EventHandler; + private dispatcher: EventDispatcher; + private readonly events: Map>; private constructor() { - super(); + this.dispatcher = new EventDispatcher(); + this.events = new Map>(); } static getInstance(): EventHandler @@ -24,27 +28,30 @@ class EventHandler extends EventEmitter return EventHandler.instance; } - public async execute(event: string | symbol, ...args: any[]) + public async execute(eventName: string, ...args: any[]) { - await this.emit(event, ...args); + const eventToken = this.events.get(eventName); + await this.dispatcher.dispatch(eventToken, ...args); } public async setListeners() { - await this.on(UserCreatedEvent.USER_CREATED_EVENT, UserCreatedEvent.handle); - await this.on(ForgotPasswordEvent.FORGOT_PASSWORD_EVENT, ForgotPasswordEvent.handle); - await this.on(SendMessageEvent.SEND_MESSAGE_EVENT, SendMessageEvent.handle); - await this.on(RegisterEvent.REGISTER_EVENT, RegisterEvent.handle); - await this.on(VerifiedAccountEvent.VERIFIED_ACCOUNT_EVENT, VerifiedAccountEvent.handle); + this.events.set(UserCreatedEvent.USER_CREATED_EVENT, new UserCreatedEvent()); + this.events.set(ForgotPasswordEvent.FORGOT_PASSWORD_EVENT, new ForgotPasswordEvent()); + this.events.set(SendMessageEvent.SEND_MESSAGE_EVENT, new SendMessageEvent()); + this.events.set(RegisterEvent.REGISTER_EVENT, new RegisterEvent()); + this.events.set(VerifiedAccountEvent.VERIFIED_ACCOUNT_EVENT, new VerifiedAccountEvent()); + + for (const tuple of this.events) + { + const [, eventToken] = tuple; + this.dispatcher.listen(eventToken, eventToken.handle); + } } public async removeListeners() { - await this.removeAllListeners(UserCreatedEvent.USER_CREATED_EVENT); - await this.removeAllListeners(ForgotPasswordEvent.FORGOT_PASSWORD_EVENT); - await this.removeAllListeners(SendMessageEvent.SEND_MESSAGE_EVENT); - await this.removeAllListeners(RegisterEvent.REGISTER_EVENT); - await this.removeAllListeners(VerifiedAccountEvent.VERIFIED_ACCOUNT_EVENT); + // TODO: removeListeners } } diff --git a/src/Shared/Infrastructure/Events/ForgotPasswordEvent.ts b/src/Shared/Infrastructure/Events/ForgotPasswordEvent.ts index 2ad8214d..57e428ef 100644 --- a/src/Shared/Infrastructure/Events/ForgotPasswordEvent.ts +++ b/src/Shared/Infrastructure/Events/ForgotPasswordEvent.ts @@ -1,13 +1,20 @@ import { FACTORIES } from '../../../Config/Injects'; import NotifierFactory from '../../../Notification/Shared/NotifierFactory'; +import { DataEventToken } from '@deepkit/event'; +import IDataEvent from './IDataEvent'; -class ForgotPasswordEvent +class ForgotPasswordEvent extends DataEventToken implements IDataEvent { public static FORGOT_PASSWORD_EVENT = 'FORGOT_PASSWORD_EVENT'; - public static handle = async(props: any) => + constructor() { - const { emailNotification, args } = props; + super(ForgotPasswordEvent.FORGOT_PASSWORD_EVENT); + } + + public handle = async(props: any) => + { + const { emailNotification, args } = props.data; const emailNotificator: any = NotifierFactory.create(FACTORIES.EmailStrategy); diff --git a/src/Shared/Infrastructure/Events/IDataEvent.ts b/src/Shared/Infrastructure/Events/IDataEvent.ts new file mode 100644 index 00000000..bc92024b --- /dev/null +++ b/src/Shared/Infrastructure/Events/IDataEvent.ts @@ -0,0 +1,8 @@ + +interface IDataEvent +{ + handle: (props: any) => void; +} + +export default IDataEvent; + diff --git a/src/Shared/Infrastructure/Events/RegisterEvent.ts b/src/Shared/Infrastructure/Events/RegisterEvent.ts index 658f61cc..d56edd3a 100644 --- a/src/Shared/Infrastructure/Events/RegisterEvent.ts +++ b/src/Shared/Infrastructure/Events/RegisterEvent.ts @@ -1,13 +1,20 @@ import { FACTORIES } from '../../../Config/Injects'; import NotifierFactory from '../../../Notification/Shared/NotifierFactory'; +import { DataEventToken } from '@deepkit/event'; +import IDataEvent from './IDataEvent'; -class RegisterEvent +class RegisterEvent extends DataEventToken implements IDataEvent { public static REGISTER_EVENT = 'REGISTER_EVENT'; - public static handle = async(props: any) => + constructor() { - const { emailNotification, args } = props; + super(RegisterEvent.REGISTER_EVENT); + } + + public handle = async(props: any) => + { + const { emailNotification, args } = props.data; const emailNotifier: any = NotifierFactory.create(FACTORIES.EmailStrategy); diff --git a/src/Shared/Infrastructure/Events/SendMessageEvent.ts b/src/Shared/Infrastructure/Events/SendMessageEvent.ts index 7be09ece..68cdd037 100644 --- a/src/Shared/Infrastructure/Events/SendMessageEvent.ts +++ b/src/Shared/Infrastructure/Events/SendMessageEvent.ts @@ -1,13 +1,20 @@ import { FACTORIES } from '../../../Config/Injects'; import NotifierFactory from '../../../Notification/Shared/NotifierFactory'; +import { DataEventToken } from '@deepkit/event'; +import IDataEvent from './IDataEvent'; -class SendMessageEvent +class SendMessageEvent extends DataEventToken implements IDataEvent { public static SEND_MESSAGE_EVENT = 'SEND_MESSAGE_EVENT'; - public static handle = async(props: any) => + constructor() { - const { pushNotification, message } = props; + super(SendMessageEvent.SEND_MESSAGE_EVENT); + } + + public handle = async(props: any) => + { + const { pushNotification, message } = props.data; const webPushNotifier: any = NotifierFactory.create(FACTORIES.WebPushStrategy); diff --git a/src/Shared/Infrastructure/Events/UserCreatedEvent.ts b/src/Shared/Infrastructure/Events/UserCreatedEvent.ts index 9c813891..0c3703ec 100644 --- a/src/Shared/Infrastructure/Events/UserCreatedEvent.ts +++ b/src/Shared/Infrastructure/Events/UserCreatedEvent.ts @@ -1,12 +1,19 @@ import Logger from '../../Application/Logger/Logger'; +import { DataEventToken } from '@deepkit/event'; +import IDataEvent from './IDataEvent'; -class UserCreatedEvent +class UserCreatedEvent extends DataEventToken implements IDataEvent { public static USER_CREATED_EVENT = 'USER_CREATED_EVENT'; - public static handle = async(props: any) => + constructor() { - const { email } = props; + super(UserCreatedEvent.USER_CREATED_EVENT); + } + + public handle = async(props: any) => + { + const { email } = props.data; await Logger.info(`User ${email} Created!`); }; diff --git a/src/Shared/Infrastructure/Events/VerifiedAccountEvent.ts b/src/Shared/Infrastructure/Events/VerifiedAccountEvent.ts index e98b0403..63f3fb8f 100644 --- a/src/Shared/Infrastructure/Events/VerifiedAccountEvent.ts +++ b/src/Shared/Infrastructure/Events/VerifiedAccountEvent.ts @@ -1,13 +1,20 @@ import { FACTORIES } from '../../../Config/Injects'; import NotifierFactory from '../../../Notification/Shared/NotifierFactory'; +import { DataEventToken } from '@deepkit/event'; +import IDataEvent from './IDataEvent'; -class VerifiedAccountEvent +class VerifiedAccountEvent extends DataEventToken implements IDataEvent { public static VERIFIED_ACCOUNT_EVENT = 'VERIFIED_ACCOUNT_EVENT'; - public static handle = async(props: any) => + constructor() { - const { emailNotification, args } = props; + super(VerifiedAccountEvent.VERIFIED_ACCOUNT_EVENT); + } + + public handle = async(props: any) => + { + const { emailNotification, args } = props.data; const emailNotifier: any = NotifierFactory.create(FACTORIES.EmailStrategy);