From b7d87b788abe2064e9d454b4fe845e8a3a9a0902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= Date: Mon, 22 Apr 2024 15:30:32 +0200 Subject: [PATCH] fix: conflicting `SIGINT` handlers (#6289) There were two competing `SIGINT` handlers and the result was unreleased Console resources. This PR removes the `conf` package (which was registering a `SIGINT` handler) in favor of simple read and write methods for the config file. Fixes #6018. Supersedes #6275. --- apps/wing-console/console/app/package.json | 1 - apps/wing-console/console/server/package.json | 4 +- .../server/src/utils/terms-and-conditions.ts | 40 ++++++++--- pnpm-lock.yaml | 70 ++----------------- 4 files changed, 39 insertions(+), 76 deletions(-) diff --git a/apps/wing-console/console/app/package.json b/apps/wing-console/console/app/package.json index 55b4cd3f2aa..2d94f52ce7c 100644 --- a/apps/wing-console/console/app/package.json +++ b/apps/wing-console/console/app/package.json @@ -41,7 +41,6 @@ "@wingconsole/ui": "workspace:^", "autoprefixer": "^10.4.15", "bump-pack": "workspace:^", - "conf": "^11.0.2", "dotenv": "^16.3.1", "eslint": "^8.48.0", "nanoid": "^4.0.2", diff --git a/apps/wing-console/console/server/package.json b/apps/wing-console/console/server/package.json index 46c220146c6..f8f9d2f3b48 100644 --- a/apps/wing-console/console/server/package.json +++ b/apps/wing-console/console/server/package.json @@ -37,10 +37,10 @@ "@wingconsole/tsconfig": "workspace:^", "bump-pack": "workspace:^", "chokidar": "^3.5.3", - "conf": "^11.0.2", "constructs": "^10.3", "cors": "^2.8.5", "emittery": "^1.0.1", + "env-paths": "^3.0.0", "esbuild-plugin-raw": "^0.1.7", "eslint": "^8.48.0", "express": "^4.19.2", @@ -58,4 +58,4 @@ "volta": { "extends": "../../../../package.json" } -} \ No newline at end of file +} diff --git a/apps/wing-console/console/server/src/utils/terms-and-conditions.ts b/apps/wing-console/console/server/src/utils/terms-and-conditions.ts index b835a0823f7..748d419812e 100644 --- a/apps/wing-console/console/server/src/utils/terms-and-conditions.ts +++ b/apps/wing-console/console/server/src/utils/terms-and-conditions.ts @@ -1,5 +1,6 @@ -// @ts-ignore-next-line -import Conf from "conf"; +import * as fs from "node:fs"; + +import envPaths from "env-paths"; // @ts-ignore-next-line import License from "../../LICENSE.md?raw"; @@ -7,21 +8,40 @@ import License from "../../LICENSE.md?raw"; const PROJECT_NAME = "@wingconsole/server"; const CONFIG_KEY = "termsAndConditions"; +const paths = envPaths(PROJECT_NAME); + +const getConfig = () => { + try { + return JSON.stringify( + fs.readFileSync(paths.config, "utf8"), + ) as unknown as Record; + } catch (error) { + console.error(error); + } +}; + +const saveConfig = (config: Record) => { + try { + fs.writeFileSync(paths.config, JSON.stringify(config, undefined, 2)); + } catch (error) { + console.error(error); + } +}; + export const isTermsAccepted = (): boolean => { - const config = new Conf({ - projectName: PROJECT_NAME, - }); + const config = getConfig(); - const accepted = config.get(CONFIG_KEY) as boolean; + const accepted = config?.[CONFIG_KEY]; return accepted === true; }; export const acceptTerms = (value: boolean) => { - const config = new Conf({ - projectName: PROJECT_NAME, - }); + const config = getConfig(); - config.set(CONFIG_KEY, value); + saveConfig({ + ...config, + [CONFIG_KEY]: value, + }); }; export const getLicense = (): string => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c347e5afa2..9cd7e731b9d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -506,9 +506,6 @@ importers: bump-pack: specifier: workspace:^ version: link:../../../../tools/bump-pack - conf: - specifier: ^11.0.2 - version: 11.0.2 dotenv: specifier: ^16.3.1 version: 16.3.1 @@ -688,9 +685,6 @@ importers: chokidar: specifier: ^3.5.3 version: 3.5.3 - conf: - specifier: ^11.0.2 - version: 11.0.2 constructs: specifier: ^10.3 version: 10.3.0 @@ -700,6 +694,9 @@ importers: emittery: specifier: ^1.0.1 version: 1.0.1 + env-paths: + specifier: ^3.0.0 + version: 3.0.0 esbuild-plugin-raw: specifier: ^0.1.7 version: 0.1.7(esbuild@0.15.18) @@ -11861,17 +11858,6 @@ packages: clean-stack: 2.2.0 indent-string: 4.0.0 - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -12261,13 +12247,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /atomically@2.0.2: - resolution: {integrity: sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==} - dependencies: - stubborn-fs: 1.2.5 - when-exit: 2.1.1 - dev: true - /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} @@ -13416,20 +13395,6 @@ packages: readable-stream: 3.6.2 typedarray: 0.0.6 - /conf@11.0.2: - resolution: {integrity: sha512-jjyhlQ0ew/iwmtwsS2RaB6s8DBifcE2GYBEaw2SJDUY/slJJbNfY4GlDVzOs/ff8cM/Wua5CikqXgbFl5eu85A==} - engines: {node: '>=14.16'} - dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - atomically: 2.0.2 - debounce-fn: 5.1.2 - dot-prop: 7.2.0 - env-paths: 3.0.0 - json-schema-typed: 8.0.1 - semver: 7.5.4 - dev: true - /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -13801,13 +13766,6 @@ packages: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true - /debounce-fn@5.1.2: - resolution: {integrity: sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -14177,13 +14135,6 @@ packages: is-obj: 2.0.0 dev: true - /dot-prop@7.2.0: - resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - type-fest: 2.19.0 - dev: true - /dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} @@ -14206,7 +14157,7 @@ packages: dependencies: semver: 7.5.4 shelljs: 0.8.5 - typescript: 5.5.0-dev.20240415 + typescript: 5.5.0-dev.20240422 dev: true /dset@3.1.2: @@ -17824,10 +17775,6 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - /json-schema-typed@8.0.1: - resolution: {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -21978,10 +21925,6 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /stubborn-fs@1.2.5: - resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} - dev: true - /stubs@3.0.0: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} dev: false @@ -22839,8 +22782,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.5.0-dev.20240415: - resolution: {integrity: sha512-2FlWR0afPLL3qaO+AcMp6rWmV6nrLoRhwDYAgGn7/Kw1/K8hcW83bZnn+gzGNWfXozx/EdJuG0KfN7V/RGysjg==} + /typescript@5.5.0-dev.20240422: + resolution: {integrity: sha512-GKfP7cqp5Rq/z6xNYZ6u6XfS4I0K3h8tw3MRKkttEkLyEWBxYS141wOr1WBcUYfvB1F5Luo/cTd7iZnySH3bIg==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -23605,6 +23548,7 @@ packages: /when-exit@2.1.1: resolution: {integrity: sha512-XLipGldz/UcleuGaoQjbYuWwD+ICRnzIjlldtwTaTWr7aZz8yQW49rXk6MHQnh+KxOiWiJpM1vIyaxprOnlW4g==} + dev: false /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}