diff --git a/.nycrc b/.nycrc index 7b9838c97d8..82141ddca69 100644 --- a/.nycrc +++ b/.nycrc @@ -41,8 +41,8 @@ "lcov" ], "check-coverage": true, - "lines": 99.55, - "statements": 99.54, - "functions": 99.08, - "branches": 86.45 + "lines": 99.52, + "statements": 98.48, + "functions": 98.83, + "branches": 86.66 } diff --git a/package.json b/package.json index f64a8baebeb..34d3b7e3ad3 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ ] }, "resolutions": { - "mongoose": "5.12.2" + "mongoose": "6.1.7" }, "collective": { "type": "opencollective", diff --git a/packages/orm/mongoose/package.json b/packages/orm/mongoose/package.json index a4e81f1264b..92d9739667b 100644 --- a/packages/orm/mongoose/package.json +++ b/packages/orm/mongoose/package.json @@ -38,7 +38,7 @@ "@tsed/json-mapper": "6.107.5", "@tsed/logger": ">=6.1.1", "@tsed/schema": "6.107.5", - "mongoose": "^5.12.2" + "mongoose": "^6.1.7" }, "peerDependencies": { "@tsed/ajv": "6.107.5", @@ -47,6 +47,6 @@ "@tsed/json-mapper": "6.107.5", "@tsed/logger": ">=6.1.1", "@tsed/schema": "6.107.5", - "mongoose": ">=5.12.2" + "mongoose": ">=6.0.0" } } diff --git a/packages/orm/testing-mongoose/package.json b/packages/orm/testing-mongoose/package.json index b1045befb7d..00ec3adca9a 100644 --- a/packages/orm/testing-mongoose/package.json +++ b/packages/orm/testing-mongoose/package.json @@ -32,6 +32,6 @@ "@tsed/common": "6.107.5", "@tsed/core": "6.107.5", "@tsed/mongoose": "6.107.5", - "mongoose": "^5.12.2" + "mongoose": "^6.1.7" } } diff --git a/packages/platform/common/src/builder/PlatformBuilder.ts b/packages/platform/common/src/builder/PlatformBuilder.ts index 7f68fab21e3..01ced8e1c9e 100644 --- a/packages/platform/common/src/builder/PlatformBuilder.ts +++ b/packages/platform/common/src/builder/PlatformBuilder.ts @@ -7,7 +7,7 @@ import {PlatformStaticsSettings} from "../config/interfaces/PlatformStaticsSetti import {getStaticsOptions} from "../utils/getStaticsOptions"; import {Route} from "../interfaces/Route"; import {getConfiguration} from "../utils/getConfiguration"; -import {IncomingMessage, ServerResponse} from "http"; +import type {IncomingMessage, ServerResponse, Server} from "http"; import {PlatformAdapter, PlatformBuilderSettings} from "../interfaces/PlatformAdapter"; import {importProviders} from "../utils/importProviders"; import {createInjector} from "../utils/createInjector"; @@ -15,6 +15,7 @@ import {GlobalAcceptMimesMiddleware} from "../middlewares/GlobalAcceptMimesMiddl import {printRoutes} from "../utils/printRoutes"; import {createHttpServer} from "../utils/createHttpServer"; import {createHttpsServer} from "../utils/createHttpsServer"; +import type Https from "https"; /** * @platform @@ -30,7 +31,8 @@ export class PlatformBuilder { #rootModule: Type; #promise: Promise; #adapter: PlatformAdapter; - #servers: (() => Promise)[]; + #servers: (() => Promise)[]; + #listeners: (Server | Https.Server)[] = []; protected constructor(adapter: Type> | undefined, module: Type, settings: Partial) { this.#rootModule = module; @@ -227,7 +229,11 @@ export class PlatformBuilder { async stop() { await this.callHook("$onDestroy"); - return this.injector.destroy(); + await this.injector.destroy(); + + this.#listeners.map((server) => { + return new Promise((resolve) => server.close(() => resolve(undefined))); + }); } public async ready() { @@ -345,7 +351,7 @@ export class PlatformBuilder { } protected async listenServers(): Promise { - await Promise.all(this.#servers.map((cb) => cb && cb())); + this.#listeners = await Promise.all(this.#servers.map((cb) => cb && cb())); } protected async logRoutes() { diff --git a/packages/platform/common/src/utils/createHttpServer.ts b/packages/platform/common/src/utils/createHttpServer.ts index d0d26c4f095..46bc707bcc4 100644 --- a/packages/platform/common/src/utils/createHttpServer.ts +++ b/packages/platform/common/src/utils/createHttpServer.ts @@ -24,12 +24,13 @@ export function createHttpServer(injector: InjectorService, requestListener: Htt injector.invoke(HttpServer); injector.invoke(Http.Server); - if (httpPort !== false) { + if (server) { const hostInfo = getHostInfoFromPort("http", httpPort); return async () => { const resolvedHostInfo = await listenServer(injector, server as Http.Server, hostInfo); settings.setRaw("httpPort", `${resolvedHostInfo.address}:${resolvedHostInfo.port}`); + return server; }; } } diff --git a/packages/platform/common/src/utils/createHttpsServer.ts b/packages/platform/common/src/utils/createHttpsServer.ts index ac23fb922af..d29ed6c7435 100644 --- a/packages/platform/common/src/utils/createHttpsServer.ts +++ b/packages/platform/common/src/utils/createHttpsServer.ts @@ -25,12 +25,13 @@ export function createHttpsServer(injector: InjectorService, requestListener?: H injector.invoke(HttpsServer); injector.invoke(Https.Server); - if (httpsPort !== false) { + if (server) { const hostInfo = getHostInfoFromPort("https", httpsPort); return async () => { const resolvedHostInfo = await listenServer(injector, server as Https.Server, hostInfo); settings.setRaw("httpsPort", `${resolvedHostInfo.address}:${resolvedHostInfo.port}`); + return server; }; } } diff --git a/packages/platform/platform-express/src/services/PlatformExpressApplication.ts b/packages/platform/platform-express/src/services/PlatformExpressApplication.ts index 160bdc8922a..fe977401b98 100644 --- a/packages/platform/platform-express/src/services/PlatformExpressApplication.ts +++ b/packages/platform/platform-express/src/services/PlatformExpressApplication.ts @@ -1,4 +1,4 @@ -import {Configuration, createContext, Inject, PlatformApplication, PlatformHandler} from "@tsed/common"; +import {Configuration, Inject, PlatformApplication, PlatformHandler} from "@tsed/common"; import Express from "express"; import {PlatformExpressStaticsOptions} from "../interfaces/PlatformExpressStaticsOptions"; import {PlatformExpressRouter} from "./PlatformExpressRouter"; diff --git a/packages/security/passport/jest.config.js b/packages/security/passport/jest.config.js index 0808c7f8217..668ae84485c 100644 --- a/packages/security/passport/jest.config.js +++ b/packages/security/passport/jest.config.js @@ -6,7 +6,7 @@ module.exports = { coverageThreshold: { global: { statements: 99.36, - branches: 80.7, + branches: 80, functions: 100, lines: 99.32 } diff --git a/packages/third-parties/formio/package.json b/packages/third-parties/formio/package.json index 1540ec77711..1e6f5c61b33 100644 --- a/packages/third-parties/formio/package.json +++ b/packages/third-parties/formio/package.json @@ -42,7 +42,7 @@ "express": "^4.17.1", "formio": "^2.0.0", "mongodb": "*", - "mongoose": "^5.12.2" + "mongoose": "^6.1.7" }, "peerDependencies": { "@tsed/common": "6.107.5", @@ -50,7 +50,7 @@ "formio": "^2.0.0", "lodash": "^4.17.21", "mongodb": "*", - "mongoose": "^5.12.2" + "mongoose": "^6.1.7" }, "peerDependenciesMeta": { "@tsed/common": { diff --git a/packages/third-parties/socketio/src/SocketIOModule.ts b/packages/third-parties/socketio/src/SocketIOModule.ts index d00864df9aa..de037fc1f7e 100644 --- a/packages/third-parties/socketio/src/SocketIOModule.ts +++ b/packages/third-parties/socketio/src/SocketIOModule.ts @@ -1,5 +1,5 @@ import {$log, AfterListen, Constant, InjectorService, Module, OnDestroy, Provider} from "@tsed/common"; -import {catchError, nameOf} from "@tsed/core"; +import {nameOf} from "@tsed/core"; import {Server, ServerOptions} from "socket.io"; import {SocketProviderMetadata} from "./class/SocketProviderMetadata"; // tslint:disable-line: no-unused-variable import {PROVIDER_TYPE_SOCKET_SERVICE} from "./constants/constants"; @@ -58,7 +58,7 @@ export class SocketIOModule implements AfterListen, OnDestroy { } $onDestroy() { - catchError(() => this.io.close()); + return this.io?.close && this.io?.engine && new Promise((resolve) => this.io.close(() => resolve(undefined))); } /** diff --git a/yarn.lock b/yarn.lock index 84d1f1ceaeb..c49a9c46f2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3593,13 +3593,6 @@ dependencies: bson "*" -"@types/bson@1.x || 4.0.x": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.5.tgz#9e0e1d1a6f8866483f96868a9b33bc804926b1fc" - integrity sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg== - dependencies: - "@types/node" "*" - "@types/bytes@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.0.tgz#835a3e4aea3b4d7604aca216a78de372bff3ecc3" @@ -4082,14 +4075,6 @@ "@types/bson" "*" "@types/node" "*" -"@types/mongodb@^3.5.27": - version "3.6.20" - resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.20.tgz#b7c5c580644f6364002b649af1c06c3c0454e1d2" - integrity sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ== - dependencies: - "@types/bson" "*" - "@types/node" "*" - "@types/ms@*": version "0.7.31" resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" @@ -4120,6 +4105,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.34.tgz#07935194fc049069a1c56c0c274265abeddf88da" integrity sha512-dBPaxocOK6UVyvhbnpFIj2W+S+1cBTkHQbFQfeeJhoKFbzYcVUGHvddeWPSucKATb3F0+pgDq0i6ghEaZjsugA== +"@types/node@< 17.0.6": + version "17.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.5.tgz#57ca67ec4e57ad9e4ef5a6bab48a15387a1c83e0" + integrity sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw== + "@types/node@^10.1.0": version "10.17.60" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" @@ -5747,11 +5737,6 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== - bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.3, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -5877,7 +5862,7 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -bson@*, bson@^4.2.2, bson@^4.6.1: +bson@*, bson@^4.2.2, bson@^4.6.0, bson@^4.6.1: version "4.6.2" resolved "https://registry.yarnpkg.com/bson/-/bson-4.6.2.tgz#3241c79d23d225b86ab6d2bc268b803d8a5fd444" integrity sha512-VeJKHShcu1b/ugl0QiujlVuBepab714X9nNyBdA1kfekuDGecxgpTA2Z6nYbagrWFeiIyzSWIOzju3lhj+RNyQ== @@ -12053,15 +12038,10 @@ jwt-decode@^3.1.2: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== -kareem@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93" - integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== - -kareem@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.5.tgz#111fe9dbab754c8ed88b7a2360e2680cec1420ca" - integrity sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg== +kareem@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.3.tgz#a4432d7965a5bb06fc2b4eeae71317344c9a756a" + integrity sha512-uESCXM2KdtOQ8LOvKyTUXEeg0MkYp4wGglTIpGcYHvjJcS5sn2Wkfrfit8m4xSbaNDAw2KdI9elgkOxZbrFYbg== keygrip@~1.1.0: version "1.1.0" @@ -13627,7 +13607,7 @@ moment@2.29.1, "moment@>= 2.9.0", moment@^2.29.1, moment@^2.9.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== -mongodb-connection-string-url@^2.4.1, mongodb-connection-string-url@^2.5.2: +mongodb-connection-string-url@^2.3.2, mongodb-connection-string-url@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz#f075c8d529e8d3916386018b8a396aed4f16e5ed" integrity sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA== @@ -13690,92 +13670,47 @@ mongodb@3.6.6: optionalDependencies: saslprep "^1.0.0" -mongodb@3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.7.3.tgz#b7949cfd0adc4cc7d32d3f2034214d4475f175a5" - integrity sha512-Psm+g3/wHXhjBEktkxXsFMZvd3nemI0r3IPsE0bU+4//PnvNWKkzhZcEsbPcYiWqe8XqXJJEg4Tgtr7Raw67Yw== - dependencies: - bl "^2.2.1" - bson "^1.1.4" - denque "^1.4.1" - optional-require "^1.1.8" - safe-buffer "^5.1.2" - optionalDependencies: - saslprep "^1.0.0" - -mongodb@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.3.1.tgz#e346f76e421ec6f47ddea5c8f5140e6181aaeb94" - integrity sha512-sNa8APSIk+r4x31ZwctKjuPSaeKuvUeNb/fu/3B6dRM02HpEgig7hTHM8A/PJQTlxuC/KFWlDlQjhsk/S43tBg== +mongodb@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.2.2.tgz#cd70568bd96003877e35358ad17a0c5de35c6dfd" + integrity sha512-zt8rCTnTKyMQppyt63qMnrLM5dbADgUk18ORPF1XbtHLIYCyc9hattaYHi0pqMvNxDpgGgUofSVzS+UQErgTug== dependencies: - bson "^4.6.1" + bson "^4.6.0" denque "^2.0.1" - mongodb-connection-string-url "^2.4.1" - socks "^2.6.1" + mongodb-connection-string-url "^2.3.2" optionalDependencies: saslprep "^1.0.3" -mongoose-legacy-pluralize@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" - integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== - -mongoose@^5.12.2: - version "5.13.14" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.13.14.tgz#ffc9704bd022dd018fbddcbe27dc802c77719fb4" - integrity sha512-j+BlQjjxgZg0iWn42kLeZTB91OejcxWpY2Z50bsZTiKJ7HHcEtcY21Godw496GMkBqJMTzmW7G/kZ04mW+Cb7Q== +mongoose@6.1.7, mongoose@^6.1.7: + version "6.1.7" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-6.1.7.tgz#fc1dfb792e0d2df52aa86064eb1a620d57b1926e" + integrity sha512-GqU/G/5yu/CWBHdW24cfGPsW4rADER+eeXj+bwvb6mLjg6uAASl8GnE6pmEbafZJ4Uv9V7jf5LaBMJMNwvQEtg== dependencies: - "@types/bson" "1.x || 4.0.x" - "@types/mongodb" "^3.5.27" - bson "^1.1.4" - kareem "2.3.2" - mongodb "3.7.3" - mongoose-legacy-pluralize "1.0.2" + "@types/node" "< 17.0.6" + bson "^4.2.2" + kareem "2.3.3" + mongodb "4.2.2" mpath "0.8.4" - mquery "3.2.5" + mquery "4.0.0" ms "2.1.2" - optional-require "1.0.x" regexp-clone "1.0.0" - safe-buffer "5.2.1" sift "13.5.2" sliced "1.0.1" -mongoose@^6.1.7: - version "6.2.9" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-6.2.9.tgz#6318dceeebdd23d30a5a414a98bdfeab13fc83ef" - integrity sha512-6ApgF3rKYah5pUEO/1H+QrT0GT05OR7FprtVM45yzcrT/IKKlXizPyttrMiK1mLPt+55pGU7PMsBWY7yx/xZ4g== - dependencies: - bson "^4.2.2" - kareem "2.3.5" - mongodb "4.3.1" - mpath "0.8.4" - mquery "4.0.2" - ms "2.1.3" - sift "16.0.0" - mpath@0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.4.tgz#6b566d9581621d9e931dd3b142ed3618e7599313" integrity sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g== -mquery@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.5.tgz#8f2305632e4bb197f68f60c0cffa21aaf4060c51" - integrity sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A== +mquery@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-4.0.0.tgz#6c62160ad25289e99e0840907757cdfd62bde775" + integrity sha512-nGjm89lHja+T/b8cybAby6H0YgA4qYC/lx6UlwvHGqvTq8bDaNeCwl1sY8uRELrNbVWJzIihxVd+vphGGn1vBw== dependencies: - bluebird "3.5.1" - debug "3.1.0" + debug "4.x" regexp-clone "^1.0.0" - safe-buffer "5.1.2" sliced "1.0.1" -mquery@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-4.0.2.tgz#a13add5ecd7c2e5a67e0f814b3c7acdfb6772804" - integrity sha512-oAVF0Nil1mT3rxty6Zln4YiD6x6QsUWYz927jZzjMxOK2aqmhEz5JQ7xmrKK7xRFA2dwV+YaOpKU/S+vfNqKxA== - dependencies: - debug "4.x" - mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -14725,12 +14660,7 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optional-require@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.0.3.tgz#275b8e9df1dc6a17ad155369c2422a440f89cb07" - integrity sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA== - -optional-require@^1.0.2, optional-require@^1.1.8: +optional-require@^1.0.2: version "1.1.8" resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.1.8.tgz#16364d76261b75d964c482b2406cb824d8ec44b7" integrity sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA== @@ -17079,11 +17009,6 @@ sift@13.5.2: resolved "https://registry.yarnpkg.com/sift/-/sift-13.5.2.tgz#24a715e13c617b086166cd04917d204a591c9da6" integrity sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA== -sift@16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.0.tgz#447991577db61f1a8fab727a8a98a6db57a23eb8" - integrity sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ== - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"