From 7a029a1075e3026eb10c381368283766514f603c Mon Sep 17 00:00:00 2001 From: David Crespo Date: Wed, 25 Oct 2023 16:52:15 -0500 Subject: [PATCH 1/5] start by bumping everything --- package-lock.json | 661 ++++++++++++++++++++++++---------------------- package.json | 16 +- 2 files changed, 357 insertions(+), 320 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e77e0a55..c539684e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,18 +68,18 @@ "@types/react-is": "^18.2.2", "@types/semver": "^7.5.3", "@types/uuid": "^9.0.5", - "@typescript-eslint/eslint-plugin": "~5.59.9", - "@typescript-eslint/parser": "~5.59.9", + "@typescript-eslint/eslint-plugin": "~6.9.0", + "@typescript-eslint/parser": "~6.9.0", "@vitejs/plugin-basic-ssl": "^1.0.1", "@vitejs/plugin-react-swc": "^3.4.0", "autoprefixer": "^10.4.16", "esbuild": "^0.19.4", "esbuild-register": "^3.5.0", - "eslint": "^8.51.0", - "eslint-config-prettier": "^8.8.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-playwright": "^0.16.0", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-playwright": "^0.18.0", + "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hook-form": "^0.3.0", "eslint-plugin-react-hooks": "^4.3.0", @@ -93,8 +93,8 @@ "postcss-import": "^15.1.0", "postcss-nesting": "^11.2.2", "postcss-pseudo-classes": "^0.2.1", - "prettier": "^2.8.8", - "prettier-plugin-tailwindcss": "^0.3.0", + "prettier": "^3.0.3", + "prettier-plugin-tailwindcss": "^0.5.6", "resize-observer-polyfill": "^1.5.1", "semver": "^7.5.4", "strict-event-emitter": "^0.5.1", @@ -1025,9 +1025,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1173,12 +1173,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1200,9 +1200,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@internationalized/date": { @@ -2043,6 +2043,26 @@ } } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@playwright/test": { "version": "1.39.0", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", @@ -5734,9 +5754,9 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/lodash": { @@ -5905,32 +5925,33 @@ "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz", - "integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/type-utils": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -5939,25 +5960,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", - "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -5966,16 +5988,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", - "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -5983,25 +6005,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz", - "integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -6010,12 +6032,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", - "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -6023,21 +6045,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", - "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -6079,42 +6101,41 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.9.tgz", - "integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", - "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.9", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -9099,18 +9120,19 @@ } }, "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -9153,9 +9175,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -9204,10 +9226,13 @@ } }, "node_modules/eslint-plugin-playwright": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.16.0.tgz", - "integrity": "sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.18.0.tgz", + "integrity": "sha512-VLvKOAaDvRTonUeI3J8plXIJQuReXjbjrgDGoNwsiydwdqk3lt+mbzgsBcxJscMJDHc9XgnLVo0nWTiaYHLGYQ==", "dev": true, + "dependencies": { + "globals": "^13.23.0" + }, "peerDependencies": { "eslint": ">=7", "eslint-plugin-jest": ">=25" @@ -9218,22 +9243,57 @@ } } }, + "node_modules/eslint-plugin-playwright/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-playwright/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -9331,28 +9391,6 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -10388,12 +10426,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -15048,12 +15080,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -16173,15 +16199,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -16200,12 +16226,12 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.3.0.tgz", - "integrity": "sha512-009/Xqdy7UmkcTBpwlq7jsViDqXAYSOMLDrHAdTMlVZOrKfM2o9Ci7EMWTMZ7SkKBFTG04UM9F9iM2+4i6boDA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.6.tgz", + "integrity": "sha512-2Xgb+GQlkPAUCFi3sV+NOYcSI5XgduvDBL2Zt/hwJudeKXkyvRS65c38SB0yb9UB40+1rL83I6m0RtlOQ8eHdg==", "dev": true, "engines": { - "node": ">=12.17.0" + "node": ">=14.21.3" }, "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", @@ -16213,17 +16239,15 @@ "@shopify/prettier-plugin-liquid": "*", "@shufo/prettier-plugin-blade": "*", "@trivago/prettier-plugin-sort-imports": "*", - "prettier": ">=2.2.0", + "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", - "prettier-plugin-marko": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-style-order": "*", - "prettier-plugin-svelte": "*", - "prettier-plugin-twig-melody": "*" + "prettier-plugin-svelte": "*" }, "peerDependenciesMeta": { "@ianvs/prettier-plugin-sort-imports": { @@ -18242,6 +18266,22 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "devOptional": true }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tabbable": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", @@ -18492,6 +18532,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -18553,27 +18605,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/tunnel-rat": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.0.4.tgz", @@ -20848,9 +20879,9 @@ } }, "@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true }, "@figma-export/output-components-as-svgr": { @@ -20969,12 +21000,12 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" } @@ -20986,9 +21017,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "@internationalized/date": { @@ -21614,6 +21645,20 @@ } } }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + } + }, "@playwright/test": { "version": "1.39.0", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", @@ -24548,9 +24593,9 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "@types/lodash": { @@ -24719,76 +24764,78 @@ "peer": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz", - "integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/type-utils": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/parser": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", - "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", - "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" } }, "@typescript-eslint/type-utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz", - "integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", - "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", - "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "dependencies": { "globby": { @@ -24814,29 +24861,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.9.tgz", - "integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", - "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.9", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" } }, "@ungap/structured-clone": { @@ -26938,18 +26984,19 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -27074,9 +27121,9 @@ } }, "eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, "requires": {} }, @@ -27113,19 +27160,39 @@ } }, "eslint-plugin-playwright": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.16.0.tgz", - "integrity": "sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.18.0.tgz", + "integrity": "sha512-VLvKOAaDvRTonUeI3J8plXIJQuReXjbjrgDGoNwsiydwdqk3lt+mbzgsBcxJscMJDHc9XgnLVo0nWTiaYHLGYQ==", "dev": true, - "requires": {} + "requires": { + "globals": "^13.23.0" + }, + "dependencies": { + "globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } }, "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" } }, "eslint-plugin-react": { @@ -27196,24 +27263,6 @@ "dev": true, "requires": {} }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -27895,12 +27944,6 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -31248,12 +31291,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -32044,9 +32081,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true }, "prettier-linter-helpers": { @@ -32059,9 +32096,9 @@ } }, "prettier-plugin-tailwindcss": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.3.0.tgz", - "integrity": "sha512-009/Xqdy7UmkcTBpwlq7jsViDqXAYSOMLDrHAdTMlVZOrKfM2o9Ci7EMWTMZ7SkKBFTG04UM9F9iM2+4i6boDA==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.6.tgz", + "integrity": "sha512-2Xgb+GQlkPAUCFi3sV+NOYcSI5XgduvDBL2Zt/hwJudeKXkyvRS65c38SB0yb9UB40+1rL83I6m0RtlOQ8eHdg==", "dev": true, "requires": {} }, @@ -33535,6 +33572,16 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "devOptional": true }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + } + }, "tabbable": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz", @@ -33728,6 +33775,13 @@ "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", "dev": true }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -33767,23 +33821,6 @@ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "tunnel-rat": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.0.4.tgz", diff --git a/package.json b/package.json index da4fdf395..e9ef563b1 100644 --- a/package.json +++ b/package.json @@ -88,18 +88,18 @@ "@types/react-is": "^18.2.2", "@types/semver": "^7.5.3", "@types/uuid": "^9.0.5", - "@typescript-eslint/eslint-plugin": "~5.59.9", - "@typescript-eslint/parser": "~5.59.9", + "@typescript-eslint/eslint-plugin": "~6.9.0", + "@typescript-eslint/parser": "~6.9.0", "@vitejs/plugin-basic-ssl": "^1.0.1", "@vitejs/plugin-react-swc": "^3.4.0", "autoprefixer": "^10.4.16", "esbuild": "^0.19.4", "esbuild-register": "^3.5.0", - "eslint": "^8.51.0", - "eslint-config-prettier": "^8.8.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-playwright": "^0.16.0", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-playwright": "^0.18.0", + "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hook-form": "^0.3.0", "eslint-plugin-react-hooks": "^4.3.0", @@ -113,8 +113,8 @@ "postcss-import": "^15.1.0", "postcss-nesting": "^11.2.2", "postcss-pseudo-classes": "^0.2.1", - "prettier": "^2.8.8", - "prettier-plugin-tailwindcss": "^0.3.0", + "prettier": "^3.0.3", + "prettier-plugin-tailwindcss": "^0.5.6", "resize-observer-polyfill": "^1.5.1", "semver": "^7.5.4", "strict-event-emitter": "^0.5.1", From 6ce06f8fef520329a2057baacdc6b22495271eba Mon Sep 17 00:00:00 2001 From: David Crespo Date: Wed, 25 Oct 2023 16:58:43 -0500 Subject: [PATCH 2/5] seems like everything works. no more double plugin workaround --- .babelrc | 14 ---------- .prettierrc.js | 26 +++---------------- app/components/AccessNameCell.tsx | 2 +- app/components/RoundedSector.tsx | 24 ++++++++--------- app/components/form/fields/CheckboxField.tsx | 4 +-- .../form/fields/DescriptionField.tsx | 2 +- app/components/form/fields/DiskSizeField.tsx | 4 +-- app/components/form/fields/FileField.tsx | 2 +- app/components/form/fields/ListboxField.tsx | 4 +-- app/components/form/fields/NameField.tsx | 2 +- app/components/form/fields/NumberField.tsx | 4 +-- app/components/form/fields/RadioField.tsx | 8 +++--- app/components/form/fields/SubnetListbox.tsx | 4 +-- app/components/form/fields/TextField.tsx | 6 ++--- .../project/access/ProjectAccessPage.tsx | 5 ++-- index.html | 2 +- libs/api/hooks.ts | 2 +- libs/ui/lib/table/table.css | 12 ++++++--- libs/ui/styles/fonts.css | 18 ++++++++----- libs/ui/styles/index.css | 8 +++++- 20 files changed, 68 insertions(+), 85 deletions(-) delete mode 100644 .babelrc diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 834b3316a..000000000 --- a/.babelrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "corejs": "3.11", - "useBuiltIns": "usage" - } - ], - "@babel/preset-react", - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties"] -} diff --git a/.prettierrc.js b/.prettierrc.js index c57f3212b..98581c80f 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -6,33 +6,13 @@ * Copyright Oxide Computer Company */ -const twPlugin = require('prettier-plugin-tailwindcss') -const importsPlugin = require('@trivago/prettier-plugin-sort-imports') - -// The Tailwind plugin and the imports plugin can't both be used at the same -// time because they both rely on the same underlying mechanism, which can only -// take one plugin. So we manually combine them into a single plugin and use -// that. Approach recommended here: -// https://github.com/tailwindlabs/prettier-plugin-tailwindcss/issues/31#issuecomment-1195411734 - -/** @type {import("prettier").Parser} */ -const combinedParser = { - ...importsPlugin.parsers.typescript, - parse: twPlugin.parsers.typescript.parse, -} - -/** @type {import("prettier").Plugin} */ -const combinedPlugin = { - parsers: { - typescript: combinedParser, - }, -} - module.exports = { - plugins: [combinedPlugin], + // note: it seems like prettier has to be last for it to work + plugins: ['@trivago/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss'], printWidth: 92, singleQuote: true, semi: false, + trailingComma: 'es5', // default changed to all in prettier 3, wanted to minimize diff importOrder: ['', '^@oxide/(.*)$', '^app/(.*)$', '^[./]'], importOrderGroupNamespaceSpecifiers: true, importOrderSeparation: true, diff --git a/app/components/AccessNameCell.tsx b/app/components/AccessNameCell.tsx index a2bb12b0c..8870683c5 100644 --- a/app/components/AccessNameCell.tsx +++ b/app/components/AccessNameCell.tsx @@ -14,7 +14,7 @@ import { Badge } from '@oxide/ui' * Display the user or group name. If the row is for a group, add a GROUP badge. */ export const AccessNameCell = < - RowData extends { name: string; identityType: IdentityType } + RowData extends { name: string; identityType: IdentityType }, >( info: CellContext ) => { diff --git a/app/components/RoundedSector.tsx b/app/components/RoundedSector.tsx index b2fdbeb21..81ff93c00 100644 --- a/app/components/RoundedSector.tsx +++ b/app/components/RoundedSector.tsx @@ -202,26 +202,26 @@ function getPath(angle: number, thickness: number, size: number, cornerRadius: n ${+(Math.abs(newOuterAngle) > 180)},0, ${outerLineEndCornerXY1.x},${outerLineEndCornerXY1.y} C ${outerLineEndCornerXY1.x} ${outerLineEndCornerXY1.y} ${ - outerLineEndCornerBezier.x - } ${outerLineEndCornerBezier.y} ${outerLineEndCornerXY2.x} ${outerLineEndCornerXY2.y} + outerLineEndCornerBezier.x + } ${outerLineEndCornerBezier.y} ${outerLineEndCornerXY2.x} ${outerLineEndCornerXY2.y} L ${innerLineStartCornerXY1.x} ${innerLineStartCornerXY1.y} C ${innerLineStartCornerXY1.x} ${innerLineStartCornerXY1.y} ${ - innerLineStartCornerBezier.x - } ${innerLineStartCornerBezier.y} ${innerLineStartCornerXY2.x} ${ - innerLineStartCornerXY2.y - } + innerLineStartCornerBezier.x + } ${innerLineStartCornerBezier.y} ${innerLineStartCornerXY2.x} ${ + innerLineStartCornerXY2.y + } A ${innerRadius},${innerRadius},0, ${+(Math.abs(newInnerAngle) > 180)},1, ${innerLineEndCornerXY1.x},${innerLineEndCornerXY1.y} C ${innerLineEndCornerXY1.x} ${innerLineEndCornerXY1.y} ${innerLineEndCornerBezier.x} ${ - innerLineEndCornerBezier.y - } ${innerLineEndCornerXY2.x} ${innerLineEndCornerXY2.y} + innerLineEndCornerBezier.y + } ${innerLineEndCornerXY2.x} ${innerLineEndCornerXY2.y} L ${outerLinerStartCornerXY1.x} ${outerLinerStartCornerXY1.y} C ${outerLinerStartCornerXY1.x} ${outerLinerStartCornerXY1.y} ${ - outerLineStartCornerBezier.x - } ${outerLineStartCornerBezier.y} ${outerLineStartCornerXY2.x} ${ - outerLineStartCornerXY2.y - } + outerLineStartCornerBezier.x + } ${outerLineStartCornerBezier.y} ${outerLineStartCornerXY2.x} ${ + outerLineStartCornerXY2.y + } ` } diff --git a/app/components/form/fields/CheckboxField.tsx b/app/components/form/fields/CheckboxField.tsx index ccb31b510..41f05a4c6 100644 --- a/app/components/form/fields/CheckboxField.tsx +++ b/app/components/form/fields/CheckboxField.tsx @@ -13,7 +13,7 @@ import { Checkbox } from '@oxide/ui' type CheckboxFieldProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > = Omit & { name: TName control: Control @@ -21,7 +21,7 @@ type CheckboxFieldProps< export const CheckboxField = < TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ control, name, diff --git a/app/components/form/fields/DescriptionField.tsx b/app/components/form/fields/DescriptionField.tsx index 03f2408ff..4c9ab590b 100644 --- a/app/components/form/fields/DescriptionField.tsx +++ b/app/components/form/fields/DescriptionField.tsx @@ -15,7 +15,7 @@ const MAX_LEN = 512 export function DescriptionField< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >(props: Omit, 'validate'>) { return } diff --git a/app/components/form/fields/DiskSizeField.tsx b/app/components/form/fields/DiskSizeField.tsx index ab5eae99e..39afca5b3 100644 --- a/app/components/form/fields/DiskSizeField.tsx +++ b/app/components/form/fields/DiskSizeField.tsx @@ -14,14 +14,14 @@ import type { TextFieldProps } from './TextField' interface DiskSizeProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > extends TextFieldProps { minSize?: number } export function DiskSizeField< TFieldValues extends FieldValues, - TName extends FieldPathByValue + TName extends FieldPathByValue, >({ required = true, name, minSize = 1, ...props }: DiskSizeProps) { return ( + TName extends FieldPath, >({ id, name, diff --git a/app/components/form/fields/ListboxField.tsx b/app/components/form/fields/ListboxField.tsx index f6eb9453d..eb98d7e2d 100644 --- a/app/components/form/fields/ListboxField.tsx +++ b/app/components/form/fields/ListboxField.tsx @@ -17,7 +17,7 @@ import { ErrorMessage } from './ErrorMessage' export type ListboxFieldProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > = { name: TName placeholder?: string @@ -35,7 +35,7 @@ export type ListboxFieldProps< export function ListboxField< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ items, name, diff --git a/app/components/form/fields/NameField.tsx b/app/components/form/fields/NameField.tsx index bf8f0e561..036ea9a8a 100644 --- a/app/components/form/fields/NameField.tsx +++ b/app/components/form/fields/NameField.tsx @@ -14,7 +14,7 @@ import { TextField } from './TextField' export function NameField< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ required = true, name, diff --git a/app/components/form/fields/NumberField.tsx b/app/components/form/fields/NumberField.tsx index 476959729..c202696ae 100644 --- a/app/components/form/fields/NumberField.tsx +++ b/app/components/form/fields/NumberField.tsx @@ -19,7 +19,7 @@ import type { TextFieldProps } from './TextField' export function NumberField< TFieldValues extends FieldValues, // can only be used on fields with number values - TName extends FieldPathByValue + TName extends FieldPathByValue, >({ name, label = capitalize(name), @@ -60,7 +60,7 @@ export function NumberField< */ export const NumberFieldInner = < TFieldValues extends FieldValues, - TName extends FieldPathByValue + TName extends FieldPathByValue, >({ name, label = capitalize(name), diff --git a/app/components/form/fields/RadioField.tsx b/app/components/form/fields/RadioField.tsx index 41ae292e4..f70e09e56 100644 --- a/app/components/form/fields/RadioField.tsx +++ b/app/components/form/fields/RadioField.tsx @@ -17,7 +17,7 @@ import { capitalize } from '@oxide/util' export type RadioFieldProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > = Omit & { name: TName /** Will default to name if not provided */ @@ -55,7 +55,7 @@ export type RadioFieldProps< export function RadioField< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ name, label = capitalize(name), @@ -111,7 +111,7 @@ export function RadioField< export type RadioFieldDynProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > = Omit, 'parseValue' | 'items'> & { children: React.ReactElement | React.ReactElement[] } @@ -124,7 +124,7 @@ export type RadioFieldDynProps< */ export function RadioFieldDyn< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ name, label = capitalize(name), diff --git a/app/components/form/fields/SubnetListbox.tsx b/app/components/form/fields/SubnetListbox.tsx index 5195a653c..06068eb8b 100644 --- a/app/components/form/fields/SubnetListbox.tsx +++ b/app/components/form/fields/SubnetListbox.tsx @@ -17,7 +17,7 @@ import { ListboxField } from './ListboxField' type SubnetListboxProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > = Omit, 'items'> & { vpcNameField: FieldPath } @@ -31,7 +31,7 @@ type SubnetListboxProps< */ export function SubnetListbox< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ vpcNameField, control, ...fieldProps }: SubnetListboxProps) { const projectSelector = useProjectSelector() diff --git a/app/components/form/fields/TextField.tsx b/app/components/form/fields/TextField.tsx index f82789ae6..e46e907df 100644 --- a/app/components/form/fields/TextField.tsx +++ b/app/components/form/fields/TextField.tsx @@ -28,7 +28,7 @@ import { ErrorMessage } from './ErrorMessage' export interface TextFieldProps< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, > extends UITextFieldProps { name: TName /** HTML type attribute, defaults to text */ @@ -59,7 +59,7 @@ export interface TextFieldProps< export function TextField< TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ name, label = capitalize(name), @@ -108,7 +108,7 @@ function numberToInputValue(value: number) { */ export const TextFieldInner = < TFieldValues extends FieldValues, - TName extends FieldPath + TName extends FieldPath, >({ name, type = 'text', diff --git a/app/pages/project/access/ProjectAccessPage.tsx b/app/pages/project/access/ProjectAccessPage.tsx index 499fa2a38..5bca864b0 100644 --- a/app/pages/project/access/ProjectAccessPage.tsx +++ b/app/pages/project/access/ProjectAccessPage.tsx @@ -94,9 +94,8 @@ export function ProjectAccessPage() { return groupBy(siloRows.concat(projectRows), (u) => u.id) .map(([userId, userAssignments]) => { const siloRole = userAssignments.find((a) => a.roleSource === 'silo')?.roleName - const projectRole = userAssignments.find( - (a) => a.roleSource === 'project' - )?.roleName + const projectRole = userAssignments.find((a) => a.roleSource === 'project') + ?.roleName const roles = [siloRole, projectRole].filter(isTruthy) diff --git a/index.html b/index.html index d6f06dcfb..2aab85c67 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ ~ Copyright Oxide Computer Company --> - + diff --git a/libs/api/hooks.ts b/libs/api/hooks.ts index 53af99959..929d28f9e 100644 --- a/libs/api/hooks.ts +++ b/libs/api/hooks.ts @@ -122,7 +122,7 @@ export const getUseApiQueries = ...options, // Add params to the result for reassembly after the queries are returned select: (data) => ({ ...data, params }), - } satisfies UseQueryOptions & { params: Params }, ApiError>) + }) satisfies UseQueryOptions & { params: Params }, ApiError> ), }) } diff --git a/libs/ui/lib/table/table.css b/libs/ui/lib/table/table.css index f45cf8b41..5615ce0cd 100644 --- a/libs/ui/lib/table/table.css +++ b/libs/ui/lib/table/table.css @@ -166,19 +166,25 @@ table.ox-table { & .is-selected:not(.multi-selection) td:first-child > div { border-top-left-radius: 0.1875rem; border-bottom-left-radius: 0.1875rem; - box-shadow: -1px -1px var(--stroke-accent), -1px 1px var(--stroke-accent); + box-shadow: + -1px -1px var(--stroke-accent), + -1px 1px var(--stroke-accent); } /* Right-most cell of a single selection */ & .is-selected:not(.multi-selection) td:last-child > div { border-top-right-radius: 0.1875rem; - box-shadow: 1px -1px var(--stroke-accent), 1px 1px var(--stroke-accent); + box-shadow: + 1px -1px var(--stroke-accent), + 1px 1px var(--stroke-accent); border-bottom-right-radius: 0.1875rem; } /* All cells of a single selection */ & .is-selected:not(.multi-selection) td > div { - box-shadow: 0px 1px var(--stroke-accent), 0px -1px var(--stroke-accent); + box-shadow: + 0px 1px var(--stroke-accent), + 0px -1px var(--stroke-accent); margin-top: -2px; border-bottom: 0; height: calc(100% + 1px); diff --git a/libs/ui/styles/fonts.css b/libs/ui/styles/fonts.css index 718127ba2..ea1d311a2 100644 --- a/libs/ui/styles/fonts.css +++ b/libs/ui/styles/fonts.css @@ -10,7 +10,8 @@ /* Source: https://www.grillitype.com/typeface/gt-america */ @font-face { font-family: 'GT America Mono'; - src: url('../assets/fonts/GT-America-Mono-Regular-OCC.woff2') format('woff2'), + src: + url('../assets/fonts/GT-America-Mono-Regular-OCC.woff2') format('woff2'), url('../assets/fonts/GT-America-Mono-Regular-OCC.woff') format('woff'); font-weight: 400; font-style: normal; @@ -18,7 +19,8 @@ @font-face { font-family: 'GT America Mono'; - src: url('../assets/fonts/GT-America-Mono-Medium.woff2') format('woff2'), + src: + url('../assets/fonts/GT-America-Mono-Medium.woff2') format('woff2'), url('../assets/fonts/GT-America-Mono-Medium.woff') format('woff'); font-weight: 500; font-style: normal; @@ -28,7 +30,8 @@ /* Source: https://www.swisstypefaces.com/fonts/suisse/ */ @font-face { font-family: 'SuisseIntl'; - src: url('../assets/fonts/SuisseIntl-Light-WebS.woff2') format('woff2'), + src: + url('../assets/fonts/SuisseIntl-Light-WebS.woff2') format('woff2'), url('../assets/fonts/SuisseIntl-Light-WebS.woff') format('woff'); font-weight: 300; font-style: normal; @@ -36,7 +39,8 @@ @font-face { font-family: 'SuisseIntl'; - src: url('../assets/fonts/SuisseIntl-Regular-WebS.woff2') format('woff2'), + src: + url('../assets/fonts/SuisseIntl-Regular-WebS.woff2') format('woff2'), url('../assets/fonts/SuisseIntl-Regular-WebS.woff') format('woff'); font-weight: 400; font-style: normal; @@ -44,7 +48,8 @@ @font-face { font-family: 'SuisseIntl'; - src: url('../assets/fonts/SuisseIntl-RegularItalic-WebS.woff2') format('woff2'), + src: + url('../assets/fonts/SuisseIntl-RegularItalic-WebS.woff2') format('woff2'), url('../assets/fonts/SuisseIntl-RegularItalic-WebS.woff') format('woff'); font-weight: 400; font-style: italic; @@ -52,7 +57,8 @@ @font-face { font-family: 'SuisseIntl'; - src: url('../assets/fonts/SuisseIntl-Book-WebS.woff2') format('woff2'), + src: + url('../assets/fonts/SuisseIntl-Book-WebS.woff2') format('woff2'), url('../assets/fonts/SuisseIntl-Book-WebS.woff') format('woff'); font-weight: 600; font-style: normal; diff --git a/libs/ui/styles/index.css b/libs/ui/styles/index.css index 6d90e5edd..e8289ca0e 100644 --- a/libs/ui/styles/index.css +++ b/libs/ui/styles/index.css @@ -28,7 +28,13 @@ @layer base { body { @apply overflow-y-hidden text-default bg-default; - font-family: SuisseIntl, -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif; + font-family: + SuisseIntl, + -apple-system, + BlinkMacSystemFont, + Helvetica, + Arial, + sans-serif; } /* https://github.com/tailwindlabs/tailwindcss/blob/v2.2.4/src/plugins/css/preflight.css#L57 */ From 0f8e1afe86bee7fcdcb7b279cbf1c35fbd0a2e86 Mon Sep 17 00:00:00 2001 From: David Crespo Date: Wed, 25 Oct 2023 17:39:59 -0500 Subject: [PATCH 3/5] use new recommended stylistic config --- .eslintrc.json | 5 ++++- libs/ui/lib/auth-code/AuthCodeInput.tsx | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index ad4692be5..dbfd474f7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,9 +6,10 @@ }, "extends": [ "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/stylistic", "plugin:jsx-a11y/recommended", "plugin:react/recommended", - "plugin:@typescript-eslint/recommended", "prettier", "plugin:react-hook-form/recommended" ], @@ -28,6 +29,8 @@ "node": true }, "rules": { + "@typescript-eslint/array-type": "off", + "@typescript-eslint/consistent-type-definitions": "off", "@typescript-eslint/consistent-type-imports": ["error", { "prefer": "type-imports" }], "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-empty-interface": "off", diff --git a/libs/ui/lib/auth-code/AuthCodeInput.tsx b/libs/ui/lib/auth-code/AuthCodeInput.tsx index a905b14ad..74c0e4c3e 100644 --- a/libs/ui/lib/auth-code/AuthCodeInput.tsx +++ b/libs/ui/lib/auth-code/AuthCodeInput.tsx @@ -101,8 +101,8 @@ export const AuthCodeInput = forwardRef( }, clear: () => { if (inputsRef.current) { - for (let i = 0; i < inputsRef.current.length; i++) { - inputsRef.current[i].value = '' + for (const input of inputsRef.current) { + input.value = '' } inputsRef.current[0].focus() } From 1a822680e325fed6a69fd38e4128f6300a98d445 Mon Sep 17 00:00:00 2001 From: David Crespo Date: Wed, 25 Oct 2023 20:54:39 -0500 Subject: [PATCH 4/5] use strict config, it seems fine! --- .eslintrc.json | 2 +- .prettierrc.js | 2 +- libs/api-mocks/msw/db.ts | 4 +++- libs/api-mocks/msw/handlers.ts | 6 +++--- libs/ui/lib/__stories__/Colors.stories.tsx | 3 --- libs/ui/lib/date-picker/DateField.tsx | 2 +- libs/ui/lib/text-input/TextInput.tsx | 2 +- tailwind.config.js | 2 +- 8 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index dbfd474f7..ab30add7c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,7 +6,7 @@ }, "extends": [ "eslint:recommended", - "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/strict", "plugin:@typescript-eslint/stylistic", "plugin:jsx-a11y/recommended", "plugin:react/recommended", diff --git a/.prettierrc.js b/.prettierrc.js index 98581c80f..829b894b6 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -7,7 +7,7 @@ */ module.exports = { - // note: it seems like prettier has to be last for it to work + // note: it seems like tailwind has to be last for it to work plugins: ['@trivago/prettier-plugin-sort-imports', 'prettier-plugin-tailwindcss'], printWidth: 92, singleQuote: true, diff --git a/libs/api-mocks/msw/db.ts b/libs/api-mocks/msw/db.ts index 10f797350..3a05b6bff 100644 --- a/libs/api-mocks/msw/db.ts +++ b/libs/api-mocks/msw/db.ts @@ -204,7 +204,9 @@ type DiskBulkImport = { const initDb = { disks: [...mock.disks], - diskBulkImportState: {} as Record, + // TODO: this works with structuredClone but won't work with the fallback for + // when that's not defined. However, I think it is always defined. + diskBulkImportState: new Map(), userGroups: [...mock.userGroups], /** Join table for `users` and `userGroups` */ groupMemberships: [...mock.groupMemberships], diff --git a/libs/api-mocks/msw/handlers.ts b/libs/api-mocks/msw/handlers.ts index acac0a89b..9bf5b3f97 100644 --- a/libs/api-mocks/msw/handlers.ts +++ b/libs/api-mocks/msw/handlers.ts @@ -165,7 +165,7 @@ export const handlers = makeHandlers({ // throw 400 - db.diskBulkImportState[disk.id] = { blocks: {} } + db.diskBulkImportState.set(disk.id, { blocks: {} }) disk.state = { state: 'importing_from_bulk_writes' } return 204 }, @@ -178,13 +178,13 @@ export const handlers = makeHandlers({ throw 'Can only stop import for disk in state importing_from_bulk_write' } - delete db.diskBulkImportState[disk.id] + db.diskBulkImportState.delete(disk.id) disk.state = { state: 'import_ready' } return 204 }, diskBulkWriteImport: ({ path, query, body }) => { const disk = lookup.disk({ ...path, ...query }) - const diskImport = db.diskBulkImportState[disk.id] + const diskImport = db.diskBulkImportState.get(disk.id) if (!diskImport) throw notFoundErr // if (Math.random() < 0.01) throw 400 diskImport.blocks[body.offset] = true diff --git a/libs/ui/lib/__stories__/Colors.stories.tsx b/libs/ui/lib/__stories__/Colors.stories.tsx index da88c2c73..5b3a4824c 100644 --- a/libs/ui/lib/__stories__/Colors.stories.tsx +++ b/libs/ui/lib/__stories__/Colors.stories.tsx @@ -6,9 +6,6 @@ * Copyright Oxide Computer Company */ -// @ts-ignore -// import twConfig from '../../../../tailwind.config' - interface ColorProps { name?: string value: string diff --git a/libs/ui/lib/date-picker/DateField.tsx b/libs/ui/lib/date-picker/DateField.tsx index 2322e6fa6..642dce2c1 100644 --- a/libs/ui/lib/date-picker/DateField.tsx +++ b/libs/ui/lib/date-picker/DateField.tsx @@ -125,7 +125,7 @@ function DateSegment({ segment.type === 'timeZoneName' ? 'ml-1 text-sans-sm' : 'text-sans-md' )} // Segment props turns this into a focusable element - // @ts-ignore + // @ts-expect-error disabled={readOnly ? true : false} > {/* Always reserve space for the placeholder, to prevent layout shift when editing. */} diff --git a/libs/ui/lib/text-input/TextInput.tsx b/libs/ui/lib/text-input/TextInput.tsx index fb56dc5d0..2dc54cf24 100644 --- a/libs/ui/lib/text-input/TextInput.tsx +++ b/libs/ui/lib/text-input/TextInput.tsx @@ -69,7 +69,7 @@ export const TextInput = React.forwardRef< )} > Date: Wed, 25 Oct 2023 21:42:22 -0500 Subject: [PATCH 5/5] use structuredClone directly, don't fall back to JSON.parse(JSON.stringify(x)) --- libs/api-mocks/msw/db.ts | 8 +++----- libs/api-mocks/msw/util.ts | 5 ----- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/libs/api-mocks/msw/db.ts b/libs/api-mocks/msw/db.ts index 3a05b6bff..259a313fa 100644 --- a/libs/api-mocks/msw/db.ts +++ b/libs/api-mocks/msw/db.ts @@ -14,7 +14,7 @@ import type { ApiTypes as Api, PathParams as PP } from '@oxide/api' import { user1 } from '@oxide/api-mocks' import type { Json } from '../json-type' -import { clone, json } from './util' +import { json } from './util' const notFoundBody = { error_code: 'ObjectNotFound' } as const export type NotFound = typeof notFoundBody @@ -204,8 +204,6 @@ type DiskBulkImport = { const initDb = { disks: [...mock.disks], - // TODO: this works with structuredClone but won't work with the fallback for - // when that's not defined. However, I think it is always defined. diskBulkImportState: new Map(), userGroups: [...mock.userGroups], /** Join table for `users` and `userGroups` */ @@ -231,8 +229,8 @@ const initDb = { vpcSubnets: [mock.vpcSubnet], } -export let db = clone(initDb) +export let db = structuredClone(initDb) export function resetDb() { - db = clone(initDb) + db = structuredClone(initDb) } diff --git a/libs/api-mocks/msw/util.ts b/libs/api-mocks/msw/util.ts index c8c0198dd..510096a01 100644 --- a/libs/api-mocks/msw/util.ts +++ b/libs/api-mocks/msw/util.ts @@ -69,11 +69,6 @@ export const paginated =

( export const repeat = (obj: T, n: number): T[] => new Array(n).fill(0).map((_, i) => ({ ...obj, id: obj.id + i, name: obj.name + i })) -export const clone = (obj: T): T => - typeof structuredClone !== 'undefined' - ? structuredClone(obj) - : JSON.parse(JSON.stringify(obj)) - export function getStartAndEndTime(params: { startTime?: Date; endTime?: Date }) { // if no start time or end time, give the last 24 hours. in this case the // API will give all data available for the metric (paginated of course),