diff --git a/.pnp.cjs b/.pnp.cjs index 3c7a5161..afc0a6f3 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -66,6 +66,7 @@ const RAW_RUNTIME_STATE = ["jest", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:29.7.0"],\ ["jest-environment-jsdom", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:29.7.0"],\ ["jsdom", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:24.1.1"],\ + ["msw", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:2.6.4"],\ ["next", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:14.2.5"],\ ["prettier", "npm:3.3.3"],\ ["react", "npm:18.3.1"],\ @@ -3059,6 +3060,37 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@bundled-es-modules/cookie", [\ + ["npm:2.0.1", {\ + "packageLocation": "../.yarn/berry/cache/@bundled-es-modules-cookie-npm-2.0.1-fb001bd2b9-10c0.zip/node_modules/@bundled-es-modules/cookie/",\ + "packageDependencies": [\ + ["@bundled-es-modules/cookie", "npm:2.0.1"],\ + ["cookie", "npm:0.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@bundled-es-modules/statuses", [\ + ["npm:1.0.1", {\ + "packageLocation": "../.yarn/berry/cache/@bundled-es-modules-statuses-npm-1.0.1-c6f8822c93-10c0.zip/node_modules/@bundled-es-modules/statuses/",\ + "packageDependencies": [\ + ["@bundled-es-modules/statuses", "npm:1.0.1"],\ + ["statuses", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@bundled-es-modules/tough-cookie", [\ + ["npm:0.1.6", {\ + "packageLocation": "../.yarn/berry/cache/@bundled-es-modules-tough-cookie-npm-0.1.6-aeb12ee45b-10c0.zip/node_modules/@bundled-es-modules/tough-cookie/",\ + "packageDependencies": [\ + ["@bundled-es-modules/tough-cookie", "npm:0.1.6"],\ + ["@types/tough-cookie", "npm:4.0.5"],\ + ["tough-cookie", "npm:4.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@cloudflare/workers-types", [\ ["npm:4.20240815.0", {\ "packageLocation": "../.yarn/berry/cache/@cloudflare-workers-types-npm-4.20240815.0-bb8aae3c98-10c0.zip/node_modules/@cloudflare/workers-types/",\ @@ -3893,6 +3925,75 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@inquirer/confirm", [\ + ["npm:5.0.1", {\ + "packageLocation": "../.yarn/berry/cache/@inquirer-confirm-npm-5.0.1-a2a9a63d5e-10c0.zip/node_modules/@inquirer/confirm/",\ + "packageDependencies": [\ + ["@inquirer/confirm", "npm:5.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9ddb9ae5ce2eaeb3c5041745041bbf7092ba82bf460813fdc8fca5dfa8f03c581bb8b856fd6894af81e402f777690df3e81714cecc052bc4baa1b4764fadbcc7#npm:5.0.1", {\ + "packageLocation": "./.yarn/__virtual__/@inquirer-confirm-virtual-b267008812/2/.yarn/berry/cache/@inquirer-confirm-npm-5.0.1-a2a9a63d5e-10c0.zip/node_modules/@inquirer/confirm/",\ + "packageDependencies": [\ + ["@inquirer/confirm", "virtual:9ddb9ae5ce2eaeb3c5041745041bbf7092ba82bf460813fdc8fca5dfa8f03c581bb8b856fd6894af81e402f777690df3e81714cecc052bc4baa1b4764fadbcc7#npm:5.0.1"],\ + ["@inquirer/core", "npm:10.0.1"],\ + ["@inquirer/type", "virtual:9030ac121c7fc461bd8ac96830fa60656654994e99de2dad634bb6ef71c6537e8fe44054bb69ed04938615fe1d95cdb91ae61d1e1ab01b7f4bd0c050668ec454#npm:3.0.0"],\ + ["@types/node", null]\ + ],\ + "packagePeers": [\ + "@types/node"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@inquirer/core", [\ + ["npm:10.0.1", {\ + "packageLocation": "../.yarn/berry/cache/@inquirer-core-npm-10.0.1-9030ac121c-10c0.zip/node_modules/@inquirer/core/",\ + "packageDependencies": [\ + ["@inquirer/core", "npm:10.0.1"],\ + ["@inquirer/figures", "npm:1.0.7"],\ + ["@inquirer/type", "virtual:9030ac121c7fc461bd8ac96830fa60656654994e99de2dad634bb6ef71c6537e8fe44054bb69ed04938615fe1d95cdb91ae61d1e1ab01b7f4bd0c050668ec454#npm:3.0.0"],\ + ["ansi-escapes", "npm:4.3.2"],\ + ["cli-width", "npm:4.1.0"],\ + ["mute-stream", "npm:2.0.0"],\ + ["signal-exit", "npm:4.1.0"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["wrap-ansi", "npm:6.2.0"],\ + ["yoctocolors-cjs", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@inquirer/figures", [\ + ["npm:1.0.7", {\ + "packageLocation": "../.yarn/berry/cache/@inquirer-figures-npm-1.0.7-47bb10d63a-10c0.zip/node_modules/@inquirer/figures/",\ + "packageDependencies": [\ + ["@inquirer/figures", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@inquirer/type", [\ + ["npm:3.0.0", {\ + "packageLocation": "../.yarn/berry/cache/@inquirer-type-npm-3.0.0-341eac06c6-10c0.zip/node_modules/@inquirer/type/",\ + "packageDependencies": [\ + ["@inquirer/type", "npm:3.0.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9030ac121c7fc461bd8ac96830fa60656654994e99de2dad634bb6ef71c6537e8fe44054bb69ed04938615fe1d95cdb91ae61d1e1ab01b7f4bd0c050668ec454#npm:3.0.0", {\ + "packageLocation": "./.yarn/__virtual__/@inquirer-type-virtual-e4b630a403/2/.yarn/berry/cache/@inquirer-type-npm-3.0.0-341eac06c6-10c0.zip/node_modules/@inquirer/type/",\ + "packageDependencies": [\ + ["@inquirer/type", "virtual:9030ac121c7fc461bd8ac96830fa60656654994e99de2dad634bb6ef71c6537e8fe44054bb69ed04938615fe1d95cdb91ae61d1e1ab01b7f4bd0c050668ec454#npm:3.0.0"],\ + ["@types/node", null]\ + ],\ + "packagePeers": [\ + "@types/node"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@isaacs/cliui", [\ ["npm:8.0.2", {\ "packageLocation": "../.yarn/berry/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-10c0.zip/node_modules/@isaacs/cliui/",\ @@ -4293,6 +4394,21 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@mswjs/interceptors", [\ + ["npm:0.36.10", {\ + "packageLocation": "../.yarn/berry/cache/@mswjs-interceptors-npm-0.36.10-3730eb6609-10c0.zip/node_modules/@mswjs/interceptors/",\ + "packageDependencies": [\ + ["@mswjs/interceptors", "npm:0.36.10"],\ + ["@open-draft/deferred-promise", "npm:2.2.0"],\ + ["@open-draft/logger", "npm:0.3.0"],\ + ["@open-draft/until", "npm:2.1.0"],\ + ["is-node-process", "npm:1.2.0"],\ + ["outvariant", "npm:1.4.3"],\ + ["strict-event-emitter", "npm:0.5.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@ndelangen/get-tarball", [\ ["npm:3.0.9", {\ "packageLocation": "../.yarn/berry/cache/@ndelangen-get-tarball-npm-3.0.9-c4692f22a4-10c0.zip/node_modules/@ndelangen/get-tarball/",\ @@ -4460,6 +4576,35 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@open-draft/deferred-promise", [\ + ["npm:2.2.0", {\ + "packageLocation": "../.yarn/berry/cache/@open-draft-deferred-promise-npm-2.2.0-adf396dc9f-10c0.zip/node_modules/@open-draft/deferred-promise/",\ + "packageDependencies": [\ + ["@open-draft/deferred-promise", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@open-draft/logger", [\ + ["npm:0.3.0", {\ + "packageLocation": "../.yarn/berry/cache/@open-draft-logger-npm-0.3.0-12b03e55aa-10c0.zip/node_modules/@open-draft/logger/",\ + "packageDependencies": [\ + ["@open-draft/logger", "npm:0.3.0"],\ + ["is-node-process", "npm:1.2.0"],\ + ["outvariant", "npm:1.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@open-draft/until", [\ + ["npm:2.1.0", {\ + "packageLocation": "../.yarn/berry/cache/@open-draft-until-npm-2.1.0-e27da33c52-10c0.zip/node_modules/@open-draft/until/",\ + "packageDependencies": [\ + ["@open-draft/until", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@pkgjs/parseargs", [\ ["npm:0.11.0", {\ "packageLocation": "../.yarn/berry/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-10c0.zip/node_modules/@pkgjs/parseargs/",\ @@ -7189,6 +7334,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/cookie", [\ + ["npm:0.6.0", {\ + "packageLocation": "../.yarn/berry/cache/@types-cookie-npm-0.6.0-1f4c3f48f0-10c0.zip/node_modules/@types/cookie/",\ + "packageDependencies": [\ + ["@types/cookie", "npm:0.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/cross-spawn", [\ ["npm:6.0.6", {\ "packageLocation": "../.yarn/berry/cache/@types-cross-spawn-npm-6.0.6-fbe5fe9243-10c0.zip/node_modules/@types/cross-spawn/",\ @@ -7658,6 +7812,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/statuses", [\ + ["npm:2.0.5", {\ + "packageLocation": "../.yarn/berry/cache/@types-statuses-npm-2.0.5-f46121f53f-10c0.zip/node_modules/@types/statuses/",\ + "packageDependencies": [\ + ["@types/statuses", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/tough-cookie", [\ ["npm:4.0.5", {\ "packageLocation": "../.yarn/berry/cache/@types-tough-cookie-npm-4.0.5-8c5e2162e1-10c0.zip/node_modules/@types/tough-cookie/",\ @@ -10104,6 +10267,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["cli-width", [\ + ["npm:4.1.0", {\ + "packageLocation": "../.yarn/berry/cache/cli-width-npm-4.1.0-c08b53be83-10c0.zip/node_modules/cli-width/",\ + "packageDependencies": [\ + ["cli-width", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["client-only", [\ ["npm:0.0.1", {\ "packageLocation": "../.yarn/berry/cache/client-only-npm-0.0.1-07d3e9505c-10c0.zip/node_modules/client-only/",\ @@ -10460,6 +10632,13 @@ const RAW_RUNTIME_STATE = ["cookie", "npm:0.6.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:0.7.2", {\ + "packageLocation": "../.yarn/berry/cache/cookie-npm-0.7.2-6ea9ee4231-10c0.zip/node_modules/cookie/",\ + "packageDependencies": [\ + ["cookie", "npm:0.7.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["cookie-signature", [\ @@ -13610,6 +13789,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["graphql", [\ + ["npm:16.9.0", {\ + "packageLocation": "../.yarn/berry/cache/graphql-npm-16.9.0-a36f71845f-10c0.zip/node_modules/graphql/",\ + "packageDependencies": [\ + ["graphql", "npm:16.9.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["gunzip-maybe", [\ ["npm:1.4.2", {\ "packageLocation": "../.yarn/berry/cache/gunzip-maybe-npm-1.4.2-97df376cb9-10c0.zip/node_modules/gunzip-maybe/",\ @@ -13801,6 +13989,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["headers-polyfill", [\ + ["npm:4.0.3", {\ + "packageLocation": "../.yarn/berry/cache/headers-polyfill-npm-4.0.3-65ca63b329-10c0.zip/node_modules/headers-polyfill/",\ + "packageDependencies": [\ + ["headers-polyfill", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["hmac-drbg", [\ ["npm:1.0.1", {\ "packageLocation": "../.yarn/berry/cache/hmac-drbg-npm-1.0.1-3499ad31cd-10c0.zip/node_modules/hmac-drbg/",\ @@ -14492,6 +14689,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["is-node-process", [\ + ["npm:1.2.0", {\ + "packageLocation": "../.yarn/berry/cache/is-node-process-npm-1.2.0-34f2abe8e1-10c0.zip/node_modules/is-node-process/",\ + "packageDependencies": [\ + ["is-node-process", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-number", [\ ["npm:7.0.0", {\ "packageLocation": "../.yarn/berry/cache/is-number-npm-7.0.0-060086935c-10c0.zip/node_modules/is-number/",\ @@ -16575,6 +16781,55 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["msw", [\ + ["npm:2.6.4", {\ + "packageLocation": "./.yarn/unplugged/msw-virtual-9ddb9ae5ce/node_modules/msw/",\ + "packageDependencies": [\ + ["msw", "npm:2.6.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:2.6.4", {\ + "packageLocation": "./.yarn/unplugged/msw-virtual-9ddb9ae5ce/node_modules/msw/",\ + "packageDependencies": [\ + ["msw", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:2.6.4"],\ + ["@bundled-es-modules/cookie", "npm:2.0.1"],\ + ["@bundled-es-modules/statuses", "npm:1.0.1"],\ + ["@bundled-es-modules/tough-cookie", "npm:0.1.6"],\ + ["@inquirer/confirm", "virtual:9ddb9ae5ce2eaeb3c5041745041bbf7092ba82bf460813fdc8fca5dfa8f03c581bb8b856fd6894af81e402f777690df3e81714cecc052bc4baa1b4764fadbcc7#npm:5.0.1"],\ + ["@mswjs/interceptors", "npm:0.36.10"],\ + ["@open-draft/deferred-promise", "npm:2.2.0"],\ + ["@open-draft/until", "npm:2.1.0"],\ + ["@types/cookie", "npm:0.6.0"],\ + ["@types/statuses", "npm:2.0.5"],\ + ["@types/typescript", null],\ + ["chalk", "npm:4.1.2"],\ + ["graphql", "npm:16.9.0"],\ + ["headers-polyfill", "npm:4.0.3"],\ + ["is-node-process", "npm:1.2.0"],\ + ["outvariant", "npm:1.4.3"],\ + ["path-to-regexp", "npm:6.3.0"],\ + ["strict-event-emitter", "npm:0.5.1"],\ + ["type-fest", "npm:4.26.1"],\ + ["typescript", "patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=379a07"],\ + ["yargs", "npm:17.7.2"]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mute-stream", [\ + ["npm:2.0.0", {\ + "packageLocation": "../.yarn/berry/cache/mute-stream-npm-2.0.0-45d3c1ef83-10c0.zip/node_modules/mute-stream/",\ + "packageDependencies": [\ + ["mute-stream", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["mz", [\ ["npm:2.7.0", {\ "packageLocation": "../.yarn/berry/cache/mz-npm-2.7.0-ec3cef4ec2-10c0.zip/node_modules/mz/",\ @@ -17183,6 +17438,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["outvariant", [\ + ["npm:1.4.3", {\ + "packageLocation": "../.yarn/berry/cache/outvariant-npm-1.4.3-192f951f81-10c0.zip/node_modules/outvariant/",\ + "packageDependencies": [\ + ["outvariant", "npm:1.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["p-cancelable", [\ ["npm:2.1.1", {\ "packageLocation": "../.yarn/berry/cache/p-cancelable-npm-2.1.1-9388305f02-10c0.zip/node_modules/p-cancelable/",\ @@ -17459,6 +17723,13 @@ const RAW_RUNTIME_STATE = ["path-to-regexp", "npm:0.1.7"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:6.3.0", {\ + "packageLocation": "../.yarn/berry/cache/path-to-regexp-npm-6.3.0-ee2cdde576-10c0.zip/node_modules/path-to-regexp/",\ + "packageDependencies": [\ + ["path-to-regexp", "npm:6.3.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["path-type", [\ @@ -19652,6 +19923,7 @@ const RAW_RUNTIME_STATE = ["jest", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:29.7.0"],\ ["jest-environment-jsdom", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:29.7.0"],\ ["jsdom", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:24.1.1"],\ + ["msw", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:2.6.4"],\ ["next", "virtual:d33a53ec4f2d48ae7651be05af9a3287918dc7e33dbef056d70f8f2e9a9e865a20fd7ecaabe8bc463311491ca092147063be603e51d20447f968576fdf14483f#npm:14.2.5"],\ ["prettier", "npm:3.3.3"],\ ["react", "npm:18.3.1"],\ @@ -19945,6 +20217,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["strict-event-emitter", [\ + ["npm:0.5.1", {\ + "packageLocation": "../.yarn/berry/cache/strict-event-emitter-npm-0.5.1-8414bf36b3-10c0.zip/node_modules/strict-event-emitter/",\ + "packageDependencies": [\ + ["strict-event-emitter", "npm:0.5.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["string-length", [\ ["npm:4.0.2", {\ "packageLocation": "../.yarn/berry/cache/string-length-npm-4.0.2-675173c7a2-10c0.zip/node_modules/string-length/",\ @@ -21159,6 +21440,13 @@ const RAW_RUNTIME_STATE = ["type-fest", "npm:2.19.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.26.1", {\ + "packageLocation": "../.yarn/berry/cache/type-fest-npm-4.26.1-274c31182d-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:4.26.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["type-is", [\ @@ -22069,6 +22357,16 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["wrap-ansi", [\ + ["npm:6.2.0", {\ + "packageLocation": "../.yarn/berry/cache/wrap-ansi-npm-6.2.0-439a7246d8-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:6.2.0"],\ + ["ansi-styles", "npm:4.3.0"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:7.0.0", {\ "packageLocation": "../.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ "packageDependencies": [\ @@ -22263,6 +22561,15 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }]\ + ]],\ + ["yoctocolors-cjs", [\ + ["npm:2.1.2", {\ + "packageLocation": "../.yarn/berry/cache/yoctocolors-cjs-npm-2.1.2-52d47e1a9b-10c0.zip/node_modules/yoctocolors-cjs/",\ + "packageDependencies": [\ + ["yoctocolors-cjs", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ ]]\ ]\ }'; diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index c053d3f7..31fd497b 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/package.json b/package.json index 000b436a..5ffaec83 100644 --- a/package.json +++ b/package.json @@ -67,11 +67,17 @@ "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "jsdom": "^24.0.0", + "msw": "^2.6.4", "prettier": "^3.2.5", "storybook": "8.0.4", "ts-jest": "^29.0.5", "ts-node": "^10.9.1", "webpack": "^5.95.0" }, - "packageManager": "yarn@4.5.0" -} + "packageManager": "yarn@4.5.0", + "msw": { + "workerDirectory": [ + "public" + ] + } +} \ No newline at end of file diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js new file mode 100644 index 00000000..8241ef8c --- /dev/null +++ b/public/mockServiceWorker.js @@ -0,0 +1,295 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.6.4' +const INTEGRITY_CHECKSUM = 'ca7800994cc8bfb5eb961e037c877074' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body], + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + headers.delete('accept', 'msw/passthrough') + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)), + ) + }) +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} diff --git a/src/components/bannerAdmin/BannerList.tsx b/src/components/bannerAdmin/BannerList.tsx new file mode 100644 index 00000000..f0de1039 --- /dev/null +++ b/src/components/bannerAdmin/BannerList.tsx @@ -0,0 +1,22 @@ +import { Tab } from '@sopt-makers/ui'; + +import ListItem from './components/ListItem'; +import { bannerListCss } from './style'; + +const BannerList = () => { + return ( + <> + console.log()} + /> + + + ); +}; + +export default BannerList; diff --git a/src/components/bannerAdmin/components/ListItem.tsx b/src/components/bannerAdmin/components/ListItem.tsx new file mode 100644 index 00000000..dc99237e --- /dev/null +++ b/src/components/bannerAdmin/components/ListItem.tsx @@ -0,0 +1,38 @@ +import { colors } from '@sopt-makers/colors'; +import { IconEdit, IconTrash } from '@sopt-makers/icons'; +import { Tag } from '@sopt-makers/ui'; + +import { listItemCss } from './style'; + +type TagType = 'pg-community' | 'cr-main' | 'cr-feed' | 'org'; + +const TagColorMap: Record = { + 'pg-community': '#58CF0580', + 'cr-main': '#00AEFF80', + 'cr-feed': '#FA73E380', + org: colors.orangeAlpha500, +}; + +const ListItem = () => { + return ( +
  • +
    진행 예정
    +
    + + 플그 커뮤니티 + + + 플그 커뮤니티 + + 마케팅 오거나이저 + 2024.11.02 +
    +
    + + +
    +
  • + ); +}; + +export default ListItem; diff --git a/src/components/bannerAdmin/components/style.ts b/src/components/bannerAdmin/components/style.ts new file mode 100644 index 00000000..40c95aa3 --- /dev/null +++ b/src/components/bannerAdmin/components/style.ts @@ -0,0 +1,49 @@ +import { css } from '@emotion/react'; +import { colors } from '@sopt-makers/colors'; +import { fontsObject } from '@sopt-makers/fonts'; + +export const listItemCss = css({ + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + + width: '100%', + height: '9rem', + + padding: '2rem 3rem 2rem 1.5rem', + + border: `0.1rem solid ${colors.gray800}`, + borderRadius: '1rem', + + color: colors.gray10, + + '&:hover': { + backgroundColor: colors.gray900, + }, + '& > div:first-of-type': { + ...fontsObject.TITLE_6_16_SB, + }, + + '& > div:nth-of-type(2)': { + ...fontsObject.BODY_3_14_M, + display: 'flex', + justifyContent: 'space-evenly', + alignItems: 'center', + gap: '0.8rem', + flexGrow: 1, + + padding: '0 2rem 0 7.1rem', + }, + + '& > div:last-of-type': { + display: 'flex', + alignItems: 'center', + gap: '1.2rem', + + '& > svg': { + width: '2.4rem', + + cursor: 'pointer', + }, + }, +}); diff --git a/src/components/bannerAdmin/index.ts b/src/components/bannerAdmin/index.ts new file mode 100644 index 00000000..14bf047b --- /dev/null +++ b/src/components/bannerAdmin/index.ts @@ -0,0 +1 @@ +export * from './BannerList'; diff --git a/src/components/bannerAdmin/style.ts b/src/components/bannerAdmin/style.ts new file mode 100644 index 00000000..f48e0c8b --- /dev/null +++ b/src/components/bannerAdmin/style.ts @@ -0,0 +1,6 @@ +import { css } from '@emotion/react'; +import { colors } from '@sopt-makers/colors'; + +export const bannerListCss = css({ + paddingTop: '4.9rem', +}); diff --git a/src/components/common/PageWrapper/PageWrapper.tsx b/src/components/common/PageWrapper/PageWrapper.tsx new file mode 100644 index 00000000..34756e40 --- /dev/null +++ b/src/components/common/PageWrapper/PageWrapper.tsx @@ -0,0 +1,22 @@ +import { HTMLAttributes, ReactNode } from 'react'; + +import { pageWrapperCss } from './style'; + +export interface PageWrapperProps + extends Omit, 'title'> { + title: ReactNode; + subTitle?: ReactNode; // TODO: 서브타이틀이 들어가는 스펙이 생길 경우 스타일 정의하기 +} + +const PageWrapper = (props: PageWrapperProps) => { + const { title, children, ...restProps } = props; + + return ( +
    +

    {title}

    + {children} +
    + ); +}; + +export default PageWrapper; diff --git a/src/components/common/PageWrapper/style.ts b/src/components/common/PageWrapper/style.ts new file mode 100644 index 00000000..bff8365a --- /dev/null +++ b/src/components/common/PageWrapper/style.ts @@ -0,0 +1,12 @@ +import { css } from '@emotion/react'; +import { colors } from '@sopt-makers/colors'; +import { fontsObject } from '@sopt-makers/fonts'; + +export const pageWrapperCss = css({ + '& > h1': { + color: colors.gray10, + ...fontsObject.TITLE_1_32_SB, + + paddingBottom: '4.9rem', + }, +}); diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 00000000..2167c9f6 --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1 @@ +export * from './bannerAdmin'; diff --git a/src/mocks/handler.ts b/src/mocks/handler.ts new file mode 100644 index 00000000..3a9096ac --- /dev/null +++ b/src/mocks/handler.ts @@ -0,0 +1,10 @@ +import { http, HttpResponse } from 'msw'; + +export const handler = [ + http.get('http://localhost:3000/test', () => { + console.log('msw set successfully !'); + return HttpResponse.json({ + name: 'test', + }); + }), +]; diff --git a/src/pages/bannerAdmin/index.tsx b/src/pages/bannerAdmin/index.tsx new file mode 100644 index 00000000..43cbd1a2 --- /dev/null +++ b/src/pages/bannerAdmin/index.tsx @@ -0,0 +1,12 @@ +import BannerList from '@/components/bannerAdmin/BannerList'; +import PageWrapper from '@/components/common/PageWrapper/PageWrapper'; + +const BannerAdminPage = () => { + return ( + + + + ); +}; + +export default BannerAdminPage; diff --git a/yarn.lock b/yarn.lock index 3ce182e3..20c53579 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1567,6 +1567,34 @@ __metadata: languageName: node linkType: hard +"@bundled-es-modules/cookie@npm:^2.0.1": + version: 2.0.1 + resolution: "@bundled-es-modules/cookie@npm:2.0.1" + dependencies: + cookie: "npm:^0.7.2" + checksum: 10c0/dfac5e36127e827c5557b8577f17a8aa94c057baff6d38555917927b99da0ecf0b1357e7fedadc8853ecdbd4a8a7fa1f5e64111b2a656612f4a36376f5bdbe8d + languageName: node + linkType: hard + +"@bundled-es-modules/statuses@npm:^1.0.1": + version: 1.0.1 + resolution: "@bundled-es-modules/statuses@npm:1.0.1" + dependencies: + statuses: "npm:^2.0.1" + checksum: 10c0/c1a8ede3efa8da61ccda4b98e773582a9733edfbeeee569d4630785f8e018766202edb190a754a3ec7a7f6bd738e857829affc2fdb676b6dab4db1bb44e62785 + languageName: node + linkType: hard + +"@bundled-es-modules/tough-cookie@npm:^0.1.6": + version: 0.1.6 + resolution: "@bundled-es-modules/tough-cookie@npm:0.1.6" + dependencies: + "@types/tough-cookie": "npm:^4.0.5" + tough-cookie: "npm:^4.1.4" + checksum: 10c0/28bcac878bff6b34719ba3aa8341e9924772ee55de5487680ebe784981ec9fccb70ed5d46f563e2404855a04de606f9e56aa4202842d4f5835bc04a4fe820571 + languageName: node + linkType: hard + "@cloudflare/workers-types@npm:^4.20240404.0": version: 4.20240815.0 resolution: "@cloudflare/workers-types@npm:4.20240815.0" @@ -2229,6 +2257,51 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:^5.0.0": + version: 5.0.1 + resolution: "@inquirer/confirm@npm:5.0.1" + dependencies: + "@inquirer/core": "npm:^10.0.1" + "@inquirer/type": "npm:^3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/bd8fafd75d4d591b3c153cb2f76d7ac9163701cb0a032e8e589d51c918a41d1da70ae7aaeb4d8d7394979a9af24c23a7d71ea6106d3308004f9829f133765776 + languageName: node + linkType: hard + +"@inquirer/core@npm:^10.0.1": + version: 10.0.1 + resolution: "@inquirer/core@npm:10.0.1" + dependencies: + "@inquirer/figures": "npm:^1.0.7" + "@inquirer/type": "npm:^3.0.0" + ansi-escapes: "npm:^4.3.2" + cli-width: "npm:^4.1.0" + mute-stream: "npm:^2.0.0" + signal-exit: "npm:^4.1.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10c0/d55682e5c26c41037cb80a3bef5a12ae4eedf14621786b44088f48aeb32eb815dfb0f241950b6dba2eb84bf22131c126a2cb59e8e2d4ef63ad3613d59339063a + languageName: node + linkType: hard + +"@inquirer/figures@npm:^1.0.7": + version: 1.0.7 + resolution: "@inquirer/figures@npm:1.0.7" + checksum: 10c0/d7b4cfcd38dd43d1ac79da52c4478aa89145207004a471aa2083856f1d9b99adef45563f09d66c09d6457b09200fcf784527804b70ad3bd517cbc5e11142c2df + languageName: node + linkType: hard + +"@inquirer/type@npm:^3.0.0": + version: 3.0.0 + resolution: "@inquirer/type@npm:3.0.0" + peerDependencies: + "@types/node": ">=18" + checksum: 10c0/4c26595749782e3dfbfea0c7a19b1db603485e0fce4a9d4fe52be1c9c05fcb2cc3afbc849d03bddbde47896786df93d6f02657eeeae5dbc8cdc78cd8a4f80123 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -2567,6 +2640,20 @@ __metadata: languageName: node linkType: hard +"@mswjs/interceptors@npm:^0.36.5": + version: 0.36.10 + resolution: "@mswjs/interceptors@npm:0.36.10" + dependencies: + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/logger": "npm:^0.3.0" + "@open-draft/until": "npm:^2.0.0" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + strict-event-emitter: "npm:^0.5.1" + checksum: 10c0/68d633276693106c9e889ca8d893b9be29c5603571e8c592d3bb23a8b4b1966f088cba7debacb7fb445335362da683b2b16218adea1a65ab0e946c7e97b40119 + languageName: node + linkType: hard + "@ndelangen/get-tarball@npm:^3.0.7": version: 3.0.9 resolution: "@ndelangen/get-tarball@npm:3.0.9" @@ -2706,6 +2793,30 @@ __metadata: languageName: node linkType: hard +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 10c0/eafc1b1d0fc8edb5e1c753c5e0f3293410b40dde2f92688211a54806d4136887051f39b98c1950370be258483deac9dfd17cf8b96557553765198ef2547e4549 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 10c0/90010647b22e9693c16258f4f9adb034824d1771d3baa313057b9a37797f571181005bc50415a934eaf7c891d90ff71dcd7a9d5048b0b6bb438f31bef2c7c5c1 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 10c0/61d3f99718dd86bb393fee2d7a785f961dcaf12f2055f0c693b27f4d0cd5f7a03d498a6d9289773b117590d794a43cd129366fd8e99222e4832f67b1653d54cf + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4551,6 +4662,13 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "@types/cookie@npm:0.6.0" + checksum: 10c0/5b326bd0188120fb32c0be086b141b1481fec9941b76ad537f9110e10d61ee2636beac145463319c71e4be67a17e85b81ca9e13ceb6e3bb63b93d16824d6c149 + languageName: node + linkType: hard + "@types/cross-spawn@npm:^6.0.2": version: 6.0.6 resolution: "@types/cross-spawn@npm:6.0.6" @@ -4939,7 +5057,14 @@ __metadata: languageName: node linkType: hard -"@types/tough-cookie@npm:*": +"@types/statuses@npm:^2.0.4": + version: 2.0.5 + resolution: "@types/statuses@npm:2.0.5" + checksum: 10c0/4dacec0b29483a44be902a022a11a22b339de7a6e7b2059daa4f7add10cb6dbcc28d02d2a416fe9687e48d335906bf983065391836d4e7c847e55ddef4de8fad + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*, @types/tough-cookie@npm:^4.0.5": version: 4.0.5 resolution: "@types/tough-cookie@npm:4.0.5" checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 @@ -5701,7 +5826,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -6916,6 +7041,13 @@ __metadata: languageName: node linkType: hard +"cli-width@npm:^4.1.0": + version: 4.1.0 + resolution: "cli-width@npm:4.1.0" + checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f + languageName: node + linkType: hard + "client-only@npm:0.0.1": version: 0.0.1 resolution: "client-only@npm:0.0.1" @@ -7225,6 +7357,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:^0.7.2": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2 + languageName: node + linkType: hard + "core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": version: 3.38.0 resolution: "core-js-compat@npm:3.38.0" @@ -9903,6 +10042,13 @@ __metadata: languageName: node linkType: hard +"graphql@npm:^16.8.1": + version: 16.9.0 + resolution: "graphql@npm:16.9.0" + checksum: 10c0/a8850f077ff767377237d1f8b1da2ec70aeb7623cdf1dfc9e1c7ae93accc0c8149c85abe68923be9871a2934b1bce5a2496f846d4d56e1cfb03eaaa7ddba9b6a + languageName: node + linkType: hard + "gunzip-maybe@npm:^1.4.2": version: 1.4.2 resolution: "gunzip-maybe@npm:1.4.2" @@ -10080,6 +10226,13 @@ __metadata: languageName: node linkType: hard +"headers-polyfill@npm:^4.0.2": + version: 4.0.3 + resolution: "headers-polyfill@npm:4.0.3" + checksum: 10c0/53e85b2c6385f8d411945fb890c5369f1469ce8aa32a6e8d28196df38568148de640c81cf88cbc7c67767103dd9acba48f4f891982da63178fc6e34560022afe + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -10672,6 +10825,13 @@ __metadata: languageName: node linkType: hard +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed + languageName: node + linkType: hard + "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" @@ -12466,6 +12626,46 @@ __metadata: languageName: node linkType: hard +"msw@npm:^2.6.4": + version: 2.6.4 + resolution: "msw@npm:2.6.4" + dependencies: + "@bundled-es-modules/cookie": "npm:^2.0.1" + "@bundled-es-modules/statuses": "npm:^1.0.1" + "@bundled-es-modules/tough-cookie": "npm:^0.1.6" + "@inquirer/confirm": "npm:^5.0.0" + "@mswjs/interceptors": "npm:^0.36.5" + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/until": "npm:^2.1.0" + "@types/cookie": "npm:^0.6.0" + "@types/statuses": "npm:^2.0.4" + chalk: "npm:^4.1.2" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:^4.0.2" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + path-to-regexp: "npm:^6.3.0" + strict-event-emitter: "npm:^0.5.1" + type-fest: "npm:^4.26.1" + yargs: "npm:^17.7.2" + peerDependencies: + typescript: ">= 4.8.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10c0/1a1faa940cbac754cdf4686876c172339f6af8736ec758ac6ed3897bfa3e2408685903f9fbfa61431ac8a81ec5d9377a280934fafc5403a0b0129a17d9e24cc0 + languageName: node + linkType: hard + +"mute-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "mute-stream@npm:2.0.0" + checksum: 10c0/2cf48a2087175c60c8dcdbc619908b49c07f7adcfc37d29236b0c5c612d6204f789104c98cc44d38acab7b3c96f4a3ec2cfdc4934d0738d876dbefa2a12c69f4 + languageName: node + linkType: hard + "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -13003,6 +13203,13 @@ __metadata: languageName: node linkType: hard +"outvariant@npm:^1.4.0, outvariant@npm:^1.4.3": + version: 1.4.3 + resolution: "outvariant@npm:1.4.3" + checksum: 10c0/5976ca7740349cb8c71bd3382e2a762b1aeca6f33dc984d9d896acdf3c61f78c3afcf1bfe9cc633a7b3c4b295ec94d292048f83ea2b2594fae4496656eba992c + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -13254,6 +13461,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^6.3.0": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6 + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -15073,6 +15287,7 @@ __metadata: jest: "npm:^29.5.0" jest-environment-jsdom: "npm:^29.5.0" jsdom: "npm:^24.0.0" + msw: "npm:^2.6.4" next: "npm:^14.1.4" prettier: "npm:^3.2.5" react: "npm:^18.2.0" @@ -15238,7 +15453,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": +"statuses@npm:2.0.1, statuses@npm:^2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 @@ -15324,6 +15539,13 @@ __metadata: languageName: node linkType: hard +"strict-event-emitter@npm:^0.5.1": + version: 0.5.1 + resolution: "strict-event-emitter@npm:0.5.1" + checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7 + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -16293,6 +16515,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^4.26.1": + version: 4.26.1 + resolution: "type-fest@npm:4.26.1" + checksum: 10c0/d2719ff8d380befe8a3c61068f37f28d6fa2849fd140c5d2f0f143099e371da6856aad7c97e56b83329d45bfe504afe9fd936a7cff600cc0d46aa9ffb008d6c6 + languageName: node + linkType: hard + "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -17092,6 +17321,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -17209,7 +17449,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -17244,3 +17484,10 @@ __metadata: checksum: 10c0/cb287fe5e6acfa82690acb43c283de34e945c571a78a939774f6eaba7c285bacdf6c90fbc16ce530060863984c906d2b4c6ceb069c94d1e0a06d5f2b458e2a92 languageName: node linkType: hard + +"yoctocolors-cjs@npm:^2.1.2": + version: 2.1.2 + resolution: "yoctocolors-cjs@npm:2.1.2" + checksum: 10c0/a0e36eb88fea2c7981eab22d1ba45e15d8d268626e6c4143305e2c1628fa17ebfaa40cd306161a8ce04c0a60ee0262058eab12567493d5eb1409780853454c6f + languageName: node + linkType: hard