diff --git a/.eslintrc.js b/.eslintrc.js index b61de76c5e3..03ee7431b98 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,43 +1,4 @@ module.exports = { root: true, - parser: '@typescript-eslint/parser', - env: { - node: true, - browser: true, - }, - parserOptions: { - tsconfigRootDir: __dirname, - project: ['./tsconfig.eslint.json'], - }, - plugins: ['@typescript-eslint', 'simple-import-sort'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:@typescript-eslint/recommended-requiring-type-checking', - 'prettier', - ], - rules: { - curly: 'error', - '@typescript-eslint/no-non-null-assertion': 'warn', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - 'simple-import-sort/imports': 'error', - 'no-restricted-imports': [ - 'error', - { - patterns: [ - { - group: ['@emotion/*'], - message: - 'Please do not import emotion directly. Import helpers from ./design-system or ./primitives instead.', - }, - ], - }, - ], - }, + extends: ['custom'], }; diff --git a/.gitignore b/.gitignore index 169707027f8..e804d4e0df4 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,3 @@ Thumbs.db .turbo lerna-debug.log -playground diff --git a/package-lock.json b/package-lock.json index 54457502695..1bfb22bc153 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,19 +12,16 @@ "@commitlint/cli": "^16.0.2", "@commitlint/config-conventional": "^16.0.0", "@commitlint/config-lerna-scopes": "^16.0.0", - "@typescript-eslint/eslint-plugin": "^5.15.0", - "@typescript-eslint/parser": "^5.15.0", "conventional-changelog-conventionalcommits": "^4.6.3", - "eslint": "^8.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-simple-import-sort": "^7.0.0", - "husky": "^7.0.4", + "eslint": "^8.24.0", + "eslint-config-custom": "*", + "husky": "^8.0.1", "lerna": "^4.0.0", "prettier": "^2.6.0", "pretty-quick": "^3.1.3", "rimraf": "^3.0.2", - "turbo": "^1.1.5", - "typescript": "^4.6.4" + "turbo": "^1.5.5", + "typescript": "4.8.4" }, "engines": { "node": ">=16.8.0", @@ -2091,10 +2088,6 @@ "resolved": "packages/sdk-node", "link": true }, - "node_modules/@clerk/common": { - "resolved": "packages/common", - "link": true - }, "node_modules/@clerk/edge": { "resolved": "packages/edge", "link": true @@ -2839,28 +2832,31 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.4.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dependencies": { "type-fest": "^0.20.2" }, @@ -3627,9 +3623,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -3639,6 +3635,18 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -3659,15 +3667,6 @@ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "peer": true }, - "node_modules/@icons/material": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", - "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", - "dev": true, - "peerDependencies": { - "react": "*" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -8371,117 +8370,6 @@ "node": ">= 8" } }, - "node_modules/@sentry/browser": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.17.4.tgz", - "integrity": "sha512-ezLZ/FP2ZJPPemzGKMiu8RCHvuRYfDYXbkQb9KhUbpylJokL4GSRZHy8EYkcHugnvAiov7p8cdj7QgOZQPDAgw==", - "dev": true, - "dependencies": { - "@sentry/core": "6.17.4", - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/browser/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/@sentry/core": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.17.4.tgz", - "integrity": "sha512-7QFgw+I9YK/X1Gie0c7phwT5pHMow66UCXHzDzHR2aK/0X3Lhn8OWlcGjIt5zmiBK/LHwNfQBNMskbktbYHgdA==", - "dev": true, - "dependencies": { - "@sentry/hub": "6.17.4", - "@sentry/minimal": "6.17.4", - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/core/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/@sentry/hub": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.17.4.tgz", - "integrity": "sha512-6+EvPcrPCwUmayeieIpm1ZrRNWriqMHWZFyw+MzunFLgG8IH8G45cJU1zNnTY9Jwwg4sFIS9xrHy3AOkctnIGw==", - "dev": true, - "dependencies": { - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub/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/@sentry/minimal": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.17.4.tgz", - "integrity": "sha512-p1A8UTtRt7bhV4ygu7yDNCannFr9E9dmqgeZWC7HrrTfygcnhNRFvTXTj92wEb0bFKuZr67wPSKnoXlkqkGxsw==", - "dev": true, - "dependencies": { - "@sentry/hub": "6.17.4", - "@sentry/types": "6.17.4", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal/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/@sentry/types": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.17.4.tgz", - "integrity": "sha512-RUyiXCKf61k2GIMP7FQX0naoSew4zLxe+UrtbjwVcWU4AFPZfH7tLNtTpVE85zAKbxsaiq3OD2FPtTZarHcwxQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.17.4.tgz", - "integrity": "sha512-+ENzZbrlVL1JJ+FoK2EOS27nbA/yToeaJPFlyVOnbthUxVyN3TTi9Uzn9F05fIE/2BTkOEk89wPtgcHafgrD6A==", - "dev": true, - "dependencies": { - "@sentry/types": "6.17.4", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils/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/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -8865,7 +8753,6 @@ "version": "7.31.2", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -8884,7 +8771,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8899,7 +8785,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8915,7 +8800,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8926,14 +8810,12 @@ "node_modules/@testing-library/dom/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@testing-library/dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8942,7 +8824,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8954,7 +8835,6 @@ "version": "5.16.2", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz", "integrity": "sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug==", - "dev": true, "dependencies": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -8976,7 +8856,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8991,7 +8870,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true, "engines": { "node": ">=6.0" } @@ -9000,7 +8878,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9013,7 +8890,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -9024,14 +8900,12 @@ "node_modules/@testing-library/jest-dom/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@testing-library/jest-dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -9040,7 +8914,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -9052,7 +8925,6 @@ "version": "11.2.7", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.28.1" @@ -9069,7 +8941,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-3.7.0.tgz", "integrity": "sha512-TwfbY6BWtWIHitjT05sbllyLIProcysC0dF0q1bbDa7OHLC6A6rJOYJwZ13hzfz3O4RtOuInmprBozJRyyo7/g==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@types/testing-library__react-hooks": "^3.4.0" @@ -9083,7 +8954,6 @@ "version": "12.8.3", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -9163,8 +9033,7 @@ "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" }, "node_modules/@types/babel__core": { "version": "7.1.18", @@ -9188,12 +9057,6 @@ "@babel/types": "^7.0.0" } }, - "node_modules/@types/babel__preset-env": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@types/babel__preset-env/-/babel__preset-env-7.9.2.tgz", - "integrity": "sha512-epEgKQiqTDZdPgYwtriYK1GVAGcyVZVvvw2UatX3+95mogKGimebApcMEWLF12uhUbNIvX284CSQEavnV/OIgw==", - "dev": true - }, "node_modules/@types/babel__template": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", @@ -9436,14 +9299,12 @@ "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -9452,7 +9313,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -9461,7 +9321,6 @@ "version": "27.4.0", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", - "dev": true, "dependencies": { "jest-diff": "^27.0.0", "pretty-format": "^27.0.0" @@ -9471,7 +9330,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "engines": { "node": ">=10" }, @@ -9483,7 +9341,6 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -9494,9 +9351,9 @@ } }, "node_modules/@types/js-cookie": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", - "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz", + "integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==", "dev": true }, "node_modules/@types/json-buffer": { @@ -9634,16 +9491,6 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-color": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.6.tgz", - "integrity": "sha512-OzPIO5AyRmLA7PlOyISlgabpYUa3En74LP8mTMa0veCA719SvYQov4WLMsHvCgXP+L+KI9yGhYnqZafVGG0P4w==", - "dev": true, - "dependencies": { - "@types/react": "*", - "@types/reactcss": "*" - } - }, "node_modules/@types/react-dom": { "version": "17.0.11", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", @@ -9657,16 +9504,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/reactcss": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.6.tgz", - "integrity": "sha512-qaIzpCuXNWomGR1Xq8SCFTtF4v8V27Y6f+b9+bzHiv087MylI/nTCqqdChNeWS7tslgROmYB7yeiruWX7WnqNg==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -9756,7 +9593,6 @@ "version": "5.14.2", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.2.tgz", "integrity": "sha512-vehbtyHUShPxIa9SioxDwCvgxukDMH//icJG90sXQBUm5lJOHLT5kNeU9tnivhnA/TkOFMzGIXN2cTc4hY8/kg==", - "dev": true, "dependencies": { "@types/jest": "*" } @@ -9765,7 +9601,6 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/@types/testing-library__react-hooks/-/testing-library__react-hooks-3.4.1.tgz", "integrity": "sha512-G4JdzEcq61fUyV6wVW9ebHWEiLK2iQvaBuCHHn9eMSbZzVh4Z4wHnUGIvQOYCCYeu5DnUtFyNYuAAgbSaO/43Q==", - "dev": true, "dependencies": { "@types/react-test-renderer": "*" } @@ -9822,8 +9657,7 @@ "node_modules/@types/yargs-parser": { "version": "20.2.1", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "node_modules/@types/yoga-layout": { "version": "1.9.2", @@ -9835,7 +9669,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", - "dev": true, "dependencies": { "@typescript-eslint/scope-manager": "5.15.0", "@typescript-eslint/type-utils": "5.15.0", @@ -9868,7 +9701,6 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -10005,7 +9837,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", - "dev": true, "dependencies": { "@typescript-eslint/scope-manager": "5.15.0", "@typescript-eslint/types": "5.15.0", @@ -10032,7 +9863,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", - "dev": true, "dependencies": { "@typescript-eslint/types": "5.15.0", "@typescript-eslint/visitor-keys": "5.15.0" @@ -10049,7 +9879,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", - "dev": true, "dependencies": { "@typescript-eslint/utils": "5.15.0", "debug": "^4.3.2", @@ -10075,7 +9904,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10088,7 +9916,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", - "dev": true, "dependencies": { "@typescript-eslint/types": "5.15.0", "@typescript-eslint/visitor-keys": "5.15.0", @@ -10115,7 +9942,6 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -10130,7 +9956,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.15.0", @@ -10154,7 +9979,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", - "dev": true, "dependencies": { "@typescript-eslint/types": "5.15.0", "eslint-visitor-keys": "^3.0.0" @@ -10874,7 +10698,6 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -10939,7 +10762,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -11101,7 +10923,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "devOptional": true, "bin": { "atob": "bin/atob.js" }, @@ -12883,26 +12704,6 @@ "node": ">= 10" } }, - "node_modules/clipboard-copy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", - "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/clipboardy": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", @@ -13887,7 +13688,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, "dependencies": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -14100,7 +13900,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -14948,7 +14747,6 @@ "version": "27.4.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", - "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -15005,8 +14803,7 @@ "node_modules/dom-accessibility-api": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz", - "integrity": "sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw==", - "dev": true + "integrity": "sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw==" }, "node_modules/dom-converter": { "version": "0.2.0", @@ -15476,7 +15273,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "peer": true, "dependencies": { "has": "^1.0.3" } @@ -16051,12 +15847,13 @@ } }, "node_modules/eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dependencies": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -16066,30 +15863,32 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", + "find-up": "^5.0.0", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -16101,11 +15900,14 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-custom": { + "resolved": "packages/eslint-config-custom", + "link": true + }, "node_modules/eslint-config-prettier": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -16113,6 +15915,17 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-config-turbo": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-turbo/-/eslint-config-turbo-0.0.4.tgz", + "integrity": "sha512-HErPS/wfWkSdV9Yd2dDkhZt3W2B78Ih/aWPFfaHmCMjzPalh+5KxRRGTf8MOBQLCebcWJX0lP1Zvc1rZIHlXGg==", + "dependencies": { + "eslint-plugin-turbo": "0.0.4" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -16399,11 +16212,18 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", - "dev": true, "peerDependencies": { "eslint": ">=5.0.0" } }, + "node_modules/eslint-plugin-turbo": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-0.0.4.tgz", + "integrity": "sha512-dfmYE/iPvoJInQq+5E/0mj140y/rYwKtzZkn3uVK8+nvwC5zmWKQ6ehMWrL4bYBkGzSgpOndZM+jOXhPQ2m8Cg==", + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -16570,9 +16390,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dependencies": { "type-fest": "^0.20.2" }, @@ -16603,16 +16423,19 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -17895,7 +17718,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21063,6 +20885,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "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==" + }, "node_modules/graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", @@ -21893,15 +21720,15 @@ } }, "node_modules/husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", + "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", "dev": true, "bin": { "husky": "lib/bin.js" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -22082,7 +21909,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -23716,7 +23542,6 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", - "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.4.0", @@ -23731,7 +23556,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -23746,7 +23570,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -23762,7 +23585,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -23773,14 +23595,12 @@ "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -23789,7 +23609,6 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -23803,7 +23622,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "engines": { "node": ">=10" }, @@ -23815,7 +23633,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -23986,7 +23803,6 @@ "version": "27.4.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", - "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -25299,9 +25115,18 @@ "dev": true }, "node_modules/js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -25528,7 +25353,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "peer": true, "dependencies": { "array-includes": "^3.1.5", "object.assign": "^4.1.3" @@ -26018,12 +25842,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -26295,7 +26113,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", - "dev": true, "bin": { "lz-string": "bin/bin.js" } @@ -26408,12 +26225,6 @@ "node": ">=0.10.0" } }, - "node_modules/material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", - "dev": true - }, "node_modules/md5-file": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", @@ -26701,7 +26512,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -28152,7 +27962,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -28166,7 +27975,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -28200,7 +28008,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "peer": true, "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.19.5" @@ -28226,7 +28033,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -30272,7 +30078,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -30287,7 +30092,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -30303,7 +30107,6 @@ "version": "15.0.14", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -30312,7 +30115,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -30327,7 +30129,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -30343,7 +30144,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -30354,14 +30154,12 @@ "node_modules/pretty-format/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/pretty-format/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -30370,7 +30168,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -30994,24 +30791,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-color": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", - "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", - "dev": true, - "dependencies": { - "@icons/material": "^0.2.4", - "lodash": "^4.17.15", - "lodash-es": "^4.17.15", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "react": "*" - } - }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -31274,8 +31053,7 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", @@ -31356,7 +31134,7 @@ "version": "16.14.1", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", - "dev": true, + "peer": true, "dependencies": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0" @@ -31369,7 +31147,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", - "dev": true, + "peer": true, "dependencies": { "object-assign": "^4.1.1", "react-is": "^17.0.2", @@ -31380,15 +31158,6 @@ "react": "17.0.2" } }, - "node_modules/reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", - "dev": true, - "dependencies": { - "lodash": "^4.0.1" - } - }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -31814,7 +31583,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -31888,7 +31656,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -33038,9 +32805,9 @@ } }, "node_modules/snakecase-keys": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.1.2.tgz", - "integrity": "sha512-fvtDQZqPBqYb0dEY97TGuOMbN2NJ05Tj4MaoKwjTKkmjcG6mrd58JYGr23UWZRi6Aqv49Fk4HtjTIStOQenaug==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz", + "integrity": "sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==", "dependencies": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", @@ -33467,7 +33234,6 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -33940,7 +33706,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -34037,7 +33802,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "dependencies": { "min-indent": "^1.0.0" }, @@ -34686,6 +34450,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "peer": true, "engines": { "node": "*" } @@ -35675,33 +35440,27 @@ } }, "node_modules/turbo": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.1.5.tgz", - "integrity": "sha512-jXW8G4lr01/E/jS/66LYpEjwWFQAksC8TxR8gi3VGea7OeNj28l8zmXoY3IgT5H22MBnhmtOKV/GhsbPjI2Jrg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.5.5.tgz", + "integrity": "sha512-PVQSDl0STC9WXIyHcYUWs9gXsf8JjQig/FuHfuB8N6+XlgCGB3mPbfMEE6zrChGz2hufH4/guKRX1XJuNL6XTA==", "dev": true, "hasInstallScript": true, "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.1.5", - "turbo-darwin-arm64": "1.1.5", - "turbo-freebsd-64": "1.1.5", - "turbo-freebsd-arm64": "1.1.5", - "turbo-linux-32": "1.1.5", - "turbo-linux-64": "1.1.5", - "turbo-linux-arm": "1.1.5", - "turbo-linux-arm64": "1.1.5", - "turbo-linux-mips64le": "1.1.5", - "turbo-linux-ppc64le": "1.1.5", - "turbo-windows-32": "1.1.5", - "turbo-windows-64": "1.1.5" + "turbo-darwin-64": "1.5.5", + "turbo-darwin-arm64": "1.5.5", + "turbo-linux-64": "1.5.5", + "turbo-linux-arm64": "1.5.5", + "turbo-windows-64": "1.5.5", + "turbo-windows-arm64": "1.5.5" } }, "node_modules/turbo-darwin-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.1.5.tgz", - "integrity": "sha512-qdGMylQ408NmYhzuMmx+25W0iHFyFMRPO4579tDEv+WBiVDfAEYEzjajE4c+CQOLhd1aVEaPdSa+YhngQUgoDQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.5.5.tgz", + "integrity": "sha512-HvEn6P2B+NXDekq9LRpRgUjcT9/oygLTcK47U0qsAJZXRBSq/2hvD7lx4nAwgY/4W3rhYJeWtHTzbhoN6BXqGQ==", "cpu": [ "x64" ], @@ -35712,9 +35471,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-mXU324d3vYzxRT9FSSkW9yG2BvFosd0f4DUvqy4qms8wzM6Yv9Aeo4zZTL86rF88UYGUkbiRaPQUeceb/QARVg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.5.5.tgz", + "integrity": "sha512-Dmxr09IUy6M0nc7/xWod9galIO2DD500B75sJSkHeT+CCdJOWnlinux0ZPF8CSygNqymwYO8AO2l15/6yxcycg==", "cpu": [ "arm64" ], @@ -35724,49 +35483,10 @@ "darwin" ] }, - "node_modules/turbo-freebsd-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-freebsd-64/-/turbo-freebsd-64-1.1.5.tgz", - "integrity": "sha512-qjjPTnZKOxw2x1Ito3yZAYDcwsCEg/5kYJwbPVvDn1jyXoxr3pUxTHUohroxQ6EmyxQ28qL7QpCVWDoQpDwrOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/turbo-freebsd-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-freebsd-arm64/-/turbo-freebsd-arm64-1.1.5.tgz", - "integrity": "sha512-jYW+Th9Y6yEYevaFe7v3lFQoxyrpd8wX5KuuvqLazMRbNxvKgqTDmT7AbCOGJY5ejzqGnMlTGkQr8c3g3B8ndA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/turbo-linux-32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-32/-/turbo-linux-32-1.1.5.tgz", - "integrity": "sha512-c5I8tdR1jD8L8pJWk+rlO734bpWI1gwGdvNOaA/IGZxzOfDSn4CGoUErnUPgOadT8azi7lT9UPQf/pLfEvjCOw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/turbo-linux-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.1.5.tgz", - "integrity": "sha512-BZAxLfIkEtQa7u+VPYpdeVVJH6ab4WwXv4oCrUDaZf2BseDUxr57y2ASAWNFsg40T3oXXt4Kcbdc5LibjWQdtQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.5.5.tgz", + "integrity": "sha512-wd07TZ4zXXWjzZE00FcFMLmkybQQK/NV9ff66vvAV0vdiuacSMBCNLrD6Mm4ncfrUPW/rwFW5kU/7hyuEqqtDw==", "cpu": [ "x64" ], @@ -35776,23 +35496,10 @@ "linux" ] }, - "node_modules/turbo-linux-arm": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-arm/-/turbo-linux-arm-1.1.5.tgz", - "integrity": "sha512-X6J05gQSWTc2c/TCkOQdFLhr35pUjEExY6K8yanYs2QKgd4GvDHmxYaBZ+6f90qcIUHYpe++adDPJcuAUv+8ug==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/turbo-linux-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.1.5.tgz", - "integrity": "sha512-8/yz5L0B6Jb0pNcvx/08LcPswizqggxQ0zlFEw+Oh9RAC+ZM5+X2YiMyKolvLCpkoRqrlKku0lmXH7mx6DWbig==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.5.5.tgz", + "integrity": "sha512-q3q33tuo74R7gicnfvFbnZZvqmlq7Vakcvx0eshifnJw4PR+oMnTCb4w8ElVFx070zsb8DVTibq99y8NJH8T1Q==", "cpu": [ "arm64" ], @@ -35802,38 +35509,12 @@ "linux" ] }, - "node_modules/turbo-linux-mips64le": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-mips64le/-/turbo-linux-mips64le-1.1.5.tgz", - "integrity": "sha512-K26bEFcLDGPkcaW7Eq4CMSxUbJf/x58aE92+0tONhrxXzamaBqTrSxPYlk/T8OoH7HxOvja2ctkpeI/NRAoIyw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-linux-ppc64le": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-ppc64le/-/turbo-linux-ppc64le-1.1.5.tgz", - "integrity": "sha512-fr1/5yf8fe1BJiW/6Y9lmV+kxZZC3u3xvSBC5AXDSl9u3aJFZl96CRE9tOJbTZMaOVGxhplKD+EiHbjIxUnTrA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-windows-32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-windows-32/-/turbo-windows-32-1.1.5.tgz", - "integrity": "sha512-K9LdIgQXJ7jL0aLJS0l2asJAH/vYBFP7qFzODiAcJ1EeKBjYqAVnIxFQrUN07lzNDtL9WK/aN5q0bJCDnhwTQw==", + "node_modules/turbo-windows-64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.5.5.tgz", + "integrity": "sha512-lPp9kHonNFfqgovbaW+UAPO5cLmoAN+m3G3FzqcrRPnlzt97vXYsDhDd/4Zy3oAKoAcprtP4CGy0ddisqsKTVw==", "cpu": [ - "ia32" + "x64" ], "dev": true, "optional": true, @@ -35841,12 +35522,12 @@ "win32" ] }, - "node_modules/turbo-windows-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.1.5.tgz", - "integrity": "sha512-c2Jkmw8yGZVz4opzEvB5HAf9XkA8CZBnorie46s44ec0FaNbcP9SCuUNvgAHxqDIHTGWC4A5PoPn0owkD3ss6A==", + "node_modules/turbo-windows-arm64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.5.5.tgz", + "integrity": "sha512-3AfGULKNZiZVrEzsIE+W79ZRW1+f5r4nM4wLlJ1PTBHyRxBZdD6KTH1tijGfy/uTlcV5acYnKHEkDc6Q9PAXGQ==", "cpu": [ - "x64" + "arm64" ], "dev": true, "optional": true, @@ -35929,9 +35610,9 @@ } }, "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -36526,7 +36207,8 @@ "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "peer": true }, "node_modules/v8-to-istanbul": { "version": "8.1.1", @@ -38361,16 +38043,16 @@ }, "packages/backend-core": { "name": "@clerk/backend-core", - "version": "2.8.1", + "version": "2.9.0-staging.0", "license": "MIT", "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/node": "^16.11.55", "@types/node-fetch": "^2", "node-fetch": "^2.6.0", "query-string": "^7.0.1", - "snakecase-keys": "^5.1.2", + "snakecase-keys": "^5.4.4", "tslib": "^2.3.1" }, "devDependencies": { @@ -38378,7 +38060,7 @@ "jest": "^27.4.7", "nock": "^13.2.1", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -38411,10 +38093,11 @@ }, "packages/clerk-js": { "name": "@clerk/clerk-js", - "version": "4.9.0", + "version": "4.10.0-staging.1", "license": "MIT", "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/shared": "^0.0.2-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@emotion/cache": "^11.7.1", "@emotion/react": "^11.9.0", "@floating-ui/react-dom-interactions": "^0.6.3", @@ -38425,7 +38108,6 @@ "core-js": "^3.18.3", "deepmerge": "^4.2.2", "dequal": "^2.0.2", - "js-cookie": "^2.2.1", "qrcode.react": "^3.1.0", "qs": "^6.9.4", "react": "17.0.2", @@ -38440,7 +38122,6 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.3.27", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@svgr/webpack": "^6.2.1", "@testing-library/dom": "^7.28.1", @@ -38483,7 +38164,7 @@ "ts-jest": "^27.1.3", "ts-loader": "^9.3.0", "type-fest": "^0.20.2", - "typescript": "^4.6.4", + "typescript": "*", "webpack": "^5.72.1", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2", @@ -38551,21 +38232,35 @@ } }, "packages/common": { + "name": "@clerk/common", "version": "0.0.1", + "extraneous": true, "license": "ISC", "devDependencies": { + "@clerk/types": "^3.10.1", + "@types/js-cookie": "^3.0.2", + "js-cookie": "^3.0.1", "tsup": "^6.2.3", - "typescript": "^4.6.4", + "typescript": "*", "vitest": "^0.23.4" + }, + "peerDependencies": { + "@testing-library/dom": "^7.28.1", + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.1", + "@testing-library/react-hooks": "^3.4.2", + "@testing-library/user-event": "^12.2.2", + "react": "17.0.2", + "react-dom": "17.0.2" } }, "packages/edge": { "name": "@clerk/edge", - "version": "1.12.2", + "version": "1.12.3-staging.1", "license": "MIT", "dependencies": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/node": "^16.11.55", "next": "^12.2.0" @@ -38574,7 +38269,7 @@ "@types/jest": "^27.4.0", "jest": "^27.4.7", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=12" @@ -38851,18 +38546,92 @@ } } }, + "packages/eslint-config-custom": { + "version": "0.0.1-staging.1", + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.15.0", + "@typescript-eslint/parser": "^5.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-turbo": "latest", + "eslint-plugin-react": "7.28.0", + "eslint-plugin-simple-import-sort": "^7.0.0" + } + }, + "packages/eslint-config-custom/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/eslint-config-custom/node_modules/eslint-plugin-react": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "packages/eslint-config-custom/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "packages/eslint-config-custom/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "packages/expo": { "name": "@clerk/clerk-expo", - "version": "0.9.62", + "version": "0.9.63-staging.1", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "^4.9.0", - "@clerk/clerk-react": "^4.2.6", + "@clerk/clerk-js": "^4.10.0-staging.1", + "@clerk/clerk-react": "^4.3.0-staging.1", "base-64": "^1.0.0", "react-native-url-polyfill": "^1.3.0" }, "devDependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", "@types/react": "^17.0.39", @@ -38872,7 +38641,7 @@ "react-dom": "17.0.2", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -38899,7 +38668,7 @@ "devDependencies": { "@types/cookie": "^0.5.0", "@types/node": "^16.11.55", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=16" @@ -38926,6 +38695,22 @@ "node": ">=14" } }, + "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-react": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-4.2.6.tgz", + "integrity": "sha512-830Ykdr9vI8Ld8lBybZWAXXmxSYlxnZOsc8RQF1StEtACF0tFnga+AO7Amgi0z2s8yiX/EsT84SxK0fwLOekHQ==", + "dependencies": { + "@clerk/types": "^3.10.1", + "swr": "^1.3.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16" + } + }, "packages/gatsby-plugin-clerk/node_modules/@clerk/clerk-sdk-node": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-4.3.0.tgz", @@ -38963,6 +38748,17 @@ "node": ">=8" } }, + "packages/gatsby-plugin-clerk/node_modules/@clerk/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-3.10.1.tgz", + "integrity": "sha512-RZgTSkWu0CWeAWKw0WaYOVu7O/vlLsvBN4rptxDH5c4uQOgRmF/wBILmniSCmBMhyyihTW2pfiXsZpCatbJixQ==", + "dependencies": { + "csstype": "^3.1.0" + }, + "engines": { + "node": ">=14" + } + }, "packages/gatsby-plugin-clerk/node_modules/@types/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.0.tgz", @@ -38984,13 +38780,13 @@ }, "packages/nextjs": { "name": "@clerk/nextjs", - "version": "4.5.2", + "version": "4.5.3-staging.1", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/edge": "^1.12.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/edge": "^1.12.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "tslib": "^2.3.1" }, "devDependencies": { @@ -39003,7 +38799,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -39316,10 +39112,10 @@ }, "packages/react": { "name": "@clerk/clerk-react", - "version": "4.2.6", + "version": "4.3.0-staging.1", "license": "MIT", "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "swr": "^1.3.0", "tslib": "^2.3.1" }, @@ -39340,7 +39136,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -39357,12 +39153,12 @@ }, "packages/remix": { "name": "@clerk/remix", - "version": "1.3.6", + "version": "1.3.7-staging.1", "license": "MIT", "dependencies": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "cookie": "^0.5.0", "tslib": "^2.3.1" }, @@ -39376,7 +39172,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=16" @@ -39408,11 +39204,11 @@ }, "packages/sdk-node": { "name": "@clerk/clerk-sdk-node", - "version": "4.4.2", + "version": "4.4.3-staging.1", "license": "MIT", "dependencies": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/cookies": "^0.7.7", "@types/express": "^4.17.11", @@ -39434,7 +39230,7 @@ "npm-run-all": "^4.1.5", "prettier": "^2.5.0", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -39454,70 +39250,33 @@ }, "packages/shared": { "name": "@clerk/shared", - "version": "0.3.27", + "version": "0.0.2-staging.1", + "license": "ISC", "devDependencies": { - "@babel/core": "^7.13.14", - "@babel/preset-env": "^7.13.12", - "@babel/preset-react": "^7.13.13", - "@clerk/types": "^3.10.1", - "@popperjs/core": "^2.5.4", - "@sentry/browser": "^6.3.0", - "@svgr/webpack": "^6.2.1", + "@clerk/types": "^3.11.0-staging.1", + "@types/js-cookie": "^3.0.2", + "js-cookie": "^3.0.1", + "tsup": "^6.2.3", + "typescript": "*", + "vitest": "^0.23.4" + }, + "peerDependencies": { "@testing-library/dom": "^7.28.1", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.1", "@testing-library/react-hooks": "^3.4.2", "@testing-library/user-event": "^12.2.2", - "@types/babel__core": "^7", - "@types/babel__preset-env": "^7", - "@types/classnames": "^2", - "@types/jest": "^27.4.0", - "@types/js-cookie": "^2", - "@types/node": "^16.11.55", - "@types/react": "^17.0.39", - "@types/react-color": "^3.0.4", - "@types/react-dom": "^17.0.11", - "@types/react-test-renderer": "^17", - "@types/testing-library__jest-dom": "^5", - "@types/testing-library__react-hooks": "^3", - "classnames": "^2.3.1", - "clipboard-copy": "^4.0.1", - "core-js": "^3.18.3", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.7", - "js-cookie": "^2.2.1", "react": "17.0.2", - "react-color": "2.19.3", - "react-dom": "17.0.2", - "react-popper": "^2.2.4", - "react-test-renderer": "17.0.2", - "ts-jest": "^27.1.3" - }, - "peerDependencies": { - "@popperjs/core": "^2.5.4", - "@svgr/webpack": "^6.2.1", - "core-js": "^3.18.3", - "js-cookie": "^2.2.1", - "react": "17.0.2", - "react-color": "2.19.3", - "react-dom": "17.0.2", - "react-popper": "^2.2.4", - "regenerator-runtime": "^0.13.7" + "react-dom": "17.0.2" } }, - "packages/shared/node_modules/@types/node": { - "version": "16.11.56", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz", - "integrity": "sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==", - "dev": true - }, "packages/themes": { "name": "@clerk/themes", - "version": "1.2.17", + "version": "1.2.18-staging.1", "license": "MIT", "devDependencies": { - "@clerk/types": "^3.10.1", - "typescript": "^4.6.4" + "@clerk/types": "^3.11.0-staging.1", + "typescript": "*" }, "engines": { "node": ">=14" @@ -39528,7 +39287,7 @@ }, "packages/types": { "name": "@clerk/types", - "version": "3.10.1", + "version": "3.11.0-staging.1", "license": "MIT", "dependencies": { "csstype": "^3.1.0" @@ -39537,7 +39296,7 @@ "@types/jest": "^27.4.0", "jest": "^27.4.7", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" @@ -41000,7 +40759,7 @@ "@clerk/backend-core": { "version": "file:packages/backend-core", "requires": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", @@ -41009,10 +40768,10 @@ "nock": "^13.2.1", "node-fetch": "^2.6.0", "query-string": "^7.0.1", - "snakecase-keys": "^5.1.2", + "snakecase-keys": "^5.4.4", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@types/node": { @@ -41025,9 +40784,9 @@ "@clerk/clerk-expo": { "version": "file:packages/expo", "requires": { - "@clerk/clerk-js": "^4.9.0", - "@clerk/clerk-react": "^4.2.6", - "@clerk/types": "^3.10.1", + "@clerk/clerk-js": "^4.10.0-staging.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", "@types/react": "^17.0.39", @@ -41039,7 +40798,7 @@ "react-native-url-polyfill": "^1.3.0", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@types/node": { @@ -41059,8 +40818,8 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.3.27", - "@clerk/types": "^3.10.1", + "@clerk/shared": "^0.0.2-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@emotion/cache": "^11.7.1", "@emotion/react": "^11.9.0", "@floating-ui/react-dom-interactions": "^0.6.3", @@ -41098,7 +40857,6 @@ "fork-ts-checker-webpack-plugin": "^7.2.11", "identity-obj-proxy": "^3.0.0", "jest": "^27.4.7", - "js-cookie": "^2.2.1", "jsonwebtoken": "^8.5.1", "node-fetch": "^3.2.0", "postcss": "^8.4.13", @@ -41120,7 +40878,7 @@ "ts-jest": "^27.1.3", "ts-loader": "^9.3.0", "type-fest": "^0.20.2", - "typescript": "^4.6.4", + "typescript": "*", "webpack": "^5.72.1", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2", @@ -41169,7 +40927,7 @@ "@clerk/clerk-react": { "version": "file:packages/react", "requires": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@testing-library/dom": "^7.28.1", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.1", @@ -41188,7 +40946,7 @@ "swr": "^1.3.0", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@types/node": { @@ -41202,8 +40960,8 @@ "@clerk/clerk-sdk-node": { "version": "file:packages/sdk-node", "requires": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/cookies": "^0.7.7", "@types/express": "^4.17.11", @@ -41223,7 +40981,7 @@ "snakecase-keys": "^3.2.1", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "snakecase-keys": { @@ -41237,26 +40995,18 @@ } } }, - "@clerk/common": { - "version": "file:packages/common", - "requires": { - "tsup": "^6.2.3", - "typescript": "^4.6.4", - "vitest": "^0.23.4" - } - }, "@clerk/edge": { "version": "file:packages/edge", "requires": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", "jest": "^27.4.7", "next": "^12.2.0", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@next/env": { @@ -41390,10 +41140,10 @@ "@clerk/nextjs": { "version": "file:packages/nextjs", "requires": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/edge": "^1.12.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/edge": "^1.12.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", "@types/react": "^17.0.39", @@ -41404,7 +41154,7 @@ "react-dom": "17.0.2", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@next/env": { @@ -41558,9 +41308,9 @@ "@clerk/remix": { "version": "file:packages/remix", "requires": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@types/cookie": "^0.5.0", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", @@ -41572,7 +41322,7 @@ "react-dom": "17.0.2", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@types/cookie": { @@ -41597,57 +41347,19 @@ "@clerk/shared": { "version": "file:packages/shared", "requires": { - "@babel/core": "^7.13.14", - "@babel/preset-env": "^7.13.12", - "@babel/preset-react": "^7.13.13", - "@clerk/types": "^3.10.1", - "@popperjs/core": "^2.5.4", - "@sentry/browser": "^6.3.0", - "@svgr/webpack": "^6.2.1", - "@testing-library/dom": "^7.28.1", - "@testing-library/jest-dom": "^5.11.6", - "@testing-library/react": "^11.2.1", - "@testing-library/react-hooks": "^3.4.2", - "@testing-library/user-event": "^12.2.2", - "@types/babel__core": "^7", - "@types/babel__preset-env": "^7", - "@types/classnames": "^2", - "@types/jest": "^27.4.0", - "@types/js-cookie": "^2", - "@types/node": "^16.11.55", - "@types/react": "^17.0.39", - "@types/react-color": "^3.0.4", - "@types/react-dom": "^17.0.11", - "@types/react-test-renderer": "^17", - "@types/testing-library__jest-dom": "^5", - "@types/testing-library__react-hooks": "^3", - "classnames": "^2.3.1", - "clipboard-copy": "^4.0.1", - "core-js": "^3.18.3", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.7", - "js-cookie": "^2.2.1", - "react": "17.0.2", - "react-color": "2.19.3", - "react-dom": "17.0.2", - "react-popper": "^2.2.4", - "react-test-renderer": "17.0.2", - "ts-jest": "^27.1.3" - }, - "dependencies": { - "@types/node": { - "version": "16.11.56", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz", - "integrity": "sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==", - "dev": true - } + "@clerk/types": "^3.11.0-staging.1", + "@types/js-cookie": "^3.0.2", + "js-cookie": "^3.0.1", + "tsup": "^6.2.3", + "typescript": "*", + "vitest": "^0.23.4" } }, "@clerk/themes": { "version": "file:packages/themes", "requires": { - "@clerk/types": "^3.10.1", - "typescript": "^4.6.4" + "@clerk/types": "^3.11.0-staging.1", + "typescript": "*" } }, "@clerk/types": { @@ -41657,7 +41369,7 @@ "csstype": "^3.1.0", "jest": "^27.4.7", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" } }, "@commitlint/cli": { @@ -42188,25 +41900,25 @@ "peer": true }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.4.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "requires": { "type-fest": "^0.20.2" } @@ -42846,15 +42558,20 @@ } }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -42872,13 +42589,6 @@ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "peer": true }, - "@icons/material": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", - "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", - "dev": true, - "requires": {} - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -46383,109 +46093,6 @@ } } }, - "@sentry/browser": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.17.4.tgz", - "integrity": "sha512-ezLZ/FP2ZJPPemzGKMiu8RCHvuRYfDYXbkQb9KhUbpylJokL4GSRZHy8EYkcHugnvAiov7p8cdj7QgOZQPDAgw==", - "dev": true, - "requires": { - "@sentry/core": "6.17.4", - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/core": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.17.4.tgz", - "integrity": "sha512-7QFgw+I9YK/X1Gie0c7phwT5pHMow66UCXHzDzHR2aK/0X3Lhn8OWlcGjIt5zmiBK/LHwNfQBNMskbktbYHgdA==", - "dev": true, - "requires": { - "@sentry/hub": "6.17.4", - "@sentry/minimal": "6.17.4", - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/hub": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.17.4.tgz", - "integrity": "sha512-6+EvPcrPCwUmayeieIpm1ZrRNWriqMHWZFyw+MzunFLgG8IH8G45cJU1zNnTY9Jwwg4sFIS9xrHy3AOkctnIGw==", - "dev": true, - "requires": { - "@sentry/types": "6.17.4", - "@sentry/utils": "6.17.4", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/minimal": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.17.4.tgz", - "integrity": "sha512-p1A8UTtRt7bhV4ygu7yDNCannFr9E9dmqgeZWC7HrrTfygcnhNRFvTXTj92wEb0bFKuZr67wPSKnoXlkqkGxsw==", - "dev": true, - "requires": { - "@sentry/hub": "6.17.4", - "@sentry/types": "6.17.4", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/types": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.17.4.tgz", - "integrity": "sha512-RUyiXCKf61k2GIMP7FQX0naoSew4zLxe+UrtbjwVcWU4AFPZfH7tLNtTpVE85zAKbxsaiq3OD2FPtTZarHcwxQ==", - "dev": true - }, - "@sentry/utils": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.17.4.tgz", - "integrity": "sha512-+ENzZbrlVL1JJ+FoK2EOS27nbA/yToeaJPFlyVOnbthUxVyN3TTi9Uzn9F05fIE/2BTkOEk89wPtgcHafgrD6A==", - "dev": true, - "requires": { - "@sentry/types": "6.17.4", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -46720,7 +46327,6 @@ "version": "7.31.2", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -46736,7 +46342,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -46745,7 +46350,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -46755,7 +46359,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -46763,20 +46366,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -46787,7 +46387,6 @@ "version": "5.16.2", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz", "integrity": "sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug==", - "dev": true, "requires": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -46804,7 +46403,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -46812,14 +46410,12 @@ "aria-query": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==" }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -46829,7 +46425,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -46837,20 +46432,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -46861,7 +46453,6 @@ "version": "11.2.7", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.28.1" @@ -46871,7 +46462,6 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-3.7.0.tgz", "integrity": "sha512-TwfbY6BWtWIHitjT05sbllyLIProcysC0dF0q1bbDa7OHLC6A6rJOYJwZ13hzfz3O4RtOuInmprBozJRyyo7/g==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@types/testing-library__react-hooks": "^3.4.0" @@ -46881,7 +46471,6 @@ "version": "12.8.3", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5" } @@ -46945,8 +46534,7 @@ "@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" }, "@types/babel__core": { "version": "7.1.18", @@ -46970,12 +46558,6 @@ "@babel/types": "^7.0.0" } }, - "@types/babel__preset-env": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@types/babel__preset-env/-/babel__preset-env-7.9.2.tgz", - "integrity": "sha512-epEgKQiqTDZdPgYwtriYK1GVAGcyVZVvvw2UatX3+95mogKGimebApcMEWLF12uhUbNIvX284CSQEavnV/OIgw==", - "dev": true - }, "@types/babel__template": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", @@ -47217,14 +46799,12 @@ "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" }, "@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } @@ -47233,7 +46813,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, "requires": { "@types/istanbul-lib-report": "*" } @@ -47242,7 +46821,6 @@ "version": "27.4.0", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz", "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==", - "dev": true, "requires": { "jest-diff": "^27.0.0", "pretty-format": "^27.0.0" @@ -47251,14 +46829,12 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" }, "pretty-format": { "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", - "dev": true, "requires": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -47268,9 +46844,9 @@ } }, "@types/js-cookie": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", - "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz", + "integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==", "dev": true }, "@types/json-buffer": { @@ -47408,16 +46984,6 @@ "csstype": "^3.0.2" } }, - "@types/react-color": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.6.tgz", - "integrity": "sha512-OzPIO5AyRmLA7PlOyISlgabpYUa3En74LP8mTMa0veCA719SvYQov4WLMsHvCgXP+L+KI9yGhYnqZafVGG0P4w==", - "dev": true, - "requires": { - "@types/react": "*", - "@types/reactcss": "*" - } - }, "@types/react-dom": { "version": "17.0.11", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", @@ -47431,16 +46997,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/reactcss": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.6.tgz", - "integrity": "sha512-qaIzpCuXNWomGR1Xq8SCFTtF4v8V27Y6f+b9+bzHiv087MylI/nTCqqdChNeWS7tslgROmYB7yeiruWX7WnqNg==", - "dev": true, "requires": { "@types/react": "*" } @@ -47530,7 +47086,6 @@ "version": "5.14.2", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.2.tgz", "integrity": "sha512-vehbtyHUShPxIa9SioxDwCvgxukDMH//icJG90sXQBUm5lJOHLT5kNeU9tnivhnA/TkOFMzGIXN2cTc4hY8/kg==", - "dev": true, "requires": { "@types/jest": "*" } @@ -47539,7 +47094,6 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/@types/testing-library__react-hooks/-/testing-library__react-hooks-3.4.1.tgz", "integrity": "sha512-G4JdzEcq61fUyV6wVW9ebHWEiLK2iQvaBuCHHn9eMSbZzVh4Z4wHnUGIvQOYCCYeu5DnUtFyNYuAAgbSaO/43Q==", - "dev": true, "requires": { "@types/react-test-renderer": "*" } @@ -47595,8 +47149,7 @@ "@types/yargs-parser": { "version": "20.2.1", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "@types/yoga-layout": { "version": "1.9.2", @@ -47608,7 +47161,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz", "integrity": "sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==", - "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.15.0", "@typescript-eslint/type-utils": "5.15.0", @@ -47625,7 +47177,6 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -47708,7 +47259,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.15.0.tgz", "integrity": "sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==", - "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.15.0", "@typescript-eslint/types": "5.15.0", @@ -47720,7 +47270,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz", "integrity": "sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==", - "dev": true, "requires": { "@typescript-eslint/types": "5.15.0", "@typescript-eslint/visitor-keys": "5.15.0" @@ -47730,7 +47279,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz", "integrity": "sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==", - "dev": true, "requires": { "@typescript-eslint/utils": "5.15.0", "debug": "^4.3.2", @@ -47740,14 +47288,12 @@ "@typescript-eslint/types": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.15.0.tgz", - "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==", - "dev": true + "integrity": "sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==" }, "@typescript-eslint/typescript-estree": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz", "integrity": "sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==", - "dev": true, "requires": { "@typescript-eslint/types": "5.15.0", "@typescript-eslint/visitor-keys": "5.15.0", @@ -47762,7 +47308,6 @@ "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -47773,7 +47318,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.15.0.tgz", "integrity": "sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==", - "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.15.0", @@ -47787,7 +47331,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz", "integrity": "sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==", - "dev": true, "requires": { "@typescript-eslint/types": "5.15.0", "eslint-visitor-keys": "^3.0.0" @@ -48371,7 +47914,6 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -48415,7 +47957,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -48550,8 +48091,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "devOptional": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "auto-bind": { "version": "4.0.0", @@ -49943,12 +49483,6 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, - "clipboard-copy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", - "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==", - "dev": true - }, "clipboardy": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", @@ -50726,7 +50260,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, "requires": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -50736,8 +50269,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -51545,8 +51077,7 @@ "diff-sequences": { "version": "27.4.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", - "dev": true + "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==" }, "dir-glob": { "version": "3.0.1", @@ -51594,8 +51125,7 @@ "dom-accessibility-api": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz", - "integrity": "sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw==", - "dev": true + "integrity": "sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw==" }, "dom-converter": { "version": "0.2.0", @@ -51962,7 +51492,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "peer": true, "requires": { "has": "^1.0.3" } @@ -52306,12 +51835,13 @@ } }, "eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz", - "integrity": "sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "requires": { - "@eslint/eslintrc": "^1.2.1", - "@humanwhocodes/config-array": "^0.9.2", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -52321,30 +51851,32 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", + "find-up": "^5.0.0", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { @@ -52397,9 +51929,9 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "requires": { "type-fest": "^0.20.2" } @@ -52419,13 +51951,77 @@ } } }, + "eslint-config-custom": { + "version": "file:packages/eslint-config-custom", + "requires": { + "@typescript-eslint/eslint-plugin": "^5.15.0", + "@typescript-eslint/parser": "^5.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-turbo": "latest", + "eslint-plugin-react": "7.28.0", + "eslint-plugin-simple-import-sort": "^7.0.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-plugin-react": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, "eslint-config-prettier": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, "requires": {} }, + "eslint-config-turbo": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-turbo/-/eslint-config-turbo-0.0.4.tgz", + "integrity": "sha512-HErPS/wfWkSdV9Yd2dDkhZt3W2B78Ih/aWPFfaHmCMjzPalh+5KxRRGTf8MOBQLCebcWJX0lP1Zvc1rZIHlXGg==", + "requires": { + "eslint-plugin-turbo": "0.0.4" + } + }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -52660,7 +52256,12 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", - "dev": true, + "requires": {} + }, + "eslint-plugin-turbo": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-0.0.4.tgz", + "integrity": "sha512-dfmYE/iPvoJInQq+5E/0mj140y/rYwKtzZkn3uVK8+nvwC5zmWKQ6ehMWrL4bYBkGzSgpOndZM+jOXhPQ2m8Cg==", "requires": {} }, "eslint-scope": { @@ -52725,12 +52326,12 @@ } }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -53708,8 +53309,7 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "peer": true + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gatsby": { "version": "4.20.0", @@ -55542,7 +55142,7 @@ "@types/node": "^16.11.55", "cookie": "^0.5.0", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { "@clerk/backend-core": { @@ -55560,6 +55160,16 @@ "tslib": "^2.3.1" } }, + "@clerk/clerk-react": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-4.2.6.tgz", + "integrity": "sha512-830Ykdr9vI8Ld8lBybZWAXXmxSYlxnZOsc8RQF1StEtACF0tFnga+AO7Amgi0z2s8yiX/EsT84SxK0fwLOekHQ==", + "requires": { + "@clerk/types": "^3.10.1", + "swr": "^1.3.0", + "tslib": "^2.3.1" + } + }, "@clerk/clerk-sdk-node": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@clerk/clerk-sdk-node/-/clerk-sdk-node-4.3.0.tgz", @@ -55593,6 +55203,14 @@ } } }, + "@clerk/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-3.10.1.tgz", + "integrity": "sha512-RZgTSkWu0CWeAWKw0WaYOVu7O/vlLsvBN4rptxDH5c4uQOgRmF/wBILmniSCmBMhyyihTW2pfiXsZpCatbJixQ==", + "requires": { + "csstype": "^3.1.0" + } + }, "@types/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.0.tgz", @@ -56203,6 +55821,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "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==" + }, "graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", @@ -56853,9 +56476,9 @@ } }, "husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", + "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", "dev": true }, "iconv-lite": { @@ -56974,8 +56597,7 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "infer-owner": { "version": "1.0.4", @@ -58190,7 +57812,6 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", - "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.4.0", @@ -58202,7 +57823,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -58211,7 +57831,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -58221,7 +57840,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -58229,20 +57847,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "pretty-format": { "version": "27.4.6", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", - "dev": true, "requires": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -58252,8 +57867,7 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" } } }, @@ -58261,7 +57875,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -58392,8 +58005,7 @@ "jest-get-type": { "version": "27.4.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", - "dev": true + "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==" }, "jest-haste-map": { "version": "27.4.6", @@ -59386,9 +58998,15 @@ "dev": true }, "js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" }, "js-tokens": { "version": "4.0.0", @@ -59570,7 +59188,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "peer": true, "requires": { "array-includes": "^3.1.5", "object.assign": "^4.1.3" @@ -59972,12 +59589,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -60234,8 +59845,7 @@ "lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", - "dev": true + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" }, "make-dir": { "version": "3.1.0", @@ -60320,12 +59930,6 @@ "object-visit": "^1.0.0" } }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", - "dev": true - }, "md5-file": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", @@ -60547,8 +60151,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "mini-css-extract-plugin": { "version": "1.6.2", @@ -61671,7 +61274,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -61682,7 +61284,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -61704,7 +61305,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "peer": true, "requires": { "define-properties": "^1.1.4", "es-abstract": "^1.19.5" @@ -61724,7 +61324,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -63201,7 +62800,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -63213,7 +62811,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -63226,7 +62823,6 @@ "version": "15.0.14", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -63235,7 +62831,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -63244,7 +62839,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -63254,7 +62848,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -63262,20 +62855,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -63740,21 +63330,6 @@ "object-assign": "^4.1.1" } }, - "react-color": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", - "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", - "dev": true, - "requires": { - "@icons/material": "^0.2.4", - "lodash": "^4.17.15", - "lodash-es": "^4.17.15", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" - } - }, "react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -63946,8 +63521,7 @@ "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-lifecycles-compat": { "version": "3.0.4", @@ -64008,7 +63582,7 @@ "version": "16.14.1", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz", "integrity": "sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==", - "dev": true, + "peer": true, "requires": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0" @@ -64018,7 +63592,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", - "dev": true, + "peer": true, "requires": { "object-assign": "^4.1.1", "react-is": "^17.0.2", @@ -64026,15 +63600,6 @@ "scheduler": "^0.20.2" } }, - "reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", - "dev": true, - "requires": { - "lodash": "^4.0.1" - } - }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -64378,7 +63943,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -64441,7 +64005,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -65315,9 +64878,9 @@ } }, "snakecase-keys": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.1.2.tgz", - "integrity": "sha512-fvtDQZqPBqYb0dEY97TGuOMbN2NJ05Tj4MaoKwjTKkmjcG6mrd58JYGr23UWZRi6Aqv49Fk4HtjTIStOQenaug==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz", + "integrity": "sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==", "requires": { "map-obj": "^4.1.0", "snake-case": "^3.0.4", @@ -65669,7 +65232,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -66056,7 +65618,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "peer": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -66126,7 +65687,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "requires": { "min-indent": "^1.0.0" } @@ -66610,7 +66170,8 @@ "tinycolor2": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "peer": true }, "tinypool": { "version": "0.3.0", @@ -67226,106 +66787,58 @@ } }, "turbo": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.1.5.tgz", - "integrity": "sha512-jXW8G4lr01/E/jS/66LYpEjwWFQAksC8TxR8gi3VGea7OeNj28l8zmXoY3IgT5H22MBnhmtOKV/GhsbPjI2Jrg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.5.5.tgz", + "integrity": "sha512-PVQSDl0STC9WXIyHcYUWs9gXsf8JjQig/FuHfuB8N6+XlgCGB3mPbfMEE6zrChGz2hufH4/guKRX1XJuNL6XTA==", "dev": true, "requires": { - "turbo-darwin-64": "1.1.5", - "turbo-darwin-arm64": "1.1.5", - "turbo-freebsd-64": "1.1.5", - "turbo-freebsd-arm64": "1.1.5", - "turbo-linux-32": "1.1.5", - "turbo-linux-64": "1.1.5", - "turbo-linux-arm": "1.1.5", - "turbo-linux-arm64": "1.1.5", - "turbo-linux-mips64le": "1.1.5", - "turbo-linux-ppc64le": "1.1.5", - "turbo-windows-32": "1.1.5", - "turbo-windows-64": "1.1.5" + "turbo-darwin-64": "1.5.5", + "turbo-darwin-arm64": "1.5.5", + "turbo-linux-64": "1.5.5", + "turbo-linux-arm64": "1.5.5", + "turbo-windows-64": "1.5.5", + "turbo-windows-arm64": "1.5.5" } }, "turbo-darwin-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.1.5.tgz", - "integrity": "sha512-qdGMylQ408NmYhzuMmx+25W0iHFyFMRPO4579tDEv+WBiVDfAEYEzjajE4c+CQOLhd1aVEaPdSa+YhngQUgoDQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.5.5.tgz", + "integrity": "sha512-HvEn6P2B+NXDekq9LRpRgUjcT9/oygLTcK47U0qsAJZXRBSq/2hvD7lx4nAwgY/4W3rhYJeWtHTzbhoN6BXqGQ==", "dev": true, "optional": true }, "turbo-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-mXU324d3vYzxRT9FSSkW9yG2BvFosd0f4DUvqy4qms8wzM6Yv9Aeo4zZTL86rF88UYGUkbiRaPQUeceb/QARVg==", - "dev": true, - "optional": true - }, - "turbo-freebsd-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-freebsd-64/-/turbo-freebsd-64-1.1.5.tgz", - "integrity": "sha512-qjjPTnZKOxw2x1Ito3yZAYDcwsCEg/5kYJwbPVvDn1jyXoxr3pUxTHUohroxQ6EmyxQ28qL7QpCVWDoQpDwrOQ==", - "dev": true, - "optional": true - }, - "turbo-freebsd-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-freebsd-arm64/-/turbo-freebsd-arm64-1.1.5.tgz", - "integrity": "sha512-jYW+Th9Y6yEYevaFe7v3lFQoxyrpd8wX5KuuvqLazMRbNxvKgqTDmT7AbCOGJY5ejzqGnMlTGkQr8c3g3B8ndA==", - "dev": true, - "optional": true - }, - "turbo-linux-32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-32/-/turbo-linux-32-1.1.5.tgz", - "integrity": "sha512-c5I8tdR1jD8L8pJWk+rlO734bpWI1gwGdvNOaA/IGZxzOfDSn4CGoUErnUPgOadT8azi7lT9UPQf/pLfEvjCOw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.5.5.tgz", + "integrity": "sha512-Dmxr09IUy6M0nc7/xWod9galIO2DD500B75sJSkHeT+CCdJOWnlinux0ZPF8CSygNqymwYO8AO2l15/6yxcycg==", "dev": true, "optional": true }, "turbo-linux-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.1.5.tgz", - "integrity": "sha512-BZAxLfIkEtQa7u+VPYpdeVVJH6ab4WwXv4oCrUDaZf2BseDUxr57y2ASAWNFsg40T3oXXt4Kcbdc5LibjWQdtQ==", - "dev": true, - "optional": true - }, - "turbo-linux-arm": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-arm/-/turbo-linux-arm-1.1.5.tgz", - "integrity": "sha512-X6J05gQSWTc2c/TCkOQdFLhr35pUjEExY6K8yanYs2QKgd4GvDHmxYaBZ+6f90qcIUHYpe++adDPJcuAUv+8ug==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.5.5.tgz", + "integrity": "sha512-wd07TZ4zXXWjzZE00FcFMLmkybQQK/NV9ff66vvAV0vdiuacSMBCNLrD6Mm4ncfrUPW/rwFW5kU/7hyuEqqtDw==", "dev": true, "optional": true }, "turbo-linux-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.1.5.tgz", - "integrity": "sha512-8/yz5L0B6Jb0pNcvx/08LcPswizqggxQ0zlFEw+Oh9RAC+ZM5+X2YiMyKolvLCpkoRqrlKku0lmXH7mx6DWbig==", - "dev": true, - "optional": true - }, - "turbo-linux-mips64le": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-mips64le/-/turbo-linux-mips64le-1.1.5.tgz", - "integrity": "sha512-K26bEFcLDGPkcaW7Eq4CMSxUbJf/x58aE92+0tONhrxXzamaBqTrSxPYlk/T8OoH7HxOvja2ctkpeI/NRAoIyw==", - "dev": true, - "optional": true - }, - "turbo-linux-ppc64le": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-linux-ppc64le/-/turbo-linux-ppc64le-1.1.5.tgz", - "integrity": "sha512-fr1/5yf8fe1BJiW/6Y9lmV+kxZZC3u3xvSBC5AXDSl9u3aJFZl96CRE9tOJbTZMaOVGxhplKD+EiHbjIxUnTrA==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.5.5.tgz", + "integrity": "sha512-q3q33tuo74R7gicnfvFbnZZvqmlq7Vakcvx0eshifnJw4PR+oMnTCb4w8ElVFx070zsb8DVTibq99y8NJH8T1Q==", "dev": true, "optional": true }, - "turbo-windows-32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-windows-32/-/turbo-windows-32-1.1.5.tgz", - "integrity": "sha512-K9LdIgQXJ7jL0aLJS0l2asJAH/vYBFP7qFzODiAcJ1EeKBjYqAVnIxFQrUN07lzNDtL9WK/aN5q0bJCDnhwTQw==", + "turbo-windows-64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.5.5.tgz", + "integrity": "sha512-lPp9kHonNFfqgovbaW+UAPO5cLmoAN+m3G3FzqcrRPnlzt97vXYsDhDd/4Zy3oAKoAcprtP4CGy0ddisqsKTVw==", "dev": true, "optional": true }, - "turbo-windows-64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.1.5.tgz", - "integrity": "sha512-c2Jkmw8yGZVz4opzEvB5HAf9XkA8CZBnorie46s44ec0FaNbcP9SCuUNvgAHxqDIHTGWC4A5PoPn0owkD3ss6A==", + "turbo-windows-arm64": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.5.5.tgz", + "integrity": "sha512-3AfGULKNZiZVrEzsIE+W79ZRW1+f5r4nM4wLlJ1PTBHyRxBZdD6KTH1tijGfy/uTlcV5acYnKHEkDc6Q9PAXGQ==", "dev": true, "optional": true }, @@ -67389,9 +66902,9 @@ } }, "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" }, "ua-parser-js": { "version": "0.7.31", @@ -67835,7 +67348,8 @@ "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "peer": true }, "v8-to-istanbul": { "version": "8.1.1", diff --git a/package.json b/package.json index 01068dd68a0..064946ccef0 100644 --- a/package.json +++ b/package.json @@ -17,22 +17,24 @@ "@commitlint/cli": "^16.0.2", "@commitlint/config-conventional": "^16.0.0", "@commitlint/config-lerna-scopes": "^16.0.0", - "@typescript-eslint/eslint-plugin": "^5.15.0", - "@typescript-eslint/parser": "^5.15.0", "conventional-changelog-conventionalcommits": "^4.6.3", - "eslint": "^8.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-simple-import-sort": "^7.0.0", - "husky": "^7.0.4", + "eslint": "^8.24.0", + "eslint-config-custom": "*", + "husky": "^8.0.1", "lerna": "^4.0.0", "prettier": "^2.6.0", "pretty-quick": "^3.1.3", "rimraf": "^3.0.2", - "turbo": "^1.1.5", - "typescript": "^4.6.4" + "turbo": "^1.5.5", + "typescript": "4.8.4" }, "scripts": { - "dev": "lerna run dev --parallel --ignore @clerk/{expo}", + "dev": "turbo dev --filter=@clerk/* --filter=!@clerk/expo", + "dev:playground": "echo 'Not ready for use yet' && exit 1 && turbo dev --filter=@playground/*", + "build": "turbo build --concurrency=${TURBO_CONCURRENCY:-2}", + "test": "turbo test --concurrency=${TURBO_CONCURRENCY:-2}", + "clean": "turbo clean", + "lint": "turbo lint", "lint-fix": "eslint . --ext .ts", "bump": "lerna version", "bump:next": "lerna version --conventional-prerelease --preid next --no-changelog", @@ -42,12 +44,9 @@ "release": "lerna publish from-package", "prerelease": "npx rimraf packages/*/dist && turbo run build test --concurrency=${TURBO_CONCURRENCY:-2}", "release:next": "lerna publish from-package --dist-tag next", - "build": "turbo run build --concurrency=${TURBO_CONCURRENCY:-2}", - "test": "turbo run test --concurrency=${TURBO_CONCURRENCY:-2}", - "prepare": "husky install", "version": "./scripts/version-info.sh", - "lerna": "lerna", "nuke": "rm -r node_modules; for d in packages/*/node_modules; do echo $d; rm -r $d; done", - "yalc:all": "for d in packages/*/; do echo $d; cd $d; yalc push --replace; cd '../../'; done" + "yalc:all": "for d in packages/*/; do echo $d; cd $d; yalc push --replace; cd '../../'; done", + "prepare": "husky install" } } diff --git a/packages/backend-core/API.md b/packages/backend-core/API.md index 1927cf54e1a..02aed20385b 100644 --- a/packages/backend-core/API.md +++ b/packages/backend-core/API.md @@ -560,6 +560,7 @@ Available parameters are: - _firstName_ User's first name. - _lastName_ User's last name. - _totpSecret_ User's secret for TOTP. Useful while migrating users with enabled 2FA Authenticator Apps. +- _backupCodes_ User's backup codes. Useful while migrating users with already existed 2FA backup codes. - _publicMetadata_ Metadata saved on the user, that is visible to both your Frontend and Backend APIs. - _privateMetadata_ Metadata saved on the user, that is only visible to your Backend API. - _unsafeMetadata_ Metadata saved on the user, that can be updated from both the Frontend and Backend APIs. Note: Since this data can be modified from the frontend, it is not guaranteed to be safe. @@ -587,6 +588,8 @@ Supported user attributes for update are: | primaryPhoneNumberID | string | | publicMetadata | Record | | privateMetadata | Record | +| totpSecret | string | +| backupCodes | string[] | #### deleteUser(userId) diff --git a/packages/backend-core/CHANGELOG.md b/packages/backend-core/CHANGELOG.md index 59809b21a35..3de43940656 100644 --- a/packages/backend-core/CHANGELOG.md +++ b/packages/backend-core/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.9.0-staging.0](https://github.com/clerkinc/javascript/compare/@clerk/backend-core@2.8.1...@clerk/backend-core@2.9.0-staging.0) (2022-10-13) + +### Features + +- **backend-core:** Add support for updating user's totp secret and backup codes ([250a47d](https://github.com/clerkinc/javascript/commit/250a47daf561928e7d09b48873b19be4de28a581)) + ### [2.8.1](https://github.com/clerkinc/javascript/compare/@clerk/backend-core@2.8.1-staging.0...@clerk/backend-core@2.8.1) (2022-10-07) **Note:** Version bump only for package @clerk/backend-core diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index e9c760dfb0f..14936f3f330 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,10 +1,12 @@ { "name": "@clerk/backend-core", - "version": "2.8.1", + "version": "2.9.0-staging.0", "license": "MIT", "description": "Clerk Backend API core resources and authentication utilities for JavaScript environments.", "scripts": { "build": "tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && ./moduleTypeFix", + "clean": "rimraf ./dist", + "lint": "eslint .", "dev": "tsc -p tsconfig.esm.json --watch", "test": "jest" }, @@ -12,13 +14,13 @@ "main": "dist/cjs/index.js", "module": "dist/mjs/index.js", "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/node": "^16.11.55", "@types/node-fetch": "^2", "node-fetch": "^2.6.0", "query-string": "^7.0.1", - "snakecase-keys": "^5.1.2", + "snakecase-keys": "^5.4.4", "tslib": "^2.3.1" }, "devDependencies": { @@ -26,7 +28,7 @@ "jest": "^27.4.7", "nock": "^13.2.1", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "publishConfig": { "access": "public" @@ -41,5 +43,6 @@ "homepage": "https://clerk.dev/", "engines": { "node": ">=14" - } + }, + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/backend-core/src/__tests__/endpoints/UserApi.test.ts b/packages/backend-core/src/__tests__/endpoints/UserApi.test.ts index 961995e5774..d2e6ffa5c49 100644 --- a/packages/backend-core/src/__tests__/endpoints/UserApi.test.ts +++ b/packages/backend-core/src/__tests__/endpoints/UserApi.test.ts @@ -148,6 +148,7 @@ test('createUser() creates a user', async () => { firstName: 'Boss', lastName: 'Clerk', totpSecret: 'AICJ3HCXKO4KOY6NDH6RII4E3ZYL5ZBH', + backupCodes: ['1234', 'abcd'], }; nock(defaultServerAPIUrl) @@ -169,6 +170,8 @@ test('updateUser() updates a user', async () => { nestedKey: 42, }, }, + totpSecret: 'AICJ3HCXKO4KOY6NDH6RII4E3ZYL5ZBH', + backupCodes: ['1234', 'abcd'], }; nock(defaultServerAPIUrl) @@ -181,6 +184,8 @@ test('updateUser() updates a user', async () => { nestedKey: 42, }, }, + totp_secret: 'AICJ3HCXKO4KOY6NDH6RII4E3ZYL5ZBH', + backup_codes: ['1234', 'abcd'], }) .replyWithFile(200, __dirname + '/responses/updateUser.json', { 'Content-Type': '', diff --git a/packages/backend-core/src/api/endpoints/UserApi.ts b/packages/backend-core/src/api/endpoints/UserApi.ts index f2c50c52213..0ebbcb6e189 100644 --- a/packages/backend-core/src/api/endpoints/UserApi.ts +++ b/packages/backend-core/src/api/endpoints/UserApi.ts @@ -36,6 +36,7 @@ type CreateUserParams = { skipPasswordChecks?: boolean; skipPasswordRequirement?: boolean; totpSecret?: string; + backupCodes?: string[]; } & UserMetadataParams; interface UpdateUserParams extends UserMetadataParams { @@ -45,6 +46,8 @@ interface UpdateUserParams extends UserMetadataParams { password?: string; primaryEmailAddressID?: string; primaryPhoneNumberID?: string; + totpSecret?: string; + backupCodes?: string[]; } type GetOrganizationMembershipListParams = { diff --git a/packages/backend-core/tsconfig.json b/packages/backend-core/tsconfig.json index b5d6ae5dc28..145d275b1dc 100644 --- a/packages/backend-core/tsconfig.json +++ b/packages/backend-core/tsconfig.json @@ -14,7 +14,8 @@ "resolveJsonModule": true, "sourceMap": false, "strict": true, - "target": "ES2020" + "target": "ES2020", + "skipLibCheck": true }, "include": ["src"], "exclude": ["node_modules", "dist", "src/**/*.spec.ts", "src/**/*.test.ts", "src/__tests__"] diff --git a/packages/clerk-js/CHANGELOG.md b/packages/clerk-js/CHANGELOG.md index 3ec44d1ac00..208130f94bb 100644 --- a/packages/clerk-js/CHANGELOG.md +++ b/packages/clerk-js/CHANGELOG.md @@ -3,6 +3,35 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.10.0-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/clerk-js@4.9.0...@clerk/clerk-js@4.10.0-staging.1) (2022-10-13) + +### Features + +- **clerk-js,clerk-react,types:** Wire up `OrganizationSwitcher` and `OrganizationProfile` ([1e34e69](https://github.com/clerkinc/javascript/commit/1e34e6986ee49aeb9ca9f72cdc5d799d6611b53f)) +- **clerk-js:** Add table and pagination elements ([cb56f5c](https://github.com/clerkinc/javascript/commit/cb56f5c0313ba6f1fce50eae6fc3e3d596cf1b16)) +- **clerk-js:** Fade in text for ImpersonationFab ([25c24b2](https://github.com/clerkinc/javascript/commit/25c24b29564ea14e933ca6bfeb108b5fbeee0405)) +- **clerk-js:** Introduce Menu element ([f4b4586](https://github.com/clerkinc/javascript/commit/f4b4586816734a97a06bc7a9ee1c12f728973daa)) +- **clerk-js:** Introduce Select element and use it in PhoneInput ([9619bfe](https://github.com/clerkinc/javascript/commit/9619bfe6da4fb876f2ba6279f2c08d6a8c2d263c)) +- **clerk-js:** Make the whole ImpersonationFab draggable ([85d65f8](https://github.com/clerkinc/javascript/commit/85d65f8ae962cb16b14ddf9b77b4bf42cb1423da)) +- **clerk-js:** Replace Switch Account text with icon ([1262f1b](https://github.com/clerkinc/javascript/commit/1262f1bfacd10df0a292fe0250b8843729aa1162)) + +### Bug Fixes + +- **clerk-js:** Add appearance customization support for avatar gradient ([96cde45](https://github.com/clerkinc/javascript/commit/96cde45b4f1db5ff074289b57ff58c40bf80f6e1)) +- **clerk-js:** Add default colors for avatar ([703fbd9](https://github.com/clerkinc/javascript/commit/703fbd9922c25b4e34fc8b443020e77d54a11afe)) +- **clerk-js:** Add global not_allowed_access error to localization prop ([0313fe5](https://github.com/clerkinc/javascript/commit/0313fe5ce4e0afca20865ad1b6d0503502ea6e4d)) +- **clerk-js:** Consistent ImpersonationFab drag behaviour in mobile ([b53d0a8](https://github.com/clerkinc/javascript/commit/b53d0a88b898e9aa8161906b671e0cd70c5ba2e9)) +- **clerk-js:** Extract BoringAvatar library module ([ca5420b](https://github.com/clerkinc/javascript/commit/ca5420b4dd6a6ddb26086c1f1641e9b2b44ea7b2)) +- **clerk-js:** Fix useSupportEmail.test.tsx ([52bb1cb](https://github.com/clerkinc/javascript/commit/52bb1cb950edc88b53c8ea05c88b3cfd6b1d377e)) +- **clerk-js:** Implement tabs components ([d9428cd](https://github.com/clerkinc/javascript/commit/d9428cdf21889318a181310f32ea77fe1f627e7e)) +- **clerk-js:** Improve keyboard nav and handle disabled tabs order of focus ([ae87f00](https://github.com/clerkinc/javascript/commit/ae87f0025b457ac64a60bd5176406bb46b1d532f)) +- **clerk-js:** Introduce FullHeightLoader element and replace Spinner in UserProfile ([121d697](https://github.com/clerkinc/javascript/commit/121d6972889fe8ecc3d534e12e40273766b2ba41)) +- **clerk-js:** Make global errors localizable ([e674272](https://github.com/clerkinc/javascript/commit/e674272bfe61d8eae24db3c10436f92eaf98a5da)) +- **clerk-js:** Make translateError fallback to longMessage first ([78627ca](https://github.com/clerkinc/javascript/commit/78627ca84f96627c3b5ccd77e4fbbcb52f5df784)) +- **clerk-js:** Minor refactor in naming and types ([8e1d32b](https://github.com/clerkinc/javascript/commit/8e1d32b660e33c2131642de0e9d0435e40544362)) +- **clerk-js:** Remove redundant code ([49c97e2](https://github.com/clerkinc/javascript/commit/49c97e2165eb54a430c22a74e86649e298205644)) +- **clerk-js:** Replace gravatar with Boring avatar ([7f2e2b6](https://github.com/clerkinc/javascript/commit/7f2e2b600fb746cc36c8464629d63ca3aa1a430b)) + ## [4.9.0](https://github.com/clerkinc/javascript/compare/@clerk/clerk-js@4.9.0-staging.1...@clerk/clerk-js@4.9.0) (2022-10-07) **Note:** Version bump only for package @clerk/clerk-js diff --git a/packages/clerk-js/jest.config.js b/packages/clerk-js/jest.config.js index 59d6c47f457..4d00fe4e58e 100644 --- a/packages/clerk-js/jest.config.js +++ b/packages/clerk-js/jest.config.js @@ -28,7 +28,6 @@ module.exports = { // using ts-jest transform: { '^.+\\.tsx?$': 'ts-jest', - '^.+\\.svg$': '../shared/utils/svgTransform.js', }, // For mocking fetch diff --git a/packages/clerk-js/package.json b/packages/clerk-js/package.json index 46f54a55d92..81d171ff1e9 100644 --- a/packages/clerk-js/package.json +++ b/packages/clerk-js/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-js", - "version": "4.9.0", + "version": "4.10.0-staging.1", "license": "MIT", "description": "Clerk.dev JS library", "keywords": [ @@ -29,6 +29,8 @@ "build:bundle": "webpack --config webpack.dev.js --env production", "build:declarations": "tsc -p tsconfig.declarations.json", "dev": "webpack serve --config webpack.dev.js", + "clean": "rimraf ./dist", + "lint": "eslint .", "prepublishOnly": "npm run build", "postpublish": "node ./scripts/purge-cache.mjs", "start": "echo \"Noop\"", @@ -36,7 +38,8 @@ "test:coverage": "jest --collectCoverage" }, "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/shared": "^0.0.2-staging.1", + "@clerk/types": "^3.11.0-staging.1", "@emotion/cache": "^11.7.1", "@emotion/react": "^11.9.0", "@floating-ui/react-dom-interactions": "^0.6.3", @@ -47,7 +50,6 @@ "core-js": "^3.18.3", "deepmerge": "^4.2.2", "dequal": "^2.0.2", - "js-cookie": "^2.2.1", "qrcode.react": "^3.1.0", "qs": "^6.9.4", "react": "17.0.2", @@ -62,7 +64,6 @@ "@babel/preset-env": "^7.12.1", "@babel/preset-react": "^7.12.5", "@babel/preset-typescript": "^7.12.1", - "@clerk/shared": "^0.3.27", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@svgr/webpack": "^6.2.1", "@testing-library/dom": "^7.28.1", @@ -105,7 +106,7 @@ "ts-jest": "^27.1.3", "ts-loader": "^9.3.0", "type-fest": "^0.20.2", - "typescript": "^4.6.4", + "typescript": "*", "webpack": "^5.72.1", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2", @@ -117,7 +118,7 @@ "files": [ { "path": "./dist/clerk.browser.js", - "maxSize": "155kB" + "maxSize": "157kB" }, { "path": "./dist/clerk.headless.js", @@ -132,5 +133,6 @@ "homepage": "https://clerk.dev/", "bugs": { "url": "https://github.com/clerkinc/javascript/issues" - } + }, + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index c3a80485ba3..40d6f820abe 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -1,6 +1,4 @@ -import { LocalStorageBroadcastChannel } from '@clerk/shared/utils/localStorageBroadcastChannel'; -import { noop } from '@clerk/shared/utils/noop'; -import { inClientSide } from '@clerk/shared/utils/ssr'; +import { inClientSide, LocalStorageBroadcastChannel, noop } from '@clerk/shared'; import type { ActiveSessionResource, AuthenticateWithMetamaskParams, @@ -16,13 +14,17 @@ import type { ListenerCallback, OrganizationInvitationResource, OrganizationMembershipResource, + OrganizationProfileProps, OrganizationResource, + OrganizationSwitcherProps, RedirectOptions, Resources, + SetActiveParams, SignInProps, SignInResource, SignOut, SignOutCallback, + SignOutOptions, SignUpProps, SignUpResource, UnsubscribeCallback, @@ -30,7 +32,6 @@ import type { UserProfileProps, UserResource, } from '@clerk/types'; -import { SetActiveParams, SignOutOptions } from '@clerk/types/src'; import packageJSON from '../../package.json'; import type { ComponentControls, MountComponentRenderer } from '../ui'; @@ -207,6 +208,16 @@ export default class Clerk implements ClerkInterface { this.#componentControls?.closeModal('userProfile'); }; + public openOrganizationProfile = (props?: OrganizationProfileProps): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls?.openModal('organizationProfile', props || {}); + }; + + public closeOrganizationProfile = (): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls?.closeModal('organizationProfile'); + }; + public mountSignIn = (node: HTMLDivElement, props?: SignInProps): void => { this.assertComponentsReady(this.#componentControls); this.#componentControls.mountComponent({ @@ -258,6 +269,40 @@ export default class Clerk implements ClerkInterface { }); }; + public mountOrganizationProfile = (node: HTMLDivElement, props?: OrganizationProfileProps): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls.mountComponent({ + name: 'OrganizationProfile', + appearanceKey: 'userProfile', + node, + props, + }); + }; + + public unmountOrganizationProfile = (node: HTMLDivElement): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls.unmountComponent({ + node, + }); + }; + + public mountOrganizationSwitcher = (node: HTMLDivElement, props?: OrganizationSwitcherProps): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls.mountComponent({ + name: 'OrganizationSwitcher', + appearanceKey: 'userProfile', + node, + props, + }); + }; + + public unmountOrganizationSwitcher = (node: HTMLDivElement): void => { + this.assertComponentsReady(this.#componentControls); + this.#componentControls.unmountComponent({ + node, + }); + }; + public mountUserButton = (node: HTMLDivElement, props?: UserButtonProps): void => { this.assertComponentsReady(this.#componentControls); this.#componentControls.mountComponent({ diff --git a/packages/clerk-js/src/core/fapiClient.ts b/packages/clerk-js/src/core/fapiClient.ts index 45866eaa8d3..4fb1ee4e73c 100644 --- a/packages/clerk-js/src/core/fapiClient.ts +++ b/packages/clerk-js/src/core/fapiClient.ts @@ -1,4 +1,4 @@ -import { camelToSnake } from '@clerk/shared/utils'; +import { camelToSnake } from '@clerk/shared'; import type { Clerk, ClerkAPIErrorJSON, ClientJSON } from '@clerk/types'; import qs from 'qs'; diff --git a/packages/clerk-js/src/core/resources/EmailAddress.ts b/packages/clerk-js/src/core/resources/EmailAddress.ts index 49c6984f3c5..2d7394112ef 100644 --- a/packages/clerk-js/src/core/resources/EmailAddress.ts +++ b/packages/clerk-js/src/core/resources/EmailAddress.ts @@ -1,4 +1,4 @@ -import { Poller } from '@clerk/shared/utils/poller'; +import { Poller } from '@clerk/shared'; import type { AttemptEmailAddressVerificationParams, CreateMagicLinkFlowReturn, diff --git a/packages/clerk-js/src/core/resources/ExternalAccount.ts b/packages/clerk-js/src/core/resources/ExternalAccount.ts index c131d5b8a1d..ceb312ef5da 100644 --- a/packages/clerk-js/src/core/resources/ExternalAccount.ts +++ b/packages/clerk-js/src/core/resources/ExternalAccount.ts @@ -1,4 +1,4 @@ -import { titleize } from '@clerk/shared/utils/string'; +import { titleize } from '@clerk/shared'; import type { ExternalAccountJSON, ExternalAccountResource, OAuthProvider, VerificationResource } from '@clerk/types'; import { BaseResource } from './Base'; diff --git a/packages/clerk-js/src/core/resources/Session.ts b/packages/clerk-js/src/core/resources/Session.ts index a28bf8eae00..2a5e0850fc9 100644 --- a/packages/clerk-js/src/core/resources/Session.ts +++ b/packages/clerk-js/src/core/resources/Session.ts @@ -1,4 +1,4 @@ -import { deepSnakeToCamel } from '@clerk/shared/utils'; +import { deepSnakeToCamel } from '@clerk/shared'; import type { ActJWTClaim, PublicUserData, SessionJSON, SessionResource, SessionStatus } from '@clerk/types'; import { GetToken, GetTokenOptions, UserResource } from '@clerk/types/src'; diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 257c6222cf0..7758f173f8a 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -1,5 +1,5 @@ -import { deepSnakeToCamel } from '@clerk/shared/utils/object'; -import { Poller } from '@clerk/shared/utils/poller'; +import { deepSnakeToCamel } from '@clerk/shared'; +import { Poller } from '@clerk/shared'; import type { AttemptFirstFactorParams, AttemptSecondFactorParams, diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 3e14f6e8aac..9dd29d86ce4 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -1,4 +1,4 @@ -import { Poller } from '@clerk/shared/utils/poller'; +import { Poller } from '@clerk/shared'; import type { AttemptEmailAddressVerificationParams, AttemptPhoneNumberVerificationParams, diff --git a/packages/clerk-js/src/ui/Components.tsx b/packages/clerk-js/src/ui/Components.tsx index 6f28dbadd1c..6f1cdafcba5 100644 --- a/packages/clerk-js/src/ui/Components.tsx +++ b/packages/clerk-js/src/ui/Components.tsx @@ -1,11 +1,17 @@ -// import { Modal } from '@clerk/shared/components/modal'; import type { Appearance, Clerk, ClerkOptions, EnvironmentResource, SignInProps, SignUpProps } from '@clerk/types'; +import { OrganizationProfileProps } from '@clerk/types'; import { UserProfileProps } from '@clerk/types/src'; import React from 'react'; import ReactDOM from 'react-dom'; import { PRESERVED_QUERYSTRING_PARAMS } from '../core/constants'; import { clerkUIErrorDOMElementNotFound } from '../core/errors'; +import { OrganizationProfile } from './components/OrganizationProfile'; +import { OrganizationSwitcher } from './components/OrganizationSwitcher'; +import { SignIn, SignInModal } from './components/SignIn'; +import { SignUp, SignUpModal } from './components/SignUp'; +import { UserButton } from './components/UserButton'; +import { UserProfile, UserProfileModal } from './components/UserProfile'; import { EnvironmentProvider, OptionsProvider } from './contexts'; import { CoreClerkContextWrapper } from './contexts/CoreClerkContextWrapper'; import { AppearanceProvider } from './customizables'; @@ -14,13 +20,9 @@ import { useSafeLayoutEffect } from './hooks'; import { ImpersonationFab } from './ImpersonationFab'; import Portal from './portal'; import { VirtualRouter } from './router'; -import { SignIn, SignInModal } from './SignIn'; -import { SignUp, SignUpModal } from './SignUp'; import { InternalThemeProvider } from './styledSystem'; import type { AvailableComponentProps } from './types'; import { AvailableComponentCtx } from './types'; -import { UserButton } from './UserButton'; -import { UserProfile, UserProfileModal } from './UserProfile'; const ROOT_ELEMENT_ID = 'clerk-components'; @@ -44,11 +46,11 @@ export type ComponentControls = { node?: HTMLDivElement; props?: unknown; }) => void; - openModal: ( + openModal: ( modal: T, props: T extends 'signIn' ? SignInProps : T extends 'signUp' ? SignUpProps : UserProfileProps, ) => void; - closeModal: (modal: 'signIn' | 'signUp' | 'userProfile') => void; + closeModal: (modal: 'signIn' | 'signUp' | 'userProfile' | 'organizationProfile') => void; }; const AvailableComponents = { @@ -56,6 +58,8 @@ const AvailableComponents = { SignUp, UserButton, UserProfile, + OrganizationSwitcher, + OrganizationProfile, }; type AvailableComponentNames = keyof typeof AvailableComponents; @@ -79,6 +83,7 @@ interface ComponentsState { signInModal: null | SignInProps; signUpModal: null | SignUpProps; userProfileModal: null | UserProfileProps; + organizationProfileModal: null | OrganizationProfileProps; nodes: Map; } @@ -126,9 +131,10 @@ const Components = (props: ComponentsProps) => { signInModal: null, signUpModal: null, userProfileModal: null, + organizationProfileModal: null, nodes: new Map(), }); - const { signInModal, signUpModal, userProfileModal, nodes } = state; + const { signInModal, signUpModal, userProfileModal, organizationProfileModal, nodes } = state; useSafeLayoutEffect(() => { componentsControls.mountComponent = params => { @@ -256,6 +262,35 @@ const Components = (props: ComponentsProps) => { ); + const mountedOrganizationProfileModal = ( + + + + componentsControls.closeModal('organizationProfile')} + containerSx={{ alignItems: 'center' }} + contentSx={t => ({ + height: `min(${t.sizes.$176}, calc(100% - ${t.sizes.$12}))`, + margin: 0, + })} + > + componentsControls.closeModal('organizationProfile')} + startPath='/user' + > + hello from org profil + + + + + + ); + const mountedImpersonationFab = ( { {signInModal && mountedSignInModal} {signUpModal && mountedSignUpModal} {userProfileModal && mountedUserProfileModal} + {organizationProfileModal && mountedOrganizationProfileModal} {mountedImpersonationFab} diff --git a/packages/clerk-js/src/ui/ImpersonationFab/ImpersonationFab.tsx b/packages/clerk-js/src/ui/ImpersonationFab/ImpersonationFab.tsx index d66232e22d8..6b5c7c03654 100644 --- a/packages/clerk-js/src/ui/ImpersonationFab/ImpersonationFab.tsx +++ b/packages/clerk-js/src/ui/ImpersonationFab/ImpersonationFab.tsx @@ -27,14 +27,12 @@ const EyeCircle = ({ width, height, ...props }: EyeCircleProps) => { const { sx, ...rest } = props; return ( ({ width, height, - transition: `transform ${t.transitionDuration.$slowest} ease`, backgroundColor: t.colors.$danger500, borderRadius: t.radii.$circle, }), @@ -174,8 +172,10 @@ export const ImpersonationFab = () => { ({ + touchAction: 'none', //for drag to work on mobile consistently position: 'fixed', overflow: 'hidden', top: `var(${topProperty}, ${defaultTop}px)`, @@ -185,11 +185,16 @@ export const ImpersonationFab = () => { borderRadius: t.radii.$halfHeight, //to match the circular eye perfectly backgroundColor: t.colors.$white, fontFamily: t.fonts.$main, + ':hover': { + cursor: 'grab', + }, ':hover #cl-impersonationText': { + transition: `max-width ${t.transitionDuration.$slowest} ease, opacity ${t.transitionDuration.$slower} ease ${t.transitionDuration.$slowest}`, maxWidth: `min(calc(50vw - ${eyeWidth} - 2 * ${defaultRight}px), ${titleLength}ch)`, [mqu.md]: { maxWidth: `min(calc(100vw - ${eyeWidth} - 2 * ${defaultRight}px), ${titleLength}ch)`, }, + opacity: 1, }, ':hover #cl-impersonationEye': { transform: 'rotate(-180deg)', @@ -197,21 +202,20 @@ export const ImpersonationFab = () => { })} > ({ + transition: `transform ${t.transitionDuration.$slowest} ease`, + })} /> ({ + transition: `max-width ${t.transitionDuration.$slowest} ease, opacity ${t.transitionDuration.$fast} ease`, maxWidth: '0px', - transition: `max-width ${t.transitionDuration.$slowest} ease`, + opacity: 0, })} > { + let hash = 0; + for (let i = 0; i < name.length; i++) { + const character = name.charCodeAt(i); + hash = (hash << 5) - hash + character; + hash = hash & hash; // Convert to 32bit integer + } + return Math.abs(hash); +}; + +export const getDigit = (number: number, ntn: number) => { + return Math.floor((number / Math.pow(10, ntn)) % 10); +}; + +export const getUnit = (number: number, range: number, index?: number) => { + const value = number % range; + + if (index && getDigit(number, index) % 2 === 0) { + return -value; + } else { + return value; + } +}; + +export const getRandomColor = (number: number, colors: string[], range: number) => { + return colors[number % range]; +}; + +function generateColors(name: string, colors: string[]) { + const numFromName = hashCode(name); + const range = colors && colors.length; + + const elementsProperties = Array.from({ length: ELEMENTS }, (_, i) => ({ + color: getRandomColor(numFromName + i, colors, range), + translateX: getUnit(numFromName * (i + 1), SIZE / 10, 1), + translateY: getUnit(numFromName * (i + 1), SIZE / 10, 2), + scale: 1.2 + getUnit(numFromName * (i + 1), SIZE / 20) / 10, + rotate: getUnit(numFromName * (i + 1), 360, 1), + })); + + return elementsProperties; +} + +type AvatarProps = { + colors: string[]; + name: string; + square: boolean; + title: boolean; + size: string; +}; + +const AvatarMarble = (props: AvatarProps) => { + const properties = generateColors(props.name, props.colors); + + return ( + + {props.title && {props.name}} + + + + + + + + + + + + + + + + + ); +}; + +export const BoringAvatar = ({ + colors = ['#92A1C6', '#146A7C', '#F0AB3D', '#C271B4', '#C20D90'], + name = '', + square = false, + title = false, + size = '40px', + ...props +}) => { + const avatarProps = { colors, name, title, size, square, ...props }; + + return ; +}; diff --git a/packages/clerk-js/src/ui/common/EmailLinkVerify.tsx b/packages/clerk-js/src/ui/common/EmailLinkVerify.tsx index 6976e0a11e5..875add973b1 100644 --- a/packages/clerk-js/src/ui/common/EmailLinkVerify.tsx +++ b/packages/clerk-js/src/ui/common/EmailLinkVerify.tsx @@ -2,9 +2,9 @@ import React from 'react'; import { isMagicLinkError, MagicLinkErrorCode } from '../../core/resources/Error'; import { VerificationStatus } from '../../utils/getClerkQueryParam'; +import { completeSignUpFlow } from '../components/SignUp/util'; import { useCoreClerk, useCoreSignUp } from '../contexts'; import { useNavigate } from '../hooks/useNavigate'; -import { completeSignUpFlow } from '../SignUp/util'; import { sleep } from '../utils'; import { EmailLinkStatusCard } from './EmailLinkStatusCard'; diff --git a/packages/clerk-js/src/ui/common/authPropHelpers.ts b/packages/clerk-js/src/ui/common/authPropHelpers.ts index 40cdac89402..e0a818ef1c1 100644 --- a/packages/clerk-js/src/ui/common/authPropHelpers.ts +++ b/packages/clerk-js/src/ui/common/authPropHelpers.ts @@ -1,4 +1,4 @@ -import { camelToSnake } from '@clerk/shared/utils'; +import { camelToSnake } from '@clerk/shared'; import type { DisplayConfigResource } from '@clerk/types'; import type { ParsedQs } from 'qs'; import qs from 'qs'; diff --git a/packages/clerk-js/src/ui/common/index.ts b/packages/clerk-js/src/ui/common/index.ts index 02163dc7b89..31cfac52722 100644 --- a/packages/clerk-js/src/ui/common/index.ts +++ b/packages/clerk-js/src/ui/common/index.ts @@ -9,3 +9,4 @@ export * from './EmailLinkVerify'; export * from './EmailLinkStatusCard'; export * from './Wizard'; export * from './PrintableComponent'; +export * from './BoringAvatar'; diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfile.tsx b/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfile.tsx new file mode 100644 index 00000000000..1c9df5e9a73 --- /dev/null +++ b/packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfile.tsx @@ -0,0 +1,54 @@ +import { UserProfileProps } from '@clerk/types/src'; +import React from 'react'; + +import { Flow } from '../../customizables'; +import { withCardStateProvider } from '../../elements'; +import { Route, Switch } from '../../router'; + +const _OrganizationProfile = (_: UserProfileProps) => { + return ( + + + + {/* PublicRoutes */} + {/**/} + {/**/} + + + + ); +}; + +// const AuthenticatedRoutes = withCoreUserGuard(() => { +// const contentRef = React.useRef(null); +// return ( +// +// +// +// +// +// +// ); +// }); + +export const OrganizationProfile = withCardStateProvider(_OrganizationProfile); +// +// export const UserProfileModal = (props: UserProfileProps): JSX.Element => { +// const userProfileProps: UserProfileCtx = { +// ...props, +// routing: 'virtual', +// componentName: 'OrganizationProfile', +// mode: 'modal', +// }; +// +// return ( +// +// +// {/*TODO: Used by InvisibleRootBox, can we simplify? */} +//
+// +//
+//
+//
+// ); +// }; diff --git a/packages/clerk-js/src/ui/components/OrganizationProfile/index.ts b/packages/clerk-js/src/ui/components/OrganizationProfile/index.ts new file mode 100644 index 00000000000..98a8862a2e4 --- /dev/null +++ b/packages/clerk-js/src/ui/components/OrganizationProfile/index.ts @@ -0,0 +1 @@ +export * from './OrganizationProfile'; diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcher.tsx b/packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcher.tsx new file mode 100644 index 00000000000..861d5d19666 --- /dev/null +++ b/packages/clerk-js/src/ui/components/OrganizationSwitcher/OrganizationSwitcher.tsx @@ -0,0 +1,46 @@ +import React from 'react'; + +import { withCoreUserGuard } from '../../contexts'; +import { Flex, Flow } from '../../customizables'; +import { withCardStateProvider } from '../../elements'; +// import {Portal} from '../../elements/Portal'; +import { usePopover } from '../../hooks'; +// import {getFullName, getIdentifier} from '../../utils'; + +const _OrganizationSwitcher = () => { + // const { defaultOpen } = useUserButtonContext(); + const { floating, reference, styles, toggle, isOpen } = usePopover({ + placement: 'bottom-end', + offset: 8, + }); + + return ( + + + {/**/} + {/**/} + {/* // isOpen={isOpen}>*/} + {/* open me*/} + {/**/} + {/**/} + {/* */} + {/* hello*/} + {/* */} + {/**/} + + + ); +}; + +export const OrganizationSwitcher = withCoreUserGuard(withCardStateProvider(_OrganizationSwitcher)); diff --git a/packages/clerk-js/src/ui/components/OrganizationSwitcher/index.ts b/packages/clerk-js/src/ui/components/OrganizationSwitcher/index.ts new file mode 100644 index 00000000000..d2ce931b01c --- /dev/null +++ b/packages/clerk-js/src/ui/components/OrganizationSwitcher/index.ts @@ -0,0 +1 @@ +export * from './OrganizationSwitcher'; diff --git a/packages/clerk-js/src/ui/SignIn/AlternativeMethods.tsx b/packages/clerk-js/src/ui/components/SignIn/AlternativeMethods.tsx similarity index 95% rename from packages/clerk-js/src/ui/SignIn/AlternativeMethods.tsx rename to packages/clerk-js/src/ui/components/SignIn/AlternativeMethods.tsx index 08000b64c95..378b9b9ced4 100644 --- a/packages/clerk-js/src/ui/SignIn/AlternativeMethods.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/AlternativeMethods.tsx @@ -1,11 +1,11 @@ import { SignInFactor } from '@clerk/types'; import React from 'react'; -import { useCoreSignIn } from '../../ui/contexts/'; -import { descriptors, Flex, Flow, LocalizationKey, localizationKeys } from '../customizables'; -import { ArrowBlockButton, Card, CardAlert, Footer, Header } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { allStrategiesButtonsComparator, formatSafeIdentifier } from '../utils'; +import { useCoreSignIn } from '../../contexts'; +import { descriptors, Flex, Flow, LocalizationKey, localizationKeys } from '../../customizables'; +import { ArrowBlockButton, Card, CardAlert, Footer, Header } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { allStrategiesButtonsComparator, formatSafeIdentifier } from '../../utils'; import { HavingTrouble } from './HavingTrouble'; import { SignInSocialButtons } from './SignInSocialButtons'; import { factorHasLocalStrategy } from './utils'; diff --git a/packages/clerk-js/src/ui/SignIn/HavingTrouble.tsx b/packages/clerk-js/src/ui/components/SignIn/HavingTrouble.tsx similarity index 66% rename from packages/clerk-js/src/ui/SignIn/HavingTrouble.tsx rename to packages/clerk-js/src/ui/components/SignIn/HavingTrouble.tsx index 251e0339013..eac2ce3eefc 100644 --- a/packages/clerk-js/src/ui/SignIn/HavingTrouble.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/HavingTrouble.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { localizationKeys } from '../customizables'; -import { ErrorCard } from '../elements'; -import { PropsOfComponent } from '../styledSystem'; +import { localizationKeys } from '../../customizables'; +import { ErrorCard } from '../../elements'; +import { PropsOfComponent } from '../../styledSystem'; export const HavingTrouble = (props: PropsOfComponent) => { const { onBackLinkClick } = props; diff --git a/packages/clerk-js/src/ui/SignIn/SignIn.tsx b/packages/clerk-js/src/ui/components/SignIn/SignIn.tsx similarity index 90% rename from packages/clerk-js/src/ui/SignIn/SignIn.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignIn.tsx index 6c302890c4c..f65e46c4a1c 100644 --- a/packages/clerk-js/src/ui/SignIn/SignIn.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignIn.tsx @@ -1,10 +1,10 @@ import { SignInProps } from '@clerk/types'; import React from 'react'; -import { ComponentContext, useCoreClerk, useSignInContext, withCoreSessionSwitchGuard } from '../../ui/contexts'; -import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../ui/router'; -import { SignInEmailLinkFlowComplete } from '../common/EmailLinkCompleteFlowCard'; -import { Flow } from '../customizables'; +import { SignInEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowCard'; +import { ComponentContext, useCoreClerk, useSignInContext, withCoreSessionSwitchGuard } from '../../contexts'; +import { Flow } from '../../customizables'; +import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../router'; import { SignInAccountSwitcher } from './SignInAccountSwitcher'; import { SignInFactorOne } from './SignInFactorOne'; import { SignInFactorTwo } from './SignInFactorTwo'; diff --git a/packages/clerk-js/src/ui/SignIn/SignInAccountSwitcher.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInAccountSwitcher.tsx similarity index 84% rename from packages/clerk-js/src/ui/SignIn/SignInAccountSwitcher.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInAccountSwitcher.tsx index eb8ec7e6032..06a15600aed 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInAccountSwitcher.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInAccountSwitcher.tsx @@ -1,14 +1,14 @@ import React from 'react'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useEnvironment, useSignInContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks'; -import { Button, Col, descriptors, Flow, Icon } from '../customizables'; -import { Card, CardAlert, Header, UserPreview, UserPreviewProps, withCardStateProvider } from '../elements'; -import { ArrowBlockButton } from '../elements/ArrowBlockButton'; -import { useCardState } from '../elements/contexts'; -import { Plus, SignOutDouble } from '../icons'; -import { PropsOfComponent } from '../styledSystem'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useEnvironment, useSignInContext } from '../../contexts'; +import { Button, Col, descriptors, Flow, Icon } from '../../customizables'; +import { Card, CardAlert, Header, UserPreview, UserPreviewProps, withCardStateProvider } from '../../elements'; +import { ArrowBlockButton } from '../../elements/ArrowBlockButton'; +import { useCardState } from '../../elements/contexts'; +import { useNavigate } from '../../hooks'; +import { Plus, SignOutDouble } from '../../icons'; +import { PropsOfComponent } from '../../styledSystem'; import { useMultisessionActions } from '../UserButton/useMultisessionActions'; const _SignInAccountSwitcher = () => { diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOne.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOne.tsx similarity index 95% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOne.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOne.tsx index ef917f22346..185612065ea 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOne.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOne.tsx @@ -1,10 +1,10 @@ import { SignInFactor } from '@clerk/types'; import React from 'react'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useCoreSignIn, useEnvironment } from '../../ui/contexts'; -import { useRouter } from '../../ui/router'; -import { ErrorCard, LoadingCard, withCardStateProvider } from '../elements'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useCoreSignIn, useEnvironment } from '../../contexts'; +import { ErrorCard, LoadingCard, withCardStateProvider } from '../../elements'; +import { useRouter } from '../../router'; import { AlternativeMethods } from './AlternativeMethods'; import { SignInFactorOneEmailCodeCard } from './SignInFactorOneEmailCodeCard'; import { SignInFactorOneEmailLinkCard } from './SignInFactorOneEmailLinkCard'; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOneCodeForm.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneCodeForm.tsx similarity index 87% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOneCodeForm.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOneCodeForm.tsx index 9a04faff362..1c5502d2a26 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOneCodeForm.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneCodeForm.tsx @@ -1,14 +1,14 @@ import { EmailCodeFactor, PhoneCodeFactor } from '@clerk/types'; import React from 'react'; -import { clerkInvalidFAPIResponse } from '../../core/errors'; -import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../ui/contexts'; -import { useSupportEmail } from '../../ui/hooks/useSupportEmail'; -import { useRouter } from '../../ui/router'; -import { LocalizationKey } from '../customizables'; -import { VerificationCodeCard, VerificationCodeCardProps } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { handleError } from '../utils'; +import { clerkInvalidFAPIResponse } from '../../../core/errors'; +import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../contexts'; +import { LocalizationKey } from '../../customizables'; +import { VerificationCodeCard, VerificationCodeCardProps } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useSupportEmail } from '../../hooks/useSupportEmail'; +import { useRouter } from '../../router'; +import { handleError } from '../../utils'; export type SignInFactorOneCodeCard = Pick & { factor: EmailCodeFactor | PhoneCodeFactor; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailCodeCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailCodeCard.tsx similarity index 89% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailCodeCard.tsx index 8f6c4171827..e2314d3ec4f 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailCodeCard.tsx @@ -1,8 +1,8 @@ import { EmailCodeFactor } from '@clerk/types'; import React from 'react'; -import { useEnvironment } from '../../ui/contexts'; -import { Flow, localizationKeys } from '../customizables'; +import { useEnvironment } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; import { SignInFactorOneCodeCard, SignInFactorOneCodeForm } from './SignInFactorOneCodeForm'; type SignInFactorOneEmailCodeCardProps = SignInFactorOneCodeCard & { factor: EmailCodeFactor }; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailLinkCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailLinkCard.tsx similarity index 87% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailLinkCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailLinkCard.tsx index c855984e206..e919a7aec20 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOneEmailLinkCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOneEmailLinkCard.tsx @@ -1,15 +1,15 @@ import { EmailLinkFactor, SignInResource } from '@clerk/types'; import React from 'react'; -import { buildMagicLinkRedirectUrl } from '../../ui/common/redirects'; -import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../../ui/contexts'; -import { useMagicLink } from '../../ui/hooks/useMagicLink'; -import { useRouter } from '../../ui/router/RouteContext'; -import { EmailLinkStatusCard } from '../common'; -import { Flow, localizationKeys } from '../customizables'; -import { VerificationCodeCardProps, VerificationLinkCard } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { handleError } from '../utils'; +import { EmailLinkStatusCard } from '../../common'; +import { buildMagicLinkRedirectUrl } from '../../common/redirects'; +import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; +import { VerificationCodeCardProps, VerificationLinkCard } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useMagicLink } from '../../hooks/useMagicLink'; +import { useRouter } from '../../router/RouteContext'; +import { handleError } from '../../utils'; type SignInFactorOneEmailLinkCardProps = Pick & { factor: EmailLinkFactor; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOnePasswordCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasswordCard.tsx similarity index 88% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOnePasswordCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasswordCard.tsx index 568cf6e2650..03019176d85 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOnePasswordCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePasswordCard.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { clerkInvalidFAPIResponse } from '../../core/errors'; -import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../ui/contexts'; -import { useSupportEmail } from '../../ui/hooks/useSupportEmail'; -import { useRouter } from '../../ui/router/RouteContext'; -import { descriptors, Flex, Flow, localizationKeys } from '../customizables'; -import { Card, CardAlert, Footer, Form, Header, IdentityPreview, useCardState } from '../elements'; -import { handleError, useFormControl } from '../utils'; +import { clerkInvalidFAPIResponse } from '../../../core/errors'; +import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../contexts'; +import { descriptors, Flex, Flow, localizationKeys } from '../../customizables'; +import { Card, CardAlert, Footer, Form, Header, IdentityPreview, useCardState } from '../../elements'; +import { useSupportEmail } from '../../hooks/useSupportEmail'; +import { useRouter } from '../../router/RouteContext'; +import { handleError, useFormControl } from '../../utils'; type SignInFactorOnePasswordProps = { onShowAlternativeMethodsClick: React.MouseEventHandler; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorOnePhoneCodeCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePhoneCodeCard.tsx similarity index 89% rename from packages/clerk-js/src/ui/SignIn/SignInFactorOnePhoneCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePhoneCodeCard.tsx index 20d3fb559f8..02104448cb5 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorOnePhoneCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorOnePhoneCodeCard.tsx @@ -1,8 +1,8 @@ import { PhoneCodeFactor } from '@clerk/types'; import React from 'react'; -import { useEnvironment } from '../contexts'; -import { Flow, localizationKeys } from '../customizables'; +import { useEnvironment } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; import { SignInFactorOneCodeCard, SignInFactorOneCodeForm } from './SignInFactorOneCodeForm'; type SignInFactorOnePhoneCodeCardProps = SignInFactorOneCodeCard & { factor: PhoneCodeFactor }; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwo.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwo.tsx similarity index 93% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwo.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwo.tsx index 7bc0771153b..7fd8a0d5f51 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwo.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwo.tsx @@ -1,9 +1,9 @@ import { SignInFactor } from '@clerk/types'; import React from 'react'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useCoreSignIn } from '../../ui/contexts'; -import { LoadingCard, withCardStateProvider } from '../elements'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useCoreSignIn } from '../../contexts'; +import { LoadingCard, withCardStateProvider } from '../../elements'; import { SignInFactorTwoAlternativeMethods } from './SignInFactorTwoAlternativeMethods'; import { SignInFactorTwoBackupCodeCard } from './SignInFactorTwoBackupCodeCard'; import { SignInFactorTwoPhoneCodeCard } from './SignInFactorTwoPhoneCodeCard'; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoAlternativeMethods.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx similarity index 95% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwoAlternativeMethods.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx index 1db9710d9bd..b394a338ed2 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoAlternativeMethods.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoAlternativeMethods.tsx @@ -1,11 +1,11 @@ import { SignInFactor } from '@clerk/types'; import React from 'react'; -import { useCoreSignIn } from '../../ui/contexts/'; -import { Col, descriptors, Flow, LocalizationKey, localizationKeys } from '../customizables'; -import { ArrowBlockButton, Card, CardAlert, Footer, Header } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { backupCodePrefFactorComparator, formatSafeIdentifier } from '../utils'; +import { useCoreSignIn } from '../../contexts'; +import { Col, descriptors, Flow, LocalizationKey, localizationKeys } from '../../customizables'; +import { ArrowBlockButton, Card, CardAlert, Footer, Header } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { backupCodePrefFactorComparator, formatSafeIdentifier } from '../../utils'; import { HavingTrouble } from './HavingTrouble'; export type AlternativeMethodsProps = { diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoBackupCodeCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoBackupCodeCard.tsx similarity index 89% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwoBackupCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoBackupCodeCard.tsx index 02b6317e79a..eeb6433cb7c 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoBackupCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoBackupCodeCard.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { clerkInvalidFAPIResponse } from '../../core/errors'; -import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../contexts'; -import { Col, descriptors, localizationKeys } from '../customizables'; -import { Card, CardAlert, Footer, Form, Header, useCardState } from '../elements'; -import { useSupportEmail } from '../hooks/useSupportEmail'; -import { handleError, useFormControl } from '../utils'; +import { clerkInvalidFAPIResponse } from '../../../core/errors'; +import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../../contexts'; +import { Col, descriptors, localizationKeys } from '../../customizables'; +import { Card, CardAlert, Footer, Form, Header, useCardState } from '../../elements'; +import { useSupportEmail } from '../../hooks/useSupportEmail'; +import { handleError, useFormControl } from '../../utils'; type SignInFactorTwoBackupCodeCardProps = { onShowAlternativeMethodsClicked: React.MouseEventHandler; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoCodeForm.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoCodeForm.tsx similarity index 89% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwoCodeForm.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoCodeForm.tsx index a665ca98792..31bf5a72a6b 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoCodeForm.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoCodeForm.tsx @@ -1,12 +1,12 @@ import { PhoneCodeFactor, SignInResource, TOTPFactor } from '@clerk/types'; import React from 'react'; -import { clerkInvalidFAPIResponse } from '../../core/errors'; -import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../ui/contexts'; -import { useSupportEmail } from '../../ui/hooks/useSupportEmail'; -import { LocalizationKey } from '../customizables'; -import { useCardState, VerificationCodeCard, VerificationCodeCardProps } from '../elements'; -import { handleError } from '../utils'; +import { clerkInvalidFAPIResponse } from '../../../core/errors'; +import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../contexts'; +import { LocalizationKey } from '../../customizables'; +import { useCardState, VerificationCodeCard, VerificationCodeCardProps } from '../../elements'; +import { useSupportEmail } from '../../hooks/useSupportEmail'; +import { handleError } from '../../utils'; export type SignInFactorTwoCodeCard = Pick & { factor: PhoneCodeFactor | TOTPFactor; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoPhoneCodeCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx similarity index 91% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwoPhoneCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx index 42c121f8e3b..eb89634df2c 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoPhoneCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoPhoneCodeCard.tsx @@ -1,8 +1,8 @@ import { PhoneCodeFactor } from '@clerk/types'; import React from 'react'; -import { useCoreSignIn } from '../../ui/contexts'; -import { Flow, localizationKeys } from '../customizables'; +import { useCoreSignIn } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; import { SignInFactorTwoCodeCard, SignInFactorTwoCodeForm } from './SignInFactorTwoCodeForm'; type SignInFactorTwoPhoneCodeCardProps = SignInFactorTwoCodeCard & { factor: PhoneCodeFactor }; diff --git a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoTOTPCard.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoTOTPCard.tsx similarity index 92% rename from packages/clerk-js/src/ui/SignIn/SignInFactorTwoTOTPCard.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoTOTPCard.tsx index 745ac2d5f6f..035f1ecbab3 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInFactorTwoTOTPCard.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInFactorTwoTOTPCard.tsx @@ -1,7 +1,7 @@ import { TOTPFactor } from '@clerk/types'; import React from 'react'; -import { Flow, localizationKeys } from '../customizables'; +import { Flow, localizationKeys } from '../../customizables'; import { SignInFactorTwoCodeCard, SignInFactorTwoCodeForm } from './SignInFactorTwoCodeForm'; type SignInFactorTwoTOTPCardProps = SignInFactorTwoCodeCard & { factor: TOTPFactor }; diff --git a/packages/clerk-js/src/ui/components/SignIn/SignInSSOCallback.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInSSOCallback.tsx new file mode 100644 index 00000000000..9a955c26164 --- /dev/null +++ b/packages/clerk-js/src/ui/components/SignIn/SignInSSOCallback.tsx @@ -0,0 +1,4 @@ +import { SSOCallback } from '../../common'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; + +export const SignInSSOCallback = withRedirectToHome(SSOCallback); diff --git a/packages/clerk-js/src/ui/SignIn/SignInSocialButtons.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx similarity index 75% rename from packages/clerk-js/src/ui/SignIn/SignInSocialButtons.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx index 4000c372881..99efcbbbefc 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInSocialButtons.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInSocialButtons.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { buildSSOCallbackURL } from '../../ui/common/redirects'; -import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../ui/contexts'; -import { useEnvironment } from '../../ui/contexts/EnvironmentContext'; -import { useNavigate } from '../../ui/hooks'; -import { useCardState } from '../elements/contexts'; -import { SocialButtons, SocialButtonsProps } from '../elements/SocialButtons'; -import { handleError } from '../utils'; +import { buildSSOCallbackURL } from '../../common/redirects'; +import { useCoreClerk, useCoreSignIn, useSignInContext } from '../../contexts'; +import { useEnvironment } from '../../contexts/EnvironmentContext'; +import { useCardState } from '../../elements/contexts'; +import { SocialButtons, SocialButtonsProps } from '../../elements/SocialButtons'; +import { useNavigate } from '../../hooks'; +import { handleError } from '../../utils'; export const SignInSocialButtons = React.memo((props: SocialButtonsProps) => { const clerk = useCoreClerk(); diff --git a/packages/clerk-js/src/ui/SignIn/SignInStart.tsx b/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx similarity index 92% rename from packages/clerk-js/src/ui/SignIn/SignInStart.tsx rename to packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx index 585f5dee82f..5f24e5bc49c 100644 --- a/packages/clerk-js/src/ui/SignIn/SignInStart.tsx +++ b/packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx @@ -1,14 +1,12 @@ import { ClerkAPIError, SignInCreateParams } from '@clerk/types'; import React from 'react'; -import { clerkInvalidFAPIResponse } from '../../core/errors'; -import { ERROR_CODES, getIdentifierControlDisplayValues } from '../../ui/common/constants'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks'; -import { useSupportEmail } from '../../ui/hooks/useSupportEmail'; -import { getClerkQueryParam } from '../../utils/getClerkQueryParam'; -import { Col, descriptors, Flow, localizationKeys } from '../customizables'; +import { clerkInvalidFAPIResponse } from '../../../core/errors'; +import { getClerkQueryParam } from '../../../utils/getClerkQueryParam'; +import { ERROR_CODES, getIdentifierControlDisplayValues } from '../../common/constants'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useCoreClerk, useCoreSignIn, useEnvironment, useSignInContext } from '../../contexts'; +import { Col, descriptors, Flow, localizationKeys } from '../../customizables'; import { Card, CardAlert, @@ -18,10 +16,12 @@ import { LoadingCard, SocialButtonsReversibleContainerWithDivider, withCardStateProvider, -} from '../elements'; -import { useCardState } from '../elements/contexts'; -import { useLoadingStatus } from '../hooks'; -import { buildRequest, FormControlState, handleError, isMobileDevice, useFormControl } from '../utils'; +} from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useNavigate } from '../../hooks'; +import { useLoadingStatus } from '../../hooks'; +import { useSupportEmail } from '../../hooks/useSupportEmail'; +import { buildRequest, FormControlState, handleError, isMobileDevice, useFormControl } from '../../utils'; import { SignInSocialButtons } from './SignInSocialButtons'; export function _SignInStart(): JSX.Element { diff --git a/packages/clerk-js/src/ui/SignIn/index.ts b/packages/clerk-js/src/ui/components/SignIn/index.ts similarity index 100% rename from packages/clerk-js/src/ui/SignIn/index.ts rename to packages/clerk-js/src/ui/components/SignIn/index.ts diff --git a/packages/clerk-js/src/ui/SignIn/strategies/factorSortingUtils.test.tsx b/packages/clerk-js/src/ui/components/SignIn/strategies/factorSortingUtils.test.tsx similarity index 100% rename from packages/clerk-js/src/ui/SignIn/strategies/factorSortingUtils.test.tsx rename to packages/clerk-js/src/ui/components/SignIn/strategies/factorSortingUtils.test.tsx diff --git a/packages/clerk-js/src/ui/SignIn/strategies/factorSortingUtils.tsx b/packages/clerk-js/src/ui/components/SignIn/strategies/factorSortingUtils.tsx similarity index 100% rename from packages/clerk-js/src/ui/SignIn/strategies/factorSortingUtils.tsx rename to packages/clerk-js/src/ui/components/SignIn/strategies/factorSortingUtils.tsx diff --git a/packages/clerk-js/src/ui/SignIn/utils.test.ts b/packages/clerk-js/src/ui/components/SignIn/utils.test.ts similarity index 100% rename from packages/clerk-js/src/ui/SignIn/utils.test.ts rename to packages/clerk-js/src/ui/components/SignIn/utils.test.ts diff --git a/packages/clerk-js/src/ui/SignIn/utils.ts b/packages/clerk-js/src/ui/components/SignIn/utils.ts similarity index 97% rename from packages/clerk-js/src/ui/SignIn/utils.ts rename to packages/clerk-js/src/ui/components/SignIn/utils.ts index 07750ec8ce0..d4117dcc0c1 100644 --- a/packages/clerk-js/src/ui/SignIn/utils.ts +++ b/packages/clerk-js/src/ui/components/SignIn/utils.ts @@ -1,7 +1,7 @@ import { PreferredSignInStrategy, SignInFactor, SignInResource, SignInStrategy } from '@clerk/types'; -import { PREFERRED_SIGN_IN_STRATEGIES } from '../../ui/common/constants'; -import { titleize } from '../shared'; +import { PREFERRED_SIGN_IN_STRATEGIES } from '../../common/constants'; +import { titleize } from '../../shared'; import { otpPrefFactorComparator, passwordPrefFactorComparator } from './strategies/factorSortingUtils'; const FONT_SIZE_STEP = 2; diff --git a/packages/clerk-js/src/ui/SignUp/SignUp.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUp.tsx similarity index 91% rename from packages/clerk-js/src/ui/SignUp/SignUp.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUp.tsx index a9d3c6cb242..14525dfe99d 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUp.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUp.tsx @@ -1,10 +1,10 @@ import { SignUpProps } from '@clerk/types'; import React from 'react'; -import { ComponentContext, useCoreClerk, useSignUpContext, withCoreSessionSwitchGuard } from '../../ui/contexts'; -import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../ui/router'; -import { SignUpEmailLinkFlowComplete } from '../common/EmailLinkCompleteFlowCard'; -import { Flow } from '../customizables'; +import { SignUpEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowCard'; +import { ComponentContext, useCoreClerk, useSignUpContext, withCoreSessionSwitchGuard } from '../../contexts'; +import { Flow } from '../../customizables'; +import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../router'; import { SignUpContinue } from './SignUpContinue'; import { SignUpSSOCallback } from './SignUpSSOCallback'; import { SignUpStart } from './SignUpStart'; diff --git a/packages/clerk-js/src/ui/SignUp/SignUpContinue.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpContinue.tsx similarity index 95% rename from packages/clerk-js/src/ui/SignUp/SignUpContinue.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpContinue.tsx index c98dd55e2dd..aae3c5eb17e 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpContinue.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpContinue.tsx @@ -1,9 +1,8 @@ import React from 'react'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks'; -import { descriptors, Flex, Flow, localizationKeys } from '../customizables'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../contexts'; +import { descriptors, Flex, Flow, localizationKeys } from '../../customizables'; import { Card, CardAlert, @@ -12,9 +11,10 @@ import { LoadingCard, SocialButtonsReversibleContainerWithDivider, withCardStateProvider, -} from '../elements'; -import { useCardState } from '../elements/contexts'; -import { buildRequest, FormControlState, handleError, useFormControl } from '../utils'; +} from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useNavigate } from '../../hooks'; +import { buildRequest, FormControlState, handleError, useFormControl } from '../../utils'; import { SignUpForm } from './SignUpForm'; import { ActiveIdentifier, diff --git a/packages/clerk-js/src/ui/SignUp/SignUpEmailCodeCard.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpEmailCodeCard.tsx similarity index 91% rename from packages/clerk-js/src/ui/SignUp/SignUpEmailCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpEmailCodeCard.tsx index f497848c8be..34d8f6ac96b 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpEmailCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpEmailCodeCard.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import { useCoreSignUp, useEnvironment } from '../../ui/contexts'; -import { Flow, localizationKeys } from '../customizables'; +import { useCoreSignUp, useEnvironment } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; import { SignUpVerificationCodeForm } from './SignUpVerificationCodeForm'; export const SignUpEmailCodeCard = () => { diff --git a/packages/clerk-js/src/ui/SignUp/SignUpEmailLinkCard.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpEmailLinkCard.tsx similarity index 84% rename from packages/clerk-js/src/ui/SignUp/SignUpEmailLinkCard.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpEmailLinkCard.tsx index e7a3eacb53e..578ae1652b7 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpEmailLinkCard.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpEmailLinkCard.tsx @@ -1,15 +1,15 @@ import { SignUpResource } from '@clerk/types'; import React from 'react'; -import { buildMagicLinkRedirectUrl } from '../../ui/common/redirects'; -import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks'; -import { useMagicLink } from '../../ui/hooks/useMagicLink'; -import { EmailLinkStatusCard } from '../common'; -import { Flow, localizationKeys } from '../customizables'; -import { VerificationLinkCard } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { handleError } from '../utils'; +import { EmailLinkStatusCard } from '../../common'; +import { buildMagicLinkRedirectUrl } from '../../common/redirects'; +import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; +import { VerificationLinkCard } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useNavigate } from '../../hooks'; +import { useMagicLink } from '../../hooks/useMagicLink'; +import { handleError } from '../../utils'; import { completeSignUpFlow } from './util'; export const SignUpEmailLinkCard = () => { diff --git a/packages/clerk-js/src/ui/SignUp/SignUpForm.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpForm.tsx similarity index 96% rename from packages/clerk-js/src/ui/SignUp/SignUpForm.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpForm.tsx index 7388b75f278..cb792c6d132 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpForm.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpForm.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useAppearance } from '../customizables'; -import { Form } from '../elements'; -import { FormControlState } from '../utils'; +import { useAppearance } from '../../customizables'; +import { Form } from '../../elements'; +import { FormControlState } from '../../utils'; import { ActiveIdentifier, Fields } from './signUpFormHelpers'; type SignUpFormProps = { diff --git a/packages/clerk-js/src/ui/SignUp/SignUpPhoneCodeCard.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpPhoneCodeCard.tsx similarity index 88% rename from packages/clerk-js/src/ui/SignUp/SignUpPhoneCodeCard.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpPhoneCodeCard.tsx index 7959fb1cf2e..6f3a1c6c53e 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpPhoneCodeCard.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpPhoneCodeCard.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useCoreSignUp, useEnvironment } from '../../ui/contexts'; -import { Flow, localizationKeys } from '../customizables'; -import { withCardStateProvider } from '../elements'; +import { useCoreSignUp, useEnvironment } from '../../contexts'; +import { Flow, localizationKeys } from '../../customizables'; +import { withCardStateProvider } from '../../elements'; import { SignUpVerificationCodeForm } from './SignUpVerificationCodeForm'; export const SignUpPhoneCodeCard = withCardStateProvider(() => { diff --git a/packages/clerk-js/src/ui/components/SignUp/SignUpSSOCallback.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpSSOCallback.tsx new file mode 100644 index 00000000000..159edc5204a --- /dev/null +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpSSOCallback.tsx @@ -0,0 +1,4 @@ +import { SSOCallback } from '../../common'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; + +export const SignUpSSOCallback = withRedirectToHome(SSOCallback); diff --git a/packages/clerk-js/src/ui/SignUp/SignUpSocialButtons.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpSocialButtons.tsx similarity index 76% rename from packages/clerk-js/src/ui/SignUp/SignUpSocialButtons.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpSocialButtons.tsx index d4c33d2e9f3..1b501fd6e78 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpSocialButtons.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpSocialButtons.tsx @@ -1,13 +1,13 @@ import { OAuthStrategy } from '@clerk/types'; import React from 'react'; -import { buildSSOCallbackURL } from '../../ui/common/redirects'; -import { useCoreClerk, useCoreSignUp, useSignUpContext } from '../../ui/contexts'; -import { useEnvironment } from '../../ui/contexts/EnvironmentContext'; -import { useNavigate } from '../../ui/hooks'; -import { useCardState } from '../elements'; -import { SocialButtons, SocialButtonsProps } from '../elements/SocialButtons'; -import { handleError } from '../utils'; +import { buildSSOCallbackURL } from '../../common/redirects'; +import { useCoreClerk, useCoreSignUp, useSignUpContext } from '../../contexts'; +import { useEnvironment } from '../../contexts/EnvironmentContext'; +import { useCardState } from '../../elements'; +import { SocialButtons, SocialButtonsProps } from '../../elements/SocialButtons'; +import { useNavigate } from '../../hooks'; +import { handleError } from '../../utils'; export const SignUpSocialButtons = React.memo((props: SocialButtonsProps) => { const clerk = useCoreClerk(); diff --git a/packages/clerk-js/src/ui/SignUp/SignUpStart.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx similarity index 95% rename from packages/clerk-js/src/ui/SignUp/SignUpStart.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx index dc049d0c2f9..4e08742d961 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpStart.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx @@ -1,11 +1,10 @@ import React from 'react'; -import { ERROR_CODES } from '../../ui/common/constants'; -import { withRedirectToHome } from '../../ui/common/withRedirectToHome'; -import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks'; -import { getClerkQueryParam } from '../../utils/getClerkQueryParam'; -import { descriptors, Flex, Flow, localizationKeys, useAppearance } from '../customizables'; +import { getClerkQueryParam } from '../../../utils/getClerkQueryParam'; +import { ERROR_CODES } from '../../common/constants'; +import { withRedirectToHome } from '../../common/withRedirectToHome'; +import { useCoreClerk, useCoreSignUp, useEnvironment, useSignUpContext } from '../../contexts'; +import { descriptors, Flex, Flow, localizationKeys, useAppearance } from '../../customizables'; import { Card, CardAlert, @@ -14,10 +13,11 @@ import { LoadingCard, SocialButtonsReversibleContainerWithDivider, withCardStateProvider, -} from '../elements'; -import { useCardState } from '../elements/contexts'; -import { useLoadingStatus } from '../hooks'; -import { buildRequest, FormControlState, handleError, useFormControl } from '../utils'; +} from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { useNavigate } from '../../hooks'; +import { useLoadingStatus } from '../../hooks'; +import { buildRequest, FormControlState, handleError, useFormControl } from '../../utils'; import { SignUpForm } from './SignUpForm'; import { ActiveIdentifier, diff --git a/packages/clerk-js/src/ui/SignUp/SignUpVerificationCodeForm.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpVerificationCodeForm.tsx similarity index 90% rename from packages/clerk-js/src/ui/SignUp/SignUpVerificationCodeForm.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpVerificationCodeForm.tsx index 18d524e830b..2c298afadbf 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpVerificationCodeForm.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpVerificationCodeForm.tsx @@ -1,10 +1,10 @@ import { SignUpResource } from '@clerk/types'; import React from 'react'; -import { useCoreClerk, useSignUpContext } from '../../ui/contexts'; -import { useNavigate } from '../../ui/hooks/useNavigate'; -import { LocalizationKey } from '../customizables'; -import { VerificationCodeCard, VerificationCodeCardProps } from '../elements'; +import { useCoreClerk, useSignUpContext } from '../../contexts'; +import { LocalizationKey } from '../../customizables'; +import { VerificationCodeCard, VerificationCodeCardProps } from '../../elements'; +import { useNavigate } from '../../hooks/useNavigate'; import { completeSignUpFlow } from './util'; type SignInFactorOneCodeFormProps = { diff --git a/packages/clerk-js/src/ui/SignUp/SignUpVerifyEmail.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpVerifyEmail.tsx similarity index 82% rename from packages/clerk-js/src/ui/SignUp/SignUpVerifyEmail.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpVerifyEmail.tsx index f06ec204666..db1d3f4cc89 100644 --- a/packages/clerk-js/src/ui/SignUp/SignUpVerifyEmail.tsx +++ b/packages/clerk-js/src/ui/components/SignUp/SignUpVerifyEmail.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import { useEnvironment } from '../../ui/contexts'; -import { withCardStateProvider } from '../elements'; +import { useEnvironment } from '../../contexts'; +import { withCardStateProvider } from '../../elements'; import { SignUpEmailCodeCard } from './SignUpEmailCodeCard'; import { SignUpEmailLinkCard } from './SignUpEmailLinkCard'; diff --git a/packages/clerk-js/src/ui/SignUp/SignUpVerifyPhone.tsx b/packages/clerk-js/src/ui/components/SignUp/SignUpVerifyPhone.tsx similarity index 100% rename from packages/clerk-js/src/ui/SignUp/SignUpVerifyPhone.tsx rename to packages/clerk-js/src/ui/components/SignUp/SignUpVerifyPhone.tsx diff --git a/packages/clerk-js/src/ui/SignUp/index.ts b/packages/clerk-js/src/ui/components/SignUp/index.ts similarity index 100% rename from packages/clerk-js/src/ui/SignUp/index.ts rename to packages/clerk-js/src/ui/components/SignUp/index.ts diff --git a/packages/clerk-js/src/ui/SignUp/signUpFormHelpers.test.ts b/packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.test.ts similarity index 100% rename from packages/clerk-js/src/ui/SignUp/signUpFormHelpers.test.ts rename to packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.test.ts diff --git a/packages/clerk-js/src/ui/SignUp/signUpFormHelpers.ts b/packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.ts similarity index 98% rename from packages/clerk-js/src/ui/SignUp/signUpFormHelpers.ts rename to packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.ts index 46b0d06ac83..56357d842e7 100644 --- a/packages/clerk-js/src/ui/SignUp/signUpFormHelpers.ts +++ b/packages/clerk-js/src/ui/components/SignUp/signUpFormHelpers.ts @@ -1,8 +1,8 @@ -import { camelToSnake } from '@clerk/shared/utils'; +import { camelToSnake } from '@clerk/shared'; import type { Attributes, SignUpResource } from '@clerk/types'; import { UserSettingsResource } from '@clerk/types'; -import { FieldState } from '../../ui/common'; +import { FieldState } from '../../common'; /** * ActiveIdentifier denotes which one of the email address or phone number takes priority when enabled diff --git a/packages/clerk-js/src/ui/SignUp/util.test.ts b/packages/clerk-js/src/ui/components/SignUp/util.test.ts similarity index 100% rename from packages/clerk-js/src/ui/SignUp/util.test.ts rename to packages/clerk-js/src/ui/components/SignUp/util.test.ts diff --git a/packages/clerk-js/src/ui/SignUp/util.ts b/packages/clerk-js/src/ui/components/SignUp/util.ts similarity index 100% rename from packages/clerk-js/src/ui/SignUp/util.ts rename to packages/clerk-js/src/ui/components/SignUp/util.ts diff --git a/packages/clerk-js/src/ui/UserButton/CurrentAccountActions.tsx b/packages/clerk-js/src/ui/components/UserButton/CurrentAccountActions.tsx similarity index 89% rename from packages/clerk-js/src/ui/UserButton/CurrentAccountActions.tsx rename to packages/clerk-js/src/ui/components/UserButton/CurrentAccountActions.tsx index 2f2306b2567..08d30ec0eda 100644 --- a/packages/clerk-js/src/ui/UserButton/CurrentAccountActions.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/CurrentAccountActions.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { Button, Col, Flex, Icon, LocalizationKey, Spinner, Text } from '../customizables'; -import { ElementDescriptor, ElementId } from '../customizables/elementDescriptors'; -import { useCardState } from '../elements/contexts'; -import { useLoadingStatus } from '../hooks'; -import { PropsOfComponent } from '../styledSystem'; +import { Button, Col, Flex, Icon, LocalizationKey, Spinner, Text } from '../../customizables'; +import { ElementDescriptor, ElementId } from '../../customizables/elementDescriptors'; +import { useCardState } from '../../elements/contexts'; +import { useLoadingStatus } from '../../hooks'; +import { PropsOfComponent } from '../../styledSystem'; export const Actions = (props: PropsOfComponent) => { return ; diff --git a/packages/clerk-js/src/ui/UserButton/OtherSessionActions.tsx b/packages/clerk-js/src/ui/components/UserButton/OtherSessionActions.tsx similarity index 69% rename from packages/clerk-js/src/ui/UserButton/OtherSessionActions.tsx rename to packages/clerk-js/src/ui/components/UserButton/OtherSessionActions.tsx index 18c58fa8c5e..0e2f2f6196a 100644 --- a/packages/clerk-js/src/ui/UserButton/OtherSessionActions.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/OtherSessionActions.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import { Button, Flex, Text } from '../customizables'; -import { UserPreview, UserPreviewProps } from '../elements'; -import { useCardState } from '../elements/contexts'; -import { mqu, PropsOfComponent } from '../styledSystem'; +import { Button, Flex, Icon } from '../../customizables'; +import { UserPreview, UserPreviewProps } from '../../elements'; +import { useCardState } from '../../elements/contexts'; +import { SwitchArrows } from '../../icons'; +import { PropsOfComponent } from '../../styledSystem'; import { Actions } from './CurrentAccountActions'; export const SessionActions = (props: PropsOfComponent) => { @@ -38,6 +39,9 @@ export const UserPreviewButton = (props: UserPreviewButtonProps) => { borderRadius: 0, justifyContent: 'space-between', padding: `${theme.space.$3} ${theme.space.$6}`, + ':hover > svg': { + visibility: 'initial', + }, }), rest.sx, ]} @@ -46,17 +50,11 @@ export const UserPreviewButton = (props: UserPreviewButtonProps) => { user={user} size='sm' /> - ({ - [mqu.xs]: { - display: 'none', - }, - color: t.colors.$blackAlpha500, - })} - > - Switch account - + + ({ color: t.colors.$blackAlpha500, marginLeft: t.space.$2, visibility: 'hidden' })} + /> ); }; diff --git a/packages/clerk-js/src/ui/UserButton/UserButton.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx similarity index 81% rename from packages/clerk-js/src/ui/UserButton/UserButton.tsx rename to packages/clerk-js/src/ui/components/UserButton/UserButton.tsx index 5ef3fe7b36b..91affa0b1f2 100644 --- a/packages/clerk-js/src/ui/UserButton/UserButton.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButton.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { useCoreUser, useUserButtonContext, withCoreUserGuard } from '../contexts'; -import { descriptors, Flex, Flow, Text } from '../customizables'; -import { withCardStateProvider } from '../elements'; -import { Portal } from '../elements/Portal'; -import { usePopover } from '../hooks'; -import { getFullName, getIdentifier } from '../utils'; +import { useCoreUser, useUserButtonContext, withCoreUserGuard } from '../../contexts'; +import { descriptors, Flex, Flow, Text } from '../../customizables'; +import { withCardStateProvider } from '../../elements'; +import { Portal } from '../../elements/Portal'; +import { usePopover } from '../../hooks'; +import { getFullName, getIdentifier } from '../../utils'; import { UserButtonPopover } from './UserButtonPopover'; import { UserButtonTrigger } from './UserButtonTrigger'; diff --git a/packages/clerk-js/src/ui/UserButton/UserButtonPopover.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButtonPopover.tsx similarity index 95% rename from packages/clerk-js/src/ui/UserButton/UserButtonPopover.tsx rename to packages/clerk-js/src/ui/components/UserButton/UserButtonPopover.tsx index d74fe4b41df..f420117695b 100644 --- a/packages/clerk-js/src/ui/UserButton/UserButtonPopover.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButtonPopover.tsx @@ -1,12 +1,12 @@ import { ActiveSessionResource } from '@clerk/types'; import React from 'react'; -import { useCoreSession, useCoreUser, useEnvironment, useUserButtonContext } from '../contexts'; -import { descriptors, Flex, Flow, Link, localizationKeys, useAppearance } from '../customizables'; -import { BaseCard, PoweredByClerkText, UserPreview } from '../elements'; -import { RootBox } from '../elements/RootBox'; -import { CogFilled, Plus, SignOut, SignOutDouble } from '../icons'; -import { animations, PropsOfComponent } from '../styledSystem'; +import { useCoreSession, useCoreUser, useEnvironment, useUserButtonContext } from '../../contexts'; +import { descriptors, Flex, Flow, Link, localizationKeys, useAppearance } from '../../customizables'; +import { BaseCard, PoweredByClerkText, UserPreview } from '../../elements'; +import { RootBox } from '../../elements/RootBox'; +import { CogFilled, Plus, SignOut, SignOutDouble } from '../../icons'; +import { animations, PropsOfComponent } from '../../styledSystem'; import { Action, Actions } from './CurrentAccountActions'; import { SessionActions, UserPreviewButton } from './OtherSessionActions'; import { useMultisessionActions } from './useMultisessionActions'; diff --git a/packages/clerk-js/src/ui/UserButton/UserButtonTrigger.tsx b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx similarity index 78% rename from packages/clerk-js/src/ui/UserButton/UserButtonTrigger.tsx rename to packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx index d85be842c86..7d432d9dd62 100644 --- a/packages/clerk-js/src/ui/UserButton/UserButtonTrigger.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/UserButtonTrigger.tsx @@ -1,9 +1,9 @@ import React from 'react'; -import { useCoreUser } from '../contexts'; -import { Button, descriptors } from '../customizables'; -import { Avatar } from '../elements'; -import { PropsOfComponent } from '../styledSystem'; +import { useCoreUser } from '../../contexts'; +import { Button, descriptors } from '../../customizables'; +import { Avatar } from '../../elements'; +import { PropsOfComponent } from '../../styledSystem'; type UserButtonTriggerProps = PropsOfComponent & { isOpen: boolean }; diff --git a/packages/clerk-js/src/ui/UserButton/index.ts b/packages/clerk-js/src/ui/components/UserButton/index.ts similarity index 100% rename from packages/clerk-js/src/ui/UserButton/index.ts rename to packages/clerk-js/src/ui/components/UserButton/index.ts diff --git a/packages/clerk-js/src/ui/UserButton/useMultisessionActions.tsx b/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx similarity index 90% rename from packages/clerk-js/src/ui/UserButton/useMultisessionActions.tsx rename to packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx index 73cbaa7042b..e1f0967c4a8 100644 --- a/packages/clerk-js/src/ui/UserButton/useMultisessionActions.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx @@ -1,11 +1,11 @@ import { ActiveSessionResource, UserButtonProps, UserResource } from '@clerk/types'; import React from 'react'; -import { windowNavigate } from '../../utils/windowNavigate'; -import { useCoreClerk, useCoreSessionList } from '../contexts'; -import { useCardState } from '../elements'; -import { useNavigate } from '../hooks'; -import { sleep } from '../utils'; +import { windowNavigate } from '../../../utils/windowNavigate'; +import { useCoreClerk, useCoreSessionList } from '../../contexts'; +import { useCardState } from '../../elements'; +import { useNavigate } from '../../hooks'; +import { sleep } from '../../utils'; type UseMultisessionActionsParams = { user: UserResource | undefined; diff --git a/packages/clerk-js/src/ui/UserProfile/ActiveDevicesSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx similarity index 93% rename from packages/clerk-js/src/ui/UserProfile/ActiveDevicesSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx index f0cadbcc826..ea775e999aa 100644 --- a/packages/clerk-js/src/ui/UserProfile/ActiveDevicesSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ActiveDevicesSection.tsx @@ -1,11 +1,12 @@ -import { formatRelative } from '@clerk/shared/utils/date'; +import { formatRelative } from '@clerk/shared'; import { SessionWithActivitiesResource } from '@clerk/types'; import React from 'react'; -import { useCoreSession, useCoreUser } from '../contexts'; -import { Badge, Col, descriptors, Flex, Icon, localizationKeys, Spinner, Text } from '../customizables'; -import { DeviceLaptop, DeviceMobile } from '../icons'; -import { mqu } from '../styledSystem'; +import { useCoreSession, useCoreUser } from '../../contexts'; +import { Badge, Col, descriptors, Flex, Icon, localizationKeys, Text } from '../../customizables'; +import { FullHeightLoader } from '../../elements'; +import { DeviceLaptop, DeviceMobile } from '../../icons'; +import { mqu } from '../../styledSystem'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { ProfileSection } from './Section'; import { UserProfileAccordion } from './UserProfileAccordion'; @@ -25,12 +26,7 @@ export const ActiveDevicesSection = () => { title={localizationKeys('userProfile.start.activeDevicesSection.title')} id='activeDevices' > - {!sessionsWithActivities.length && ( - - )} + {!sessionsWithActivities.length && } {!!sessionsWithActivities.length && sessionsWithActivities.sort(currentSessionFirst(session?.id)).map(sa => ( { return ( - {!totp && ( - - )} + {!totp && } {totp && ( <> diff --git a/packages/clerk-js/src/ui/UserProfile/Breadcrumbs.tsx b/packages/clerk-js/src/ui/components/UserProfile/Breadcrumbs.tsx similarity index 95% rename from packages/clerk-js/src/ui/UserProfile/Breadcrumbs.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Breadcrumbs.tsx index 3d3a0bf0d19..05879ea345a 100644 --- a/packages/clerk-js/src/ui/UserProfile/Breadcrumbs.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Breadcrumbs.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { descriptors, Flex, Icon, Link, LocalizationKey, Text, useLocalizations } from '../customizables'; -import { useRouter } from '../router'; -import { mqu, PropsOfComponent } from '../styledSystem'; +import { descriptors, Flex, Icon, Link, LocalizationKey, Text, useLocalizations } from '../../customizables'; +import { useRouter } from '../../router'; +import { mqu, PropsOfComponent } from '../../styledSystem'; import { BaseRoutes } from './Navbar'; import { useNavigateToFlowStart } from './NavigateToFlowStartButton'; diff --git a/packages/clerk-js/src/ui/UserProfile/ConnectedAccountsPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsPage.tsx similarity index 91% rename from packages/clerk-js/src/ui/UserProfile/ConnectedAccountsPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsPage.tsx index 86c10cb3637..3df420831e8 100644 --- a/packages/clerk-js/src/ui/UserProfile/ConnectedAccountsPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsPage.tsx @@ -1,13 +1,13 @@ import { ExternalAccountResource, OAuthStrategy } from '@clerk/types'; import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { Col, Image, localizationKeys, Text } from '../customizables'; -import { ArrowBlockButton, useCardState, withCardStateProvider } from '../elements'; -import { useEnabledThirdPartyProviders, useNavigate } from '../hooks'; -import { useRouter } from '../router'; -import { handleError, sleep } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { Col, Image, localizationKeys, Text } from '../../customizables'; +import { ArrowBlockButton, useCardState, withCardStateProvider } from '../../elements'; +import { useEnabledThirdPartyProviders, useNavigate } from '../../hooks'; +import { useRouter } from '../../router'; +import { handleError, sleep } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; import { ContentPage } from './Page'; diff --git a/packages/clerk-js/src/ui/UserProfile/ConnectedAccountsSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx similarity index 92% rename from packages/clerk-js/src/ui/UserProfile/ConnectedAccountsSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx index a6c36a07663..e4a93ac7bff 100644 --- a/packages/clerk-js/src/ui/UserProfile/ConnectedAccountsSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ConnectedAccountsSection.tsx @@ -1,12 +1,12 @@ import { OAuthStrategy } from '@clerk/types'; import { ExternalAccountResource } from '@clerk/types/src'; -import { useCoreUser } from '../contexts'; -import { Badge, Col, descriptors, Flex, Image, localizationKeys } from '../customizables'; -import { useCardState, UserPreview } from '../elements'; -import { useEnabledThirdPartyProviders } from '../hooks'; -import { useNavigate } from '../hooks/useNavigate'; -import { handleError } from '../utils'; +import { useCoreUser } from '../../contexts'; +import { Badge, Col, descriptors, Flex, Image, localizationKeys } from '../../customizables'; +import { useCardState, UserPreview } from '../../elements'; +import { useEnabledThirdPartyProviders } from '../../hooks'; +import { useNavigate } from '../../hooks/useNavigate'; +import { handleError } from '../../utils'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { ProfileSection } from './Section'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/Content.tsx b/packages/clerk-js/src/ui/components/UserProfile/Content.tsx similarity index 96% rename from packages/clerk-js/src/ui/UserProfile/Content.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Content.tsx index c4c8adbe620..66133c6e947 100644 --- a/packages/clerk-js/src/ui/UserProfile/Content.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Content.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { Col, descriptors } from '../customizables'; -import { Route, Switch, useRouter } from '../router'; -import { common, mqu } from '../styledSystem'; +import { Col, descriptors } from '../../customizables'; +import { Route, Switch, useRouter } from '../../router'; +import { common, mqu } from '../../styledSystem'; import { ConnectedAccountsPage } from './ConnectedAccountsPage'; import { EmailPage } from './EmailPage'; import { MfaBackupCodeCreatePage } from './MfaBackupCodeCreatePage'; diff --git a/packages/clerk-js/src/ui/UserProfile/EmailPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/EmailPage.tsx similarity index 90% rename from packages/clerk-js/src/ui/UserProfile/EmailPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/EmailPage.tsx index 3e705919f27..7b221f1284b 100644 --- a/packages/clerk-js/src/ui/UserProfile/EmailPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/EmailPage.tsx @@ -1,12 +1,12 @@ import { EmailAddressResource } from '@clerk/types'; import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser, useEnvironment } from '../contexts'; -import { localizationKeys, Text } from '../customizables'; -import { Form, useCardState, withCardStateProvider } from '../elements'; -import { useRouter } from '../router'; -import { handleError, useFormControl } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser, useEnvironment } from '../../contexts'; +import { localizationKeys, Text } from '../../customizables'; +import { Form, useCardState, withCardStateProvider } from '../../elements'; +import { useRouter } from '../../router'; +import { handleError, useFormControl } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/EmailSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/EmailSection.tsx similarity index 94% rename from packages/clerk-js/src/ui/UserProfile/EmailSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/EmailSection.tsx index 8e103fd21a4..e0aae9daf98 100644 --- a/packages/clerk-js/src/ui/UserProfile/EmailSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/EmailSection.tsx @@ -1,11 +1,11 @@ import { EmailAddressResource } from '@clerk/types'; import React from 'react'; -import { useCoreUser } from '../contexts'; -import { Badge, Col, localizationKeys } from '../customizables'; -import { useCardState } from '../elements'; -import { useNavigate } from '../hooks/useNavigate'; -import { handleError } from '../utils'; +import { useCoreUser } from '../../contexts'; +import { Badge, Col, localizationKeys } from '../../customizables'; +import { useCardState } from '../../elements'; +import { useNavigate } from '../../hooks/useNavigate'; +import { handleError } from '../../utils'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { ProfileSection } from './Section'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/FormButtons.tsx b/packages/clerk-js/src/ui/components/UserProfile/FormButtons.tsx similarity index 87% rename from packages/clerk-js/src/ui/UserProfile/FormButtons.tsx rename to packages/clerk-js/src/ui/components/UserProfile/FormButtons.tsx index f2b9cad60ed..8da5575cd51 100644 --- a/packages/clerk-js/src/ui/UserProfile/FormButtons.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/FormButtons.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { Flex, localizationKeys } from '../customizables'; -import { Form } from '../elements'; -import { PropsOfComponent } from '../styledSystem'; +import { Flex, localizationKeys } from '../../customizables'; +import { Form } from '../../elements'; +import { PropsOfComponent } from '../../styledSystem'; import { useNavigateToFlowStart } from './NavigateToFlowStartButton'; type FormButtonsProps = PropsOfComponent & { diff --git a/packages/clerk-js/src/ui/UserProfile/LinkButtonWithDescription.tsx b/packages/clerk-js/src/ui/components/UserProfile/LinkButtonWithDescription.tsx similarity index 91% rename from packages/clerk-js/src/ui/UserProfile/LinkButtonWithDescription.tsx rename to packages/clerk-js/src/ui/components/UserProfile/LinkButtonWithDescription.tsx index 5a0a808c602..13729fbf960 100644 --- a/packages/clerk-js/src/ui/UserProfile/LinkButtonWithDescription.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/LinkButtonWithDescription.tsx @@ -1,6 +1,6 @@ -import { Button, Col, Flex, LocalizationKey, Text, useLocalizations } from '../customizables'; -import { useLoadingStatus } from '../hooks'; -import { PropsOfComponent } from '../styledSystem'; +import { Button, Col, Flex, LocalizationKey, Text, useLocalizations } from '../../customizables'; +import { useLoadingStatus } from '../../hooks'; +import { PropsOfComponent } from '../../styledSystem'; type LinkButtonWithTextDescriptionProps = Omit, 'title'> & { title: LocalizationKey; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeAccordion.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeAccordion.tsx similarity index 86% rename from packages/clerk-js/src/ui/UserProfile/MfaBackupCodeAccordion.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeAccordion.tsx index 79c52aa8b4c..9d525bcda11 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeAccordion.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeAccordion.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { Col, Icon } from '../customizables'; -import { useNavigate } from '../hooks'; -import { DotCircle } from '../icons'; +import { Col, Icon } from '../../customizables'; +import { useNavigate } from '../../hooks'; +import { DotCircle } from '../../icons'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeCreatePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreatePage.tsx similarity index 58% rename from packages/clerk-js/src/ui/UserProfile/MfaBackupCodeCreatePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreatePage.tsx index 5accec01a7c..dcbfc20b5d8 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeCreatePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeCreatePage.tsx @@ -1,10 +1,10 @@ import { BackupCodeResource } from '@clerk/types'; import React from 'react'; -import { useCoreUser } from '../contexts'; -import { localizationKeys, Spinner, Text } from '../customizables'; -import { useCardState } from '../elements'; -import { handleError } from '../utils'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys, Text } from '../../customizables'; +import { FullHeightLoader, useCardState } from '../../elements'; +import { handleError } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { MfaBackupCodeList } from './MfaBackupCodeList'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; @@ -34,34 +34,31 @@ export const MfaBackupCodeCreatePage = () => { return ; } - if (!backupCode) { - return ( - - ); - } - return ( - + {!backupCode ? ( + + ) : ( + <> + - + - - - + + + + + )} ); }; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeList.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeList.tsx similarity index 91% rename from packages/clerk-js/src/ui/UserProfile/MfaBackupCodeList.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeList.tsx index 05fa84a2a70..98300cf678d 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeList.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeList.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { PrintableComponent, usePrintable } from '../common'; -import { useCoreUser, useEnvironment } from '../contexts'; -import { Button, Col, Flex, Grid, Heading, LocalizationKey, Text } from '../customizables'; -import { useClipboard } from '../hooks'; -import { mqu } from '../styledSystem'; -import { getIdentifier } from '../utils'; +import { PrintableComponent, usePrintable } from '../../common'; +import { useCoreUser, useEnvironment } from '../../contexts'; +import { Button, Col, Flex, Grid, Heading, LocalizationKey, Text } from '../../customizables'; +import { useClipboard } from '../../hooks'; +import { mqu } from '../../styledSystem'; +import { getIdentifier } from '../../utils'; import { MfaBackupCodeTile } from './MfaBackupCodeTile'; type MfaBackupCodeListProps = { diff --git a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodePage.tsx similarity index 89% rename from packages/clerk-js/src/ui/UserProfile/MfaBackupCodePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodePage.tsx index 85c414059e6..377dfaaa0b4 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodePage.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { Button, Text } from '../customizables'; -import { withCardStateProvider } from '../elements'; +import { useWizard, Wizard } from '../../common'; +import { Button, Text } from '../../customizables'; +import { withCardStateProvider } from '../../elements'; import { FormButtonContainer } from './FormButtons'; import { MfaBackupCodeCreatePage } from './MfaBackupCodeCreatePage'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeTile.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeTile.tsx similarity index 87% rename from packages/clerk-js/src/ui/UserProfile/MfaBackupCodeTile.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeTile.tsx index edf42d48f5e..ab77fa785f1 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaBackupCodeTile.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaBackupCodeTile.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { Flex, Text } from '../customizables'; +import { Flex, Text } from '../../customizables'; export const MfaBackupCodeTile = (props: { code: string }) => { const { code } = props; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaPage.tsx similarity index 93% rename from packages/clerk-js/src/ui/UserProfile/MfaPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaPage.tsx index e6004f528e2..eb42a725c04 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaPage.tsx @@ -1,11 +1,11 @@ import { VerificationStrategy } from '@clerk/types'; import React from 'react'; -import { useCoreUser, useEnvironment } from '../contexts'; -import { Col, Grid, localizationKeys, Text } from '../customizables'; -import { TileButton, useCardState, withCardStateProvider } from '../elements'; -import { AuthApp, DotCircle, Mobile } from '../icons'; -import { mqu } from '../styledSystem'; +import { useCoreUser, useEnvironment } from '../../contexts'; +import { Col, Grid, localizationKeys, Text } from '../../customizables'; +import { TileButton, useCardState, withCardStateProvider } from '../../elements'; +import { AuthApp, DotCircle, Mobile } from '../../icons'; +import { mqu } from '../../styledSystem'; import { FormButtonContainer } from './FormButtons'; import { MfaBackupCodePage } from './MfaBackupCodePage'; import { MfaPhoneCodePage } from './MfaPhoneCodePage'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaPhoneCodeAccordion.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeAccordion.tsx similarity index 88% rename from packages/clerk-js/src/ui/UserProfile/MfaPhoneCodeAccordion.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeAccordion.tsx index 9a00d0aedb3..03f55198c54 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaPhoneCodeAccordion.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodeAccordion.tsx @@ -1,11 +1,11 @@ import { PhoneNumberResource } from '@clerk/types'; import React from 'react'; -import { Badge, Col, Icon } from '../customizables'; -import { FormattedPhoneNumberText, useCardState } from '../elements'; -import { useNavigate } from '../hooks'; -import { Mobile } from '../icons'; -import { handleError } from '../utils'; +import { Badge, Col, Icon } from '../../customizables'; +import { FormattedPhoneNumberText, useCardState } from '../../elements'; +import { useNavigate } from '../../hooks'; +import { Mobile } from '../../icons'; +import { handleError } from '../../utils'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaPhoneCodePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodePage.tsx similarity index 95% rename from packages/clerk-js/src/ui/UserProfile/MfaPhoneCodePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodePage.tsx index 905f4061691..9e3775a3d93 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaPhoneCodePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaPhoneCodePage.tsx @@ -1,11 +1,11 @@ import { PhoneNumberResource } from '@clerk/types'; import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { Col, Text } from '../customizables'; -import { ArrowBlockButton, useCardState, withCardStateProvider } from '../elements'; -import { getFlagEmojiFromCountryIso, handleError, parsePhoneString, stringToFormattedPhoneString } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { Col, Text } from '../../customizables'; +import { ArrowBlockButton, useCardState, withCardStateProvider } from '../../elements'; +import { getFlagEmojiFromCountryIso, handleError, parsePhoneString, stringToFormattedPhoneString } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; import { ContentPage } from './Page'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaSection.tsx similarity index 91% rename from packages/clerk-js/src/ui/UserProfile/MfaSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaSection.tsx index 394ad538e1f..fc271f28e06 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaSection.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useCoreUser, useEnvironment } from '../contexts'; -import { localizationKeys } from '../customizables'; -import { useNavigate } from '../hooks'; +import { useCoreUser, useEnvironment } from '../../contexts'; +import { localizationKeys } from '../../customizables'; +import { useNavigate } from '../../hooks'; import { MfaBackupCodeAccordion } from './MfaBackupCodeAccordion'; import { MfaPhoneCodeAccordion } from './MfaPhoneCodeAccordion'; import { MfaTOTPAccordion } from './MfaTOTPAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaTOTPAccordion.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaTOTPAccordion.tsx similarity index 89% rename from packages/clerk-js/src/ui/UserProfile/MfaTOTPAccordion.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaTOTPAccordion.tsx index c15812f03ae..7c569ba7d60 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaTOTPAccordion.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaTOTPAccordion.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useNavigate } from '../hooks'; -import { Badge, Col, Icon } from '../customizables'; -import { AuthApp } from '../icons'; +import { Badge, Col, Icon } from '../../customizables'; +import { useNavigate } from '../../hooks'; +import { AuthApp } from '../../icons'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/MfaTOTPPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/MfaTOTPPage.tsx similarity index 89% rename from packages/clerk-js/src/ui/UserProfile/MfaTOTPPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/MfaTOTPPage.tsx index 6082801ee5b..74d367d9b8f 100644 --- a/packages/clerk-js/src/ui/UserProfile/MfaTOTPPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/MfaTOTPPage.tsx @@ -1,8 +1,8 @@ import { TOTPResource } from '@clerk/types'; import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { withCardStateProvider } from '../elements'; +import { useWizard, Wizard } from '../../common'; +import { withCardStateProvider } from '../../elements'; import { AddAuthenticatorApp } from './AddAuthenticatorApp'; import { SuccessPage } from './SuccessPage'; import { VerifyTOTP } from './VerifyTOTP'; diff --git a/packages/clerk-js/src/ui/UserProfile/Navbar.tsx b/packages/clerk-js/src/ui/components/UserProfile/Navbar.tsx similarity index 95% rename from packages/clerk-js/src/ui/UserProfile/Navbar.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Navbar.tsx index 4593d9cd5ab..63c6d65a9fb 100644 --- a/packages/clerk-js/src/ui/UserProfile/Navbar.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Navbar.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { Button, Col, descriptors, Flex, Icon, localizationKeys, useLocalizations } from '../customizables'; -import { ElementDescriptor, ElementId } from '../customizables/elementDescriptors'; -import { usePopover, useSafeLayoutEffect } from '../hooks'; -import { Menu, TickShield, User } from '../icons'; -import { animations, mqu, PropsOfComponent } from '../styledSystem'; -import { colors, createContextAndHook } from '../utils'; +import { Button, Col, descriptors, Flex, Icon, localizationKeys, useLocalizations } from '../../customizables'; +import { ElementDescriptor, ElementId } from '../../customizables/elementDescriptors'; +import { usePopover, useSafeLayoutEffect } from '../../hooks'; +import { Menu, TickShield, User } from '../../icons'; +import { animations, mqu, PropsOfComponent } from '../../styledSystem'; +import { colors, createContextAndHook } from '../../utils'; import { useNavigateToFlowStart } from './NavigateToFlowStartButton'; type NavbarContextValue = { isOpen: boolean; open: () => void; close: () => void }; diff --git a/packages/clerk-js/src/ui/UserProfile/NavigateToFlowStartButton.tsx b/packages/clerk-js/src/ui/components/UserProfile/NavigateToFlowStartButton.tsx similarity index 82% rename from packages/clerk-js/src/ui/UserProfile/NavigateToFlowStartButton.tsx rename to packages/clerk-js/src/ui/components/UserProfile/NavigateToFlowStartButton.tsx index 8aa24904d6d..ef631707bab 100644 --- a/packages/clerk-js/src/ui/UserProfile/NavigateToFlowStartButton.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/NavigateToFlowStartButton.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useRouter } from '../router'; -import { Button } from '../customizables'; -import { PropsOfComponent } from '../styledSystem'; +import { Button } from '../../customizables'; +import { useRouter } from '../../router'; +import { PropsOfComponent } from '../../styledSystem'; type NavigateToFlowStartButtonProps = PropsOfComponent; diff --git a/packages/clerk-js/src/ui/UserProfile/Page.tsx b/packages/clerk-js/src/ui/components/UserProfile/Page.tsx similarity index 81% rename from packages/clerk-js/src/ui/UserProfile/Page.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Page.tsx index ba5d3203315..ee4d45c8991 100644 --- a/packages/clerk-js/src/ui/UserProfile/Page.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Page.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { Col, descriptors, LocalizationKey } from '../customizables'; -import { CardAlert, Header, useCardState } from '../elements'; -import { PropsOfComponent } from '../styledSystem'; +import { Col, descriptors, LocalizationKey } from '../../customizables'; +import { CardAlert, Header, useCardState } from '../../elements'; +import { PropsOfComponent } from '../../styledSystem'; import { Breadcrumbs } from './Breadcrumbs'; import { NavbarMenuButtonRow } from './Navbar'; diff --git a/packages/clerk-js/src/ui/UserProfile/PasswordPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/PasswordPage.tsx similarity index 88% rename from packages/clerk-js/src/ui/UserProfile/PasswordPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/PasswordPage.tsx index b0e47637f0c..5452c6de995 100644 --- a/packages/clerk-js/src/ui/UserProfile/PasswordPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PasswordPage.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { localizationKeys } from '../customizables'; -import { Form, useCardState, withCardStateProvider } from '../elements'; -import { handleError, useFormControl } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys } from '../../customizables'; +import { Form, useCardState, withCardStateProvider } from '../../elements'; +import { handleError, useFormControl } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/PasswordSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/PasswordSection.tsx similarity index 86% rename from packages/clerk-js/src/ui/UserProfile/PasswordSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/PasswordSection.tsx index 984b3330ee9..e72cdba9f11 100644 --- a/packages/clerk-js/src/ui/UserProfile/PasswordSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PasswordSection.tsx @@ -1,6 +1,6 @@ -import { useCoreUser } from '../contexts'; -import { localizationKeys, Text } from '../customizables'; -import { useNavigate } from '../hooks/useNavigate'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys, Text } from '../../customizables'; +import { useNavigate } from '../../hooks/useNavigate'; import { ProfileSection } from './Section'; import { AddBlockButton } from './UserProfileBlockButtons'; diff --git a/packages/clerk-js/src/ui/UserProfile/PhonePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/PhonePage.tsx similarity index 90% rename from packages/clerk-js/src/ui/UserProfile/PhonePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/PhonePage.tsx index 1d6162070bb..d4a493de614 100644 --- a/packages/clerk-js/src/ui/UserProfile/PhonePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PhonePage.tsx @@ -1,12 +1,12 @@ import { PhoneNumberResource } from '@clerk/types'; import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { Text } from '../customizables'; -import { Form, useCardState, withCardStateProvider } from '../elements'; -import { useRouter } from '../router'; -import { handleError, useFormControl } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { Text } from '../../customizables'; +import { Form, useCardState, withCardStateProvider } from '../../elements'; +import { useRouter } from '../../router'; +import { handleError, useFormControl } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/PhoneSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/PhoneSection.tsx similarity index 94% rename from packages/clerk-js/src/ui/UserProfile/PhoneSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/PhoneSection.tsx index 6bda8d525e5..4adc22c86a2 100644 --- a/packages/clerk-js/src/ui/UserProfile/PhoneSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/PhoneSection.tsx @@ -1,11 +1,11 @@ import { PhoneNumberResource } from '@clerk/types'; import React from 'react'; -import { useCoreUser } from '../contexts'; -import { Badge, Col, localizationKeys, Text } from '../customizables'; -import { useCardState } from '../elements'; -import { useNavigate } from '../hooks'; -import { getFlagEmojiFromCountryIso, handleError, parsePhoneString, stringToFormattedPhoneString } from '../utils'; +import { useCoreUser } from '../../contexts'; +import { Badge, Col, localizationKeys, Text } from '../../customizables'; +import { useCardState } from '../../elements'; +import { useNavigate } from '../../hooks'; +import { getFlagEmojiFromCountryIso, handleError, parsePhoneString, stringToFormattedPhoneString } from '../../utils'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { ProfileSection } from './Section'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/ProfilePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/ProfilePage.tsx similarity index 93% rename from packages/clerk-js/src/ui/UserProfile/ProfilePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/ProfilePage.tsx index 1d61d007774..871e837f1d1 100644 --- a/packages/clerk-js/src/ui/UserProfile/ProfilePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/ProfilePage.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser, useEnvironment } from '../contexts'; -import { Button, Col, Flex, localizationKeys, Text } from '../customizables'; -import { Avatar, FileDropArea, Form, useCardState, withCardStateProvider } from '../elements'; -import { handleError, useFormControl } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser, useEnvironment } from '../../contexts'; +import { Button, Col, Flex, localizationKeys, Text } from '../../customizables'; +import { Avatar, FileDropArea, Form, useCardState, withCardStateProvider } from '../../elements'; +import { handleError, useFormControl } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/RemoveResourcePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/RemoveResourcePage.tsx similarity index 93% rename from packages/clerk-js/src/ui/UserProfile/RemoveResourcePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/RemoveResourcePage.tsx index f4027674256..fadd42260de 100644 --- a/packages/clerk-js/src/ui/UserProfile/RemoveResourcePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/RemoveResourcePage.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { Text } from '../customizables'; -import { Form, useCardState, withCardStateProvider } from '../elements'; -import { useEnabledThirdPartyProviders } from '../hooks'; -import { useRouter } from '../router'; -import { handleError } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { Text } from '../../customizables'; +import { Form, useCardState, withCardStateProvider } from '../../elements'; +import { useEnabledThirdPartyProviders } from '../../hooks'; +import { useRouter } from '../../router'; +import { handleError } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/RootPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/RootPage.tsx similarity index 89% rename from packages/clerk-js/src/ui/UserProfile/RootPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/RootPage.tsx index 3eecf78492e..45307e54de8 100644 --- a/packages/clerk-js/src/ui/UserProfile/RootPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/RootPage.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useEnvironment } from '../contexts'; -import { Col, descriptors, localizationKeys } from '../customizables'; -import { Header } from '../elements'; +import { useEnvironment } from '../../contexts'; +import { Col, descriptors, localizationKeys } from '../../customizables'; +import { Header } from '../../elements'; import { ActiveDevicesSection } from './ActiveDevicesSection'; import { ConnectedAccountsSection } from './ConnectedAccountsSection'; import { EmailsSection } from './EmailSection'; @@ -16,13 +16,13 @@ import { getSecondFactors } from './utils'; import { Web3Section } from './Web3Section'; export const RootPage = () => { - const { attributes, social } = useEnvironment().userSettings; + const { attributes, social, instanceIsPasswordBased } = useEnvironment().userSettings; const showUsername = attributes.username.enabled; const showEmail = attributes.email_address.enabled; const showPhone = attributes.phone_number.enabled; const showConnectedAccounts = social && Object.values(social).filter(p => p.enabled).length > 0; const showWeb3 = attributes.web3_wallet.enabled; - const showPassword = attributes.password.enabled && attributes.password.required; + const showPassword = instanceIsPasswordBased; const showMfa = getSecondFactors(attributes).length > 0; return ( @@ -44,6 +44,7 @@ export const RootPage = () => { + {showUsername && } {showEmail && } {showPhone && } diff --git a/packages/clerk-js/src/ui/UserProfile/Section.tsx b/packages/clerk-js/src/ui/components/UserProfile/Section.tsx similarity index 91% rename from packages/clerk-js/src/ui/UserProfile/Section.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Section.tsx index 7a0a3d6d64b..831ab659aa1 100644 --- a/packages/clerk-js/src/ui/UserProfile/Section.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Section.tsx @@ -1,8 +1,8 @@ import { ProfileSectionId } from '@clerk/types'; -import { Col, descriptors, Flex, LocalizationKey, Text } from '../customizables'; -import { ElementDescriptor, ElementId } from '../customizables/elementDescriptors'; -import { PropsOfComponent } from '../styledSystem'; +import { Col, descriptors, Flex, LocalizationKey, Text } from '../../customizables'; +import { ElementDescriptor, ElementId } from '../../customizables/elementDescriptors'; +import { PropsOfComponent } from '../../styledSystem'; type ProfileSectionProps = Omit, 'title'> & { title: LocalizationKey; diff --git a/packages/clerk-js/src/ui/UserProfile/SuccessPage.tsx b/packages/clerk-js/src/ui/components/UserProfile/SuccessPage.tsx similarity index 93% rename from packages/clerk-js/src/ui/UserProfile/SuccessPage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/SuccessPage.tsx index 1aee4281959..033b7e9db7e 100644 --- a/packages/clerk-js/src/ui/UserProfile/SuccessPage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/SuccessPage.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { LocalizationKey, localizationKeys, Text } from '../customizables'; +import { LocalizationKey, localizationKeys, Text } from '../../customizables'; import { FormButtonContainer } from './FormButtons'; import { MfaBackupCodeList } from './MfaBackupCodeList'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; diff --git a/packages/clerk-js/src/ui/UserProfile/UserProfile.tsx b/packages/clerk-js/src/ui/components/UserProfile/UserProfile.tsx similarity index 84% rename from packages/clerk-js/src/ui/UserProfile/UserProfile.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UserProfile.tsx index e267dbf9513..be863a7a5b2 100644 --- a/packages/clerk-js/src/ui/UserProfile/UserProfile.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UserProfile.tsx @@ -1,11 +1,11 @@ import { UserProfileProps } from '@clerk/types/src'; import React from 'react'; -import { ComponentContext, withCoreUserGuard } from '../contexts'; -import { Route, Switch } from '../router'; -import { UserProfileCtx } from '../types'; -import { Flow } from '../customizables'; -import { UserProfileCard, withCardStateProvider } from '../elements'; +import { ComponentContext, withCoreUserGuard } from '../../contexts'; +import { Flow } from '../../customizables'; +import { UserProfileCard, withCardStateProvider } from '../../elements'; +import { Route, Switch } from '../../router'; +import { UserProfileCtx } from '../../types'; import { Content } from './Content'; import { NavBar, NavbarContextProvider } from './Navbar'; import { VerificationSuccessPage } from './VerifyWithLink'; diff --git a/packages/clerk-js/src/ui/UserProfile/UserProfileAccordion.tsx b/packages/clerk-js/src/ui/components/UserProfile/UserProfileAccordion.tsx similarity index 60% rename from packages/clerk-js/src/ui/UserProfile/UserProfileAccordion.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UserProfileAccordion.tsx index eb84d73a089..eee7bd25cde 100644 --- a/packages/clerk-js/src/ui/UserProfile/UserProfileAccordion.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UserProfileAccordion.tsx @@ -1,6 +1,6 @@ -import { useUserProfileContext } from '../contexts'; -import { AccordionItem } from '../elements'; -import { PropsOfComponent } from '../styledSystem'; +import { useUserProfileContext } from '../../contexts'; +import { AccordionItem } from '../../elements'; +import { PropsOfComponent } from '../../styledSystem'; export const UserProfileAccordion = (props: PropsOfComponent) => { const isModal = useUserProfileContext().mode === 'modal'; diff --git a/packages/clerk-js/src/ui/UserProfile/UserProfileBlockButtons.tsx b/packages/clerk-js/src/ui/components/UserProfile/UserProfileBlockButtons.tsx similarity index 80% rename from packages/clerk-js/src/ui/UserProfile/UserProfileBlockButtons.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UserProfileBlockButtons.tsx index a361145a0ff..76b414ca723 100644 --- a/packages/clerk-js/src/ui/UserProfile/UserProfileBlockButtons.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UserProfileBlockButtons.tsx @@ -1,7 +1,7 @@ -import { descriptors, Icon } from '../customizables'; -import { ArrowBlockButton } from '../elements'; -import { Plus } from '../icons'; -import { PropsOfComponent } from '../styledSystem'; +import { descriptors, Icon } from '../../customizables'; +import { ArrowBlockButton } from '../../elements'; +import { Plus } from '../../icons'; +import { PropsOfComponent } from '../../styledSystem'; type BlockButtonProps = PropsOfComponent; diff --git a/packages/clerk-js/src/ui/UserProfile/UserProfileSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/UserProfileSection.tsx similarity index 78% rename from packages/clerk-js/src/ui/UserProfile/UserProfileSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UserProfileSection.tsx index ff7d8b1c5e2..16d134dc1a1 100644 --- a/packages/clerk-js/src/ui/UserProfile/UserProfileSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UserProfileSection.tsx @@ -1,10 +1,10 @@ import { UserResource } from '@clerk/types'; import React from 'react'; -import { useCoreUser } from '../contexts'; -import { localizationKeys } from '../customizables'; -import { UserPreview } from '../elements'; -import { useNavigate } from '../hooks'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys } from '../../customizables'; +import { UserPreview } from '../../elements'; +import { useNavigate } from '../../hooks'; import { ProfileSection } from './Section'; import { BlockButton } from './UserProfileBlockButtons'; diff --git a/packages/clerk-js/src/ui/UserProfile/UsernamePage.tsx b/packages/clerk-js/src/ui/components/UserProfile/UsernamePage.tsx similarity index 83% rename from packages/clerk-js/src/ui/UserProfile/UsernamePage.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UsernamePage.tsx index a94308eafca..0293e1617ef 100644 --- a/packages/clerk-js/src/ui/UserProfile/UsernamePage.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UsernamePage.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { localizationKeys } from '../customizables'; -import { Form, useCardState, withCardStateProvider } from '../elements'; -import { handleError, useFormControl } from '../utils'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys } from '../../customizables'; +import { Form, useCardState, withCardStateProvider } from '../../elements'; +import { handleError, useFormControl } from '../../utils'; import { FormButtons } from './FormButtons'; import { ContentPage } from './Page'; import { SuccessPage } from './SuccessPage'; diff --git a/packages/clerk-js/src/ui/UserProfile/UsernameSection.tsx b/packages/clerk-js/src/ui/components/UserProfile/UsernameSection.tsx similarity index 85% rename from packages/clerk-js/src/ui/UserProfile/UsernameSection.tsx rename to packages/clerk-js/src/ui/components/UserProfile/UsernameSection.tsx index 86819722879..0da866ec351 100644 --- a/packages/clerk-js/src/ui/UserProfile/UsernameSection.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/UsernameSection.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useCoreUser } from '../contexts'; -import { localizationKeys, Text } from '../customizables'; -import { useNavigate } from '../hooks/useNavigate'; +import { useCoreUser } from '../../contexts'; +import { localizationKeys, Text } from '../../customizables'; +import { useNavigate } from '../../hooks/useNavigate'; import { ProfileSection } from './Section'; import { AddBlockButton } from './UserProfileBlockButtons'; diff --git a/packages/clerk-js/src/ui/UserProfile/VerifyTOTP.tsx b/packages/clerk-js/src/ui/components/UserProfile/VerifyTOTP.tsx similarity index 85% rename from packages/clerk-js/src/ui/UserProfile/VerifyTOTP.tsx rename to packages/clerk-js/src/ui/components/UserProfile/VerifyTOTP.tsx index a653f0734d3..b0f9e7f64e2 100644 --- a/packages/clerk-js/src/ui/UserProfile/VerifyTOTP.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/VerifyTOTP.tsx @@ -1,12 +1,12 @@ import { TOTPResource } from '@clerk/types'; import React from 'react'; -import { useCoreUser } from '../contexts'; -import { Col } from '../customizables'; -import { useCardState, useCodeControl } from '../elements'; -import { CodeForm } from '../elements/CodeForm'; -import { useLoadingStatus } from '../hooks'; -import { handleError, sleep, useFormControl } from '../utils'; +import { useCoreUser } from '../../contexts'; +import { Col } from '../../customizables'; +import { useCardState, useCodeControl } from '../../elements'; +import { CodeForm } from '../../elements/CodeForm'; +import { useLoadingStatus } from '../../hooks'; +import { handleError, sleep, useFormControl } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; import { ContentPage } from './Page'; diff --git a/packages/clerk-js/src/ui/UserProfile/VerifyWithCode.tsx b/packages/clerk-js/src/ui/components/UserProfile/VerifyWithCode.tsx similarity index 88% rename from packages/clerk-js/src/ui/UserProfile/VerifyWithCode.tsx rename to packages/clerk-js/src/ui/components/UserProfile/VerifyWithCode.tsx index c139263d9f4..da80b05a3e8 100644 --- a/packages/clerk-js/src/ui/UserProfile/VerifyWithCode.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/VerifyWithCode.tsx @@ -1,11 +1,11 @@ import { EmailAddressResource, PhoneNumberResource } from '@clerk/types'; import React from 'react'; -import { localizationKeys } from '../customizables'; -import { useCardState, useCodeControl } from '../elements'; -import { CodeForm } from '../elements/CodeForm'; -import { useLoadingStatus } from '../hooks'; -import { handleError, sleep, useFormControl } from '../utils'; +import { localizationKeys } from '../../customizables'; +import { useCardState, useCodeControl } from '../../elements'; +import { CodeForm } from '../../elements/CodeForm'; +import { useLoadingStatus } from '../../hooks'; +import { handleError, sleep, useFormControl } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; diff --git a/packages/clerk-js/src/ui/UserProfile/VerifyWithLink.tsx b/packages/clerk-js/src/ui/components/UserProfile/VerifyWithLink.tsx similarity index 84% rename from packages/clerk-js/src/ui/UserProfile/VerifyWithLink.tsx rename to packages/clerk-js/src/ui/components/UserProfile/VerifyWithLink.tsx index 9c81432dbd1..f616bcf8f4d 100644 --- a/packages/clerk-js/src/ui/UserProfile/VerifyWithLink.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/VerifyWithLink.tsx @@ -1,13 +1,13 @@ import { EmailAddressResource } from '@clerk/types'; import React from 'react'; -import { EmailLinkStatusCard } from '../common'; -import { buildMagicLinkRedirectUrl } from '../common/redirects'; -import { useEnvironment, useUserProfileContext } from '../contexts'; -import { localizationKeys } from '../customizables'; -import { useCardState, VerificationLink } from '../elements'; -import { useMagicLink } from '../hooks'; -import { handleError } from '../utils'; +import { EmailLinkStatusCard } from '../../common'; +import { buildMagicLinkRedirectUrl } from '../../common/redirects'; +import { useEnvironment, useUserProfileContext } from '../../contexts'; +import { localizationKeys } from '../../customizables'; +import { useCardState, VerificationLink } from '../../elements'; +import { useMagicLink } from '../../hooks'; +import { handleError } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; diff --git a/packages/clerk-js/src/ui/UserProfile/Web3Page.tsx b/packages/clerk-js/src/ui/components/UserProfile/Web3Page.tsx similarity index 92% rename from packages/clerk-js/src/ui/UserProfile/Web3Page.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Web3Page.tsx index ba6ce6f26b7..52798313fec 100644 --- a/packages/clerk-js/src/ui/UserProfile/Web3Page.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Web3Page.tsx @@ -1,14 +1,14 @@ import { Web3Strategy, Web3WalletResource } from '@clerk/types'; import React from 'react'; -import { generateSignatureWithMetamask, getMetamaskIdentifier } from '../../utils/web3'; -import { useWizard, Wizard } from '../common'; -import { useCoreUser } from '../contexts'; -import { Col, descriptors, Image, Text } from '../customizables'; -import { ArrowBlockButton, useCardState, withCardStateProvider } from '../elements'; -import { useEnabledThirdPartyProviders } from '../hooks'; -import { useRouter } from '../router'; -import { getFieldError, handleError } from '../utils'; +import { generateSignatureWithMetamask, getMetamaskIdentifier } from '../../../utils/web3'; +import { useWizard, Wizard } from '../../common'; +import { useCoreUser } from '../../contexts'; +import { Col, descriptors, Image, Text } from '../../customizables'; +import { ArrowBlockButton, useCardState, withCardStateProvider } from '../../elements'; +import { useEnabledThirdPartyProviders } from '../../hooks'; +import { useRouter } from '../../router'; +import { getFieldError, handleError } from '../../utils'; import { FormButtonContainer } from './FormButtons'; import { NavigateToFlowStartButton } from './NavigateToFlowStartButton'; import { ContentPage } from './Page'; diff --git a/packages/clerk-js/src/ui/UserProfile/Web3Section.tsx b/packages/clerk-js/src/ui/components/UserProfile/Web3Section.tsx similarity index 90% rename from packages/clerk-js/src/ui/UserProfile/Web3Section.tsx rename to packages/clerk-js/src/ui/components/UserProfile/Web3Section.tsx index f190912caa9..02bb7b74173 100644 --- a/packages/clerk-js/src/ui/UserProfile/Web3Section.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Web3Section.tsx @@ -1,9 +1,9 @@ import { Web3WalletResource } from '@clerk/types'; -import { useCoreUser } from '../contexts'; -import { Col, Flex, Image, localizationKeys } from '../customizables'; -import { useEnabledThirdPartyProviders } from '../hooks'; -import { useNavigate } from '../hooks/useNavigate'; +import { useCoreUser } from '../../contexts'; +import { Col, Flex, Image, localizationKeys } from '../../customizables'; +import { useEnabledThirdPartyProviders } from '../../hooks'; +import { useNavigate } from '../../hooks/useNavigate'; import { LinkButtonWithDescription } from './LinkButtonWithDescription'; import { ProfileSection } from './Section'; import { UserProfileAccordion } from './UserProfileAccordion'; diff --git a/packages/clerk-js/src/ui/UserProfile/index.ts b/packages/clerk-js/src/ui/components/UserProfile/index.ts similarity index 100% rename from packages/clerk-js/src/ui/UserProfile/index.ts rename to packages/clerk-js/src/ui/components/UserProfile/index.ts diff --git a/packages/clerk-js/src/ui/UserProfile/utils.ts b/packages/clerk-js/src/ui/components/UserProfile/utils.ts similarity index 100% rename from packages/clerk-js/src/ui/UserProfile/utils.ts rename to packages/clerk-js/src/ui/components/UserProfile/utils.ts diff --git a/packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx b/packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx index 47f860c1708..dcd6539e28f 100644 --- a/packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx +++ b/packages/clerk-js/src/ui/contexts/CoreSessionContext.tsx @@ -31,7 +31,7 @@ export function withCoreSessionSwitchGuard

(Component: React.ComponentType

) if (context.value === undefined) { return null; } - return ; + return ; }; const displayName = Component.displayName || Component.name || 'Component'; diff --git a/packages/clerk-js/src/ui/contexts/CoreUserContext.tsx b/packages/clerk-js/src/ui/contexts/CoreUserContext.tsx index 808f42ffa65..69749568f23 100644 --- a/packages/clerk-js/src/ui/contexts/CoreUserContext.tsx +++ b/packages/clerk-js/src/ui/contexts/CoreUserContext.tsx @@ -1,5 +1,5 @@ import { UserResource } from '@clerk/types'; -import * as React from 'react'; +import React from 'react'; import { clerkCoreErrorUserIsNotDefined } from '../../core/errors'; import { assertContextExists } from './utils'; @@ -25,7 +25,7 @@ export function withCoreUserGuard

(Component: React.ComponentType

): React.C if (!user) { return null; } - return ; + return ; }; const displayName = Component.displayName || Component.name || 'Component'; diff --git a/packages/clerk-js/src/ui/customizables/elementDescriptors.ts b/packages/clerk-js/src/ui/customizables/elementDescriptors.ts index 5eec620fad9..f2a4aad15ed 100644 --- a/packages/clerk-js/src/ui/customizables/elementDescriptors.ts +++ b/packages/clerk-js/src/ui/customizables/elementDescriptors.ts @@ -89,7 +89,7 @@ export const APPEARANCE_KEYS = containsAllElementsConfigKeys([ 'formFieldInputCopyToClipboardButton', 'formFieldInputCopyToClipboardIcon', - 'avatar', + 'avatarBox', 'avatarImage', 'userButtonBox', diff --git a/packages/clerk-js/src/ui/customizables/index.ts b/packages/clerk-js/src/ui/customizables/index.ts index e5f91aa05a4..c8d49466ca5 100644 --- a/packages/clerk-js/src/ui/customizables/index.ts +++ b/packages/clerk-js/src/ui/customizables/index.ts @@ -11,6 +11,7 @@ export { localizationKeys, useLocalizations } from '../localization'; export type { LocalizationKey } from '../localization'; export { generateFlowPartClassname } from './classGeneration'; +export const Box = makeCustomizable(sanitizeDomProps(Primitives.Box)); export const Flex = makeCustomizable(sanitizeDomProps(Primitives.Flex)); export const Col = makeCustomizable(sanitizeDomProps(Primitives.Col)); export const Grid = makeCustomizable(sanitizeDomProps(Primitives.Grid)); @@ -36,3 +37,10 @@ export const Spinner = makeCustomizable(sanitizeDomProps(Primitives.Spinner)); export const Badge = makeCustomizable(makeLocalizable(sanitizeDomProps(Primitives.Badge)), { defaultDescriptor: descriptors.badge, }); + +export const Table = makeCustomizable(sanitizeDomProps(Primitives.Table)); +export const Thead = makeCustomizable(sanitizeDomProps(Primitives.Thead)); +export const Tbody = makeCustomizable(sanitizeDomProps(Primitives.Tbody)); +export const Tr = makeCustomizable(sanitizeDomProps(Primitives.Tr)); +export const Th = makeCustomizable(sanitizeDomProps(Primitives.Th)); +export const Td = makeCustomizable(sanitizeDomProps(Primitives.Td)); diff --git a/packages/clerk-js/src/ui/customizables/parseAppearance.ts b/packages/clerk-js/src/ui/customizables/parseAppearance.ts index 57254aea1ff..0b595c043fa 100644 --- a/packages/clerk-js/src/ui/customizables/parseAppearance.ts +++ b/packages/clerk-js/src/ui/customizables/parseAppearance.ts @@ -17,7 +17,7 @@ export type ParsedElements = Elements[]; export type ParsedInternalTheme = InternalTheme; export type ParsedLayout = Required; -type PublicAppearanceTopLevelKey = keyof Pick; +type PublicAppearanceTopLevelKey = keyof Omit; export type AppearanceCascade = { globalAppearance?: Appearance; diff --git a/packages/clerk-js/src/ui/customizables/parseVariables.ts b/packages/clerk-js/src/ui/customizables/parseVariables.ts index 1aa8eb2a564..e3320482859 100644 --- a/packages/clerk-js/src/ui/customizables/parseVariables.ts +++ b/packages/clerk-js/src/ui/customizables/parseVariables.ts @@ -7,6 +7,7 @@ import { colorOptionToHslaAlphaScale, colorOptionToHslaLightnessScale } from './ export const createColorScales = (theme: Theme) => { const variables = theme.variables || {}; + return removeUndefinedProps({ ...colorOptionToHslaLightnessScale(variables.colorPrimary, 'primary'), ...colorOptionToHslaLightnessScale(variables.colorDanger, 'danger'), @@ -19,6 +20,7 @@ export const createColorScales = (theme: Theme) => { colorInputText: toHSLA(variables.colorInputText), colorBackground: toHSLA(variables.colorBackground), colorInputBackground: toHSLA(variables.colorInputBackground), + colorAvatarGradient: variables.colorAvatarGradient?.length ? variables.colorAvatarGradient.map(toHSLA) : undefined, }); }; diff --git a/packages/clerk-js/src/ui/elements/Avatar.tsx b/packages/clerk-js/src/ui/elements/Avatar.tsx index 86508a0a0d3..f63de239ae4 100644 --- a/packages/clerk-js/src/ui/elements/Avatar.tsx +++ b/packages/clerk-js/src/ui/elements/Avatar.tsx @@ -1,7 +1,8 @@ -import { isRetinaDisplay } from '@clerk/shared/utils/isRetinaDisplay'; +import { isRetinaDisplay } from '@clerk/shared'; import React from 'react'; -import { descriptors, Flex, Image, Text } from '../customizables'; +import { BoringAvatar } from '../common/BoringAvatar'; +import { descriptors, Flex, Image, Text, useAppearance } from '../customizables'; import { ElementDescriptor } from '../customizables/elementDescriptors'; import { InternalTheme } from '../foundations'; import { common, ThemableCssProp } from '../styledSystem'; @@ -34,14 +35,11 @@ export const Avatar = (props: AvatarProps) => { imageElementDescriptor, } = props; const [error, setError] = React.useState(false); - const initials = getInitials({ firstName, lastName, name }); const fullName = getFullName({ firstName, lastName, name }); const avatarExists = hasAvatar(profileImageUrl); let src; - if (!avatarExists) { - src = GRAVATAR_DEFAULT_AVATAR; - } else if (!optimize && profileImageUrl) { + if (avatarExists && !optimize && profileImageUrl) { const optimizedHeight = Math.max(profileImageFetchSize) * (isRetinaDisplay() ? 2 : 1); const srcUrl = new URL(profileImageUrl); srcUrl.searchParams.append('height', optimizedHeight.toString()); @@ -51,14 +49,14 @@ export const Avatar = (props: AvatarProps) => { } const ImgOrFallback = - initials && (!avatarExists || error) ? ( + !avatarExists || error ? ( ) : ( {fullName} setError(true)} @@ -68,7 +66,7 @@ export const Avatar = (props: AvatarProps) => { // TODO: Revise size handling. Do we need to be this dynamic or should we use the theme instead? return ( ({ flexShrink: 0, @@ -93,21 +91,41 @@ export const Avatar = (props: AvatarProps) => { function InitialsAvatarFallback(props: AvatarProps) { const initials = getInitials(props); + const { parsedInternalTheme } = useAppearance(); return ( - - {initials} - + + {initials && ( + + {initials} + + )} + ); } const CLERK_IMAGE_URL_REGEX = /https:\/\/images\.(lcl)?clerk/i; -const GRAVATAR_DEFAULT_AVATAR = 'https://www.gravatar.com/avatar?d=mp'; - +const GRAVATAR_URL_REGEX = /gravatar/i; // TODO: How do we want to handle this? export function hasAvatar(profileImageUrl: string | undefined | null): boolean { - return CLERK_IMAGE_URL_REGEX.test(profileImageUrl!) || !!profileImageUrl; + return ( + (CLERK_IMAGE_URL_REGEX.test(profileImageUrl!) || !!profileImageUrl) && + !GRAVATAR_URL_REGEX.test(profileImageUrl as string) + ); } diff --git a/packages/clerk-js/src/ui/elements/FullHeightLoader.tsx b/packages/clerk-js/src/ui/elements/FullHeightLoader.tsx new file mode 100644 index 00000000000..4caa9ef4928 --- /dev/null +++ b/packages/clerk-js/src/ui/elements/FullHeightLoader.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import { Flex, Spinner } from '../customizables'; + +export const FullHeightLoader = (): JSX.Element => { + return ( + + + + ); +}; diff --git a/packages/clerk-js/src/ui/elements/Menu.tsx b/packages/clerk-js/src/ui/elements/Menu.tsx new file mode 100644 index 00000000000..4d8d44c770e --- /dev/null +++ b/packages/clerk-js/src/ui/elements/Menu.tsx @@ -0,0 +1,182 @@ +import React, { cloneElement, isValidElement, PropsWithChildren, useEffect, useRef } from 'react'; + +import { createContextAndHook } from '../../ui/utils'; +import { Button, Col } from '../customizables'; +import { usePopover, UsePopoverReturn } from '../hooks'; +import { animations, PropsOfComponent } from '../styledSystem'; +import { colors } from '../utils/colors'; +import { Portal } from './Portal'; + +type MenuState = { + popoverCtx: UsePopoverReturn; +}; + +const [MenuStateCtx, useMenuState] = createContextAndHook('MenuState'); + +type MenuProps = PropsWithChildren>; + +export const Menu = (props: MenuProps) => { + const popoverCtx = usePopover({ + placement: 'right-start', + offset: 8, + }); + + const value = React.useMemo(() => ({ value: { popoverCtx } }), [{ ...popoverCtx }]); + + return ( + + ); +}; + +type MenuTriggerProps = React.PropsWithChildren>; + +export const MenuTrigger = (props: MenuTriggerProps) => { + const { children } = props; + const { popoverCtx } = useMenuState(); + const { reference, toggle } = popoverCtx; + + if (!isValidElement(children)) { + return null; + } + + return cloneElement(children, { + // @ts-expect-error + ref: reference, + onClick: (e: React.MouseEvent) => { + children.props?.onClick?.(e); + toggle(); + }, + }); +}; + +const findMenuItem = (el: Element, siblingType: 'prev' | 'next', options?: { countSelf?: boolean }) => { + let tagName = options?.countSelf ? el.tagName : ''; + let sibling: Element | null = el; + while (sibling && tagName.toUpperCase() !== 'BUTTON') { + sibling = sibling[siblingType === 'prev' ? 'previousElementSibling' : 'nextElementSibling']; + tagName = sibling?.tagName ?? ''; + } + return sibling; +}; + +type MenuListProps = PropsOfComponent; + +export const MenuList = (props: MenuListProps) => { + const { sx, ...rest } = props; + const { popoverCtx } = useMenuState(); + const { floating, styles, isOpen } = popoverCtx; + const containerRef = useRef(null); + + useEffect(() => { + const current = containerRef.current; + floating(current); + current?.focus(); + }, [isOpen]); + + const onKeyDown = (e: React.KeyboardEvent) => { + const current = containerRef.current; + if (!current) { + return; + } + + if (current !== document.activeElement) { + return; + } + + if (e.key === 'ArrowDown') { + e.preventDefault(); + return (findMenuItem(current.children[0], 'next', { countSelf: true }) as HTMLElement)?.focus(); + } + }; + + if (!isOpen) { + return null; + } + + return ( + + ({ + backgroundColor: colors.makeSolid(theme.colors.$colorBackground), + border: theme.borders.$normal, + outline: 'none', + borderRadius: theme.radii.$lg, + borderColor: theme.colors.$blackAlpha200, + paddingTop: theme.space.$2, + paddingBottom: theme.space.$2, + overflow: 'hidden', + top: `calc(100% + ${theme.space.$2})`, + animation: `${animations.dropdownSlideInScaleAndFade} ${theme.transitionDuration.$slower} ${theme.transitionTiming.$slowBezier}`, + transformOrigin: 'top center', + boxShadow: theme.shadows.$boxShadow1, + zIndex: theme.zIndices.$dropdown, + }), + sx, + ]} + style={styles} + {...rest} + /> + + ); +}; + +type MenuItemProps = PropsOfComponent; + +export const MenuItem = (props: MenuItemProps) => { + const { sx, onClick, ...rest } = props; + const { popoverCtx } = useMenuState(); + const { toggle } = popoverCtx; + const buttonRef = useRef(null); + + const onKeyDown = (e: React.KeyboardEvent) => { + const current = buttonRef.current; + if (!current) { + return; + } + + const key = e.key; + if (key !== 'ArrowUp' && key !== 'ArrowDown') { + return; + } + + e.preventDefault(); + const sibling = findMenuItem(current, key === 'ArrowUp' ? 'prev' : 'next'); + (sibling as HTMLElement)?.focus(); + }; + + return ( + - ); -}); - -type CountryCodeListItem = React.PropsWithChildren<{ +type CountryCodeListItem = PropsOfComponent & { country: CountryEntry; - selectIso: (iso: CountryIso) => void; - isSelected: boolean; - innerRef: any; -}>; - -const NoResults = () => { - return ( - ({ width: '100%', padding: `${theme.space.$2} 0 0 ${theme.space.$4}` })} - > - No countries found - - ); }; const CountryCodeListItem = React.memo((props: CountryCodeListItem) => { - const { country, selectIso, isSelected, innerRef, ...rest } = props; + const { country, sx, ...rest } = props; return ( selectIso(country.iso)} center - sx={theme => ({ - userSelect: 'none', - gap: theme.space.$2, - padding: `${theme.space.$0x5} ${theme.space.$4}`, - ...(isSelected && { backgroundColor: theme.colors.$blackAlpha200 }), - '&:hover': { - backgroundColor: theme.colors.$blackAlpha200, - }, - })} + sx={[ + theme => ({ + width: '100%', + gap: theme.space.$2, + padding: `${theme.space.$0x5} ${theme.space.$4}`, + }), + sx, + ]} + {...rest} > {country.name} diff --git a/packages/clerk-js/src/ui/elements/Select.tsx b/packages/clerk-js/src/ui/elements/Select.tsx new file mode 100644 index 00000000000..7eb98c7610f --- /dev/null +++ b/packages/clerk-js/src/ui/elements/Select.tsx @@ -0,0 +1,342 @@ +import React, { isValidElement, PropsWithChildren, useState } from 'react'; + +import { usePopover, useSearchInput } from '../../ui/hooks'; +import { Button, Flex, Icon, Text } from '../customizables'; +import { Caret, MagnifyingGlass } from '../icons'; +import { animations, PropsOfComponent } from '../styledSystem'; +import { colors, createContextAndHook } from '../utils'; +import { InputWithIcon } from './InputWithIcon'; + +type UsePopoverReturn = ReturnType; +type UseSearchInputReturn = ReturnType; + +type OptionBuilder = (option: O, index?: number, isSelected?: boolean) => JSX.Element; + +type SelectProps = { + options: O[]; + value: O; + onChange: (option: O) => void; + placeholder?: string; + comparator?: (term: string, option: O) => boolean; + noResultsMessage?: string; + optionBuilder?: OptionBuilder; +}; + +type SelectState = Pick, 'placeholder' | 'comparator' | 'noResultsMessage'> & { + popoverCtx: UsePopoverReturn; + searchInputCtx: UseSearchInputReturn; + optionBuilder: OptionBuilder; + selectedOption: O; + select: (option: O) => void; + selectedItemRef: React.RefObject; + onTriggerClick: () => void; +}; + +const [SelectStateCtx, useSelectState] = createContextAndHook('SelectState'); + +const defaultOptionBuilder = (option: O, _index?: number, isSelected?: boolean) => { + if (typeof option !== 'string' && typeof option !== 'number') { + throw new Error('Provide an optionBuilder function'); + } + + return ( + ({ + width: '100%', + paddingLeft: theme.space.$2, + paddingRight: theme.space.$2, + ...(isSelected && { backgroundColor: theme.colors.$blackAlpha200 }), + '&:hover': { + backgroundColor: theme.colors.$blackAlpha200, + }, + })} + > + {option} + + ); +}; + +export const Select = (props: PropsWithChildren>) => { + const { + value, + options, + onChange, + optionBuilder = defaultOptionBuilder, + noResultsMessage, + comparator, + placeholder, + ...rest + } = props; + const popoverCtx = usePopover({ autoUpdate: false }); + const togglePopover = popoverCtx.toggle; + const selectedItemRef = React.useRef(null); + const searchInputCtx = useSearchInput({ + items: options, + comparator: comparator || (() => true), + }); + + const select = React.useCallback( + option => { + onChange?.(option); + togglePopover(); + }, + [togglePopover, onChange], + ); + + return ( + + ); +}; + +type SelectOptionBuilderProps = { + option: O; + index: number; + optionBuilder: OptionBuilder; + handleSelect: (option: O) => void; + isSelected: boolean; +}; + +const _SelectOptionBuilder = (props: SelectOptionBuilderProps, ref?: React.ForwardedRef) => { + const { option, optionBuilder, index, handleSelect, isSelected } = props; + return ( + { + handleSelect(option); + }} + > + {optionBuilder(option, index, isSelected)} + + ); +}; + +const SelectOptionBuilder = React.memo(React.forwardRef(_SelectOptionBuilder)); + +const SelectSearchbar = (props: PropsOfComponent) => { + const { sx, ...rest } = props; + React.useEffect(() => { + // @ts-expect-error + return () => props.onChange({ target: { value: '' } }); + }, []); + + return ( + ({ borderBottom: theme.borders.$normal, borderColor: theme.colors.$blackAlpha200 })}> + + } + sx={[{ border: 'none', borderRadius: '0' }, sx]} + {...rest} + /> + + ); +}; + +export const SelectNoResults = (props: PropsOfComponent) => { + const { sx, ...rest } = props; + return ( + ({ width: '100%', padding: `${theme.space.$2} 0 0 ${theme.space.$4}` }), sx]} + {...rest} + /> + ); +}; + +type SelectOptionListProps = PropsOfComponent; + +export const SelectOptionList = (props: SelectOptionListProps) => { + const { sx, ...rest } = props; + const { + popoverCtx, + searchInputCtx, + optionBuilder, + placeholder, + comparator, + selectedItemRef, + noResultsMessage, + select, + onTriggerClick, + } = useSelectState(); + const { filteredItems: options, searchInputProps } = searchInputCtx; + const [selectedIndex, setSelectedIndex] = useState(0); + const { isOpen, floating, styles } = popoverCtx; + const containerRef = React.useRef(null); + + const scrollToItemOnSelectedIndexChange = () => { + if (!isOpen) { + setSelectedIndex(0); + return; + } + selectedItemRef.current?.scrollIntoView({ block: 'nearest' }); + }; + + React.useEffect(scrollToItemOnSelectedIndexChange, [selectedIndex, isOpen]); + React.useEffect(() => { + if (!comparator) { + containerRef?.current?.focus(); + } + }, [isOpen]); + + const onKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'ArrowUp') { + e.preventDefault(); + if (isOpen) { + return setSelectedIndex((i = 0) => Math.max(i - 1, 0)); + } + return onTriggerClick(); + } + + if (e.key === 'ArrowDown') { + e.preventDefault(); + if (isOpen) { + return setSelectedIndex((i = 0) => Math.min(i + 1, options.length - 1)); + } + return onTriggerClick(); + } + + if (e.key === 'Enter') { + e.preventDefault(); + return select(options[selectedIndex]); + } + }; + + if (!isOpen) { + return null; + } + + return ( + ({ + backgroundColor: colors.makeSolid(theme.colors.$colorBackground), + border: theme.borders.$normal, + borderRadius: theme.radii.$lg, + borderColor: theme.colors.$blackAlpha200, + overflow: 'hidden', + width: '100%', + animation: `${animations.dropdownSlideInScaleAndFade} ${theme.transitionDuration.$slower} ${theme.transitionTiming.$slowBezier}`, + transformOrigin: 'top center', + boxShadow: theme.shadows.$cardDropShadow, + zIndex: theme.zIndices.$dropdown, + }), + sx, + ]} + style={{ ...styles, left: styles.left - 1 }} + {...rest} + > + {comparator && ( + + )} + ({ + outline: 'none', + overflowY: 'scroll', + maxHeight: '18vh', + paddingBottom: theme.space.$2, + }), + sx, + ]} + {...rest} + > + {options.map((option, index) => { + const isSelected = index === selectedIndex; + return ( + + ); + })} + {noResultsMessage && options.length === 0 && {noResultsMessage}} + + + ); +}; + +export const SelectButton = (props: PropsOfComponent) => { + const { sx, children, ...rest } = props; + const { popoverCtx, onTriggerClick, optionBuilder, selectedOption } = useSelectState(); + const { isOpen, reference } = popoverCtx; + + let show: React.ReactNode = children; + if (!isValidElement(children)) { + show = optionBuilder(selectedOption); + } + + return ( + + ); +}; diff --git a/packages/clerk-js/src/ui/elements/Tabs.tsx b/packages/clerk-js/src/ui/elements/Tabs.tsx new file mode 100644 index 00000000000..11068883f2c --- /dev/null +++ b/packages/clerk-js/src/ui/elements/Tabs.tsx @@ -0,0 +1,191 @@ +import React from 'react'; + +import { Button, Col, Flex } from '../customizables'; +import { createContextAndHook, getValidChildren } from '../utils'; + +type TabsContextValue = { + selectedIndex: number; + setSelectedIndex: (item: number) => void; + focusedIndex: number; + setFocusedIndex: (item: number) => void; +}; +export const [TabsContext, useTabsContext] = createContextAndHook('TabsContext'); +export const TabsContextProvider = (props: React.PropsWithChildren<{ value: TabsContextValue }>) => { + const ctxValue = React.useMemo( + () => ({ value: props.value }), + [props.value.selectedIndex, props.value.setFocusedIndex], + ); + return {props.children}; +}; + +/** + * TabsProps + */ +type TabsProps = { + children: React.ReactNode; + defaultIndex?: number; +}; + +export const Tabs = ({ children, ...props }: TabsProps) => { + const { defaultIndex = 0 } = props; + const [selectedIndex, setSelectedIndex] = React.useState(defaultIndex); + const [focusedIndex, setFocusedIndex] = React.useState(defaultIndex); + + return ( + + {children} + + ); +}; + +/** + * TabsList + */ +type TabsListProps = React.PropsWithChildren; +export const TabsList = (props: TabsListProps) => { + const { children } = props; + const { setSelectedIndex, selectedIndex, setFocusedIndex } = useTabsContext(); + + const childrenWithProps = getValidChildren(children).map((child, index) => + React.cloneElement(child, { + tabIndex: index, + }), + ); + + const onKeyDown = (e: React.KeyboardEvent) => { + const tabs = childrenWithProps.filter(child => !child.props?.isDisabled).map(child => child.props.tabIndex); + const tabsLenth = tabs.length; + const current = tabs.indexOf(selectedIndex); + + if (e.key === 'ArrowLeft') { + const prev = current === 0 ? tabs[tabsLenth - 1] : tabs[current - 1]; + setFocusedIndex(prev); + return setSelectedIndex(prev); + } + if (e.key === 'ArrowRight') { + const next = tabsLenth - 1 === current ? tabs[0] : tabs[current + 1]; + setFocusedIndex(next); + return setSelectedIndex(next); + } + }; + + return ( + ({ borderBottom: theme.borders.$normal, borderColor: theme.colors.$blackAlpha300 })} + > + {childrenWithProps} + + ); +}; + +/** + * Tab + */ +type TabProps = React.PropsWithChildren; +type TabPropsWithTabIndex = TabProps & { tabIndex?: number }; +export const Tab = (props: TabProps) => { + const { children, tabIndex, isDisabled } = props as TabPropsWithTabIndex; + + if (tabIndex === undefined) { + throw new Error('Tab component must be a direct child of TabList.'); + } + + const { setSelectedIndex, selectedIndex, focusedIndex, setFocusedIndex } = useTabsContext(); + const buttonRef = React.useRef(null); + const isActive = tabIndex === selectedIndex; + const isFocused = tabIndex === focusedIndex; + + const onClick = () => { + setSelectedIndex(tabIndex); + setFocusedIndex(-1); + }; + + React.useEffect(() => { + if (isDisabled && tabIndex === 0) { + setSelectedIndex((tabIndex as number) + 1); + } + }, []); + + React.useEffect(() => { + if (buttonRef.current && isFocused) { + buttonRef.current.focus(); + } + }, [isFocused]); + + return ( + + + + ); +}; + +/** + * TabPanels + */ +type TabPanelsProps = React.PropsWithChildren; +export const TabPanels = (props: TabPanelsProps) => { + const { children } = props; + + const childrenWithProps = getValidChildren(children).map((child, index) => + React.cloneElement(child, { + tabIndex: index, + }), + ); + + return {childrenWithProps}; +}; + +/** + * TabPanel + */ +type TabPanelProps = React.PropsWithChildren; +type TabPanelPropsWithTabIndex = TabPanelProps & { tabIndex?: number }; +export const TabPanel = (props: TabPanelProps) => { + const { tabIndex, children } = props as TabPanelPropsWithTabIndex; + + if (tabIndex === undefined) { + throw new Error('TabPanel component must be a direct child of TabPanels.'); + } + + const { selectedIndex } = useTabsContext(); + const isOpen = tabIndex === selectedIndex; + + if (!isOpen) { + return null; + } + + return ( + + {children} + + ); +}; diff --git a/packages/clerk-js/src/ui/elements/contexts/CardStateContext.tsx b/packages/clerk-js/src/ui/elements/contexts/CardStateContext.tsx index b358ea9ef40..fd7d87e8295 100644 --- a/packages/clerk-js/src/ui/elements/contexts/CardStateContext.tsx +++ b/packages/clerk-js/src/ui/elements/contexts/CardStateContext.tsx @@ -1,3 +1,4 @@ +import { ClerkAPIError } from '@clerk/types'; import React from 'react'; import { useLocalizations } from '../../customizables'; @@ -31,7 +32,7 @@ const useCardState = () => { return { setIdle: (metadata?: Metadata) => setState(s => ({ ...s, status: 'idle', metadata })), - setError: (metadata: Metadata) => + setError: (metadata: ClerkAPIError | Metadata) => setState(s => { return { ...s, error: translateError(metadata) }; }), diff --git a/packages/clerk-js/src/ui/elements/contexts/FlowMetadataContext.tsx b/packages/clerk-js/src/ui/elements/contexts/FlowMetadataContext.tsx index a17fbcb26ea..64737600a37 100644 --- a/packages/clerk-js/src/ui/elements/contexts/FlowMetadataContext.tsx +++ b/packages/clerk-js/src/ui/elements/contexts/FlowMetadataContext.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { createContextAndHook } from '../../utils'; type FlowMetadata = { - flow: 'signIn' | 'signUp' | 'userButton' | 'userProfile'; + flow: 'signIn' | 'signUp' | 'userButton' | 'userProfile' | 'organizationProfile' | 'organizationSwitcher'; part?: | 'start' | 'emailCode' diff --git a/packages/clerk-js/src/ui/elements/index.ts b/packages/clerk-js/src/ui/elements/index.ts index eefe3ac4ed1..8fe211334d4 100644 --- a/packages/clerk-js/src/ui/elements/index.ts +++ b/packages/clerk-js/src/ui/elements/index.ts @@ -27,3 +27,9 @@ export * from './RootBox'; export * from './InvisibleRootBox'; export * from './ClipboardInput'; export * from './TileButton'; +export * from './Select'; +export * from './Menu'; +export * from './Pagination'; +export * from './FullHeightLoader'; +export * from './Tabs'; +export * from './InputWithIcon'; diff --git a/packages/clerk-js/src/ui/foundations/colors.ts b/packages/clerk-js/src/ui/foundations/colors.ts index 27ca096b8e2..4e2b5941f6e 100644 --- a/packages/clerk-js/src/ui/foundations/colors.ts +++ b/packages/clerk-js/src/ui/foundations/colors.ts @@ -37,6 +37,7 @@ export const colors = Object.freeze({ ...whiteAlpha, colorBackground: 'white', colorInputBackground: 'white', + colorAvatarGradient: ['#6C47FF', '#5BC5EF', '#FBD486', '#BEF972', '#FF8F8F'], colorText: 'black', colorTextOnPrimaryBackground: 'white', colorTextSecondary: 'rgba(0,0,0,0.65)', diff --git a/packages/clerk-js/src/ui/foundations/zIndices.ts b/packages/clerk-js/src/ui/foundations/zIndices.ts index ca05553413f..f4f81f5a699 100644 --- a/packages/clerk-js/src/ui/foundations/zIndices.ts +++ b/packages/clerk-js/src/ui/foundations/zIndices.ts @@ -2,4 +2,5 @@ export const zIndices = Object.freeze({ navbar: '100', fab: '9000', modal: '10000', + dropdown: '11000', } as const); diff --git a/packages/clerk-js/src/ui/hooks/usePopover.ts b/packages/clerk-js/src/ui/hooks/usePopover.ts index 367a14ca43e..8728e400a50 100644 --- a/packages/clerk-js/src/ui/hooks/usePopover.ts +++ b/packages/clerk-js/src/ui/hooks/usePopover.ts @@ -16,6 +16,8 @@ type UsePopoverProps = { autoUpdate?: boolean; }; +export type UsePopoverReturn = ReturnType; + export const usePopover = (props: UsePopoverProps = {}) => { const [isOpen, setIsOpen] = React.useState(props.defaultOpen || false); const { update, reference, floating, strategy, x, y, context } = useFloating({ diff --git a/packages/clerk-js/src/ui/hooks/useSupportEmail.test.tsx b/packages/clerk-js/src/ui/hooks/useSupportEmail.test.tsx index 5fa5eeccafd..11454ee7684 100644 --- a/packages/clerk-js/src/ui/hooks/useSupportEmail.test.tsx +++ b/packages/clerk-js/src/ui/hooks/useSupportEmail.test.tsx @@ -1,19 +1,19 @@ import { renderHook } from '@clerk/shared/testUtils'; +import { useSupportEmail } from './useSupportEmail'; + const mockUseOptions = jest.fn(); const mockUseEnvironment = jest.fn(); -import { useSupportEmail } from './useSupportEmail'; - -jest.mock('ui/contexts', () => { +jest.mock('../contexts', () => { return { useCoreClerk: () => { return { frontendApi: 'clerk.clerk.dev', }; }, - useEnvironment: mockUseEnvironment, - useOptions: mockUseOptions, + useEnvironment: () => mockUseEnvironment(), + useOptions: () => mockUseOptions(), }; }); diff --git a/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts b/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts index 2ef5c018b93..6c85c55c1d1 100644 --- a/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts +++ b/packages/clerk-js/src/ui/localization/defaultEnglishResource.ts @@ -55,6 +55,10 @@ export const defaultResource: DeepRequired = { footerPageLink__help: 'Help', footerPageLink__privacy: 'Privacy', footerPageLink__terms: 'Terms', + paginationButton__previous: 'Previous', + paginationButton__next: 'Next', + paginationRowText__displaying: 'Displaying', + paginationRowText__of: 'of', signUp: { start: { title: 'Create your account', @@ -294,5 +298,6 @@ export const defaultResource: DeepRequired = { form_param_nil: '', form_code_incorrect: '', form_password_incorrect: '', + not_allowed_access: '', }, } as const; diff --git a/packages/clerk-js/src/ui/localization/makeLocalizable.tsx b/packages/clerk-js/src/ui/localization/makeLocalizable.tsx index 87c584cc44c..aa0018e228c 100644 --- a/packages/clerk-js/src/ui/localization/makeLocalizable.tsx +++ b/packages/clerk-js/src/ui/localization/makeLocalizable.tsx @@ -65,15 +65,15 @@ export const useLocalizations = () => { return localizedStringFromKey(localizationKey, parsedResource, globalTokens); }; - const translateError = (error: string | ClerkAPIError | undefined) => { + const translateError = (error: ClerkAPIError | string | undefined) => { if (!error || typeof error === 'string') { return t(error); } - const { code, message } = error || {}; + const { code, message, longMessage } = error || {}; if (!code) { return ''; } - return t(localizationKeys(`unstable__errors.${code}` as any)) || message; + return t(localizationKeys(`unstable__errors.${code}` as any)) || longMessage || message; }; return { t, translateError }; diff --git a/packages/clerk-js/src/ui/primitives/Table.tsx b/packages/clerk-js/src/ui/primitives/Table.tsx new file mode 100644 index 00000000000..a53950aced6 --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Table.tsx @@ -0,0 +1,36 @@ +import React from 'react'; + +import { createVariants, PrimitiveProps, StyleVariants } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +const { applyVariants, filterProps } = createVariants(theme => { + return { + base: { + borderCollapse: 'collapse', + 'td:not(:first-of-type)': { + paddingLeft: theme.sizes.$2, + }, + 'th:not(:first-of-type)': { + paddingLeft: theme.sizes.$2, + }, + 'tr:not(:last-of-type)>td': { + paddingBottom: theme.sizes.$2, + }, + width: '100%', + }, + variants: {}, + }; +}); + +export type TableProps = PrimitiveProps<'table'> & Omit & StyleVariants; + +export const Table = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/Tbody.tsx b/packages/clerk-js/src/ui/primitives/Tbody.tsx new file mode 100644 index 00000000000..f47f6107708 --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Tbody.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +import { PrimitiveProps } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +export type TbodyProps = PrimitiveProps<'tbody'> & Omit; + +export const Tbody = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/Td.tsx b/packages/clerk-js/src/ui/primitives/Td.tsx new file mode 100644 index 00000000000..5dd1233afbe --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Td.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +import { PrimitiveProps } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +export type TdProps = PrimitiveProps<'td'> & Omit; + +export const Td = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/Th.tsx b/packages/clerk-js/src/ui/primitives/Th.tsx new file mode 100644 index 00000000000..95a00f698c4 --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Th.tsx @@ -0,0 +1,27 @@ +import React from 'react'; + +import { createVariants, PrimitiveProps, StyleVariants } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +const { applyVariants, filterProps } = createVariants(theme => ({ + base: { + textAlign: 'left', + fontWeight: theme.fontWeights.$medium, + borderBottom: theme.borders.$normal, + borderColor: theme.colors.$blackAlpha300, + }, + variants: {}, +})); + +export type ThProps = PrimitiveProps<'th'> & Omit & StyleVariants; + +export const Th = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/Thead.tsx b/packages/clerk-js/src/ui/primitives/Thead.tsx new file mode 100644 index 00000000000..e7500957807 --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Thead.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +import { PrimitiveProps } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +export type TheadProps = PrimitiveProps<'thead'> & Omit; + +export const Thead = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/Tr.tsx b/packages/clerk-js/src/ui/primitives/Tr.tsx new file mode 100644 index 00000000000..f715653e5ff --- /dev/null +++ b/packages/clerk-js/src/ui/primitives/Tr.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +import { PrimitiveProps } from '../styledSystem'; +import { Box, BoxProps } from './Box'; + +export type TrProps = PrimitiveProps<'tr'> & Omit; + +export const Tr = React.forwardRef((props, ref) => { + return ( + + ); +}); diff --git a/packages/clerk-js/src/ui/primitives/index.ts b/packages/clerk-js/src/ui/primitives/index.ts index 36b01bf78e8..ef56c1ae2b3 100644 --- a/packages/clerk-js/src/ui/primitives/index.ts +++ b/packages/clerk-js/src/ui/primitives/index.ts @@ -17,3 +17,9 @@ export * from './FormLabel'; export * from './Form'; export * from './Icon'; export * from './Badge'; +export * from './Table'; +export * from './Thead'; +export * from './Tbody'; +export * from './Tr'; +export * from './Th'; +export * from './Td'; diff --git a/packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx b/packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx index 7693d51fe48..cabc7dfec95 100644 --- a/packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx +++ b/packages/clerk-js/src/ui/router/__mocks__/RouteContext.tsx @@ -1,4 +1,4 @@ -import { noop } from '@clerk/shared/utils'; +import { noop } from '@clerk/shared'; export const useRouter = () => ({ resolve: jest.fn(() => ({ diff --git a/packages/clerk-js/src/ui/styledSystem/types.ts b/packages/clerk-js/src/ui/styledSystem/types.ts index 0b1c2321b07..2ee2d962a13 100644 --- a/packages/clerk-js/src/ui/styledSystem/types.ts +++ b/packages/clerk-js/src/ui/styledSystem/types.ts @@ -25,6 +25,12 @@ type ElementProps = { label: JSX.IntrinsicElements['label']; img: JSX.IntrinsicElements['img']; form: JSX.IntrinsicElements['form']; + table: JSX.IntrinsicElements['table']; + thead: JSX.IntrinsicElements['thead']; + tbody: JSX.IntrinsicElements['tbody']; + th: JSX.IntrinsicElements['th']; + tr: JSX.IntrinsicElements['tr']; + td: JSX.IntrinsicElements['td']; }; /** diff --git a/packages/clerk-js/src/ui/types.ts b/packages/clerk-js/src/ui/types.ts index 0f0b8b2a378..e26645e0da5 100644 --- a/packages/clerk-js/src/ui/types.ts +++ b/packages/clerk-js/src/ui/types.ts @@ -1,4 +1,5 @@ import type { SignInProps, SignUpProps, UserButtonProps, UserProfileProps } from '@clerk/types'; +import { OrganizationProfileProps, OrganizationSwitcherProps } from '@clerk/types'; export type { SignInProps, SignUpProps, UserButtonProps, UserProfileProps }; @@ -26,4 +27,20 @@ export type UserButtonCtx = UserButtonProps & { mode?: ComponentMode; }; -export type AvailableComponentCtx = SignInCtx | SignUpCtx | UserButtonCtx | UserProfileCtx; +export type OrganizationProfileCtx = OrganizationProfileProps & { + componentName: 'OrganizationProfile'; + mode?: ComponentMode; +}; + +export type OrganizationSwitcherCtx = OrganizationSwitcherProps & { + componentName: 'OrganizationSwitcher'; + mode?: ComponentMode; +}; + +export type AvailableComponentCtx = + | SignInCtx + | SignUpCtx + | UserButtonCtx + | UserProfileCtx + | OrganizationProfileCtx + | OrganizationSwitcherCtx; diff --git a/packages/clerk-js/src/ui/utils/colorTransformations.test.ts b/packages/clerk-js/src/ui/utils/colorTransformations.test.ts deleted file mode 100644 index 40a274acb50..00000000000 --- a/packages/clerk-js/src/ui/utils/colorTransformations.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Color } from 'react-color'; - -import { colorToSameTypeString, hexStringToRgbaColor, stringToHslaColor } from './colorTransformations'; - -describe('stringToHslaColor(color)', function () { - const hsla = { h: 195, s: 1, l: 0.5, a: 1 }; - const cases: Array<[string, Color | undefined]> = [ - ['', undefined], - ['transparent', { h: 0, s: 0, l: 0, a: 0 }], - ['#00bfff', hsla], - ['00bfff', hsla], - ['rgb(0, 191, 255)', hsla], - ['rgba(0, 191, 255, 0.3)', { ...hsla, a: 0.3 }], - ['hsla(195, 100%, 50%, 1)', hsla], - ['hsla(195, 100%, 50%, 1)', hsla], - ]; - - it.each(cases)('.stringToHslaColor(%s) => %s', (a, expected) => { - expect(stringToHslaColor(a)).toEqual(expected); - }); -}); - -describe('hexStringToRgbaColor(color)', function () { - const cases: Array<[string, Color | null]> = [ - ['#00bfff', { r: 0, g: 191, b: 255 }], - ['00bfff', { r: 0, g: 191, b: 255 }], - ]; - - it.each(cases)('.hexStringToRgbaColor(%s) => %s', (a, expected) => { - expect(hexStringToRgbaColor(a)).toEqual(expected); - }); -}); - -describe('colorToSameTypeString(color)', function () { - const cases: Array<[Color, string]> = [ - ['', ''], - ['invalid', ''], - ['#12ff12', '#12ff12'], - ['#12ff12', '#12ff12'], - ['#1ff', '#1ff'], - [{ r: 100, g: 100, b: 100, a: undefined }, 'rgb(100,100,100)'], - [{ r: 100, g: 100, b: 100, a: 0.5 }, 'rgba(100,100,100,0.5)'], - [{ h: 100, s: 0.55, l: 0.33, a: undefined }, 'hsl(100,55%,33%)'], - [{ h: 100, s: 1, l: 1, a: 0.5 }, 'hsla(100,100%,100%,0.5)'], - ]; - - it.each(cases)('.colorToSameTypeString(%s) => %s', (a, expected) => { - expect(colorToSameTypeString(a)).toEqual(expected); - }); -}); diff --git a/packages/clerk-js/src/ui/utils/errorHandler.ts b/packages/clerk-js/src/ui/utils/errorHandler.ts index f659e41e43d..38739ede2d6 100644 --- a/packages/clerk-js/src/ui/utils/errorHandler.ts +++ b/packages/clerk-js/src/ui/utils/errorHandler.ts @@ -43,7 +43,11 @@ function parseErrors(errors: ClerkAPIError[]): ParserErrors { } type HandleError = { - (err: Error, fieldStates: Array>, setGlobalError?: (err: string | undefined) => void): void; + ( + err: Error, + fieldStates: Array>, + setGlobalError?: (err: ClerkAPIError | string | undefined) => void, + ): void; }; export const handleError: HandleError = (err, fieldStates, setGlobalError) => { @@ -107,7 +111,7 @@ const handleClerkApiError: HandleError = (err, fieldStates, setGlobalError) => { // TODO: Make global errors localizable const firstGlobalError = globalErrors[0]; if (firstGlobalError) { - setGlobalError(firstGlobalError.longMessage || firstGlobalError.message || undefined); + setGlobalError(firstGlobalError); } } }; diff --git a/packages/clerk-js/src/ui/utils/fastDeepMerge.test.ts b/packages/clerk-js/src/ui/utils/fastDeepMerge.test.ts index a8c541918b0..c7086783e72 100644 --- a/packages/clerk-js/src/ui/utils/fastDeepMerge.test.ts +++ b/packages/clerk-js/src/ui/utils/fastDeepMerge.test.ts @@ -28,6 +28,13 @@ describe('fastDeepMergeReplace', () => { fastDeepMergeAndReplace(source, target); expect(target).toEqual({ a: '1', b: '2', c: '3', obj: { a: '1', b: '2' } }); }); + + it('does not deep-merge arrays', () => { + const source = { obj: { a: 1 }, arr: [1, 2, 3] }; + const target = { obj: { b: 2 }, arr: [1, 2, 3, 4, 5, 6] }; + fastDeepMergeAndReplace(source, target); + expect(target).toEqual({ obj: { a: 1, b: 2 }, arr: [1, 2, 3] }); + }); }); describe('fastDeepMergeKeep', () => { @@ -58,4 +65,11 @@ describe('fastDeepMergeKeep', () => { fastDeepMergeAndKeep(source, target); expect(target).toEqual({ a: '10', b: '2', c: '3', obj: { a: '10', b: '20' } }); }); + + it('does not deep-merge arrays', () => { + const source = { obj: { a: 1 }, arr: [1, 2, 3] }; + const target = { obj: { b: 2 }, arr: [1, 2, 3, 4, 5, 6] }; + fastDeepMergeAndKeep(source, target); + expect(target).toEqual({ obj: { a: 1, b: 2 }, arr: [1, 2, 3, 4, 5, 6] }); + }); }); diff --git a/packages/clerk-js/src/ui/utils/fastDeepMerge.ts b/packages/clerk-js/src/ui/utils/fastDeepMerge.ts index 007eb4cc495..7cec1c3b7fa 100644 --- a/packages/clerk-js/src/ui/utils/fastDeepMerge.ts +++ b/packages/clerk-js/src/ui/utils/fastDeepMerge.ts @@ -12,7 +12,8 @@ export const fastDeepMergeAndReplace = ( } for (const key in source) { - if (source[key] !== null && typeof source[key] === `object`) { + // Deep merge objects but shallow-copy arrays + if (source[key] !== null && typeof source[key] === `object` && !Array.isArray(source[key])) { if (target[key] === undefined) { target[key] = new (Object.getPrototypeOf(source[key]).constructor)(); } @@ -32,7 +33,8 @@ export const fastDeepMergeAndKeep = ( } for (const key in source) { - if (source[key] !== null && typeof source[key] === `object`) { + // Deep merge objects but shallow-copy arrays + if (source[key] !== null && typeof source[key] === `object` && !Array.isArray(source[key])) { if (target[key] === undefined) { target[key] = new (Object.getPrototypeOf(source[key]).constructor)(); } diff --git a/packages/clerk-js/src/ui/utils/getValidReactChildren.ts b/packages/clerk-js/src/ui/utils/getValidReactChildren.ts new file mode 100644 index 00000000000..edf8bae4c9e --- /dev/null +++ b/packages/clerk-js/src/ui/utils/getValidReactChildren.ts @@ -0,0 +1,5 @@ +import React from 'react'; + +export function getValidChildren(children: React.ReactNode) { + return React.Children.toArray(children).filter(child => React.isValidElement(child)) as React.ReactElement[]; +} diff --git a/packages/clerk-js/src/ui/utils/index.ts b/packages/clerk-js/src/ui/utils/index.ts index 929a455c97a..6f39f3c52eb 100644 --- a/packages/clerk-js/src/ui/utils/index.ts +++ b/packages/clerk-js/src/ui/utils/index.ts @@ -3,7 +3,6 @@ export * from './containsAllOf'; export * from './createContextAndHook'; export * from './createInfiniteAccessProxy'; export * from './fastDeepMerge'; -export * from './colorTransformations'; export * from './colors'; export * from './factorSorting'; export * from './sleep'; @@ -16,3 +15,5 @@ export * from './getIdentifier'; export * from './readObjectPath'; export * from './useFormControl'; export * from './errorHandler'; +export * from './range'; +export * from './getValidReactChildren'; diff --git a/packages/clerk-js/src/ui/utils/range.ts b/packages/clerk-js/src/ui/utils/range.ts new file mode 100644 index 00000000000..5ef7ae1c5e6 --- /dev/null +++ b/packages/clerk-js/src/ui/utils/range.ts @@ -0,0 +1 @@ +export const range = (min: number, max: number) => Array.from({ length: max - min + 1 }, (_, i) => min + i); diff --git a/packages/clerk-js/src/utils/cookies/client.ts b/packages/clerk-js/src/utils/cookies/client.ts index 068388d3874..60ce9cd82c3 100644 --- a/packages/clerk-js/src/utils/cookies/client.ts +++ b/packages/clerk-js/src/utils/cookies/client.ts @@ -1,4 +1,4 @@ -import { createCookieHandler } from '@clerk/shared/utils'; +import { createCookieHandler } from '@clerk/shared'; const CLIENT_COOKIE_NAME = '__client'; diff --git a/packages/clerk-js/src/utils/cookies/client_uat.ts b/packages/clerk-js/src/utils/cookies/client_uat.ts index 7bd8476087c..6b9e2258bda 100644 --- a/packages/clerk-js/src/utils/cookies/client_uat.ts +++ b/packages/clerk-js/src/utils/cookies/client_uat.ts @@ -1,4 +1,4 @@ -import { createCookieHandler } from '@clerk/shared/utils'; +import { createCookieHandler } from '@clerk/shared'; const CLIENT_UAT_COOKIE_NAME = '__client_uat'; diff --git a/packages/clerk-js/src/utils/cookies/handler.ts b/packages/clerk-js/src/utils/cookies/handler.ts index 31cfb2d3fef..c9e8598d077 100644 --- a/packages/clerk-js/src/utils/cookies/handler.ts +++ b/packages/clerk-js/src/utils/cookies/handler.ts @@ -1,4 +1,4 @@ -import { addYears } from '@clerk/shared/utils/date'; +import { addYears } from '@clerk/shared'; import type { ClientResource } from '@clerk/types'; import { buildURL, getAllETLDs } from '../url'; diff --git a/packages/clerk-js/src/utils/cookies/initted.ts b/packages/clerk-js/src/utils/cookies/initted.ts index cba25f67add..42dcad0268f 100644 --- a/packages/clerk-js/src/utils/cookies/initted.ts +++ b/packages/clerk-js/src/utils/cookies/initted.ts @@ -1,4 +1,4 @@ -import { createCookieHandler } from '@clerk/shared/utils'; +import { createCookieHandler } from '@clerk/shared'; const INITTED_COOKIE_NAME = '__initted'; diff --git a/packages/clerk-js/src/utils/cookies/session.ts b/packages/clerk-js/src/utils/cookies/session.ts index d1a3b18fd7b..222d0af611e 100644 --- a/packages/clerk-js/src/utils/cookies/session.ts +++ b/packages/clerk-js/src/utils/cookies/session.ts @@ -1,4 +1,4 @@ -import { createCookieHandler } from '@clerk/shared/utils'; +import { createCookieHandler } from '@clerk/shared'; const SESSION_COOKIE_NAME = '__session'; diff --git a/packages/clerk-js/src/utils/pageLifecycle.ts b/packages/clerk-js/src/utils/pageLifecycle.ts index ffbb4524859..b127fdc9d86 100644 --- a/packages/clerk-js/src/utils/pageLifecycle.ts +++ b/packages/clerk-js/src/utils/pageLifecycle.ts @@ -1,4 +1,4 @@ -import { inClientSide } from '@clerk/shared/utils/ssr'; +import { inClientSide } from '@clerk/shared'; const noop = () => { // diff --git a/packages/clerk-js/src/utils/url.ts b/packages/clerk-js/src/utils/url.ts index dbefb00e26c..0c6a2e8d2b4 100644 --- a/packages/clerk-js/src/utils/url.ts +++ b/packages/clerk-js/src/utils/url.ts @@ -1,4 +1,4 @@ -import { camelToSnake, isIPV4Address } from '@clerk/shared/utils/string'; +import { camelToSnake, isIPV4Address } from '@clerk/shared'; import { SignUpResource } from '@clerk/types'; import { loadScript } from '../utils'; diff --git a/packages/edge/CHANGELOG.md b/packages/edge/CHANGELOG.md index 4c0fdee900e..72c63499d60 100644 --- a/packages/edge/CHANGELOG.md +++ b/packages/edge/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [1.12.3-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/edge@1.12.2...@clerk/edge@1.12.3-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/edge + ### [1.12.2](https://github.com/clerkinc/javascript/compare/@clerk/edge@1.12.2-staging.0...@clerk/edge@1.12.2) (2022-10-07) **Note:** Version bump only for package @clerk/edge diff --git a/packages/edge/package.json b/packages/edge/package.json index 92895933bda..68736a551b2 100644 --- a/packages/edge/package.json +++ b/packages/edge/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/edge", - "version": "1.12.2", + "version": "1.12.3-staging.1", "license": "MIT", "description": "Clerk SDK for serverless and edge environments", "keywords": [ @@ -33,11 +33,13 @@ } }, "scripts": { - "build": "node ./scripts/info.cjs && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && ./moduleTypeFix" + "build": "node ./scripts/info.cjs && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && ./moduleTypeFix", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "dependencies": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/node": "^16.11.55", "next": "^12.2.0" @@ -52,7 +54,7 @@ "@types/jest": "^27.4.0", "jest": "^27.4.7", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "repository": { "type": "git", @@ -60,5 +62,6 @@ }, "bugs": { "url": "https://github.com/clerkinc/javascript/issues" - } + }, + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/edge/src/info.ts b/packages/edge/src/info.ts index b237dcaf750..3b75a150d43 100644 --- a/packages/edge/src/info.ts +++ b/packages/edge/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '1.12.2'; +export const LIB_VERSION = '1.12.3-staging.1'; export const LIB_NAME = '@clerk/edge'; diff --git a/packages/edge/src/vercel-edge/types.ts b/packages/edge/src/vercel-edge/types.ts index a31e84b4aa0..3a7669c296c 100644 --- a/packages/edge/src/vercel-edge/types.ts +++ b/packages/edge/src/vercel-edge/types.ts @@ -10,12 +10,12 @@ export type WithEdgeMiddlewareAuthOptions = { strict?: boolean; }; -export type WithEdgeMiddlewareAuthCallback = ( +export type WithEdgeMiddlewareAuthCallback = ( req: RequestWithAuth, event: NextFetchEvent, ) => Return; -export type WithEdgeMiddlewareAuthMiddlewareResult = ( +export type WithEdgeMiddlewareAuthMiddlewareResult = ( req: RequestWithAuth, event: NextFetchEvent, ) => Promise>; @@ -30,7 +30,7 @@ export type RequestWithAuth type NextMiddlewareReturnOptions = NextResponse | Response | null | undefined; export type NextMiddlewareResult = NextMiddlewareReturnOptions; -export type WithAuthNextMiddlewareHandler = ( +export type WithAuthNextMiddlewareHandler = ( req: RequestWithAuth, event: NextFetchEvent, ) => NextMiddlewareResult | Promise; diff --git a/packages/eslint-config-custom/CHANGELOG.md b/packages/eslint-config-custom/CHANGELOG.md new file mode 100644 index 00000000000..b5e4795b9a4 --- /dev/null +++ b/packages/eslint-config-custom/CHANGELOG.md @@ -0,0 +1,8 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +### 0.0.1-staging.1 (2022-10-13) + +**Note:** Version bump only for package eslint-config-custom diff --git a/packages/eslint-config-custom/index.js b/packages/eslint-config-custom/index.js new file mode 100644 index 00000000000..3498db30582 --- /dev/null +++ b/packages/eslint-config-custom/index.js @@ -0,0 +1,43 @@ +module.exports = { + parser: '@typescript-eslint/parser', + env: { + node: true, + browser: true, + }, + parserOptions: { + tsconfigRootDir: __dirname, + project: ['../../tsconfig.eslint.json'], + }, + plugins: ['@typescript-eslint', 'simple-import-sort'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + 'prettier', + 'turbo', + ], + rules: { + curly: 'error', + '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/restrict-template-expressions': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'simple-import-sort/imports': 'error', + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['@emotion/*'], + message: + 'Please do not import emotion directly. Import helpers from ./design-system or ./primitives instead.', + }, + ], + }, + ], + }, +}; diff --git a/packages/eslint-config-custom/package.json b/packages/eslint-config-custom/package.json new file mode 100644 index 00000000000..3c0e1af6bde --- /dev/null +++ b/packages/eslint-config-custom/package.json @@ -0,0 +1,15 @@ +{ + "name": "eslint-config-custom", + "version": "0.0.1-staging.1", + "main": "index.js", + "private": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.15.0", + "@typescript-eslint/parser": "^5.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-turbo": "latest", + "eslint-plugin-react": "7.28.0", + "eslint-plugin-simple-import-sort": "^7.0.0" + } +} diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md index 3eb1507cf0c..dea26b2ebf5 100644 --- a/packages/expo/CHANGELOG.md +++ b/packages/expo/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.9.63-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.62...@clerk/clerk-expo@0.9.63-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/clerk-expo + ### [0.9.62](https://github.com/clerkinc/javascript/compare/@clerk/clerk-expo@0.9.62-staging.1...@clerk/clerk-expo@0.9.62) (2022-10-07) **Note:** Version bump only for package @clerk/clerk-expo diff --git a/packages/expo/package.json b/packages/expo/package.json index 6c63aad5711..69d9173fec0 100644 --- a/packages/expo/package.json +++ b/packages/expo/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-expo", - "version": "0.9.62", + "version": "0.9.63-staging.1", "license": "MIT", "description": "Clerk.dev React Native/Expo library", "keywords": [ @@ -22,16 +22,18 @@ ], "scripts": { "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch" + "dev": "tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "dependencies": { - "@clerk/clerk-js": "^4.9.0", - "@clerk/clerk-react": "^4.2.6", + "@clerk/clerk-js": "^4.10.0-staging.1", + "@clerk/clerk-react": "^4.3.0-staging.1", "base-64": "^1.0.0", "react-native-url-polyfill": "^1.3.0" }, "devDependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "@types/jest": "^27.4.0", "@types/node": "^16.11.55", "@types/react": "^17.0.39", @@ -41,7 +43,7 @@ "react-dom": "17.0.2", "ts-jest": "^27.1.3", "tslib": "^2.3.1", - "typescript": "^4.6.4" + "typescript": "*" }, "peerDependencies": { "react": ">=16" @@ -59,5 +61,6 @@ "bugs": { "url": "https://github.com/clerkinc/javascript/issues" }, - "homepage": "https://clerk.dev/" + "homepage": "https://clerk.dev/", + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/gatsby-plugin-clerk/package.json b/packages/gatsby-plugin-clerk/package.json index a53cbd688b8..b356f53864b 100644 --- a/packages/gatsby-plugin-clerk/package.json +++ b/packages/gatsby-plugin-clerk/package.json @@ -27,7 +27,9 @@ "scripts": { "prepublishOnly": "npm run build", "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch" + "dev": "tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "dependencies": { "@clerk/clerk-react": "^4.2.0-staging.0", @@ -39,7 +41,7 @@ "devDependencies": { "@types/cookie": "^0.5.0", "@types/node": "^16.11.55", - "typescript": "^4.6.4" + "typescript": "*" }, "peerDependencies": { "gatsby": "^4.0.0" diff --git a/packages/gatsby-plugin-clerk/src/ssr/types.ts b/packages/gatsby-plugin-clerk/src/ssr/types.ts index 7fe6ea7325d..e870ff5497f 100644 --- a/packages/gatsby-plugin-clerk/src/ssr/types.ts +++ b/packages/gatsby-plugin-clerk/src/ssr/types.ts @@ -9,7 +9,9 @@ export type GetServerDataPropsWithAuth = (props: GetServerDataPropsWithAuth) => Return; +export type WithServerAuthCallback = ( + props: GetServerDataPropsWithAuth, +) => Return; export type WithServerAuthOptions = { loadUser?: boolean; diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index 2421358a1a9..de4c2902bf8 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [4.5.3-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@4.5.2...@clerk/nextjs@4.5.3-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/nextjs + ### [4.5.2](https://github.com/clerkinc/javascript/compare/@clerk/nextjs@4.5.2-staging.0...@clerk/nextjs@4.5.2) (2022-10-07) **Note:** Version bump only for package @clerk/nextjs diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index a3a8fefdc8f..e32de020d1e 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/nextjs", - "version": "4.5.2", + "version": "4.5.3-staging.1", "license": "MIT", "description": "Clerk.dev SDK for NextJS", "keywords": [ @@ -30,13 +30,15 @@ "scripts": { "prepublishOnly": "npm run build", "build": "tsc -p tsconfig.build.json", + "clean": "rimraf ./dist", + "lint": "eslint .", "dev": "tsc -p tsconfig.build.json --watch" }, "dependencies": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/edge": "^1.12.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/edge": "^1.12.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "tslib": "^2.3.1" }, "devDependencies": { @@ -49,7 +51,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "peerDependencies": { "next": ">=10" @@ -67,5 +69,6 @@ "bugs": { "url": "https://github.com/clerkinc/javascript/issues" }, - "homepage": "https://clerk.dev/" + "homepage": "https://clerk.dev/", + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/nextjs/src/middleware/types.ts b/packages/nextjs/src/middleware/types.ts index 66c55037e2e..6855bc7dfcf 100644 --- a/packages/nextjs/src/middleware/types.ts +++ b/packages/nextjs/src/middleware/types.ts @@ -13,7 +13,9 @@ export type WithServerSideAuthOptions = { authorizedParties?: string[]; }; -export type WithServerSideAuthCallback = (context: ContextWithAuth) => Return; +export type WithServerSideAuthCallback = ( + context: ContextWithAuth, +) => Return; export type WithServerSideAuthResult = ( context: GetServerSidePropsContext, diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index afd55d5d6b1..3a52c1e7d66 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.3.0-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@4.2.6...@clerk/clerk-react@4.3.0-staging.1) (2022-10-13) + +### Features + +- **clerk-js,clerk-react,types:** Wire up `OrganizationSwitcher` and `OrganizationProfile` ([1e34e69](https://github.com/clerkinc/javascript/commit/1e34e6986ee49aeb9ca9f72cdc5d799d6611b53f)) + ### [4.2.6](https://github.com/clerkinc/javascript/compare/@clerk/clerk-react@4.2.6-staging.0...@clerk/clerk-react@4.2.6) (2022-10-07) **Note:** Version bump only for package @clerk/clerk-react diff --git a/packages/react/package.json b/packages/react/package.json index 2b575b88f54..2b46f4a95f4 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/clerk-react", - "version": "4.2.6", + "version": "4.3.0-staging.1", "license": "MIT", "description": "Clerk.dev React library", "keywords": [ @@ -22,12 +22,14 @@ "scripts": { "build": "node ./scripts/info.js && tsc -p tsconfig.build.json", "dev": "node ./scripts/info.js && tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint .", "prepublishOnly": "npm run build", "test:coverage": "echo \"Error: no test specified yet\"", "test": "jest" }, "dependencies": { - "@clerk/types": "^3.10.1", + "@clerk/types": "^3.11.0-staging.1", "swr": "^1.3.0", "tslib": "^2.3.1" }, @@ -48,7 +50,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "peerDependencies": { "react": ">=16" @@ -66,5 +68,6 @@ "homepage": "https://clerk.dev/", "bugs": { "url": "https://github.com/clerkinc/javascript/issues" - } + }, + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/react/src/components/SignInButton.test.tsx b/packages/react/src/components/SignInButton.test.tsx index eb1c695c7cc..e3a23836b7f 100644 --- a/packages/react/src/components/SignInButton.test.tsx +++ b/packages/react/src/components/SignInButton.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, userEvent, waitFor } from '@clerk/shared/utils/testUtils'; +import { render, screen, userEvent, waitFor } from '@clerk/shared/testUtils'; import React from 'react'; import { SignInButton } from './SignInButton'; diff --git a/packages/react/src/components/SignInWithMetamaskButton.test.tsx b/packages/react/src/components/SignInWithMetamaskButton.test.tsx index 35dc28aeed8..77df3cb6138 100644 --- a/packages/react/src/components/SignInWithMetamaskButton.test.tsx +++ b/packages/react/src/components/SignInWithMetamaskButton.test.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/display-name */ -import { render, screen, userEvent, waitFor } from '@clerk/shared/utils/testUtils'; +import { render, screen, userEvent, waitFor } from '@clerk/shared/testUtils'; import React from 'react'; import { SignInWithMetamaskButton } from './SignInWithMetamaskButton'; diff --git a/packages/react/src/components/SignOutButton.test.tsx b/packages/react/src/components/SignOutButton.test.tsx index d8d116087c1..4cd982dd301 100644 --- a/packages/react/src/components/SignOutButton.test.tsx +++ b/packages/react/src/components/SignOutButton.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, userEvent, waitFor } from '@clerk/shared/utils/testUtils'; +import { render, screen, userEvent, waitFor } from '@clerk/shared/testUtils'; import React from 'react'; import { SignOutButton } from './SignOutButton'; diff --git a/packages/react/src/components/SignUpButton.test.tsx b/packages/react/src/components/SignUpButton.test.tsx index 4920978cc54..d5256aed25f 100644 --- a/packages/react/src/components/SignUpButton.test.tsx +++ b/packages/react/src/components/SignUpButton.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, userEvent, waitFor } from '@clerk/shared/utils/testUtils'; +import { render, screen, userEvent, waitFor } from '@clerk/shared/testUtils'; import React from 'react'; import { SignUpButton } from './SignUpButton'; diff --git a/packages/react/src/components/uiComponents.tsx b/packages/react/src/components/uiComponents.tsx index 185c73c27ba..39b2a28c435 100644 --- a/packages/react/src/components/uiComponents.tsx +++ b/packages/react/src/components/uiComponents.tsx @@ -1,4 +1,11 @@ -import { SignInProps, SignUpProps, UserButtonProps, UserProfileProps } from '@clerk/types'; +import { + OrganizationProfileProps, + OrganizationSwitcherProps, + SignInProps, + SignUpProps, + UserButtonProps, + UserProfileProps, +} from '@clerk/types'; import React from 'react'; import { MountProps, WithClerkProp } from '../types'; @@ -101,3 +108,25 @@ export const UserButton = withClerk(({ clerk, ...props }: WithClerkProp ); }, 'UserButton'); + +export const OrganizationProfile = withClerk(({ clerk, ...props }: WithClerkProp) => { + return ( + + ); +}, 'OrganizationProfile'); + +export const OrganizationSwitcher = withClerk(({ clerk, ...props }: WithClerkProp) => { + return ( + + ); +}, 'OrganizationSwitcher'); diff --git a/packages/react/src/info.ts b/packages/react/src/info.ts index 290f7494513..82ecffa07cd 100644 --- a/packages/react/src/info.ts +++ b/packages/react/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '4.2.6'; +export const LIB_VERSION = '4.3.0-staging.1'; export const LIB_NAME = '@clerk/clerk-react'; diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index c0f71874e9a..2a66db14544 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -19,6 +19,7 @@ import type { UserProfileProps, UserResource, } from '@clerk/types'; +import { OrganizationProfileProps, OrganizationSwitcherProps } from '@clerk/types/src'; import { noFrontendApiError } from './errors'; import type { BrowserClerk, BrowserClerkConstructor, ClerkProp, IsomorphicClerkOptions } from './types'; @@ -50,10 +51,13 @@ export default class IsomorphicClerk { private preopenSignIn?: null | SignInProps = null; private preopenSignUp?: null | SignUpProps = null; private preopenUserProfile?: null | UserProfileProps = null; + private preopenOrganizationProfile?: null | OrganizationProfileProps = null; private premountSignInNodes = new Map(); private premountSignUpNodes = new Map(); private premountUserProfileNodes = new Map(); private premountUserButtonNodes = new Map(); + private premountOrganizationProfileNodes = new Map(); + private premountOrganizationSwitcherNodes = new Map(); private premountMethodCalls = new Map, MethodCallback>(); private loadedListeners: Array<() => void> = []; @@ -321,6 +325,22 @@ export default class IsomorphicClerk { } }; + openOrganizationProfile = (props?: OrganizationProfileProps): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.openOrganizationProfile(props); + } else { + this.preopenOrganizationProfile = props; + } + }; + + closeOrganizationProfile = (): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.closeOrganizationProfile(); + } else { + this.preopenOrganizationProfile = null; + } + }; + openSignUp = (props?: SignUpProps): void => { if (this.clerkjs && this.#loaded) { this.clerkjs.openSignUp(props); @@ -385,6 +405,38 @@ export default class IsomorphicClerk { } }; + mountOrganizationProfile = (node: HTMLDivElement, props: OrganizationProfileProps): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.mountOrganizationProfile(node, props); + } else { + this.premountOrganizationProfileNodes.set(node, props); + } + }; + + unmountOrganizationProfile = (node: HTMLDivElement): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.unmountOrganizationProfile(node); + } else { + this.premountOrganizationProfileNodes.delete(node); + } + }; + + mountOrganizationSwitcher = (node: HTMLDivElement, props: OrganizationSwitcherProps): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.mountOrganizationSwitcher(node, props); + } else { + this.premountOrganizationSwitcherNodes.set(node, props); + } + }; + + unmountOrganizationSwitcher = (node: HTMLDivElement): void => { + if (this.clerkjs && this.#loaded) { + this.clerkjs.unmountOrganizationSwitcher(node); + } else { + this.premountOrganizationSwitcherNodes.delete(node); + } + }; + mountUserButton = (node: HTMLDivElement, userButtonProps: UserButtonProps): void => { if (this.clerkjs && this.#loaded) { this.clerkjs.mountUserButton(node, userButtonProps); diff --git a/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx b/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx index 71e902167bb..cd2c223c12a 100644 --- a/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx +++ b/packages/react/src/utils/useMaxAllowedInstancesGuard.tsx @@ -24,7 +24,7 @@ export function withMaxAllowedInstancesGuard

( const displayName = WrappedComponent.displayName || WrappedComponent.name || name || 'Component'; const Hoc = (props: P) => { useMaxAllowedInstancesGuard(name, error); - return ; + return ; }; Hoc.displayName = `withMaxAllowedInstancesGuard(${displayName})`; return Hoc; diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index ae8f6d36b8c..67530dfb318 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [1.3.7-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/remix@1.3.6...@clerk/remix@1.3.7-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/remix + ### [1.3.6](https://github.com/clerkinc/javascript/compare/@clerk/remix@1.3.6-staging.0...@clerk/remix@1.3.6) (2022-10-07) **Note:** Version bump only for package @clerk/remix diff --git a/packages/remix/package.json b/packages/remix/package.json index d4edea1f167..02e1d1b2cbf 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/remix", - "version": "1.3.6", + "version": "1.3.7-staging.1", "license": "MIT", "description": "Clerk.dev SDK for Remix", "keywords": [ @@ -28,12 +28,14 @@ "scripts": { "prepublishOnly": "npm run build", "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch" + "dev": "tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "dependencies": { - "@clerk/clerk-react": "^4.2.6", - "@clerk/clerk-sdk-node": "^4.4.2", - "@clerk/types": "^3.10.1", + "@clerk/clerk-react": "^4.3.0-staging.1", + "@clerk/clerk-sdk-node": "^4.4.3-staging.1", + "@clerk/types": "^3.11.0-staging.1", "cookie": "^0.5.0", "tslib": "^2.3.1" }, @@ -47,7 +49,7 @@ "react": "17.0.2", "react-dom": "17.0.2", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "peerDependencies": { "@remix-run/react": "^1.2.1", @@ -66,5 +68,6 @@ "bugs": { "url": "https://github.com/clerkinc/javascript/issues" }, - "homepage": "https://clerk.dev/" + "homepage": "https://clerk.dev/", + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/remix/src/ssr/types.ts b/packages/remix/src/ssr/types.ts index 67f2bc2d870..17515efdd12 100644 --- a/packages/remix/src/ssr/types.ts +++ b/packages/remix/src/ssr/types.ts @@ -12,7 +12,7 @@ export type RootAuthLoaderOptions = { authorizedParties?: []; }; -export type RootAuthLoaderCallback = ( +export type RootAuthLoaderCallback = ( args: LoaderFunctionArgsWithAuth, ) => RootAuthLoaderCallbackReturn; diff --git a/packages/sdk-node/CHANGELOG.md b/packages/sdk-node/CHANGELOG.md index 0dfd777efb2..b438b0d3bb5 100644 --- a/packages/sdk-node/CHANGELOG.md +++ b/packages/sdk-node/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [4.4.3-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/clerk-sdk-node@4.4.2...@clerk/clerk-sdk-node@4.4.3-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/clerk-sdk-node + ### [4.4.2](https://github.com/clerkinc/javascript/compare/@clerk/clerk-sdk-node@4.4.2-staging.0...@clerk/clerk-sdk-node@4.4.2) (2022-10-07) **Note:** Version bump only for package @clerk/clerk-sdk-node diff --git a/packages/sdk-node/package.json b/packages/sdk-node/package.json index 06571644680..51addba3580 100644 --- a/packages/sdk-node/package.json +++ b/packages/sdk-node/package.json @@ -1,5 +1,5 @@ { - "version": "4.4.2", + "version": "4.4.3-staging.1", "license": "MIT", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -17,8 +17,9 @@ "build:es5": "node ./scripts/info.js && tsc -p tsconfig.build.json", "build:esm": "node ./scripts/info.js && tsc -p tsconfig.esm.json", "build": "run-p build:es5 build:esm", + "clean": "rimraf ./dist", + "lint": "eslint .", "test": "jest", - "lint": "eslint ./src --ext .ts", "pack": "npm pack" }, "name": "@clerk/clerk-sdk-node", @@ -34,11 +35,11 @@ "npm-run-all": "^4.1.5", "prettier": "^2.5.0", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "dependencies": { - "@clerk/backend-core": "^2.8.1", - "@clerk/types": "^3.10.1", + "@clerk/backend-core": "^2.9.0-staging.0", + "@clerk/types": "^3.11.0-staging.1", "@peculiar/webcrypto": "^1.4.0", "@types/cookies": "^0.7.7", "@types/express": "^4.17.11", @@ -69,5 +70,6 @@ "homepage": "https://clerk.dev/", "publishConfig": { "access": "public" - } + }, + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce" } diff --git a/packages/sdk-node/src/info.ts b/packages/sdk-node/src/info.ts index 4ddc7902d06..92730302c21 100644 --- a/packages/sdk-node/src/info.ts +++ b/packages/sdk-node/src/info.ts @@ -1,3 +1,3 @@ /** DO NOT EDIT: This file is automatically generated by ../scripts/info.js */ -export const LIB_VERSION = '4.4.2'; +export const LIB_VERSION = '4.4.3-staging.1'; export const LIB_NAME = '@clerk/clerk-sdk-node'; diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md index be787c070aa..cfca2a29b04 100644 --- a/packages/shared/CHANGELOG.md +++ b/packages/shared/CHANGELOG.md @@ -3,319 +3,6 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -### [0.3.27](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.27-staging.0...@clerk/shared@0.3.27) (2022-10-07) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.26](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.26-staging.0...@clerk/shared@0.3.26) (2022-10-05) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.25](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.25-staging.3...@clerk/shared@0.3.25) (2022-10-03) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.24](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.24-staging.4...@clerk/shared@0.3.24) (2022-09-29) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.23](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.22...@clerk/shared@0.3.23) (2022-09-25) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.22](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.22-staging.1...@clerk/shared@0.3.22) (2022-09-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.21](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.21-staging.0...@clerk/shared@0.3.21) (2022-09-22) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.20](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.19-staging.4...@clerk/shared@0.3.20) (2022-09-19) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.19](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.19-staging.4...@clerk/shared@0.3.19) (2022-09-16) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.18](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.18-staging.0...@clerk/shared@0.3.18) (2022-09-07) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.17](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.17-staging.0...@clerk/shared@0.3.17) (2022-09-02) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.16](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.16-staging.0...@clerk/shared@0.3.16) (2022-08-29) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.15](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.15-staging.2...@clerk/shared@0.3.15) (2022-08-29) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.14](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.14-staging.0...@clerk/shared@0.3.14) (2022-08-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.13](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.12...@clerk/shared@0.3.13) (2022-08-18) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.12](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.12-staging.0...@clerk/shared@0.3.12) (2022-08-18) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.11](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.10...@clerk/shared@0.3.11) (2022-08-16) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.10](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.10-staging.0...@clerk/shared@0.3.10) (2022-08-09) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.9](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.8...@clerk/shared@0.3.9) (2022-08-07) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.8](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.8-staging.1...@clerk/shared@0.3.8) (2022-08-05) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.7](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.6...@clerk/shared@0.3.7) (2022-08-04) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.6](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.5...@clerk/shared@0.3.6) (2022-07-13) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.5](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.5-staging.0...@clerk/shared@0.3.5) (2022-07-12) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.4](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.3...@clerk/shared@0.3.4) (2022-07-07) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.3](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.2...@clerk/shared@0.3.3) (2022-07-06) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.1...@clerk/shared@0.3.2) (2022-07-01) - -**Note:** Version bump only for package @clerk/shared - -### [0.3.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.0...@clerk/shared@0.3.1) (2022-06-24) - -**Note:** Version bump only for package @clerk/shared - -## [0.3.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.0-staging.1...@clerk/shared@0.3.0) (2022-06-16) - -**Note:** Version bump only for package @clerk/shared - -## [0.3.0-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.0-staging.0...@clerk/shared@0.3.0-staging.1) (2022-06-16) - -### Bug Fixes - -- **clerk-js:** Default verification status to unverified if verification is missing ([cac67a0](https://github.com/clerkinc/clerk_docker/commit/cac67a0199c0058ba23a7b74834dfa55915a42ae)) - -### [0.2.8](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.8-staging.3...@clerk/shared@0.2.8) (2022-06-06) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.8-staging.3](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.8-staging.2...@clerk/shared@0.2.8-staging.3) (2022-06-03) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.8-staging.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.8-staging.1...@clerk/shared@0.2.8-staging.2) (2022-06-02) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.8-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.8-staging.0...@clerk/shared@0.2.8-staging.1) (2022-06-01) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.7](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.7-staging.1...@clerk/shared@0.2.7) (2022-05-20) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.7-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.6...@clerk/shared@0.2.7-staging.1) (2022-05-18) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.7-staging.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.6...@clerk/shared@0.2.7-staging.0) (2022-05-17) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.6](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.3...@clerk/shared@0.2.6) (2022-05-13) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.5](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.3...@clerk/shared@0.2.5) (2022-05-12) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.4](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.3...@clerk/shared@0.2.4) (2022-05-12) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.3](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.3-staging.0...@clerk/shared@0.2.3) (2022-05-11) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.1...@clerk/shared@0.2.2) (2022-05-06) - -**Note:** Version bump only for package @clerk/shared - -### [0.2.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.1-staging.0...@clerk/shared@0.2.1) (2022-05-05) - -**Note:** Version bump only for package @clerk/shared - -## [0.2.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.2.0-staging.0...@clerk/shared@0.2.0) (2022-04-28) - -### Reverts - -- Revert "feat(clerk-js,shared): Add support for android WebOTP" ([af090cd](https://github.com/clerkinc/clerk_docker/commit/af090cd43d26d2fb53f00a4eb25e2be4d5c8429f)) - -### [0.1.4](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.4-staging.1...@clerk/shared@0.1.4) (2022-04-19) - -**Note:** Version bump only for package @clerk/shared - -### [0.1.4-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.4-staging.0...@clerk/shared@0.1.4-staging.1) (2022-04-19) - -**Note:** Version bump only for package @clerk/shared - -### [0.1.3](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.3-alpha.0...@clerk/shared@0.1.3) (2022-04-18) - -**Note:** Version bump only for package @clerk/shared - -### [0.1.3-alpha.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.2...@clerk/shared@0.1.3-alpha.0) (2022-04-15) - -**Note:** Version bump only for package @clerk/shared - -### [0.1.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.2-staging.0...@clerk/shared@0.1.2) (2022-04-15) - -**Note:** Version bump only for package @clerk/shared - -### [0.1.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.1.1-staging.0...@clerk/shared@0.1.1) (2022-04-13) - -**Note:** Version bump only for package @clerk/shared - -## [0.1.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.21...@clerk/shared@0.1.0) (2022-04-07) - -### Features - -- **clerk-js,shared:** Autofill OTP using WebOTP on Android ([eb41c34](https://github.com/clerkinc/clerk_docker/commit/eb41c34392ebee5f8b725c4172b2be77b68a0baf)) -- **clerk-js,shared:** Rely on onChange event to fill OTP inputs ([b6811b4](https://github.com/clerkinc/clerk_docker/commit/b6811b4259894bec472953a4b3f0ec50ad7996ab)) - -### [0.0.21](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.21-staging.0...@clerk/shared@0.0.21) (2022-04-04) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.20](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.20-staging.0...@clerk/shared@0.0.20) (2022-03-29) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.19](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.19-staging.0...@clerk/shared@0.0.19) (2022-03-28) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.18](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.18-alpha.0...@clerk/shared@0.0.18) (2022-03-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.18-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.18-staging.0...@clerk/shared@0.0.18-staging.1) (2022-03-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.17-alpha.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.17-staging.0...@clerk/shared@0.0.17-alpha.0) (2022-03-23) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.5](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-alpha.4...@clerk/shared@0.0.16-alpha.5) (2022-03-23) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.4](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-alpha.3...@clerk/shared@0.0.16-alpha.4) (2022-03-23) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.3](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-alpha.2...@clerk/shared@0.0.16-alpha.3) (2022-03-22) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-staging.0...@clerk/shared@0.0.16-alpha.2) (2022-03-22) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-staging.0...@clerk/shared@0.0.16-alpha.1) (2022-03-20) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.16-alpha.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.16-staging.0...@clerk/shared@0.0.16-alpha.0) (2022-03-19) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.15](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.15-staging.1...@clerk/shared@0.0.15) (2022-03-17) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.15-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.15-staging.0...@clerk/shared@0.0.15-staging.1) (2022-03-17) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.13](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.12...@clerk/shared@0.0.13) (2022-03-11) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.12](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.12-staging.0...@clerk/shared@0.0.12) (2022-03-09) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.10](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.9...@clerk/shared@0.0.10) (2022-03-04) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.9](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.8...@clerk/shared@0.0.9) (2022-03-04) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.8](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.7...@clerk/shared@0.0.8) (2022-03-03) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.7](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.6...@clerk/shared@0.0.7) (2022-03-02) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.6](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.5...@clerk/shared@0.0.6) (2022-03-01) - -### Bug Fixes - -- **shared:** Phone input should start blank ([43f0b06](https://github.com/clerkinc/clerk_docker/commit/43f0b0603608866f6b9e0a37a284c0ea72c0004b)) - -### [0.0.5](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.5-staging.0...@clerk/shared@0.0.5) (2022-02-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.5-staging.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.4-staging.0...@clerk/shared@0.0.5-staging.0) (2022-02-24) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.4-staging.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.3-staging.0...@clerk/shared@0.0.4-staging.0) (2022-02-17) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.3-staging.0](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.2...@clerk/shared@0.0.3-staging.0) (2022-02-15) - -**Note:** Version bump only for package @clerk/shared - -### [0.0.2](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.0.2-staging.0...@clerk/shared@0.0.2) (2022-02-14) - -**Note:** Version bump only for package @clerk/shared - -### 0.0.2-staging.0 (2022-02-11) +### [0.0.2-staging.1](https://github.com/clerkinc/clerk_docker/compare/@clerk/shared@0.3.27...@clerk/shared@0.0.2-staging.1) (2022-10-13) **Note:** Version bump only for package @clerk/shared diff --git a/packages/shared/global.d.ts b/packages/shared/global.d.ts index 53d688f03fb..8c7a4b73b56 100644 --- a/packages/shared/global.d.ts +++ b/packages/shared/global.d.ts @@ -1,5 +1,6 @@ -declare namespace NodeJS { - interface Process { - browser: boolean; - } +export {}; + +declare global { + const PACKAGE_VERSION: string; + const __DEV__: boolean; } diff --git a/packages/shared/index.d.ts b/packages/shared/index.d.ts deleted file mode 100644 index 590a7f4c9d1..00000000000 --- a/packages/shared/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './components'; -export * from './utils'; diff --git a/packages/shared/jest.config.js b/packages/shared/jest.config.js deleted file mode 100644 index 7c953a5f850..00000000000 --- a/packages/shared/jest.config.js +++ /dev/null @@ -1,49 +0,0 @@ -module.exports = { - // The root of your source code, typically /src - // `` is a token Jest substitutes - roots: [''], - testEnvironment: 'jsdom', - - // Global settings - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.test.json', - }, - }, - - // Coverage - collectCoverageFrom: [ - '**/*.{js,jsx,ts,tsx}', - '!**/*.d.ts', - '!**/index.ts', - '!**/*.config.{js,ts}', - '!**/coverage/**', - '!**/node_modules/**', - ], - - setupFilesAfterEnv: ['./../../setupJest.afterEnv.js'], - - // Jest transformations -- this adds support for TypeScript - // using ts-jest - transform: { - '^.+\\.tsx?$': 'ts-jest', - '\\.svg?$': '/utils/svgTransform.js', - }, - - // Test spec file resolution pattern - // Matches parent folder `__tests__` and filename - // should contain `test` or `spec`. - testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', - - // Module file extensions for importings - transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$', '^.+\\.module\\.(css|sass|scss)$'], - - // Use an ES6 Proxy to mock CSS Modules and resource our testUtils - // https://jestjs.io/docs/en/webpack#mocking-css-modules - moduleNameMapper: { - testUtils: '/utils/testUtils', - '\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - '/__mocks__/fileMock.js', - '\\.(css|less|scss|sass)$': 'identity-obj-proxy', - }, -}; diff --git a/packages/shared/package.json b/packages/shared/package.json index 148694f5e33..41afacdfcb0 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,63 +1,43 @@ { "name": "@clerk/shared", - "version": "0.3.27", - "private": true, - "main": "index.js", - "module": "index.js", - "typings": "index.d.ts", - "sideEffects": false, + "version": "0.0.2-staging.1", + "description": "Internal package utils used by the Clerk SDKs", + "types": "./dist/types/index.d.ts", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "files": [ + "dist", + "testUtils" + ], "scripts": { - "test": "jest", - "test:watch": "jest --watch", - "test:coverage": "jest --collectCoverage" - }, - "peerDependencies": { - "@popperjs/core": "^2.5.4", - "@svgr/webpack": "^6.2.1", - "core-js": "^3.18.3", - "js-cookie": "^2.2.1", - "react": "17.0.2", - "react-color": "2.19.3", - "react-dom": "17.0.2", - "react-popper": "^2.2.4", - "regenerator-runtime": "^0.13.7" + "dev": "tsup --watch", + "build": "tsup --env.NODE_ENV production", + "clean": "rimraf ./dist", + "lint": "eslint .", + "test": "vitest run", + "test:watch": "vitest" }, "devDependencies": { - "@babel/core": "^7.13.14", - "@babel/preset-env": "^7.13.12", - "@babel/preset-react": "^7.13.13", - "@clerk/types": "^3.10.1", - "@popperjs/core": "^2.5.4", - "@sentry/browser": "^6.3.0", - "@svgr/webpack": "^6.2.1", + "@clerk/types": "^3.11.0-staging.1", + "@types/js-cookie": "^3.0.2", + "js-cookie": "^3.0.1", + "tsup": "^6.2.3", + "typescript": "*", + "vitest": "^0.23.4" + }, + "peerDependencies": { "@testing-library/dom": "^7.28.1", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.1", "@testing-library/react-hooks": "^3.4.2", "@testing-library/user-event": "^12.2.2", - "@types/babel__core": "^7", - "@types/babel__preset-env": "^7", - "@types/classnames": "^2", - "@types/jest": "^27.4.0", - "@types/js-cookie": "^2", - "@types/node": "^16.11.55", - "@types/react": "^17.0.39", - "@types/react-color": "^3.0.4", - "@types/react-dom": "^17.0.11", - "@types/react-test-renderer": "^17", - "@types/testing-library__jest-dom": "^5", - "@types/testing-library__react-hooks": "^3", - "classnames": "^2.3.1", - "clipboard-copy": "^4.0.1", - "core-js": "^3.18.3", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.7", - "js-cookie": "^2.2.1", "react": "17.0.2", - "react-color": "2.19.3", - "react-dom": "17.0.2", - "react-popper": "^2.2.4", - "react-test-renderer": "17.0.2", - "ts-jest": "^27.1.3" + "react-dom": "17.0.2" + }, + "author": "", + "license": "ISC", + "gitHead": "1b19a43b61f712756ab4d8c9ccbee6e8bddbe4ce", + "publishConfig": { + "access": "public" } } diff --git a/packages/shared/index.js b/packages/shared/src/index.ts similarity index 100% rename from packages/shared/index.js rename to packages/shared/src/index.ts diff --git a/packages/shared/src/testUtils/index.ts b/packages/shared/src/testUtils/index.ts new file mode 100644 index 00000000000..f6f5b15ff09 --- /dev/null +++ b/packages/shared/src/testUtils/index.ts @@ -0,0 +1 @@ +export * from './testUtils'; diff --git a/packages/shared/utils/testUtils.ts b/packages/shared/src/testUtils/testUtils.ts similarity index 100% rename from packages/shared/utils/testUtils.ts rename to packages/shared/src/testUtils/testUtils.ts diff --git a/packages/shared/utils/array.test.ts b/packages/shared/src/utils/array.test.ts similarity index 92% rename from packages/shared/utils/array.test.ts rename to packages/shared/src/utils/array.test.ts index 98d65d671ed..07854bdc440 100644 --- a/packages/shared/utils/array.test.ts +++ b/packages/shared/src/utils/array.test.ts @@ -1,6 +1,6 @@ import { toSentence } from './array'; -describe('toSentence', () => { +describe.concurrent('toSentence', () => { it('returns a single item as-is', () => { expect(toSentence(['xyz'])).toBe('xyz'); expect(toSentence(['abc'])).toBe('abc'); diff --git a/packages/shared/utils/array.ts b/packages/shared/src/utils/array.ts similarity index 100% rename from packages/shared/utils/array.ts rename to packages/shared/src/utils/array.ts diff --git a/packages/shared/utils/browser.test.ts b/packages/shared/src/utils/browser.test.ts similarity index 75% rename from packages/shared/utils/browser.test.ts rename to packages/shared/src/utils/browser.test.ts index 8b2404bbbfc..8c06171c58f 100644 --- a/packages/shared/utils/browser.test.ts +++ b/packages/shared/src/utils/browser.test.ts @@ -1,6 +1,6 @@ import { inBrowser } from './browser'; -describe('inBrowser()', () => { +describe.concurrent('inBrowser()', () => { it('returns true if window is defined', () => { expect(inBrowser()).toBe(true); }); diff --git a/packages/shared/utils/browser.ts b/packages/shared/src/utils/browser.ts similarity index 100% rename from packages/shared/utils/browser.ts rename to packages/shared/src/utils/browser.ts diff --git a/packages/shared/utils/color/cssColorUtils.test.ts b/packages/shared/src/utils/color/cssColorUtils.test.ts similarity index 88% rename from packages/shared/utils/color/cssColorUtils.test.ts rename to packages/shared/src/utils/color/cssColorUtils.test.ts index 41143d78498..bc5d4a4c1dd 100644 --- a/packages/shared/utils/color/cssColorUtils.test.ts +++ b/packages/shared/src/utils/color/cssColorUtils.test.ts @@ -1,8 +1,8 @@ -import { Color } from 'react-color'; +import { Color } from '@clerk/types'; import { colorToSameTypeString, hexStringToRgbaColor, stringToHslaColor, stringToSameTypeColor } from './cssColorUtils'; -describe('stringToHslaColor(color)', function () { +describe.concurrent('stringToHslaColor(color)', function () { const hsla = { h: 195, s: 1, l: 0.5 }; const cases: Array<[string, Color | null]> = [ ['', null], @@ -18,7 +18,7 @@ describe('stringToHslaColor(color)', function () { }); }); -describe('hexStringToRgbaColor(color)', function () { +describe.concurrent('hexStringToRgbaColor(color)', function () { const cases: Array<[string, Color | null]> = [ ['#00bfff', { r: 0, g: 191, b: 255 }], ['00bfff', { r: 0, g: 191, b: 255 }], @@ -29,7 +29,7 @@ describe('hexStringToRgbaColor(color)', function () { }); }); -describe('stringToSameTypeColor(color)', function () { +describe.concurrent('stringToSameTypeColor(color)', function () { const cases: Array<[string, Color | null]> = [ ['', ''], ['invalid', ''], @@ -52,7 +52,7 @@ describe('stringToSameTypeColor(color)', function () { }); }); -describe('colorToSameTypeString(color)', function () { +describe.concurrent('colorToSameTypeString(color)', function () { const cases: Array<[Color, string]> = [ ['', ''], ['invalid', ''], diff --git a/packages/shared/utils/color/cssColorUtils.ts b/packages/shared/src/utils/color/cssColorUtils.ts similarity index 100% rename from packages/shared/utils/color/cssColorUtils.ts rename to packages/shared/src/utils/color/cssColorUtils.ts diff --git a/packages/shared/utils/color/index.ts b/packages/shared/src/utils/color/index.ts similarity index 100% rename from packages/shared/utils/color/index.ts rename to packages/shared/src/utils/color/index.ts diff --git a/packages/shared/utils/color/predicates.ts b/packages/shared/src/utils/color/predicates.ts similarity index 100% rename from packages/shared/utils/color/predicates.ts rename to packages/shared/src/utils/color/predicates.ts diff --git a/packages/shared/utils/cookies.ts b/packages/shared/src/utils/cookies.ts similarity index 85% rename from packages/shared/utils/cookies.ts rename to packages/shared/src/utils/cookies.ts index b701c1da92a..ee87cf233d9 100644 --- a/packages/shared/utils/cookies.ts +++ b/packages/shared/src/utils/cookies.ts @@ -1,4 +1,4 @@ -import Cookies, { CookieAttributes } from 'js-cookie'; +import Cookies from 'js-cookie'; type LocationAttributes = { path?: string; @@ -13,7 +13,7 @@ export function createCookieHandler(cookieName: string) { /** * Setting a cookie will use some defaults such as path being set to "/". */ - set(newValue: string, options: CookieAttributes = {}) { + set(newValue: string, options: Cookies.CookieAttributes = {}) { return Cookies.set(cookieName, newValue, options); }, /** diff --git a/packages/shared/utils/date.test.ts b/packages/shared/src/utils/date.test.ts similarity index 91% rename from packages/shared/utils/date.test.ts rename to packages/shared/src/utils/date.test.ts index ce9e23bf464..d93b4eb1418 100644 --- a/packages/shared/utils/date.test.ts +++ b/packages/shared/src/utils/date.test.ts @@ -1,7 +1,7 @@ import { addYears, dateTo12HourTime, differenceInCalendarDays, formatRelative } from './date'; -describe('date utils', () => { - describe('dateTo12HourTime(date)', () => { +describe.concurrent('date utils', () => { + describe.concurrent('dateTo12HourTime(date)', () => { const cases: Array<[Date | undefined, string]> = [ [undefined, ''], [new Date('1/1/2020 23:15'), '11:15 PM'], @@ -16,7 +16,7 @@ describe('date utils', () => { }); }); - describe('differenceInCalendarDays(date1, date2)', () => { + describe.concurrent('differenceInCalendarDays(date1, date2)', () => { const cases: Array<[Date | undefined, Date, { absolute: boolean }, number]> = [ [undefined, new Date(), { absolute: true }, 0], [new Date('1/1/2020'), new Date('1/2/2020'), { absolute: true }, 1], @@ -35,7 +35,7 @@ describe('date utils', () => { }); }); - describe('formatRelative(date)', () => { + describe.concurrent('formatRelative(date)', () => { const cases: Array<[Date | undefined, Date | undefined, string]> = [ [undefined, undefined, ''], [new Date('1/1/2020 23:15'), new Date('1/1/2020'), 'today at 11:15 PM'], @@ -52,7 +52,7 @@ describe('date utils', () => { }); }); - describe('addYears(date, number)', () => { + describe.concurrent('addYears(date, number)', () => { const cases: Array<[Date, number, Date]> = [ [new Date('1/1/2020 23:15'), 1, new Date('1/1/2021 23:15')], [new Date('1/1/2019 23:15'), 1, new Date('1/1/2020 23:15')], diff --git a/packages/shared/utils/date.ts b/packages/shared/src/utils/date.ts similarity index 100% rename from packages/shared/utils/date.ts rename to packages/shared/src/utils/date.ts diff --git a/packages/shared/utils/file.ts b/packages/shared/src/utils/file.ts similarity index 100% rename from packages/shared/utils/file.ts rename to packages/shared/src/utils/file.ts diff --git a/packages/shared/src/utils/index.ts b/packages/shared/src/utils/index.ts new file mode 100644 index 00000000000..133276ea77c --- /dev/null +++ b/packages/shared/src/utils/index.ts @@ -0,0 +1,16 @@ +export * from './array'; +export * from './browser'; +export * from './color'; +export * from './cookies'; +export * from './date'; +export * from './file'; +export * from './index'; +export * from './isRetinaDisplay'; +export * from './localStorageBroadcastChannel'; +export * from './mimeTypeExtensions'; +export * from './noop'; +export * from './object'; +export * from './poller'; +export * from './ssr'; +export * from './string'; +export * from './url'; diff --git a/packages/shared/utils/isRetinaDisplay.ts b/packages/shared/src/utils/isRetinaDisplay.ts similarity index 100% rename from packages/shared/utils/isRetinaDisplay.ts rename to packages/shared/src/utils/isRetinaDisplay.ts diff --git a/packages/shared/utils/localStorageBroadcastChannel.test.ts b/packages/shared/src/utils/localStorageBroadcastChannel.test.ts similarity index 81% rename from packages/shared/utils/localStorageBroadcastChannel.test.ts rename to packages/shared/src/utils/localStorageBroadcastChannel.test.ts index 5f060b3f0be..10c823b4dad 100644 --- a/packages/shared/utils/localStorageBroadcastChannel.test.ts +++ b/packages/shared/src/utils/localStorageBroadcastChannel.test.ts @@ -1,17 +1,20 @@ +import { vi } from 'vitest'; + import { LocalStorageBroadcastChannel } from './localStorageBroadcastChannel'; const bcName = 'clerk'; -describe('LocalStorageBroadcastChannel', () => { + +describe.concurrent('LocalStorageBroadcastChannel', () => { let localStorageMock; beforeEach(() => { localStorageMock = (() => { const store: Record = {}; return { - setItem: jest.fn((key, value) => { + setItem: vi.fn((key, value) => { store[key] = value; window.dispatchEvent(new StorageEvent('storage', { key, newValue: value })); }), - removeItem: jest.fn(key => { + removeItem: vi.fn(key => { store[key] = undefined; window.dispatchEvent(new Event('storage')); }), @@ -21,9 +24,9 @@ describe('LocalStorageBroadcastChannel', () => { }); it('notifies other LocalStorageBroadcastChannel with same name', () => { - const tab1ClerkBCListener = jest.fn(); - const tab1DifferentBCListener = jest.fn(); - const tab2ClerkBCListener = jest.fn(); + const tab1ClerkBCListener = vi.fn(); + const tab1DifferentBCListener = vi.fn(); + const tab2ClerkBCListener = vi.fn(); const tab1ClerkBC = new LocalStorageBroadcastChannel(bcName); const tab1DifferentBC = new LocalStorageBroadcastChannel('somethingElse'); diff --git a/packages/shared/utils/localStorageBroadcastChannel.ts b/packages/shared/src/utils/localStorageBroadcastChannel.ts similarity index 100% rename from packages/shared/utils/localStorageBroadcastChannel.ts rename to packages/shared/src/utils/localStorageBroadcastChannel.ts diff --git a/packages/shared/utils/mimeTypeExtensions.ts b/packages/shared/src/utils/mimeTypeExtensions.ts similarity index 100% rename from packages/shared/utils/mimeTypeExtensions.ts rename to packages/shared/src/utils/mimeTypeExtensions.ts diff --git a/packages/shared/utils/noop.ts b/packages/shared/src/utils/noop.ts similarity index 100% rename from packages/shared/utils/noop.ts rename to packages/shared/src/utils/noop.ts diff --git a/packages/shared/utils/object.test.ts b/packages/shared/src/utils/object.test.ts similarity index 98% rename from packages/shared/utils/object.test.ts rename to packages/shared/src/utils/object.test.ts index 01b42cd4569..5229170c2ad 100644 --- a/packages/shared/utils/object.test.ts +++ b/packages/shared/src/utils/object.test.ts @@ -1,6 +1,6 @@ import { deepCamelToSnake, deepSnakeToCamel } from './object'; -describe('camelToSnakeKeys', () => { +describe.concurrent('camelToSnakeKeys', () => { it('creates a copy and does not modify the original', () => { const original = { an_arr: [{ hello_there: 'hey' }], diff --git a/packages/shared/utils/object.ts b/packages/shared/src/utils/object.ts similarity index 100% rename from packages/shared/utils/object.ts rename to packages/shared/src/utils/object.ts diff --git a/packages/shared/utils/poller.ts b/packages/shared/src/utils/poller.ts similarity index 100% rename from packages/shared/utils/poller.ts rename to packages/shared/src/utils/poller.ts diff --git a/packages/shared/utils/ssr.ts b/packages/shared/src/utils/ssr.ts similarity index 100% rename from packages/shared/utils/ssr.ts rename to packages/shared/src/utils/ssr.ts diff --git a/packages/shared/utils/string.test.ts b/packages/shared/src/utils/string.test.ts similarity index 85% rename from packages/shared/utils/string.test.ts rename to packages/shared/src/utils/string.test.ts index db64e565c10..0d7aaa3f62f 100644 --- a/packages/shared/utils/string.test.ts +++ b/packages/shared/src/utils/string.test.ts @@ -1,6 +1,6 @@ import { isIPV4Address, titleize } from './string'; -describe('isIPV4Address(str)', () => { +describe.concurrent('isIPV4Address(str)', () => { it('checks if as string is an IP V4', () => { expect(isIPV4Address(null)).toBe(false); expect(isIPV4Address(undefined)).toBe(false); @@ -9,7 +9,7 @@ describe('isIPV4Address(str)', () => { }); }); -describe('titleize(str)', () => { +describe.concurrent('titleize(str)', () => { it('titleizes the string', () => { expect(titleize(null)).toBe(''); expect(titleize(undefined)).toBe(''); diff --git a/packages/shared/utils/string.ts b/packages/shared/src/utils/string.ts similarity index 100% rename from packages/shared/utils/string.ts rename to packages/shared/src/utils/string.ts diff --git a/packages/shared/utils/url.test.ts b/packages/shared/src/utils/url.test.ts similarity index 89% rename from packages/shared/utils/url.test.ts rename to packages/shared/src/utils/url.test.ts index 8d06b7a94a7..4a8dd9e0e99 100644 --- a/packages/shared/utils/url.test.ts +++ b/packages/shared/src/utils/url.test.ts @@ -1,6 +1,6 @@ import { parseSearchParams } from './url'; -describe('parseSearchParams(queryString)', () => { +describe.concurrent('parseSearchParams(queryString)', () => { it('parses query string and returns a URLSearchParams object', () => { let searchParams = parseSearchParams(''); expect(searchParams.get('foo')).toBeNull(); diff --git a/packages/shared/utils/url.ts b/packages/shared/src/utils/url.ts similarity index 100% rename from packages/shared/utils/url.ts rename to packages/shared/src/utils/url.ts diff --git a/packages/shared/testUtils.d.ts b/packages/shared/testUtils.d.ts deleted file mode 100644 index 73050a43b22..00000000000 --- a/packages/shared/testUtils.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './utils/testUtils'; diff --git a/packages/shared/testUtils.js b/packages/shared/testUtils.js deleted file mode 100644 index 7d062decd48..00000000000 --- a/packages/shared/testUtils.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./utils/testUtils'); diff --git a/packages/shared/testUtils/package.json b/packages/shared/testUtils/package.json new file mode 100644 index 00000000000..61203e7748e --- /dev/null +++ b/packages/shared/testUtils/package.json @@ -0,0 +1,6 @@ +{ + "name": "testUtils", + "main": "../dist/testUtils/index.js", + "module": "../dist/testUtils/index.mjs", + "types": "../dist/types/testUtils/index.d.ts" +} diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json index f862ea732df..de640a6217a 100644 --- a/packages/shared/tsconfig.json +++ b/packages/shared/tsconfig.json @@ -1,14 +1,19 @@ { "compilerOptions": { - "baseUrl": "./", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "importHelpers": true, - "jsx": "react", - "lib": ["dom", "dom.iterable", "esnext"], - "module": "es2020", + "isolatedModules": true, "moduleResolution": "node", + "preserveWatchOutput": true, + "skipLibCheck": true, "strict": true, - "target": "ES2017" - } + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + "outDir": "dist", + "resolveJsonModule": true, + "declarationDir": "dist/types" + }, + "exclude": ["node_modules"], + "include": ["src/index.ts", "src/testUtils/index.ts", "global.d.ts"] } diff --git a/packages/shared/tsconfig.test.json b/packages/shared/tsconfig.test.json deleted file mode 100644 index 2a4a5aeb50f..00000000000 --- a/packages/shared/tsconfig.test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "jsx": "react", - "strict": false - } -} diff --git a/packages/shared/tsup.config.ts b/packages/shared/tsup.config.ts new file mode 100644 index 00000000000..c660434d51c --- /dev/null +++ b/packages/shared/tsup.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'tsup'; + +// @ts-expect-error +import { version } from './package.json'; + +export default defineConfig(overrideOptions => { + const isProd = overrideOptions.env?.NODE_ENV === 'production'; + + return { + entry: ['src/index.ts', 'src/testUtils/index.ts'], + onSuccess: 'tsc', + minify: isProd, + clean: true, + sourcemap: true, + format: ['cjs', 'esm'], + define: { PACKAGE_VERSION: `"${version}"`, __DEV__: `${!isProd}` }, + external: ['@testing-library', 'react', 'react-test-renderer'], + }; +}); diff --git a/packages/shared/utils/index.ts b/packages/shared/utils/index.ts deleted file mode 100644 index f06f27b309d..00000000000 --- a/packages/shared/utils/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from './browser'; -export * from './cookies'; -export * from './file'; -export * from './noop'; -export * from './object'; -export * from './string'; -export * from './url'; -export * from './ssr'; diff --git a/packages/shared/utils/svgTransform.js b/packages/shared/utils/svgTransform.js deleted file mode 100644 index 472f3f896d4..00000000000 --- a/packages/shared/utils/svgTransform.js +++ /dev/null @@ -1,22 +0,0 @@ -/* eslint-disable */ -const path = require('path'); -const babel = require('@babel/core'); -const reactPreset = require('@babel/preset-react'); -const presetEnv = require('@babel/preset-env'); - -module.exports = { - process(_, filename) { - const code = babel.transform( - ` - import React from 'react'; - export default () => (); - `, - { - filename, - presets: [presetEnv, reactPreset], - retainLines: true, - }, - ).code; - return code; - }, -}; diff --git a/packages/shared/vite.config.ts b/packages/shared/vite.config.ts new file mode 100644 index 00000000000..527089358ab --- /dev/null +++ b/packages/shared/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + environment: 'jsdom', + }, +}); diff --git a/packages/themes/CHANGELOG.md b/packages/themes/CHANGELOG.md index 174225928d0..ac42c9c64c9 100644 --- a/packages/themes/CHANGELOG.md +++ b/packages/themes/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [1.2.18-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/themes@1.2.17...@clerk/themes@1.2.18-staging.1) (2022-10-13) + +**Note:** Version bump only for package @clerk/themes + ### [1.2.17](https://github.com/clerkinc/javascript/compare/@clerk/themes@1.2.17-staging.0...@clerk/themes@1.2.17) (2022-10-07) **Note:** Version bump only for package @clerk/themes diff --git a/packages/themes/package.json b/packages/themes/package.json index 597dba7ca24..b31205508c4 100644 --- a/packages/themes/package.json +++ b/packages/themes/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/themes", - "version": "1.2.17", + "version": "1.2.18-staging.1", "license": "MIT", "description": "Themes for the Clerk auth components", "keywords": [ @@ -23,11 +23,13 @@ ], "scripts": { "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch" + "dev": "tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "devDependencies": { - "@clerk/types": "^3.10.1", - "typescript": "^4.6.4" + "@clerk/types": "^3.11.0-staging.1", + "typescript": "*" }, "peerDependencies": { "react": ">=16" diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index f72a7808e54..a12caceb292 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.11.0-staging.1](https://github.com/clerkinc/javascript/compare/@clerk/types@3.10.1...@clerk/types@3.11.0-staging.1) (2022-10-13) + +### Features + +- **clerk-js,clerk-react,types:** Wire up `OrganizationSwitcher` and `OrganizationProfile` ([1e34e69](https://github.com/clerkinc/javascript/commit/1e34e6986ee49aeb9ca9f72cdc5d799d6611b53f)) +- **clerk-js:** Add table and pagination elements ([cb56f5c](https://github.com/clerkinc/javascript/commit/cb56f5c0313ba6f1fce50eae6fc3e3d596cf1b16)) + +### Bug Fixes + +- **clerk-js:** Add appearance customization support for avatar gradient ([96cde45](https://github.com/clerkinc/javascript/commit/96cde45b4f1db5ff074289b57ff58c40bf80f6e1)) +- **clerk-js:** Add global not_allowed_access error to localization prop ([0313fe5](https://github.com/clerkinc/javascript/commit/0313fe5ce4e0afca20865ad1b6d0503502ea6e4d)) +- **types:** Remove unused hideNavigation prop from UserProfile ([21cafcb](https://github.com/clerkinc/javascript/commit/21cafcb488d66f90a3b0a13a2079d9b0473ecf7e)) + ### [3.10.1](https://github.com/clerkinc/javascript/compare/@clerk/types@3.10.1-staging.0...@clerk/types@3.10.1) (2022-10-07) **Note:** Version bump only for package @clerk/types diff --git a/packages/types/package.json b/packages/types/package.json index e07b580a824..3d5009e962c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@clerk/types", - "version": "3.10.1", + "version": "3.11.0-staging.1", "license": "MIT", "description": "Typings for Clerk libraries.", "keywords": [ @@ -17,13 +17,14 @@ "main": "dist/index.js", "typings": "dist/index.d.ts", "files": [ - "dist", - "src" + "dist" ], "scripts": { "prepublishOnly": "npm run build", "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch" + "dev": "tsc -p tsconfig.build.json --watch", + "clean": "rimraf ./dist", + "lint": "eslint ." }, "dependencies": { "csstype": "^3.1.0" @@ -32,7 +33,7 @@ "@types/jest": "^27.4.0", "jest": "^27.4.7", "ts-jest": "^27.1.3", - "typescript": "^4.6.4" + "typescript": "*" }, "engines": { "node": ">=14" diff --git a/packages/types/src/appearance.ts b/packages/types/src/appearance.ts index 8158a3e76fc..53bc964844e 100644 --- a/packages/types/src/appearance.ts +++ b/packages/types/src/appearance.ts @@ -206,7 +206,7 @@ export type ElementsConfig = { formFieldInputCopyToClipboardButton: WithOptions; formFieldInputCopyToClipboardIcon: WithOptions; - avatar: WithOptions; + avatarBox: WithOptions; avatarImage: WithOptions; // TODO: We can remove "Popover" from these: @@ -361,6 +361,13 @@ export type Variables = { * The background color for the card container. */ colorBackground?: CssColor; + + /* + * If a user hasn't provided an avatar image, a colorful gradient avatar will be shown as fallback. + * To customise the gradient,pass an array of CSS colors. + * @default ['#6C47FF', '#5BC5EF', '#FBD486', '#BEF972', '#FF8F8F']; + */ + colorAvatarGradient?: CssColor[]; /** * The default text color inside input elements. To customise the input background color instead, use {@link Variables.colorInputBackground}. * @default The value of {@link Variables.colorText} @@ -505,6 +512,8 @@ export type SignInTheme = Theme; export type SignUpTheme = Theme; export type UserButtonTheme = Theme; export type UserProfileTheme = Theme; +export type OrganizationSwitcherTheme = Theme; +export type OrganizationProfileTheme = Theme; export type Appearance = T & { /** @@ -523,4 +532,12 @@ export type Appearance = T & { * Theme overrides that only apply to the `` component */ userProfile?: T; + /** + * Theme overrides that only apply to the `` component + */ + organizationSwitcher?: T; + /** + * Theme overrides that only apply to the `` component + */ + organizationProfile?: T; }; diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index 48a9bb02af0..24a1944196f 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -1,4 +1,12 @@ -import { Appearance, SignInTheme, SignUpTheme, UserButtonTheme, UserProfileTheme } from './appearance'; +import { + Appearance, + OrganizationProfileTheme, + OrganizationSwitcherTheme, + SignInTheme, + SignUpTheme, + UserButtonTheme, + UserProfileTheme, +} from './appearance'; import { ClientResource } from './client'; import { DisplayThemeJSON } from './json'; import { LocalizationResource } from './localization'; @@ -98,6 +106,17 @@ export interface Clerk { */ closeUserProfile: () => void; + /** + * Opens the Clerk OrganizationProfile modal. + * @param props Optional props that will be passed to the OrganizationProfile component. + */ + openOrganizationProfile: (props?: OrganizationProfileProps) => void; + + /** + * Closes the Clerk OrganizationProfile modal. + */ + closeOrganizationProfile: () => void; + /** * Mounts a sign in flow component at the target element. * @param targetNode Target node to mount the SignIn component. @@ -161,6 +180,32 @@ export interface Clerk { */ unmountUserProfile: (targetNode: HTMLDivElement) => void; + /** + * Mount an organization profile component at the target element. + * @param targetNode Target to mount the UserProfile component. + * @param props Configuration parameters. + */ + mountOrganizationProfile: (targetNode: HTMLDivElement, props?: OrganizationProfileProps) => void; + + /** + * Unmount the organization profile component from the target node. + * @param targetNode Target node to unmount the UserProfile component from. + */ + unmountOrganizationProfile: (targetNode: HTMLDivElement) => void; + + /** + * Mount an organization switcher component at the target element. + * @param targetNode Target to mount the UserProfile component. + * @param props Configuration parameters. + */ + mountOrganizationSwitcher: (targetNode: HTMLDivElement, props?: OrganizationSwitcherProps) => void; + + /** + * Unmount the organization profile component from the target node.* + * @param targetNode Target node to unmount the UserProfile component from. + */ + unmountOrganizationSwitcher: (targetNode: HTMLDivElement) => void; + /** * Register a listener that triggers a callback each time important Clerk resources are changed. * Allows to hook up at different steps in the sign up, sign in processes. @@ -416,6 +461,27 @@ export type SignUpProps = { } & RedirectOptions; export type UserProfileProps = { + /* + * Page routing strategy + */ + routing?: RoutingStrategy; + /* + * Root URL where the component is mounted on, eg: '/user' + */ + path?: string; + /* + * Renders only a specific view of the component eg: 'security' + */ + only?: 'account' | 'security'; + /** + * Customisation options to fully match the Clerk components to your own brand. + * These options serve as overrides and will be merged with the global `appearance` + * prop of ClerkProvided (if one is provided) + */ + appearance?: UserProfileTheme; +}; + +export type OrganizationProfileProps = { /* * Page routing strategy */ @@ -437,7 +503,7 @@ export type UserProfileProps = { * These options serve as overrides and will be merged with the global `appearance` * prop of ClerkProvided (if one is provided) */ - appearance?: UserProfileTheme; + appearance?: OrganizationProfileTheme; }; export type UserButtonProps = { @@ -487,6 +553,24 @@ export type UserButtonProps = { appearance?: UserButtonTheme & { userProfile?: UserProfileTheme }; }; +export type OrganizationSwitcherProps = { + /** + Controls the default state of the OrganizationSwitcher + */ + defaultOpen?: boolean; + /** + * Full URL or path to navigate after successful account change. + * Multi-session mode only. + */ + afterSwitchSessionUrl?: string; + /** + * Customisation options to fully match the Clerk components to your own brand. + * These options serve as overrides and will be merged with the global `appearance` + * prop of ClerkProvided (if one is provided) + */ + appearance?: OrganizationSwitcherTheme; +}; + export interface HandleMagicLinkVerificationParams { /** * Full URL or path to navigate after successful magic link verification diff --git a/packages/types/src/localization.ts b/packages/types/src/localization.ts index 50e0fe85bdf..a48cf8dad7e 100644 --- a/packages/types/src/localization.ts +++ b/packages/types/src/localization.ts @@ -55,6 +55,10 @@ type _LocalizationResource = { footerPageLink__help: LocalizationValue; footerPageLink__privacy: LocalizationValue; footerPageLink__terms: LocalizationValue; + paginationButton__previous: LocalizationValue; + paginationButton__next: LocalizationValue; + paginationRowText__displaying: LocalizationValue; + paginationRowText__of: LocalizationValue; signUp: { start: { title: LocalizationValue; @@ -304,5 +308,6 @@ type _LocalizationResource = { form_param_nil: LocalizationValue; form_code_incorrect: LocalizationValue; form_password_incorrect: LocalizationValue; + not_allowed_access: LocalizationValue; }; }; diff --git a/playground/nextjs/.eslintrc.json b/playground/nextjs/.eslintrc.json new file mode 100644 index 00000000000..bffb357a712 --- /dev/null +++ b/playground/nextjs/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/playground/nextjs/.gitignore b/playground/nextjs/.gitignore new file mode 100644 index 00000000000..c87c9b392c0 --- /dev/null +++ b/playground/nextjs/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/playground/nextjs/README.md b/playground/nextjs/README.md new file mode 100644 index 00000000000..c87e0421d22 --- /dev/null +++ b/playground/nextjs/README.md @@ -0,0 +1,34 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/playground/nextjs/next.config.js b/playground/nextjs/next.config.js new file mode 100644 index 00000000000..aab0bc034af --- /dev/null +++ b/playground/nextjs/next.config.js @@ -0,0 +1,17 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + swcMinify: true, + // Configure webpack NOT to ignore node_modules changes for HMR + webpack: config => { + config.snapshot = { + ...(config.snapshot ?? {}), + // Add all node_modules but @next module to managedPaths + // Allows for hot refresh of changes to @next module + managedPaths: [/^(.+?[\\/]node_modules[\\/])(?!@next)/], + }; + return config; + }, +}; + +module.exports = nextConfig; diff --git a/playground/nextjs/package-lock.json b/playground/nextjs/package-lock.json new file mode 100644 index 00000000000..e7b34441cee --- /dev/null +++ b/playground/nextjs/package-lock.json @@ -0,0 +1,5574 @@ +{ + "name": "@playground/nextjs", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@playground/nextjs", + "version": "0.1.0", + "dependencies": { + "@clerk/backend-core": "file:../../packages/backend-core/", + "@clerk/clerk-react": "file:../../packages/react/", + "@clerk/clerk-sdk-node": "file:../../packages/sdk-node/", + "@clerk/edge": "file:../../packages/edge/", + "@clerk/nextjs": "file:../../packages/nextjs/", + "@clerk/shared": "file:../../packages/common/", + "@clerk/types": "file:../../packages/types/", + "next": "12.3.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.21", + "@types/react-dom": "18.0.6", + "eslint": "8.24.0", + "eslint-config-next": "12.3.1", + "typescript": "4.8.4" + } + }, + "../../packages/backend-core": { + "version": "2.8.1", + "license": "MIT", + "dependencies": { + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/node": "^16.11.55", + "@types/node-fetch": "^2", + "node-fetch": "^2.6.0", + "query-string": "^7.0.1", + "snakecase-keys": "^5.4.4", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "jest": "^27.4.7", + "nock": "^13.2.1", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=14" + } + }, + "../../packages/common": { + "version": "0.0.1", + "license": "ISC", + "devDependencies": { + "tsup": "^6.2.3", + "typescript": "^4.6.4", + "vitest": "^0.23.4" + } + }, + "../../packages/common/dist": { + "extraneous": true + }, + "../../packages/edge": { + "version": "1.12.2", + "license": "MIT", + "dependencies": { + "@clerk/backend-core": "^2.8.1", + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/node": "^16.11.55", + "next": "^12.2.0" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "jest": "^27.4.7", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=12" + } + }, + "../../packages/nextjs": { + "name": "@clerk/nextjs", + "version": "4.5.2", + "license": "MIT", + "dependencies": { + "@clerk/clerk-react": "^4.2.6", + "@clerk/clerk-sdk-node": "^4.4.2", + "@clerk/edge": "^1.12.2", + "@clerk/types": "^3.10.1", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "jest": "^27.4.7", + "next": "^12.2.3", + "react": "17.0.2", + "react-dom": "17.0.2", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "next": ">=10" + } + }, + "../../packages/react": { + "name": "@clerk/clerk-react", + "version": "4.2.6", + "license": "MIT", + "dependencies": { + "@clerk/types": "^3.10.1", + "swr": "^1.3.0", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@testing-library/dom": "^7.28.1", + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.1", + "@testing-library/react-hooks": "^3.4.2", + "@testing-library/user-event": "^12.2.2", + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "@types/react-test-renderer": "^17", + "@types/testing-library__jest-dom": "^5", + "@types/testing-library__react-hooks": "^3", + "jest": "^27.4.7", + "react": "17.0.2", + "react-dom": "17.0.2", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "../../packages/react/dist": { + "extraneous": true + }, + "../../packages/sdk-node": { + "version": "4.4.2", + "license": "MIT", + "dependencies": { + "@clerk/backend-core": "^2.8.1", + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/cookies": "^0.7.7", + "@types/express": "^4.17.11", + "@types/jsonwebtoken": "^8.5.6", + "@types/node-fetch": "^2", + "camelcase-keys": "^6.2.2", + "cookies": "^0.8.0", + "deepmerge": "^4.2.2", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^2.0.4", + "node-fetch": "^2.6.0", + "snakecase-keys": "^3.2.1", + "tslib": "^2.3.1" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "jest": "^27.4.7", + "nock": "^13.0.7", + "npm-run-all": "^4.1.5", + "prettier": "^2.5.0", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=14" + } + }, + "../../packages/types": { + "version": "3.10.1", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.0" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "jest": "^27.4.7", + "ts-jest": "^27.1.3", + "typescript": "*" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz", + "integrity": "sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@clerk/backend-core": { + "resolved": "../../packages/backend-core", + "link": true + }, + "node_modules/@clerk/clerk-react": { + "resolved": "../../packages/react", + "link": true + }, + "node_modules/@clerk/clerk-sdk-node": { + "resolved": "../../packages/sdk-node", + "link": true + }, + "node_modules/@clerk/edge": { + "resolved": "../../packages/edge", + "link": true + }, + "node_modules/@clerk/nextjs": { + "resolved": "../../packages/nextjs", + "link": true + }, + "node_modules/@clerk/shared": { + "resolved": "../../packages/common", + "link": true + }, + "node_modules/@clerk/types": { + "resolved": "../../packages/types", + "link": true + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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==", + "dev": true + }, + "node_modules/@next/env": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", + "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz", + "integrity": "sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", + "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", + "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", + "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", + "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-freebsd-x64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", + "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", + "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", + "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", + "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", + "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", + "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", + "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", + "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", + "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", + "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", + "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", + "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.39.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001416", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz", + "integrity": "sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/core-js-pure": { + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", + "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.1.tgz", + "integrity": "sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "12.3.1", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.21.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.8", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz", + "integrity": "sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", + "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", + "dependencies": { + "@next/env": "12.3.1", + "@swc/helpers": "0.4.11", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.0.7", + "use-sync-external-store": "1.2.0" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=12.22.0" + }, + "optionalDependencies": { + "@next/swc-android-arm-eabi": "12.3.1", + "@next/swc-android-arm64": "12.3.1", + "@next/swc-darwin-arm64": "12.3.1", + "@next/swc-darwin-x64": "12.3.1", + "@next/swc-freebsd-x64": "12.3.1", + "@next/swc-linux-arm-gnueabihf": "12.3.1", + "@next/swc-linux-arm64-gnu": "12.3.1", + "@next/swc-linux-arm64-musl": "12.3.1", + "@next/swc-linux-x64-gnu": "12.3.1", + "@next/swc-linux-x64-musl": "12.3.1", + "@next/swc-win32-arm64-msvc": "12.3.1", + "@next/swc-win32-ia32-msvc": "12.3.1", + "@next/swc-win32-x64-msvc": "12.3.1" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^6.0.0 || ^7.0.0", + "react": "^17.0.2 || ^18.0.0-0", + "react-dom": "^17.0.2 || ^18.0.0-0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", + "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz", + "integrity": "sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g==", + "dev": true, + "requires": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.4" + } + }, + "@clerk/backend-core": { + "version": "file:../../packages/backend-core", + "requires": { + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "@types/node-fetch": "^2", + "jest": "^27.4.7", + "nock": "^13.2.1", + "node-fetch": "^2.6.0", + "query-string": "^7.0.1", + "snakecase-keys": "^5.4.4", + "ts-jest": "^27.1.3", + "tslib": "^2.3.1", + "typescript": "*" + } + }, + "@clerk/clerk-react": { + "version": "file:../../packages/react", + "requires": { + "@clerk/types": "^3.10.1", + "@testing-library/dom": "^7.28.1", + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.1", + "@testing-library/react-hooks": "^3.4.2", + "@testing-library/user-event": "^12.2.2", + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "@types/react-test-renderer": "^17", + "@types/testing-library__jest-dom": "^5", + "@types/testing-library__react-hooks": "^3", + "jest": "^27.4.7", + "react": "17.0.2", + "react-dom": "17.0.2", + "swr": "^1.3.0", + "ts-jest": "^27.1.3", + "tslib": "^2.3.1", + "typescript": "*" + } + }, + "@clerk/clerk-sdk-node": { + "version": "file:../../packages/sdk-node", + "requires": { + "@clerk/backend-core": "^2.8.1", + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/cookies": "^0.7.7", + "@types/express": "^4.17.11", + "@types/jest": "^27.4.0", + "@types/jsonwebtoken": "^8.5.6", + "@types/node-fetch": "^2", + "camelcase-keys": "^6.2.2", + "cookies": "^0.8.0", + "deepmerge": "^4.2.2", + "jest": "^27.4.7", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^2.0.4", + "nock": "^13.0.7", + "node-fetch": "^2.6.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.5.0", + "snakecase-keys": "^3.2.1", + "ts-jest": "^27.1.3", + "tslib": "^2.3.1", + "typescript": "*" + } + }, + "@clerk/edge": { + "version": "file:../../packages/edge", + "requires": { + "@clerk/backend-core": "^2.8.1", + "@clerk/types": "^3.10.1", + "@peculiar/webcrypto": "^1.4.0", + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "jest": "^27.4.7", + "next": "^12.2.0", + "ts-jest": "^27.1.3", + "typescript": "*" + } + }, + "@clerk/nextjs": { + "version": "file:../../packages/nextjs", + "requires": { + "@clerk/clerk-react": "^4.2.6", + "@clerk/clerk-sdk-node": "^4.4.2", + "@clerk/edge": "^1.12.2", + "@clerk/types": "^3.10.1", + "@types/jest": "^27.4.0", + "@types/node": "^16.11.55", + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "jest": "^27.4.7", + "next": "^12.2.3", + "react": "17.0.2", + "react-dom": "17.0.2", + "ts-jest": "^27.1.3", + "tslib": "^2.3.1", + "typescript": "*" + } + }, + "@clerk/shared": { + "version": "file:../../packages/common", + "requires": { + "tsup": "^6.2.3", + "typescript": "^4.6.4", + "vitest": "^0.23.4" + } + }, + "@clerk/types": { + "version": "file:../../packages/types", + "requires": { + "@types/jest": "^27.4.0", + "csstype": "^3.1.0", + "jest": "^27.4.7", + "ts-jest": "^27.1.3", + "typescript": "*" + } + }, + "@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "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==", + "dev": true + }, + "@next/env": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", + "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==" + }, + "@next/eslint-plugin-next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz", + "integrity": "sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw==", + "dev": true, + "requires": { + "glob": "7.1.7" + } + }, + "@next/swc-android-arm-eabi": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", + "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", + "optional": true + }, + "@next/swc-android-arm64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", + "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", + "optional": true + }, + "@next/swc-darwin-arm64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", + "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", + "optional": true + }, + "@next/swc-darwin-x64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", + "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", + "optional": true + }, + "@next/swc-freebsd-x64": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", + "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", + "optional": true + }, + "@next/swc-linux-arm-gnueabihf": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", + "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", + "optional": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", + "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", + "optional": true + }, + "@next/swc-linux-arm64-musl": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", + "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", + "optional": true + }, + "@next/swc-linux-x64-gnu": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", + "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", + "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", + "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", + "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", + "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rushstack/eslint-patch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", + "dev": true + }, + "@swc/helpers": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", + "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "requires": { + "tslib": "^2.4.0" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/node": { + "version": "18.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", + "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.0.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", + "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", + "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@typescript-eslint/parser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" + } + }, + "@typescript-eslint/types": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.39.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001416", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz", + "integrity": "sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "core-js-pure": { + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", + "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "es-abstract": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + } + }, + "eslint-config-next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.1.tgz", + "integrity": "sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==", + "dev": true, + "requires": { + "@next/eslint-plugin-next": "12.3.1", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.21.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-react": { + "version": "7.31.8", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz", + "integrity": "sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "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 + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "next": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", + "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", + "requires": { + "@next/env": "12.3.1", + "@next/swc-android-arm-eabi": "12.3.1", + "@next/swc-android-arm64": "12.3.1", + "@next/swc-darwin-arm64": "12.3.1", + "@next/swc-darwin-x64": "12.3.1", + "@next/swc-freebsd-x64": "12.3.1", + "@next/swc-linux-arm-gnueabihf": "12.3.1", + "@next/swc-linux-arm64-gnu": "12.3.1", + "@next/swc-linux-arm64-musl": "12.3.1", + "@next/swc-linux-x64-gnu": "12.3.1", + "@next/swc-linux-x64-musl": "12.3.1", + "@next/swc-win32-arm64-msvc": "12.3.1", + "@next/swc-win32-ia32-msvc": "12.3.1", + "@next/swc-win32-x64-msvc": "12.3.1", + "@swc/helpers": "0.4.11", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.0.7", + "use-sync-external-store": "1.2.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "styled-jsx": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", + "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", + "requires": {} + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "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 + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/playground/nextjs/package.json b/playground/nextjs/package.json new file mode 100644 index 00000000000..4f5e06508c1 --- /dev/null +++ b/playground/nextjs/package.json @@ -0,0 +1,25 @@ +{ + "name": "@playground/nextjs", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "rm -rf .next && next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@clerk/nextjs": "file:../../packages/nextjs/", + "next": "12.3.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "18.8.3", + "@types/react": "18.0.21", + "@types/react-dom": "18.0.6", + "eslint": "8.24.0", + "eslint-config-next": "12.3.1", + "typescript": "4.8.4" + } +} diff --git a/playground/nextjs/pages/_app.tsx b/playground/nextjs/pages/_app.tsx new file mode 100644 index 00000000000..21e4fb80b59 --- /dev/null +++ b/playground/nextjs/pages/_app.tsx @@ -0,0 +1,21 @@ +import '../styles/globals.css'; +import type { AppProps } from 'next/app'; + +import { ClerkProvider, SignedOut, SignIn } from '@clerk/nextjs'; + +function MyApp({ Component, pageProps }: AppProps) { + return ( + + + + + + + ); +} + +export default MyApp; diff --git a/playground/nextjs/pages/api/hello.ts b/playground/nextjs/pages/api/hello.ts new file mode 100644 index 00000000000..eb4cc6657b3 --- /dev/null +++ b/playground/nextjs/pages/api/hello.ts @@ -0,0 +1,10 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import type { NextApiRequest, NextApiResponse } from 'next'; + +type Data = { + name: string; +}; + +export default function handler(req: NextApiRequest, res: NextApiResponse) { + res.status(200).json({ name: 'John Doe' }); +} diff --git a/playground/nextjs/pages/index.tsx b/playground/nextjs/pages/index.tsx new file mode 100644 index 00000000000..9613544210c --- /dev/null +++ b/playground/nextjs/pages/index.tsx @@ -0,0 +1,86 @@ +import type { NextPage } from 'next'; +import Head from 'next/head'; +import Image from 'next/image'; +import styles from '../styles/Home.module.css'; + +const Home: NextPage = () => { + return ( +

+ ); +}; + +export default Home; diff --git a/playground/nextjs/public/favicon.ico b/playground/nextjs/public/favicon.ico new file mode 100644 index 00000000000..718d6fea483 Binary files /dev/null and b/playground/nextjs/public/favicon.ico differ diff --git a/playground/nextjs/public/vercel.svg b/playground/nextjs/public/vercel.svg new file mode 100644 index 00000000000..fbf0e25a651 --- /dev/null +++ b/playground/nextjs/public/vercel.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/playground/nextjs/styles/Home.module.css b/playground/nextjs/styles/Home.module.css new file mode 100644 index 00000000000..83c0edbe20b --- /dev/null +++ b/playground/nextjs/styles/Home.module.css @@ -0,0 +1,129 @@ +.container { + padding: 0 2rem; +} + +.main { + min-height: 100vh; + padding: 4rem 0; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.footer { + display: flex; + flex: 1; + padding: 2rem 0; + border-top: 1px solid #eaeaea; + justify-content: center; + align-items: center; +} + +.footer a { + display: flex; + justify-content: center; + align-items: center; + flex-grow: 1; +} + +.title a { + color: #0070f3; + text-decoration: none; +} + +.title a:hover, +.title a:focus, +.title a:active { + text-decoration: underline; +} + +.title { + margin: 0; + line-height: 1.15; + font-size: 4rem; +} + +.title, +.description { + text-align: center; +} + +.description { + margin: 4rem 0; + line-height: 1.5; + font-size: 1.5rem; +} + +.code { + background: #fafafa; + border-radius: 5px; + padding: 0.75rem; + font-size: 1.1rem; + font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, + monospace; +} + +.grid { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + max-width: 800px; +} + +.card { + margin: 1rem; + padding: 1.5rem; + text-align: left; + color: inherit; + text-decoration: none; + border: 1px solid #eaeaea; + border-radius: 10px; + transition: color 0.15s ease, border-color 0.15s ease; + max-width: 300px; +} + +.card:hover, +.card:focus, +.card:active { + color: #0070f3; + border-color: #0070f3; +} + +.card h2 { + margin: 0 0 1rem 0; + font-size: 1.5rem; +} + +.card p { + margin: 0; + font-size: 1.25rem; + line-height: 1.5; +} + +.logo { + height: 1em; + margin-left: 0.5rem; +} + +@media (max-width: 600px) { + .grid { + width: 100%; + flex-direction: column; + } +} + +@media (prefers-color-scheme: dark) { + .card, + .footer { + border-color: #222; + } + .code { + background: #111; + } + .logo img { + filter: invert(1); + } +} diff --git a/playground/nextjs/styles/globals.css b/playground/nextjs/styles/globals.css new file mode 100644 index 00000000000..aa3b7f2a5b3 --- /dev/null +++ b/playground/nextjs/styles/globals.css @@ -0,0 +1,26 @@ +html, +body { + padding: 0; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, + Helvetica Neue, sans-serif; +} + +a { + color: inherit; + text-decoration: none; +} + +* { + box-sizing: border-box; +} + +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + } + body { + color: white; + background: black; + } +} diff --git a/playground/nextjs/tsconfig.json b/playground/nextjs/tsconfig.json new file mode 100644 index 00000000000..99710e85787 --- /dev/null +++ b/playground/nextjs/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 763a0535fca..995f938ee24 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -3,5 +3,5 @@ "compilerOptions": { "noEmit": true }, - "include": ["packages/*/src", "packages/*/*.js"] + "include": ["packages/*/src", "packages/*/*.js", "packages/*/*.config.ts"] } diff --git a/tsconfig.json b/tsconfig.json index 2f81a5b4bcb..72561fa78a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,7 +22,6 @@ "pretty": true, "sourceMap": false, "strict": true, - // "types": ["node"], "target": "ES2019", "noErrorTruncation": true }, diff --git a/turbo.json b/turbo.json index 92aa1d5b0fd..787e64329fc 100644 --- a/turbo.json +++ b/turbo.json @@ -1,13 +1,25 @@ { - "npmClient": "npm", - "baseBranch": "origin/main", + "$schema": "https://turborepo.org/schema.json", "pipeline": { "build": { "dependsOn": ["^build"], "outputs": [] }, + "dev": { + "dependsOn": [], + "cache": false + }, + "clean": { + "dependsOn": [], + "cache": false + }, "test": { "dependsOn": ["build"], + "outputs": [], + "inputs": ["src/**/*.tsx", "src/**/*.ts", "test/**/*.ts", "test/**/*.tsx"] + }, + "lint": { + "dependsOn": [], "outputs": [] } }