diff --git a/frontend/codegen.ts b/frontend/codegen.ts index 481639ab..f438bd19 100644 --- a/frontend/codegen.ts +++ b/frontend/codegen.ts @@ -9,6 +9,9 @@ const config: CodegenConfig = { preset: "client", plugins: [], }, + "./src/gql/schema.ts": { + plugins: ["urql-introspection"], + }, }, hooks: { afterAllFileWrite: ["eslint --fix"] }, }; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 85b0110f..a4a261cf 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,29 +9,31 @@ "version": "0.0.0", "dependencies": { "@urql/core": "^4.0.4", + "@urql/exchange-graphcache": "^6.0.1", "date-fns": "^2.29.3", "graphql": "^16.6.0", "jotai": "^2.0.4", "jotai-location": "^0.5.1", - "jotai-urql": "^0.6.0", + "jotai-urql": "^0.7.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "@graphql-codegen/cli": "^3.3.0", "@graphql-codegen/client-preset": "^3.0.0", + "@graphql-codegen/urql-introspection": "^2.2.1", "@graphql-eslint/eslint-plugin": "^3.18.0", - "@storybook/addon-actions": "^7.0.5", - "@storybook/addon-backgrounds": "^7.0.5", - "@storybook/addon-controls": "^7.0.5", - "@storybook/addon-docs": "^7.0.5", - "@storybook/addon-essentials": "^7.0.5", - "@storybook/addon-measure": "^7.0.5", - "@storybook/addon-outline": "^7.0.5", - "@storybook/addon-toolbars": "^7.0.5", - "@storybook/addon-viewport": "^7.0.5", - "@storybook/react": "^7.0.5", - "@storybook/react-vite": "^7.0.5", + "@storybook/addon-actions": "^7.0.6", + "@storybook/addon-backgrounds": "^7.0.6", + "@storybook/addon-controls": "^7.0.6", + "@storybook/addon-docs": "^7.0.6", + "@storybook/addon-essentials": "^7.0.6", + "@storybook/addon-measure": "^7.0.6", + "@storybook/addon-outline": "^7.0.6", + "@storybook/addon-toolbars": "^7.0.6", + "@storybook/addon-viewport": "^7.0.6", + "@storybook/react": "^7.0.6", + "@storybook/react-vite": "^7.0.6", "@types/node": "^18.15.11", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", @@ -46,7 +48,7 @@ "postcss": "^8.4.22", "prettier": "^2.8.7", "react-test-renderer": "^18.2.0", - "storybook": "^7.0.5", + "storybook": "^7.0.6", "tailwindcss": "^3.3.1", "typescript": "^5.0.4", "vite": "^4.2.2", @@ -3034,6 +3036,73 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/@graphql-codegen/urql-introspection": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/urql-introspection/-/urql-introspection-2.2.1.tgz", + "integrity": "sha512-/KjHSf4dQNoYZZ+G10b3lbw304ik9xHzRf/syNvoYehmwdYE5J7RnO1v1Cz78LDm2NEdsFas6vJHi0sJd/pOHg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@urql/introspection": "^0.3.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/urql-introspection/node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/urql-introspection/node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/urql-introspection/node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/@graphql-codegen/urql-introspection/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, "node_modules/@graphql-codegen/visitor-plugin-common": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-3.1.0.tgz", @@ -3939,19 +4008,19 @@ "dev": true }, "node_modules/@storybook/addon-actions": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.5.tgz", - "integrity": "sha512-+291rPr9Qms+93xdxejsGFPgZEAgdWlf/UkxEcpyhBkaY17haoFPkcEh2xxEpIx2pwWsTPEwHrd1Si8+Xz5nCQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.6.tgz", + "integrity": "sha512-H592lkj06bJMX4uwmZI3AVpRFPQ8nkM5j+eo+JQdv0QX9lLZWKnhrGkGDTC/QMSnXMdgHooq0ce9PdGaDvUm1Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -3979,19 +4048,19 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.5.tgz", - "integrity": "sha512-Xy9ZalEzIxiGv/+jsbDRDKwELVJqdMVoarrY6OkbDZJ0YckEBbiBTwfHur+VsHsoO19bS3l9i+22y7ePBIntTQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.6.tgz", + "integrity": "sha512-jOmZq19xS8Ge5TEc49jrO7Qbmxg+6vmCwA04s1OApzmugEcscgtzBvplbw+FeXbSSjT6MM1c7u8XYVioDrzTXw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -4013,20 +4082,20 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.5.tgz", - "integrity": "sha512-Fd3aUmFQ4iBfvpVrQ+rNi7PBgencxrvHx1CG6gtx27D8TKwb/y7iuel2ru6X1Qz/kvQcZl06ZB86zH+QljK9/w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.6.tgz", + "integrity": "sha512-yNaJ42CJxlPMKV9mpkuaiXrQXnjWhsgLASpZcZsE5+KyAqcS/iue9UWO+M/u5zt2/zb4w8BW4GysmvBKl0VDKQ==", "dev": true, "dependencies": { - "@storybook/blocks": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-common": "7.0.5", - "@storybook/manager-api": "7.0.5", - "@storybook/node-logger": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/blocks": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-common": "7.0.6", + "@storybook/manager-api": "7.0.6", + "@storybook/node-logger": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -4048,28 +4117,28 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.5.tgz", - "integrity": "sha512-JAnV2wkRTs0raGoSJ4ufrZYCKe2jwcHDCUUUdRgRkI1oPsRZdXnaRscUgIJ2Eju6W4KK0Ibi/Qpe+8Wj+CpTpg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.6.tgz", + "integrity": "sha512-l5m2sGch9vexy4O0Oe6akyTbaV0+yh9Ihm4ez8FtZkDy8UTtPsKeZ4cdpkg7Lpwa4kYVMV6i2R3xI07/kwhqGg==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/csf-plugin": "7.0.5", - "@storybook/csf-tools": "7.0.5", + "@storybook/blocks": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/csf-plugin": "7.0.6", + "@storybook/csf-tools": "7.0.6", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.0.5", - "@storybook/postinstall": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/react-dom-shim": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/node-logger": "7.0.6", + "@storybook/postinstall": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/react-dom-shim": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -4085,24 +4154,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.5.tgz", - "integrity": "sha512-6wektUddMelsWdcRfZfvKfaRPE5d6IsFBbZtE97qcrYnm63mSFwfwC5Kr77ithOOk24cpv5N2a59AL0AEq6sNA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.6.tgz", + "integrity": "sha512-RLe+osvJ620njDiinPOlCdFAYckOg4PuE/OFFKYL+ityfKcGknYPZdtV8bknfdO3jSFCVx6zOpUv5KE6u4CgWg==", "dev": true, "dependencies": { - "@storybook/addon-actions": "7.0.5", - "@storybook/addon-backgrounds": "7.0.5", - "@storybook/addon-controls": "7.0.5", - "@storybook/addon-docs": "7.0.5", - "@storybook/addon-highlight": "7.0.5", - "@storybook/addon-measure": "7.0.5", - "@storybook/addon-outline": "7.0.5", - "@storybook/addon-toolbars": "7.0.5", - "@storybook/addon-viewport": "7.0.5", - "@storybook/core-common": "7.0.5", - "@storybook/manager-api": "7.0.5", - "@storybook/node-logger": "7.0.5", - "@storybook/preview-api": "7.0.5", + "@storybook/addon-actions": "7.0.6", + "@storybook/addon-backgrounds": "7.0.6", + "@storybook/addon-controls": "7.0.6", + "@storybook/addon-docs": "7.0.6", + "@storybook/addon-highlight": "7.0.6", + "@storybook/addon-measure": "7.0.6", + "@storybook/addon-outline": "7.0.6", + "@storybook/addon-toolbars": "7.0.6", + "@storybook/addon-viewport": "7.0.6", + "@storybook/core-common": "7.0.6", + "@storybook/manager-api": "7.0.6", + "@storybook/node-logger": "7.0.6", + "@storybook/preview-api": "7.0.6", "ts-dedent": "^2.0.0" }, "funding": { @@ -4115,14 +4184,14 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.5.tgz", - "integrity": "sha512-m52Yx2AfWdh+hYAHTjPPocOUd15IE5OAF2nx1rmRfp+caIwKE8UyAn2J4Tk2aVwybUM96B4Bioo8cmOj6znqPw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.6.tgz", + "integrity": "sha512-weM26CUku1+urbnefNUYxIKrc8xXvpLXHZsGzuxoYyOUCR25F09IUjVutOfgoVXqTqPUj1XWqVkG8PLQNs5vBQ==", "dev": true, "dependencies": { - "@storybook/core-events": "7.0.5", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.5" + "@storybook/preview-api": "7.0.6" }, "funding": { "type": "opencollective", @@ -4130,18 +4199,18 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.5.tgz", - "integrity": "sha512-I7elq6JPYsNQXn6f9zCg/1vBxj74zuZjL/FyxjtQkFipi5M3NGcY/j0y62l0s8NL5+59F3sZmgf9jtyKRGQ99Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.6.tgz", + "integrity": "sha512-mtd9tQOlNzxdDJvE0pP7/CMsm3l5skVr5G6wrkzHzhRqknfcj0hPdJUcA1P2PuxgejHBBQ32ZWZ6PubUtFXujQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/types": "7.0.5" + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/types": "7.0.6" }, "funding": { "type": "opencollective", @@ -4161,18 +4230,18 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.5.tgz", - "integrity": "sha512-ZgTjwYC5j6mOPzL+LKXgFuQhaGDOM/ZJwAX4EKrgRW6DMl49JNQqFug5AwYBPhDmLBjazW239JfbxgaEC76psA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.6.tgz", + "integrity": "sha512-UYvL7aRdrn57gwp9O+xykky+BV3KPIZ415Fdb5HRuxfWA/3llWBslwswWXX5A8mAbIeaFZk+C4xIskZgRw1+mg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/types": "7.0.6", "ts-dedent": "^2.0.0" }, "funding": { @@ -4193,16 +4262,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.5.tgz", - "integrity": "sha512-0H5gO9vw8QuVYIUH4NyFj5MGOLXtubnZqtjJBeBIGxfg56EHbn9GB515g6o5Jzn4jwnSDq1X8PGLC62CDiTbzA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.6.tgz", + "integrity": "sha512-FzybNbJW9GQ6XCe7g2zyOXnJXay971VEoYhRqDPiFQEjBvkRiKca1mRKgdjQt6o5Mw7OzbaLunjR2Xvl3GhE0w==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5" + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6" }, "funding": { "type": "opencollective", @@ -4222,18 +4291,18 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.5.tgz", - "integrity": "sha512-sonhnMHjw7qetokABAjC6r8VjDqDhCqjB1VJi1pQ7WJT/iwzxQpGmhbbUTsJhJFJokIlqV+s7w0sOBrgekR1Sw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.6.tgz", + "integrity": "sha512-5GGAJeWJEplqYAL5x7GQkXw23n2MELhO6nnCV+Jd3d9qs0Aq2VSTEsD0MGTNef/SymZjYm/iOCNOVgbqIF9t+Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -4255,22 +4324,22 @@ } }, "node_modules/@storybook/blocks": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.5.tgz", - "integrity": "sha512-cOWRqmgRMZ+pgnqRv6jC2ehvXiQxDJsTQAoWO2+5iUuBmciv6s9u7FQFkW9Wn1TUkkLwEvY5jnzMNvzZsEBx1w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.6.tgz", + "integrity": "sha512-02B9sY8qrp6DCgyRWZEEd1X/+r7eaTXLOXlikqRmah5XMqtGpEasPXN4ETzzZKKRbSapkKfqxzsp9ZXfqXTNKQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/components": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/channels": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/components": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.0.5", + "@storybook/docs-tools": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/manager-api": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -4293,15 +4362,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.5.tgz", - "integrity": "sha512-nSH5IWGsP+9OyZdh03i1yNvyViaF4099YpD9jDSQvn3H4I7UH8qsprFu3yoCax51lQqoxOadmlazS6P4DtLXMg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.6.tgz", + "integrity": "sha512-sjkESh+w1iMaHDSmNL68B6oAz1Re6ieJpQVpOfZEXrBJ4Bkf5ZjcvEnL15g4n2T6s39IYdAYgtB3MT40wCyGLw==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.5", - "@storybook/manager": "7.0.5", - "@storybook/node-logger": "7.0.5", + "@storybook/core-common": "7.0.6", + "@storybook/manager": "7.0.6", + "@storybook/node-logger": "7.0.6", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -4321,21 +4390,21 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.5.tgz", - "integrity": "sha512-jQUpqmTiCZpVCLTVuMu3bSv1Iw4TJJhKYyrsozlfSbAzdM1S8IDEVhpKo+XoUrYLrGURSP8918zaOrl7ht8pvw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.6.tgz", + "integrity": "sha512-sXthWQFMKxXS8nqihB5sSyRewLpBJDL3EjwzZxz5/4zQ9XCsuGHMW7DEepX9FMWUNPDIIw3KITs4vMrCNDkXhg==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.5", - "@storybook/channel-websocket": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/core-common": "7.0.5", - "@storybook/csf-plugin": "7.0.5", + "@storybook/channel-postmessage": "7.0.6", + "@storybook/channel-websocket": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/core-common": "7.0.6", + "@storybook/csf-plugin": "7.0.6", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.0.5", - "@storybook/preview": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/node-logger": "7.0.6", + "@storybook/preview": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/types": "7.0.6", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", @@ -4439,14 +4508,14 @@ } }, "node_modules/@storybook/channel-postmessage": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.5.tgz", - "integrity": "sha512-Ri0188tHfvg2asdNOVUeLU1w1G/V485y/vatZ/vC3My9cG8P39t8ZKAJdA3hukc+7RZKZU+snqCz7de89/CF7Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.6.tgz", + "integrity": "sha512-xBsh/+85GS4bJ08r7z1iRn26EI6hGmMgNpjpFztRigMhsq5SkD9FJb+Nh9bbaHm+yPOCqJcaHQ2aQpuJNT8dHA==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/channels": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3" @@ -4457,13 +4526,13 @@ } }, "node_modules/@storybook/channel-websocket": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.5.tgz", - "integrity": "sha512-QgvxAZjEdRzPZveUibErJbaqqe97DLscPeK5YHA1/xDCPqMKo0HaQKTyT0YSsSkeE3oKXbdz9IXFXEaPmIpjzw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.6.tgz", + "integrity": "sha512-tUk45xUa2/xpRg/QNw6g6j8qIWNPZ5DbpgrFDgWaZo2koI3JTQNL3mLQRWBJpVAG7rkqwBChXPOFO/KhIVaIXA==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.5", - "@storybook/client-logger": "7.0.5", + "@storybook/channels": "7.0.6", + "@storybook/client-logger": "7.0.6", "@storybook/global": "^5.0.0", "telejson": "^7.0.3" }, @@ -4473,9 +4542,9 @@ } }, "node_modules/@storybook/channels": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.5.tgz", - "integrity": "sha512-WiSPXgOK63jAlDDmbTs1sVXoYe3r/4VjpfwhEcxSPU544YQVARF1ePtiGjlp8HVFhZh1Q7afbVGJ9w96++u98A==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.6.tgz", + "integrity": "sha512-+34cVmrXZ3lb1s5tDK+OWd5HLtEPSUMas0VKFJ0k9LBpFlVl9aiCZBJRvSYmWL7beauUfa+HSmJgjlD6228ChQ==", "dev": true, "funding": { "type": "opencollective", @@ -4483,21 +4552,21 @@ } }, "node_modules/@storybook/cli": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.5.tgz", - "integrity": "sha512-VRrf4XG9H29FycNqthT6r4MjT0f4ynpwQAj039vUrt95rosV8ytuLFIrTwww1x/2o/VNpkWyL7MJwu6dejeZgw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.6.tgz", + "integrity": "sha512-x9Ht+N7wGknX31lnDDgfH4Td46UCVqhr0H8pgYRUz+lmhxKv58f0M5kErFRTlUxEXz6/ORI6Cx4cTw7451huyw==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.0.5", - "@storybook/core-common": "7.0.5", - "@storybook/core-server": "7.0.5", - "@storybook/csf-tools": "7.0.5", - "@storybook/node-logger": "7.0.5", - "@storybook/telemetry": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/codemod": "7.0.6", + "@storybook/core-common": "7.0.6", + "@storybook/core-server": "7.0.6", + "@storybook/csf-tools": "7.0.6", + "@storybook/node-logger": "7.0.6", + "@storybook/telemetry": "7.0.6", + "@storybook/types": "7.0.6", "@types/semver": "^7.3.4", "boxen": "^5.1.2", "chalk": "^4.1.0", @@ -4579,9 +4648,9 @@ "dev": true }, "node_modules/@storybook/client-logger": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.5.tgz", - "integrity": "sha512-p8Vtb5G/l3gePNDbNjqgGsikthRqDfsPAqFEsAvBWJVZ3vq/ZSU4IsCWSLO/kdkyJyhTXMqQZnOpQ0pDXlOPcQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.6.tgz", + "integrity": "sha512-TC/E5BBkY+WNldNw5p5Ffr9x4UgMe48GmC50ikBpQFk6og1B7XpFGMMbj40EBB0R5cpZkQNEVQh4OvunEygNzg==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -4592,18 +4661,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.5.tgz", - "integrity": "sha512-Hu9CiVBHhaPJHMVpiAjr7pEtL7/AUsKT/Xxn3xUM7Ngy7TYMa62XTIMkt2Z+tAAud0HzAz/6Wv+2q+IqPr7BeQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.6.tgz", + "integrity": "sha512-tI6A0L+7WxYQj3fW7rlrw6XgVBE8FSJdg5XskNMLArYiMRnK5qnN5JNKeJc8DR5plJ5wm77j0e9cUnuI86vaGg==", "dev": true, "dependencies": { "@babel/core": "~7.21.0", "@babel/preset-env": "~7.21.0", "@babel/types": "~7.21.2", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.5", - "@storybook/node-logger": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/csf-tools": "7.0.6", + "@storybook/node-logger": "7.0.6", + "@storybook/types": "7.0.6", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -4617,16 +4686,16 @@ } }, "node_modules/@storybook/components": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.5.tgz", - "integrity": "sha512-SHftxNH3FG3RZwJ5nbyBZwn5pkI3Ei2xjD7zDwxztI8bCp5hPnOTDwAnQZZCkeW7atSQUe7xFkYqlCgNmXR4PQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.6.tgz", + "integrity": "sha512-SiHkSgYR8CcAGrWLof85FImcPIb+ApRW6K3LVcyinctJzOQCWLgh0poKUQ5och3CjSxQbM1G4S1ZXrAfZdU9Cg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", + "@storybook/client-logger": "7.0.6", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -4641,13 +4710,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.5.tgz", - "integrity": "sha512-vN3jK0H4IRjdn/VP7E5dtY0MjytTFSosreSzschmSDTs/K9w52Zm+PkmDzQaBtrDo/VNjJCHnxDLDJZ1ewkoEw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.6.tgz", + "integrity": "sha512-XF6m6Yr+6AjYxaAU5/1Nor5tjn0IRNXU85xUgll8JkhlYDsPmXwolQRb2lfArbCuXE72E2CcOz9KCqo7oNE3OA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/preview-api": "7.0.5" + "@storybook/client-logger": "7.0.6", + "@storybook/preview-api": "7.0.6" }, "funding": { "type": "opencollective", @@ -4655,13 +4724,13 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.5.tgz", - "integrity": "sha512-MIvWwu2ntKK3A0FDWRhKcegIAKyJTyzTf5K4PiVgCT2X9Mj0r0GZ10L/OlyTrlnGHqgxNc4oS2rcN3uWjlwXaA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.6.tgz", + "integrity": "sha512-vnrv7Wl2yqfl0BLda/57Ii2OgeSO5mVWgvy9WUER3xdEX6obLgEKqhq08U+dkp0pX8YEyjQgfe+rqyanEspLDQ==", "dev": true, "dependencies": { - "@storybook/node-logger": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/node-logger": "7.0.6", + "@storybook/types": "7.0.6", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", @@ -4761,9 +4830,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.5.tgz", - "integrity": "sha512-bYQFZlJR3n5gFk5GVIemuL3m6aYPF6DVnzj6n9UcMZDlHcOZ2B2WbTmAUrGy0bmtj/Fd6ZJKDpBhh3cRRsYkbA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.6.tgz", + "integrity": "sha512-kGrtjlYtjd4iTVk+Phb4CymZaVkB+MGscKAgcO8gfgJ/Q/gq8HQLVZSIzeoCDcDSHOGlBzbg2WVtdHIHhCKlOQ==", "dev": true, "funding": { "type": "opencollective", @@ -4771,25 +4840,25 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.5.tgz", - "integrity": "sha512-h3SVzwepHTyDxS7ZPuYfHStnWC0EC05axSPKb3yeO6bCsowf+CEXgY5VayUqP8GkgLBez859m172y6B+wVXZ3g==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.6.tgz", + "integrity": "sha512-1y9qTcHGwdZrUBJ9RYYJqKESJ/nWDz+ngjVM+pSlVqk+kmgFAQ127OwJFtiD/wzrdiOnzVe1/1CctPESdwL2Fg==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.5", - "@storybook/core-common": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/builder-manager": "7.0.6", + "@storybook/core-common": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.0.5", + "@storybook/csf-tools": "7.0.6", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.5", - "@storybook/node-logger": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/telemetry": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/manager": "7.0.6", + "@storybook/node-logger": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/telemetry": "7.0.6", + "@storybook/types": "7.0.6", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", @@ -4873,12 +4942,12 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.5.tgz", - "integrity": "sha512-TTM6l1i73ZGUSCJpAXitsd/KHWQbiuPsFSHKaikowK+pJ2hz4kfNG5JrajXKR5OltBAAbUudK25oJWsvo8FGpQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.6.tgz", + "integrity": "sha512-3NnqKcR2JQwvmT/aX1dCNNk7XS2hm9iP8lCwZxYT9KVIqDymA5mzEBMCH6y+eRYCmaCOAD9ITN+5xT4XoRMmSQ==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.0.5", + "@storybook/csf-tools": "7.0.6", "unplugin": "^0.10.2" }, "funding": { @@ -4887,9 +4956,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.5.tgz", - "integrity": "sha512-W83OAlYUyzbx3SuDGgsPunw8BeT5gkYJGqenC6wJH0B1Nc+MjYxjhffaMtnT2X8RgMKKgIIf7sB3QN22y+kN/Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.6.tgz", + "integrity": "sha512-xKOjuAlFuUOWO6JmhcEqUGTSGds9hbGSLYg0bh2BueWRvqhT3kvHqE4OKWmEfhfl4UDxIKbfEbJOxxVNni14gg==", "dev": true, "dependencies": { "@babel/generator": "~7.21.1", @@ -4897,7 +4966,7 @@ "@babel/traverse": "~7.21.2", "@babel/types": "~7.21.2", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.0.5", + "@storybook/types": "7.0.6", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -4914,15 +4983,15 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.5.tgz", - "integrity": "sha512-8e/9EIA9+1AhekJ8g81FgnjhJKWq8fNZK3AWYoDiPCjBFY3bLzisTLMAnxQILUG9DRbbX4aH2FZ3sMqvO9f3EQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.6.tgz", + "integrity": "sha512-A4zLn/lliVZwKwkiaiAXsyjeVfoAyixkDSBGYK+hGp6VVWVhYh1+TiWUZXQElnrh/xukxPTPSI/iuW+FbUUpfw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.5", - "@storybook/preview-api": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/core-common": "7.0.6", + "@storybook/preview-api": "7.0.6", + "@storybook/types": "7.0.6", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -4939,9 +5008,9 @@ "dev": true }, "node_modules/@storybook/manager": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.5.tgz", - "integrity": "sha512-EwgEXetNfpitkxJ+WCqVF71aqaLR+3exDfL088NalxLZOJIokodvbtEKdueJr7CzrqTdxMIm9um5YX1ZgxdUcg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.6.tgz", + "integrity": "sha512-idBnm56raTAjUdlaQjHQKCtsU2f0EiQpY1q0JOP81X18lN2QZAxVjgU5j17hQZwMQxp0nJFo8ERBAw0TiCvcZg==", "dev": true, "funding": { "type": "opencollective", @@ -4949,19 +5018,19 @@ } }, "node_modules/@storybook/manager-api": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.5.tgz", - "integrity": "sha512-zZR5uL3vR5skNge0a8FZNZfnGuDYVLVBpNVi5/UpnVRA/Pr439NHXaJL8xzdT7Xcvs+qp1FHShMM4gZVIFHrKA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.6.tgz", + "integrity": "sha512-u942CGr/CIJwyeZvLRofPL714YRXVToJXmiyOdFSyGYcC9EQWRRrTX0zg4ZrzvllD4aZe8HXIemqlLrRB+Bu+g==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/channels": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.5", - "@storybook/theming": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/router": "7.0.6", + "@storybook/theming": "7.0.6", + "@storybook/types": "7.0.6", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -5019,9 +5088,9 @@ "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.5.tgz", - "integrity": "sha512-REBIMItpBVn9tpo2JXP3eyHg9lsYSt1JqWFaEncdKEiXWArv5c8pN6/od7MB3sU3NdHwEDKwLel2fZaDbg3jBQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.6.tgz", + "integrity": "sha512-719jP38S72w+dPqIxM9X8+voTmLAkseMktbTlPDJtMKd1br3NveHCpaJkZPCvqlYbZrqzkF1pAFwWVkQyCxbAA==", "dev": true, "dependencies": { "@types/npmlog": "^4.1.2", @@ -5035,9 +5104,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.5.tgz", - "integrity": "sha512-JtHY04HYdVHj8zeCHE6K6BLKK63r1hk/bhB49u64WuPkNJG8b5rAe5XYXeImOiRbwNLshDRJTyaUhjoSqONskA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.6.tgz", + "integrity": "sha512-NDAA2I2LqDKXqnCMgnNNpwU87rNYmf5tjLg0MK9NFR79zSdjPryy+64oBWoNjGdub342Y9fyc3gTV7OIQdvH0Q==", "dev": true, "funding": { "type": "opencollective", @@ -5045,9 +5114,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.5.tgz", - "integrity": "sha512-N1IDKzmqnF+XAdACGnaWw22dmSUQHuHKyyQ/vV9upMf0hA+4gk9pc5RFEHOQO/sTbxblgfKm9Q1fIYkxgPVFxg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.6.tgz", + "integrity": "sha512-swawfiqqSpHh2Jqt9hZUpdLpZyFzOB2uwj4vy9bhmep7sxnh81VbLBCrWrDjtcH5tC2TVVAQHYp3w8cHE94cSA==", "dev": true, "funding": { "type": "opencollective", @@ -5055,18 +5124,18 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.5.tgz", - "integrity": "sha512-mZruATt5JXfLuXJfOo30WCXILXjK+hs0HwtUDGRVW/J4Ql8CdNPB+WF56ZgeWUnMAYRf392bN3uNwmZx4v4Fog==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.6.tgz", + "integrity": "sha512-uNsedNyiEccBV2EDUC/xcKTbmiNCYuVHbgOoWTmBz0ZqFo9bX0jxkpyYWHEhJM79qqVqmrpiQ5jbS8QKn8TIxQ==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.5", - "@storybook/channels": "7.0.5", - "@storybook/client-logger": "7.0.5", - "@storybook/core-events": "7.0.5", + "@storybook/channel-postmessage": "7.0.6", + "@storybook/channels": "7.0.6", + "@storybook/client-logger": "7.0.6", + "@storybook/core-events": "7.0.6", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.5", + "@storybook/types": "7.0.6", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -5082,18 +5151,18 @@ } }, "node_modules/@storybook/react": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.0.5.tgz", - "integrity": "sha512-VXLi/oZnYLXe61Bvfan1YY6cANbFgDb5MmCpu8COaYOGjT53o4gTh3zQoDubaN8wzTQfE0TyP9E+m4//KvZxow==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.0.6.tgz", + "integrity": "sha512-9+FTRLspx5lZi1vWamwMRla4lJh6mygv6e01qxaav0pvyyG5nAloFLWYkfrf5Y8nWFpJxHT0YXt3hPjzgl1wHA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/core-client": "7.0.5", - "@storybook/docs-tools": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/core-client": "7.0.6", + "@storybook/docs-tools": "7.0.6", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.5", - "@storybook/react-dom-shim": "7.0.5", - "@storybook/types": "7.0.5", + "@storybook/preview-api": "7.0.6", + "@storybook/react-dom-shim": "7.0.6", + "@storybook/types": "7.0.6", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^16.0.0", @@ -5127,9 +5196,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.5.tgz", - "integrity": "sha512-iSdP73Af/d8RdNfa4rDHI3JuAakDqPl8Z1LT0cFcfzg29kihdmXIVaLvMcMqTrnqELU6VmzSiE86U+T1XOX95w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.6.tgz", + "integrity": "sha512-pmoyspsehnaSJGYXDXK4tJTyDRiWYsb5HDwmT/ZlB5iS0PEP2vB5ZAW0M6MZPCNq+rcyIhRzWpylgccJ8OJquQ==", "dev": true, "funding": { "type": "opencollective", @@ -5141,15 +5210,15 @@ } }, "node_modules/@storybook/react-vite": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.0.5.tgz", - "integrity": "sha512-jBwRrfC1ue/ZPMrey+VBPsjt89hBx21ZVMtIpLOGws6B2y6vYKskNqCh5iiYZrw9VRKYh6UL5qXiMeNM52o48A==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.0.6.tgz", + "integrity": "sha512-kWX0JCi5mTRPrFyp80GEHqL2DdNACA5kzDSfLXEhrxnHaMqbpFFKA385ZTlgenC3quPGTFCSI+HxHHBwvNNCXA==", "dev": true, "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.2.1", "@rollup/pluginutils": "^4.2.0", - "@storybook/builder-vite": "7.0.5", - "@storybook/react": "7.0.5", + "@storybook/builder-vite": "7.0.6", + "@storybook/react": "7.0.6", "@vitejs/plugin-react": "^3.0.1", "ast-types": "^0.14.2", "magic-string": "^0.27.0", @@ -5175,12 +5244,12 @@ "dev": true }, "node_modules/@storybook/router": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.5.tgz", - "integrity": "sha512-tvbSb+G3Ft5Z7McwUcMa13D8pM4pdoCu/pKCVMOlAI5TZF3lidLMq2RCsrztpHiYBrhZcp6dWfErosXa+BYvwQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.6.tgz", + "integrity": "sha512-JdqNMxybgugQc/qZ69YeFn81wvLGGGOTVfCbimE5RJbTu0BPH7vtfsrhhP1muumYBizrpNgkueYMfqmaz91zJw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", + "@storybook/client-logger": "7.0.6", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -5194,13 +5263,13 @@ } }, "node_modules/@storybook/telemetry": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.5.tgz", - "integrity": "sha512-eHf3JfMOBpy/QiErHfr4aIcqj/ADEqLOWxxoEICfwj4Nok/9dJKDXdjkHb0GAC2yRE2+iGlz7ipVL2XHZAIhIg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.6.tgz", + "integrity": "sha512-hR9Fb0bxOHNqExQdlc/gmch0vDwCQZJs+O6znA4IF9wzCyjgk4vti7cptES5PZ/kIlh0ICL13yx7O+BxYjUE5Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.5", - "@storybook/core-common": "7.0.5", + "@storybook/client-logger": "7.0.6", + "@storybook/core-common": "7.0.6", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -5215,13 +5284,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.5.tgz", - "integrity": "sha512-XgQXKktcVBOkJT5gXjqtjH7C2pjdreDy0BTVTaEmFzggyyw+cgFrkJ7tuB27oKwYe+svx26c/olVMSHYf+KqhA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.6.tgz", + "integrity": "sha512-EVN3cA9Z2odkPdUgKNTJTEa5i1H2EJzGDAh/b3GLDQgIPOBD6/ynQIB+e2TmJUFflIyRTuDZJrhcf33U6J9Pww==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.5", + "@storybook/client-logger": "7.0.6", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -5235,12 +5304,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.5.tgz", - "integrity": "sha512-By+tF3B30QiCnzEJ+Z73M2usSCqBWEmX4OGT1KbiEzWekkrsfCfpZwfzeMw1WwdQGlB1gLKTzB8wZ1zZB8oPtQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.6.tgz", + "integrity": "sha512-dFASQxzvldU2Nx/eJG+oL4wCchUWAKOmOSYJYhKgtGpx99oXOiWUyC0SgCpTveBJ7AppoiseyasQ9Gd/Ccycdw==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.5", + "@storybook/channels": "7.0.6", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "^2.0.0" @@ -5976,6 +6045,25 @@ "wonka": "^6.3.0" } }, + "node_modules/@urql/exchange-graphcache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@urql/exchange-graphcache/-/exchange-graphcache-6.0.1.tgz", + "integrity": "sha512-nJCQwem45p1nspbRrZz2oFjyHW6tufT6LQ1SvqE3CN1pLq3v72leZ6nfRMv4RCoh9IxFnv9hr0fn8DQSmQaB4w==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.0", + "@urql/core": ">=4.0.0", + "wonka": "^6.3.0" + } + }, + "node_modules/@urql/introspection": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@urql/introspection/-/introspection-0.3.3.tgz", + "integrity": "sha512-tekSLLqWnusfV6V7xaEnLJQSdXOD/lWy7f8JYQwrX+88Md+voGSCSx5WJXI7KLBN3Tat2OV08tAr8UROykls4Q==", + "dev": true, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", @@ -9538,9 +9626,9 @@ } }, "node_modules/file-system-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.0.2.tgz", - "integrity": "sha512-lp4BHO4CWqvRyx88Tt3quZic9ZMf4cJyquYq7UI8sH42Bm2ArlBBjKQAalZOo+UfaBassb7X123Lik5qZ/tSAA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.1.0.tgz", + "integrity": "sha512-DYsIRzIwnZFOfVwux4Wd7GqvXy63jN9HGfA7Mjlh9c/UsECJpNKwgXU24f3JNZ6phkbvRWOHBp+DWG1MVbGYWw==", "dev": true, "dependencies": { "fs-extra": "^11.1.0", @@ -11470,9 +11558,9 @@ } }, "node_modules/jotai-urql": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jotai-urql/-/jotai-urql-0.6.0.tgz", - "integrity": "sha512-qbadrkjrBRntuRZrYidA88A9hLR2zl5Luk9ng5OSXUzr7lRaElr24XjXLIdTx+AmwAsJb86q1KyoKF3IOX3tXg==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/jotai-urql/-/jotai-urql-0.7.1.tgz", + "integrity": "sha512-b1CJcCY/i/0C9viEniuUD1rSqV17SxOUrxCmPPDzDavGPV3bZQYtu2QKS4gj6Y95YOhTbv92hzWUwEUyNQt8IQ==", "peerDependencies": { "@urql/core": "*", "jotai": ">=1.11.0" @@ -14683,12 +14771,12 @@ "dev": true }, "node_modules/storybook": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.5.tgz", - "integrity": "sha512-wU8PpA2vgZe4Eu4ytilUdHIwl1J2sYlqVT4luGw+O/9dDbkVkB/3f73rAEMMwucWJmqG9HDausdZqEh+1BzJsw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.6.tgz", + "integrity": "sha512-dhl+5jbPf6sT/cQxePxXM4T6AGJ0EtdSUTZmdOA7LA6P5C55Wc+GqPdIAh7RqZoMJdNNhXBeHHtCoYZev7uPxw==", "dev": true, "dependencies": { - "@storybook/cli": "7.0.5" + "@storybook/cli": "7.0.6" }, "bin": { "sb": "index.js", diff --git a/frontend/package.json b/frontend/package.json index 137c88e2..bfe9ece3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,29 +17,31 @@ }, "dependencies": { "@urql/core": "^4.0.4", + "@urql/exchange-graphcache": "^6.0.1", "date-fns": "^2.29.3", "graphql": "^16.6.0", "jotai": "^2.0.4", "jotai-location": "^0.5.1", - "jotai-urql": "^0.6.0", + "jotai-urql": "^0.7.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "@graphql-codegen/cli": "^3.3.0", "@graphql-codegen/client-preset": "^3.0.0", + "@graphql-codegen/urql-introspection": "^2.2.1", "@graphql-eslint/eslint-plugin": "^3.18.0", - "@storybook/addon-actions": "^7.0.5", - "@storybook/addon-backgrounds": "^7.0.5", - "@storybook/addon-controls": "^7.0.5", - "@storybook/addon-docs": "^7.0.5", - "@storybook/addon-essentials": "^7.0.5", - "@storybook/addon-measure": "^7.0.5", - "@storybook/addon-outline": "^7.0.5", - "@storybook/addon-toolbars": "^7.0.5", - "@storybook/addon-viewport": "^7.0.5", - "@storybook/react": "^7.0.5", - "@storybook/react-vite": "^7.0.5", + "@storybook/addon-actions": "^7.0.6", + "@storybook/addon-backgrounds": "^7.0.6", + "@storybook/addon-controls": "^7.0.6", + "@storybook/addon-docs": "^7.0.6", + "@storybook/addon-essentials": "^7.0.6", + "@storybook/addon-measure": "^7.0.6", + "@storybook/addon-outline": "^7.0.6", + "@storybook/addon-toolbars": "^7.0.6", + "@storybook/addon-viewport": "^7.0.6", + "@storybook/react": "^7.0.6", + "@storybook/react-vite": "^7.0.6", "@types/node": "^18.15.11", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", @@ -54,7 +56,7 @@ "postcss": "^8.4.22", "prettier": "^2.8.7", "react-test-renderer": "^18.2.0", - "storybook": "^7.0.5", + "storybook": "^7.0.6", "tailwindcss": "^3.3.1", "typescript": "^5.0.4", "vite": "^4.2.2", diff --git a/frontend/src/gql/schema.ts b/frontend/src/gql/schema.ts new file mode 100644 index 00000000..40dfafee --- /dev/null +++ b/frontend/src/gql/schema.ts @@ -0,0 +1,1717 @@ +import { IntrospectionQuery } from "graphql"; +export default { + __schema: { + queryType: { + name: "RootQuery", + }, + mutationType: null, + subscriptionType: null, + types: [ + { + kind: "OBJECT", + name: "Authentication", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "BrowserSession", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lastAuthentication", + type: { + kind: "OBJECT", + name: "Authentication", + ofType: null, + }, + args: [], + }, + { + name: "user", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "BrowserSessionConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BrowserSessionEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BrowserSession", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "BrowserSessionEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BrowserSession", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CompatSession", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "deviceId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "finishedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CompatSsoLogin", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "exchangedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "fulfilledAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "redirectUri", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "session", + type: { + kind: "OBJECT", + name: "CompatSession", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CompatSsoLoginConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CompatSsoLoginEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CompatSsoLogin", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CompatSsoLoginEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CompatSsoLogin", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "INTERFACE", + name: "CreationEvent", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "Authentication", + }, + { + kind: "OBJECT", + name: "BrowserSession", + }, + { + kind: "OBJECT", + name: "CompatSession", + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + }, + { + kind: "OBJECT", + name: "UserEmail", + }, + ], + }, + { + kind: "INTERFACE", + name: "Node", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "Authentication", + }, + { + kind: "OBJECT", + name: "BrowserSession", + }, + { + kind: "OBJECT", + name: "CompatSession", + }, + { + kind: "OBJECT", + name: "CompatSsoLogin", + }, + { + kind: "OBJECT", + name: "Oauth2Client", + }, + { + kind: "OBJECT", + name: "Oauth2Session", + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + }, + { + kind: "OBJECT", + name: "User", + }, + { + kind: "OBJECT", + name: "UserEmail", + }, + ], + }, + { + kind: "OBJECT", + name: "Oauth2Client", + fields: [ + { + name: "clientId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "clientName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "clientUri", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "policyUri", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "redirectUris", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "tosUri", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "Oauth2Session", + fields: [ + { + name: "browserSession", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BrowserSession", + ofType: null, + }, + }, + args: [], + }, + { + name: "client", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Oauth2Client", + ofType: null, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "scope", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "Oauth2SessionConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Oauth2SessionEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Oauth2Session", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Oauth2SessionEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Oauth2Session", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageInfo", + fields: [ + { + name: "endCursor", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "hasNextPage", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "hasPreviousPage", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "startCursor", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "RootQuery", + fields: [ + { + name: "browserSession", + type: { + kind: "OBJECT", + name: "BrowserSession", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "currentBrowserSession", + type: { + kind: "OBJECT", + name: "BrowserSession", + ofType: null, + }, + args: [], + }, + { + name: "currentUser", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "node", + type: { + kind: "INTERFACE", + name: "Node", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "oauth2Client", + type: { + kind: "OBJECT", + name: "Oauth2Client", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "upstreamOauth2Link", + type: { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "upstreamOauth2Provider", + type: { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "upstreamOauth2Providers", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2ProviderConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "userEmail", + type: { + kind: "OBJECT", + name: "UserEmail", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "provider", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + ofType: null, + }, + }, + args: [], + }, + { + name: "subject", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2LinkConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2LinkEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2LinkEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2Link", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + fields: [ + { + name: "clientId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "issuer", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2ProviderConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2ProviderEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UpstreamOAuth2ProviderEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2Provider", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "User", + fields: [ + { + name: "browserSessions", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BrowserSessionConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "compatSsoLogins", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CompatSsoLoginConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "emails", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserEmailConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "oauth2Sessions", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Oauth2SessionConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "primaryEmail", + type: { + kind: "OBJECT", + name: "UserEmail", + ofType: null, + }, + args: [], + }, + { + name: "upstreamOauth2Links", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UpstreamOAuth2LinkConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "username", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "UserEmail", + fields: [ + { + name: "confirmedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "CreationEvent", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "UserEmailConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserEmailEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "nodes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserEmail", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserEmailEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserEmail", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "SCALAR", + name: "Any", + }, + ], + directives: [], + }, +} as unknown as IntrospectionQuery; diff --git a/frontend/src/graphql.ts b/frontend/src/graphql.ts index 4606c674..f220fd72 100644 --- a/frontend/src/graphql.ts +++ b/frontend/src/graphql.ts @@ -12,14 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { - createClient, - dedupExchange, - cacheExchange, - fetchExchange, -} from "@urql/core"; +import { createClient, fetchExchange } from "@urql/core"; +import { cacheExchange } from "@urql/exchange-graphcache"; + +import schema from "./gql/schema"; export const client = createClient({ url: "/graphql", - exchanges: [dedupExchange, cacheExchange, fetchExchange], + exchanges: [cacheExchange({ schema }), fetchExchange], }); diff --git a/frontend/src/pages/BrowserSession.tsx b/frontend/src/pages/BrowserSession.tsx index 106eca21..a5a5ca94 100644 --- a/frontend/src/pages/BrowserSession.tsx +++ b/frontend/src/pages/BrowserSession.tsx @@ -13,7 +13,7 @@ // limitations under the License. import { useAtomValue } from "jotai"; -import { atomsWithQuery } from "jotai-urql"; +import { atomWithQuery } from "jotai-urql"; import { useMemo } from "react"; import { graphql } from "../gql"; @@ -35,10 +35,19 @@ const QUERY = graphql(/* GraphQL */ ` `); const BrowserSession: React.FC<{ id: string }> = ({ id }) => { - const data = useAtomValue( - useMemo(() => atomsWithQuery(QUERY, () => ({ id })), [id])[0] + const result = useAtomValue( + useMemo( + () => atomWithQuery({ query: QUERY, getVariables: () => ({ id }) }), + [id] + ) ); + if (result.error) { + throw result.error; + } + + const data = result.data!!; + return (
       {JSON.stringify(data.browserSession, null, 2)}
diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx
index c687d10e..51d349db 100644
--- a/frontend/src/pages/Home.tsx
+++ b/frontend/src/pages/Home.tsx
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 import { useAtomValue } from "jotai";
-import { atomsWithQuery } from "jotai-urql";
+import { atomWithQuery } from "jotai-urql";
 
 import BrowserSessionList from "../components/BrowserSessionList";
 import CompatSsoLoginList from "../components/CompatSsoLoginList";
@@ -37,10 +37,19 @@ const QUERY = graphql(/* GraphQL */ `
   }
 `);
 
-const [homeDataAtom] = atomsWithQuery(QUERY, () => ({ count: 10 }));
+const homeDataAtom = atomWithQuery({
+  query: QUERY,
+  getVariables: () => ({ count: 10 }),
+});
 
 const Home: React.FC = () => {
-  const data = useAtomValue(homeDataAtom);
+  const result = useAtomValue(homeDataAtom);
+
+  if (result.error) {
+    throw result.error;
+  }
+
+  const data = result.data!!;
 
   if (data.currentBrowserSession) {
     const session = data.currentBrowserSession;
diff --git a/frontend/src/pages/OAuth2Client.tsx b/frontend/src/pages/OAuth2Client.tsx
index 6e4483a8..1c683af3 100644
--- a/frontend/src/pages/OAuth2Client.tsx
+++ b/frontend/src/pages/OAuth2Client.tsx
@@ -14,7 +14,7 @@
 
 import { useAtomValue } from "jotai";
 import { useMemo } from "react";
-import { atomsWithQuery } from "jotai-urql";
+import { atomWithQuery } from "jotai-urql";
 import { graphql } from "../gql";
 
 const QUERY = graphql(/* GraphQL */ `
@@ -32,10 +32,19 @@ const QUERY = graphql(/* GraphQL */ `
 `);
 
 const OAuth2Client: React.FC<{ id: string }> = ({ id }) => {
-  const data = useAtomValue(
-    useMemo(() => atomsWithQuery(QUERY, () => ({ id })), [id])[0]
+  const result = useAtomValue(
+    useMemo(
+      () => atomWithQuery({ query: QUERY, getVariables: () => ({ id }) }),
+      [id]
+    )
   );
 
+  if (result.error) {
+    throw result.error;
+  }
+
+  const data = result.data!!;
+
   return (
     
       {JSON.stringify(data.oauth2Client, null, 2)}