From 6af4e9e36f38ab93534d15f24c2950635f9ba4f4 Mon Sep 17 00:00:00 2001 From: yyj0917 Date: Fri, 22 Aug 2025 16:24:30 +0900 Subject: [PATCH 1/7] =?UTF-8?q?feat=20:=20orval=20swagger=20api=20type,=20?= =?UTF-8?q?function=20=EC=9E=90=EB=8F=99=20=EC=83=9D=EC=84=B1=20=EB=B0=8F?= =?UTF-8?q?=20config.ts=20=EC=88=98=EC=A0=95=20&=20auth-provider.tsx=20->?= =?UTF-8?q?=20token=20=EC=A0=84=EC=97=AD=EC=83=81=ED=83=9C=EA=B4=80?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orval.config.ts | 26 + package.json | 5 +- pnpm-lock.yaml | 1348 ++++++++++++++++- .../(auth)/auth/kakao/callback/page.tsx | 53 +- src/app/(pages)/(auth)/login/page.tsx | 24 +- .../_components/make-video-input-ui.tsx | 2 +- .../mypage/_components/info/info-contents.tsx | 4 +- .../_components/info/store-detail-ui.tsx | 6 +- src/app/(pages)/layout.tsx | 11 +- src/app/api/cookie-set/route.ts | 17 +- src/app/api/logout/route.ts | 21 + src/components/logout-button.tsx | 20 +- src/hooks/queries/use-store-detail.ts | 2 +- src/hooks/use-video-generation.ts | 110 ++ src/lib/api/authentication/authentication.ts | 31 + src/lib/api/config.ts | 54 +- src/lib/api/home/home.ts | 28 + src/lib/api/store.ts | 2 +- src/lib/api/store/store.ts | 62 + src/lib/api/user/user.ts | 44 + src/lib/api/video/video.ts | 72 + src/lib/auth/auth.service.ts | 17 - src/lib/mockdata/store/store-detail.ts | 2 +- src/lib/providers/auth-providers.tsx | 21 + src/lib/stores/auth-store.ts | 13 + src/lib/stores/mypage-store.ts | 5 +- src/middleware.ts | 119 +- src/services/auth/auth.service.ts | 20 + src/{lib => services}/auth/kakao.service.ts | 0 src/services/video/VideoGenerationService.ts | 157 ++ src/types/api/createStoreRequest.ts | 14 + src/types/api/createStoreResponse.ts | 15 + src/types/api/createVideoGenerationRequest.ts | 23 + .../api/createVideoGenerationResponse.ts | 15 + src/types/api/homeResponse.ts | 13 + src/types/api/imageRequest.ts | 17 + src/types/api/imageRequestDto.ts | 17 + src/types/api/index.ts | 34 + src/types/api/kakaoLoginRequest.ts | 15 + src/types/api/loginResponse.ts | 15 + src/types/api/store.ts | 23 + src/types/api/storeResponse.ts | 15 + src/types/api/updateStoreRequest.ts | 14 + .../api/updateUserOnboardingStatusRequest.ts | 24 + .../updateUserOnboardingStatusRequestRole.ts | 20 + src/types/api/user.ts | 24 + src/types/api/userOnboardingStatusResponse.ts | 24 + .../api/userOnboardingStatusResponseRole.ts | 20 + src/types/api/userRole.ts | 17 + src/types/api/video.ts | 17 + src/types/api/videoGeneration.ts | 24 + src/types/api/videoGenerationStatus.ts | 18 + .../api/videoGenerationStatusResponse.ts | 20 + .../videoGenerationStatusResponseStatus.ts | 21 + src/types/api/videoRequest.ts | 16 + src/types/api/videoRequestDto.ts | 15 + src/types/api/videoResponse.ts | 23 + src/{lib/api/types.ts => types/auth/index.ts} | 7 +- src/types/mypage/store-detail.types.ts | 15 - src/types/store/index.ts | 13 + src/types/user/index.ts | 7 + 61 files changed, 2726 insertions(+), 125 deletions(-) create mode 100644 orval.config.ts create mode 100644 src/app/api/logout/route.ts create mode 100644 src/hooks/use-video-generation.ts create mode 100644 src/lib/api/authentication/authentication.ts create mode 100644 src/lib/api/home/home.ts create mode 100644 src/lib/api/store/store.ts create mode 100644 src/lib/api/user/user.ts create mode 100644 src/lib/api/video/video.ts delete mode 100644 src/lib/auth/auth.service.ts create mode 100644 src/lib/providers/auth-providers.tsx create mode 100644 src/lib/stores/auth-store.ts create mode 100644 src/services/auth/auth.service.ts rename src/{lib => services}/auth/kakao.service.ts (100%) create mode 100644 src/services/video/VideoGenerationService.ts create mode 100644 src/types/api/createStoreRequest.ts create mode 100644 src/types/api/createStoreResponse.ts create mode 100644 src/types/api/createVideoGenerationRequest.ts create mode 100644 src/types/api/createVideoGenerationResponse.ts create mode 100644 src/types/api/homeResponse.ts create mode 100644 src/types/api/imageRequest.ts create mode 100644 src/types/api/imageRequestDto.ts create mode 100644 src/types/api/index.ts create mode 100644 src/types/api/kakaoLoginRequest.ts create mode 100644 src/types/api/loginResponse.ts create mode 100644 src/types/api/store.ts create mode 100644 src/types/api/storeResponse.ts create mode 100644 src/types/api/updateStoreRequest.ts create mode 100644 src/types/api/updateUserOnboardingStatusRequest.ts create mode 100644 src/types/api/updateUserOnboardingStatusRequestRole.ts create mode 100644 src/types/api/user.ts create mode 100644 src/types/api/userOnboardingStatusResponse.ts create mode 100644 src/types/api/userOnboardingStatusResponseRole.ts create mode 100644 src/types/api/userRole.ts create mode 100644 src/types/api/video.ts create mode 100644 src/types/api/videoGeneration.ts create mode 100644 src/types/api/videoGenerationStatus.ts create mode 100644 src/types/api/videoGenerationStatusResponse.ts create mode 100644 src/types/api/videoGenerationStatusResponseStatus.ts create mode 100644 src/types/api/videoRequest.ts create mode 100644 src/types/api/videoRequestDto.ts create mode 100644 src/types/api/videoResponse.ts rename src/{lib/api/types.ts => types/auth/index.ts} (69%) delete mode 100644 src/types/mypage/store-detail.types.ts create mode 100644 src/types/store/index.ts create mode 100644 src/types/user/index.ts diff --git a/orval.config.ts b/orval.config.ts new file mode 100644 index 0000000..3675807 --- /dev/null +++ b/orval.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from 'orval'; + +// .env.local 파일 로드 + +export default defineConfig({ + api: { + input: { + target: 'https://ht-api.ericpark.shop/swagger-ui/index.html', + }, + output: { + target: './src/lib/api/generated.ts', + client: 'axios-functions', + mode: 'tags-split', + schemas: './src/types/api', + }, + override: { + mutator: { + path: './src/lib/api/config.ts', + name: 'apiClient', + }, + }, + hooks: { + afterAllFilesWrite: 'prettier --write', + }, + }, +}); diff --git a/package.json b/package.json index 395dd20..f236f8b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "start": "next start", "lint": "next lint", "lint:fix": "next lint --fix", - "type-check": "tsc --noEmit" + "type-check": "tsc --noEmit", + "api:generate": "orval", + "api:watch": "orval --watch" }, "dependencies": { "@aws-sdk/client-s3": "^3.864.0", @@ -49,6 +51,7 @@ "dotenv": "^17.2.1", "eslint": "^9", "eslint-config-next": "15.4.5", + "orval": "^7.11.2", "tailwindcss": "^4.0.0", "tw-animate-css": "^1.3.6", "typescript": "^5.8.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 842416d..63f1f4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 8.1.0(typescript@5.8.3) '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)) + version: 4.1.11(vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(yaml@2.8.1)) '@tanstack/react-query': specifier: ^5.84.1 version: 5.84.1(react@19.1.0) @@ -73,7 +73,7 @@ importers: version: 11.1.0 zustand: specifier: ^5.0.7 - version: 5.0.7(@types/react@19.1.9)(react@19.1.0) + version: 5.0.7(@types/react@19.1.9)(immer@9.0.21)(react@19.1.0) devDependencies: '@eslint/eslintrc': specifier: ^3 @@ -117,6 +117,9 @@ importers: eslint-config-next: specifier: 15.4.5 version: 15.4.5(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) + orval: + specifier: ^7.11.2 + version: 7.11.2(openapi-types@12.1.3) tailwindcss: specifier: ^4.0.0 version: 4.0.0 @@ -143,6 +146,25 @@ packages: peerDependencies: ajv: '>=8' + '@apidevtools/json-schema-ref-parser@11.7.2': + resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} + engines: {node: '>= 16'} + + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + '@apidevtools/swagger-parser@10.1.1': + resolution: {integrity: sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==} + peerDependencies: + openapi-types: '>=7' + + '@asyncapi/specs@6.10.0': + resolution: {integrity: sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng==} + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -1052,6 +1074,12 @@ packages: resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@gerrit0/mini-shiki@3.11.0': + resolution: {integrity: sha512-ooCDMAOKv71O7MszbXjSQGcI6K5T6NKlemQZOBHLq7Sv/oXCRfYbZ7UgbzFdl20lSXju6Juds4I3y30R6rHA4Q==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1072,6 +1100,14 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@ibm-cloud/openapi-ruleset-utilities@1.9.0': + resolution: {integrity: sha512-AoFbSarOqFBYH+1TZ9Ahkm2IWYSi5v0pBk88fpV+5b3qGJukypX8PwvCWADjuyIccKg48/F73a6hTTkBzDQ2UA==} + engines: {node: '>=16.0.0'} + + '@ibm-cloud/openapi-ruleset@1.31.2': + resolution: {integrity: sha512-g3YYNTiX6zW7quFvDD9szu+54oHj6+4vz8g3/ikOacVsVEX072CvhjX9zRZf1WH4zDXv8KbprsxV+osZQbXPlg==} + engines: {node: '>=16.0.0'} + '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1214,6 +1250,27 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/ternary@1.1.4': + resolution: {integrity: sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + '@mux/mux-data-google-ima@0.2.8': resolution: {integrity: sha512-0ZEkHdcZ6bS8QtcjFcoJeZxJTpX7qRIledf4q1trMWPznugvtajCjCM2kieK/pzkZj1JM6liDRFs1PJSfVUs2A==} @@ -1369,6 +1426,36 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@orval/angular@7.11.2': + resolution: {integrity: sha512-v7I3MXlc1DTFHZlCo10uqBmss/4puXi1EbYdlYGfeZ2sYQiwtRFEYAMnSIxHzMtdtI4jd7iDEH0fZRA7W6yloA==} + + '@orval/axios@7.11.2': + resolution: {integrity: sha512-X5TJTFofCeJrQcHWoH0wz/032DBhPOQuZUUOPYO3DItOnq9/nfHJYKnUfg13wtYw0LVjCxyTZpeGLUBZnY804A==} + + '@orval/core@7.11.2': + resolution: {integrity: sha512-5k2j4ro53yZ3J+tGMu3LpLgVb2OBtxNDgyrJik8qkrFyuORBLx/a+AJRFoPYwZmtnMZzzRXoH4J/fbpW5LXIyg==} + + '@orval/fetch@7.11.2': + resolution: {integrity: sha512-FuupASqk4Dn8ZET7u5Ra5djKy22KfRfec60zRR/o5+L5iQkWKEe/A5DBT1PwjTMnp9789PEGlFPQjZNwMG98Tg==} + + '@orval/hono@7.11.2': + resolution: {integrity: sha512-SddhKMYMB/dJH3YQx3xi0Zd+4tfhrEkqJdqQaYLXgENJiw0aGbdaZTdY6mb/e6qP38TTK6ME2PkYOqwkl2DQ7g==} + + '@orval/mcp@7.11.2': + resolution: {integrity: sha512-9kGKko8wLuCbeETp8Pd8lXLtBpLzEJfR2kl2m19AI3nAoHXE/Tnn3KgjMIg0qvCcsRXGXdYJB7wfxy2URdAxVA==} + + '@orval/mock@7.11.2': + resolution: {integrity: sha512-+uRq6BT6NU2z0UQtgeD6FMuLAxQ5bjJ5PZK3AsbDYFRSmAWUWoeaQcoWyF38F4t7ez779beGs3AlUg+z0Ec4rQ==} + + '@orval/query@7.11.2': + resolution: {integrity: sha512-C/it+wNfcDtuvpB6h/78YwWU+Rjk7eU1Av8jAoGnvxMRli4nnzhSZ83HMILGhYQbE9WcfNZxQJ6OaBoTWqACPg==} + + '@orval/swr@7.11.2': + resolution: {integrity: sha512-95GkKLVy67xJvsiVvK4nTOsCpebWM54FvQdKQaqlJ0FGCNUbqDjVRwBKbjP6dLc/B3wTmBAWlFSLbdVmjGCTYg==} + + '@orval/zod@7.11.2': + resolution: {integrity: sha512-4MzTg5Wms8/LlM3CbYu80dvCbP88bVlQjnYsBdFXuEv0K2GYkBCAhVOrmXCVrPXE89neV6ABkvWQeuKZQpkdxQ==} + '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -1503,6 +1590,21 @@ packages: '@rushstack/eslint-patch@1.12.0': resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} + '@shikijs/engine-oniguruma@3.11.0': + resolution: {integrity: sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==} + + '@shikijs/langs@3.11.0': + resolution: {integrity: sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==} + + '@shikijs/themes@3.11.0': + resolution: {integrity: sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==} + + '@shikijs/types@3.11.0': + resolution: {integrity: sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@smithy/abort-controller@4.0.5': resolution: {integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==} engines: {node: '>=18.0.0'} @@ -1715,6 +1817,79 @@ packages: resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} engines: {node: '>=18.0.0'} + '@stoplight/better-ajv-errors@1.0.3': + resolution: {integrity: sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==} + engines: {node: ^12.20 || >= 14.13} + peerDependencies: + ajv: '>=8' + + '@stoplight/json-ref-readers@1.2.2': + resolution: {integrity: sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==} + engines: {node: '>=8.3.0'} + + '@stoplight/json-ref-resolver@3.1.6': + resolution: {integrity: sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==} + engines: {node: '>=8.3.0'} + + '@stoplight/json@3.21.7': + resolution: {integrity: sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==} + engines: {node: '>=8.3.0'} + + '@stoplight/ordered-object-literal@1.0.5': + resolution: {integrity: sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==} + engines: {node: '>=8'} + + '@stoplight/path@1.3.2': + resolution: {integrity: sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==} + engines: {node: '>=8'} + + '@stoplight/spectral-core@1.20.0': + resolution: {integrity: sha512-5hBP81nCC1zn1hJXL/uxPNRKNcB+/pEIHgCjPRpl/w/qy9yC9ver04tw1W0l/PMiv0UeB5dYgozXVQ4j5a6QQQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-formats@1.8.2': + resolution: {integrity: sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-functions@1.10.1': + resolution: {integrity: sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-parsers@1.0.5': + resolution: {integrity: sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-ref-resolver@1.0.5': + resolution: {integrity: sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-rulesets@1.22.0': + resolution: {integrity: sha512-l2EY2jiKKLsvnPfGy+pXC0LeGsbJzcQP5G/AojHgf+cwN//VYxW1Wvv4WKFx/CLmLxc42mJYF2juwWofjWYNIQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-runtime@1.1.4': + resolution: {integrity: sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/types@13.20.0': + resolution: {integrity: sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@13.6.0': + resolution: {integrity: sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@14.1.1': + resolution: {integrity: sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/yaml-ast-parser@0.0.50': + resolution: {integrity: sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==} + + '@stoplight/yaml@4.3.0': + resolution: {integrity: sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==} + engines: {node: '>=10.8'} + '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} @@ -1922,6 +2097,9 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@types/es-aggregate-error@1.0.6': + resolution: {integrity: sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -1937,6 +2115,9 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1967,6 +2148,12 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/urijs@1.19.25': + resolution: {integrity: sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==} + '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} @@ -2226,6 +2413,10 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn-import-phases@1.0.4: resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} @@ -2242,6 +2433,19 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-errors@3.0.0: + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} + peerDependencies: + ajv: ^8.0.1 + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2266,6 +2470,14 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2324,6 +2536,10 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -2422,6 +2638,10 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2434,6 +2654,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2457,6 +2680,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -2477,6 +2704,10 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + cloudflare-video-element@1.3.4: resolution: {integrity: sha512-F9g+tXzGEXI6v6L48qXxr8vnR8+L6yy7IhpJxK++lpzuVekMHTixxH7/dzLuq6OacVGziU4RB5pzZYJ7/LYtJg==} @@ -2519,6 +2750,9 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2631,6 +2865,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + detect-libc@2.0.4: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} @@ -2675,6 +2913,9 @@ packages: electron-to-chromium@1.5.194: resolution: {integrity: sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -2686,6 +2927,10 @@ packages: resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} engines: {node: '>=10.13.0'} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2697,6 +2942,10 @@ packages: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} + es-aggregate-error@1.0.14: + resolution: {integrity: sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -2728,6 +2977,9 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + esbuild@0.25.8: resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} @@ -2868,10 +3120,18 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2889,6 +3149,12 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -2954,6 +3220,10 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} + engines: {node: '>=14.14'} + fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -2980,6 +3250,10 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -2991,6 +3265,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -3075,6 +3353,13 @@ packages: html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} @@ -3089,6 +3374,9 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -3169,6 +3457,10 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -3290,6 +3582,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -3327,13 +3623,24 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@2.2.1: + resolution: {integrity: sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==} + jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonpath-plus@10.3.0: + resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} + engines: {node: '>=18.0.0'} + hasBin: true + jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + jsonschema@1.5.0: + resolution: {integrity: sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -3426,6 +3733,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -3448,15 +3758,40 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.isempty@4.4.0: + resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.omitby@4.6.0: + resolution: {integrity: sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==} + lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + + lodash.uniqwith@4.5.0: + resolution: {integrity: sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -3481,6 +3816,9 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -3491,6 +3829,10 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3501,6 +3843,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-chrome@4.11.1: resolution: {integrity: sha512-+2niDc4qOwlpFAjwxg1OaizK/zKV6y7QqGm4nBFEVlSaG0ZBgOmfc4IXAPiirZqAlZGaFFUaMqCl1SpGU0/naA==} @@ -3526,6 +3871,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3533,6 +3882,10 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} + minimatch@6.2.0: + resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -3631,12 +3984,36 @@ packages: sass: optional: true + nimma@0.2.3: + resolution: {integrity: sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==} + engines: {node: ^12.20 || >=14.13} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -3658,6 +4035,22 @@ packages: react-router-dom: optional: true + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3693,10 +4086,27 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + openapi3-ts@4.2.2: + resolution: {integrity: sha512-+9g4actZKeb3czfi9gVQ4Br2Ju3KwhCAQJBNaKgye5KggqcBLIhFHH+nIkcm0BUX00TrAJl6dH4JWgM4G4JWrw==} + + openapi3-ts@4.4.0: + resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + orval@7.11.2: + resolution: {integrity: sha512-Cjc/dgnQwAOkvymzvPpFqFc2nQwZ29E+ZFWUI8yKejleHaoFKIdwvkM/b1njtLEjePDcF0hyqXXCTz2wWaXLig==} + hasBin: true + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -3792,6 +4202,10 @@ packages: player.style@0.1.9: resolution: {integrity: sha512-aFmIhHMrnAP8YliFYFMnRw+5AlHqBvnqWy4vHGo2kFxlC+XjmTXqgg62qSxlE8ubAY83c0ViEZGYglSJi6mGCA==} + pony-cause@1.1.1: + resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==} + engines: {node: '>=12.0.0'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -3818,6 +4232,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3847,10 +4265,17 @@ packages: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + regenerate-unicode-properties@10.2.0: resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} @@ -3873,6 +4298,10 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -3936,6 +4365,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@1.1.1: + resolution: {integrity: sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==} + sax@1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} @@ -3989,6 +4421,24 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -4005,6 +4455,13 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-eval@1.0.1: + resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} + engines: {node: '>=12'} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -4058,6 +4515,14 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -4085,6 +4550,10 @@ packages: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -4093,6 +4562,10 @@ packages: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4149,6 +4622,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + tailwind-merge@3.3.1: resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} @@ -4206,6 +4683,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -4215,9 +4695,22 @@ packages: peerDependencies: typescript: '>=4.8.4' + tsconfck@2.1.2: + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4251,6 +4744,19 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedoc-plugin-markdown@4.8.1: + resolution: {integrity: sha512-ug7fc4j0SiJxSwBGLncpSo8tLvrT9VONvPUQqQDTKPxCoFQBADLli832RGPtj6sfSVJebNSrHZQRUdEryYH/7g==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.28.x + + typedoc@0.28.10: + resolution: {integrity: sha512-zYvpjS2bNJ30SoNYfHSRaFpBMZAsL7uwKbWwqoCNFWjcPnI3e/mPLh2SneH9mX7SJxtDpvDgvd9/iZxGbo7daw==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -4260,6 +4766,9 @@ packages: resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -4307,6 +4816,13 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -4315,6 +4831,10 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + vimeo-video-element@1.5.4: resolution: {integrity: sha512-4C9+Gnac7gOVNNu3tWQgzuwG4mFVaiCmUz8RtV1l+xkirgcZ0kEJOSIblXx/Y7DIfM+BbeepptxL9SP/ZrskJA==} @@ -4370,6 +4890,9 @@ packages: resolution: {integrity: sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw==} engines: {node: '>=8.10.0'} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -4390,6 +4913,9 @@ packages: webpack-cli: optional: true + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -4478,9 +5004,17 @@ packages: workbox-window@6.6.0: resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -4488,6 +5022,23 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -4529,6 +5080,31 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 + '@apidevtools/json-schema-ref-parser@11.7.2': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@apidevtools/swagger-parser@10.1.1(openapi-types@12.1.3)': + dependencies: + '@apidevtools/json-schema-ref-parser': 11.7.2 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + + '@asyncapi/specs@6.10.0': + dependencies: + '@types/json-schema': 7.0.15 + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -5865,6 +6441,16 @@ snapshots: '@eslint/core': 0.15.1 levn: 0.4.1 + '@exodus/schemasafe@1.3.0': {} + + '@gerrit0/mini-shiki@3.11.0': + dependencies: + '@shikijs/engine-oniguruma': 3.11.0 + '@shikijs/langs': 3.11.0 + '@shikijs/themes': 3.11.0 + '@shikijs/types': 3.11.0 + '@shikijs/vscode-textmate': 10.0.2 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -5878,6 +6464,24 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@ibm-cloud/openapi-ruleset-utilities@1.9.0': {} + + '@ibm-cloud/openapi-ruleset@1.31.2': + dependencies: + '@ibm-cloud/openapi-ruleset-utilities': 1.9.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-functions': 1.10.1 + '@stoplight/spectral-rulesets': 1.22.0 + chalk: 4.1.2 + jsonschema: 1.5.0 + lodash: 4.17.21 + loglevel: 1.9.2 + loglevel-plugin-prefix: 0.8.4 + minimatch: 6.2.0 + validator: 13.15.15 + transitivePeerDependencies: + - encoding + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.0 @@ -5987,6 +6591,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@jsdevtools/ono@7.1.3': {} + + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/ternary@1.1.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + '@mux/mux-data-google-ima@0.2.8': dependencies: mux-embed: 5.9.0 @@ -6104,30 +6722,136 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.28.0)(rollup@2.79.2)': + '@orval/angular@7.11.2(openapi-types@12.1.3)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) - rollup: 2.79.2 + '@orval/core': 7.11.2(openapi-types@12.1.3) transitivePeerDependencies: + - encoding + - openapi-types - supports-color - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': + '@orval/axios@7.11.2(openapi-types@12.1.3)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - rollup: 2.79.2 + '@orval/core': 7.11.2(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color - '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': + '@orval/core@7.11.2(openapi-types@12.1.3)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.2) - magic-string: 0.25.9 - rollup: 2.79.2 + '@apidevtools/swagger-parser': 10.1.1(openapi-types@12.1.3) + '@ibm-cloud/openapi-ruleset': 1.31.2 + acorn: 8.15.0 + ajv: 8.17.1 + chalk: 4.1.2 + compare-versions: 6.1.1 + debug: 4.4.1 + esbuild: 0.25.8 + esutils: 2.0.3 + fs-extra: 11.3.1 + globby: 11.1.0 + lodash.isempty: 4.4.0 + lodash.uniq: 4.5.0 + lodash.uniqby: 4.7.0 + lodash.uniqwith: 4.5.0 + micromatch: 4.0.8 + openapi3-ts: 4.4.0 + swagger2openapi: 7.0.8 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/fetch@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/hono@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + '@orval/zod': 7.11.2(openapi-types@12.1.3) + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/mcp@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + '@orval/fetch': 7.11.2(openapi-types@12.1.3) + '@orval/zod': 7.11.2(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/mock@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + openapi3-ts: 4.2.2 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/query@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + '@orval/fetch': 7.11.2(openapi-types@12.1.3) + lodash.omitby: 4.6.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/swr@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + '@orval/fetch': 7.11.2(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/zod@7.11.2(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.11.2(openapi-types@12.1.3) + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@rollup/plugin-babel@5.3.1(@babel/core@7.28.0)(rollup@2.79.2)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.10 + rollup: 2.79.2 + + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + magic-string: 0.25.9 + rollup: 2.79.2 '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: @@ -6200,6 +6924,26 @@ snapshots: '@rushstack/eslint-patch@1.12.0': {} + '@shikijs/engine-oniguruma@3.11.0': + dependencies: + '@shikijs/types': 3.11.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.11.0': + dependencies: + '@shikijs/types': 3.11.0 + + '@shikijs/themes@3.11.0': + dependencies: + '@shikijs/types': 3.11.0 + + '@shikijs/types@3.11.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@smithy/abort-controller@4.0.5': dependencies: '@smithy/types': 4.3.2 @@ -6536,6 +7280,169 @@ snapshots: '@smithy/types': 4.3.2 tslib: 2.8.1 + '@stoplight/better-ajv-errors@1.0.3(ajv@8.17.1)': + dependencies: + ajv: 8.17.1 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@stoplight/json-ref-readers@1.2.2': + dependencies: + node-fetch: 2.7.0 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + + '@stoplight/json-ref-resolver@3.1.6': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.6.0 + '@types/urijs': 1.19.25 + dependency-graph: 0.11.0 + fast-memoize: 2.5.2 + immer: 9.0.21 + lodash: 4.17.21 + tslib: 2.8.1 + urijs: 1.19.11 + + '@stoplight/json@3.21.7': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + jsonc-parser: 2.2.1 + lodash: 4.17.21 + safe-stable-stringify: 1.1.1 + + '@stoplight/ordered-object-literal@1.0.5': {} + + '@stoplight/path@1.3.2': {} + + '@stoplight/spectral-core@1.20.0': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5 + '@stoplight/spectral-runtime': 1.1.4 + '@stoplight/types': 13.6.0 + '@types/es-aggregate-error': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1(ajv@8.17.1) + es-aggregate-error: 1.0.14 + jsonpath-plus: 10.3.0 + lodash: 4.17.21 + lodash.topath: 4.5.2 + minimatch: 3.1.2 + nimma: 0.2.3 + pony-cause: 1.1.1 + simple-eval: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-formats@1.8.2': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@types/json-schema': 7.0.15 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-functions@1.10.1': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-runtime': 1.1.4 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1(ajv@8.17.1) + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-parsers@1.0.5': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/types': 14.1.1 + '@stoplight/yaml': 4.3.0 + tslib: 2.8.1 + + '@stoplight/spectral-ref-resolver@1.0.5': + dependencies: + '@stoplight/json-ref-readers': 1.2.2 + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-runtime': 1.1.4 + dependency-graph: 0.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-rulesets@1.22.0': + dependencies: + '@asyncapi/specs': 6.10.0 + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-functions': 1.10.1 + '@stoplight/spectral-runtime': 1.1.4 + '@stoplight/types': 13.20.0 + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + json-schema-traverse: 1.0.0 + leven: 3.1.0 + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-runtime@1.1.4': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + abort-controller: 3.0.0 + lodash: 4.17.21 + node-fetch: 2.7.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/types@13.20.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@13.6.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@14.1.1': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/yaml-ast-parser@0.0.50': {} + + '@stoplight/yaml@4.3.0': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/types': 14.1.1 + '@stoplight/yaml-ast-parser': 0.0.50 + tslib: 2.8.1 + '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: ejs: 3.1.10 @@ -6718,12 +7625,12 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.11 - '@tailwindcss/vite@4.1.11(vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1))': + '@tailwindcss/vite@4.1.11(vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(yaml@2.8.1))': dependencies: '@tailwindcss/node': 4.1.11 '@tailwindcss/oxide': 4.1.11 tailwindcss: 4.1.11 - vite: 7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1) + vite: 7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(yaml@2.8.1) '@tanstack/query-core@5.83.1': {} @@ -6747,6 +7654,10 @@ snapshots: tslib: 2.8.1 optional: true + '@types/es-aggregate-error@1.0.6': + dependencies: + '@types/node': 20.19.9 + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -6766,6 +7677,10 @@ snapshots: '@types/minimatch': 6.0.0 '@types/node': 20.19.9 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -6809,6 +7724,10 @@ snapshots: '@types/trusted-types@2.0.7': {} + '@types/unist@3.0.3': {} + + '@types/urijs@1.19.25': {} + '@types/uuid@10.0.0': {} '@types/uuid@9.0.8': {} @@ -7072,6 +7991,10 @@ snapshots: '@xtuc/long@4.2.2': {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -7082,6 +8005,14 @@ snapshots: acorn@8.15.0: {} + ajv-draft-04@1.0.0(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-errors@3.0.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -7109,6 +8040,10 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -7194,6 +8129,8 @@ snapshots: ast-types-flow@0.0.8: {} + astring@1.9.0: {} + async-function@1.0.0: {} async@3.2.6: {} @@ -7300,6 +8237,8 @@ snapshots: dependencies: streamsearch: 1.1.0 + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -7317,6 +8256,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camelcase@6.3.0: {} @@ -7336,6 +8277,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + chownr@3.0.0: {} chrome-trace-event@1.0.4: {} @@ -7351,6 +8296,12 @@ snapshots: client-only@0.0.1: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cloudflare-video-element@1.3.4: {} clsx@2.1.1: {} @@ -7387,6 +8338,8 @@ snapshots: commondir@1.0.1: {} + compare-versions@6.1.1: {} + concat-map@0.0.1: {} convert-source-map@2.0.0: {} @@ -7514,6 +8467,8 @@ snapshots: delayed-stream@1.0.0: {} + dependency-graph@0.11.0: {} + detect-libc@2.0.4: {} dir-glob@3.0.1: @@ -7561,6 +8516,8 @@ snapshots: electron-to-chromium@1.5.194: {} + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} emojis-list@3.0.0: {} @@ -7570,6 +8527,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + entities@4.5.0: {} error-ex@1.3.2: @@ -7633,6 +8595,17 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 + es-aggregate-error@1.0.14: + dependencies: + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + set-function-name: 2.0.2 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -7679,6 +8652,8 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es6-promise@3.3.1: {} + esbuild@0.25.8: optionalDependencies: '@esbuild/aix-ppc64': 0.25.8 @@ -7918,8 +8893,22 @@ snapshots: esutils@2.0.3: {} + event-target-shim@5.0.1: {} + events@3.3.0: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + fast-deep-equal@3.1.3: {} fast-glob@3.3.1: @@ -7942,6 +8931,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-memoize@2.5.2: {} + + fast-safe-stringify@2.1.1: {} + fast-uri@3.0.6: {} fast-xml-parser@5.2.5: @@ -8005,6 +8998,12 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + fs-extra@11.3.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 @@ -8032,6 +9031,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8052,6 +9053,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@6.0.1: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -8143,6 +9146,10 @@ snapshots: html-entities@2.6.0: {} + http2-client@1.3.5: {} + + human-signals@2.1.0: {} + idb@7.1.1: {} ignore@5.3.2: {} @@ -8151,6 +9158,8 @@ snapshots: immediate@3.0.6: {} + immer@9.0.21: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -8239,6 +9248,8 @@ snapshots: dependencies: call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -8357,6 +9368,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsep@1.4.0: {} + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -8379,14 +9392,24 @@ snapshots: json5@2.2.3: {} + jsonc-parser@2.2.1: {} + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + jsonpath-plus@10.3.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + jsonpointer@5.0.1: {} + jsonschema@1.5.0: {} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -8462,6 +9485,10 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -8484,12 +9511,28 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.isempty@4.4.0: {} + lodash.merge@4.6.2: {} + lodash.omitby@4.6.0: {} + lodash.sortby@4.7.0: {} + lodash.topath@4.5.2: {} + + lodash.uniq@4.5.0: {} + + lodash.uniqby@4.7.0: {} + + lodash.uniqwith@4.5.0: {} + lodash@4.17.21: {} + loglevel-plugin-prefix@0.8.4: {} + + loglevel@1.9.2: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -8514,6 +9557,8 @@ snapshots: dependencies: react: 19.1.0 + lunr@2.3.9: {} + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -8526,12 +9571,23 @@ snapshots: dependencies: semver: 6.3.1 + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + math-intrinsics@1.1.0: {} mdn-data@2.0.28: {} mdn-data@2.0.30: {} + mdurl@2.0.0: {} + media-chrome@4.11.1(react@19.1.0): dependencies: '@vercel/edge': 1.2.2 @@ -8556,6 +9612,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-fn@2.1.0: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -8564,6 +9622,10 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimatch@6.2.0: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -8667,13 +9729,39 @@ snapshots: - '@babel/core' - babel-plugin-macros + nimma@0.2.3: + dependencies: + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + '@jsep-plugin/ternary': 1.1.4(jsep@1.4.0) + astring: 1.9.0 + jsep: 1.4.0 + optionalDependencies: + jsonpath-plus: 10.3.0 + lodash.topath: 4.5.2 + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.8.1 + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + node-releases@2.0.19: {} + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -8685,6 +9773,37 @@ snapshots: optionalDependencies: next: 15.4.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -8731,6 +9850,20 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + openapi-types@12.1.3: {} + + openapi3-ts@4.2.2: + dependencies: + yaml: 2.8.1 + + openapi3-ts@4.4.0: + dependencies: + yaml: 2.8.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -8740,6 +9873,39 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + orval@7.11.2(openapi-types@12.1.3): + dependencies: + '@apidevtools/swagger-parser': 10.1.1(openapi-types@12.1.3) + '@orval/angular': 7.11.2(openapi-types@12.1.3) + '@orval/axios': 7.11.2(openapi-types@12.1.3) + '@orval/core': 7.11.2(openapi-types@12.1.3) + '@orval/fetch': 7.11.2(openapi-types@12.1.3) + '@orval/hono': 7.11.2(openapi-types@12.1.3) + '@orval/mcp': 7.11.2(openapi-types@12.1.3) + '@orval/mock': 7.11.2(openapi-types@12.1.3) + '@orval/query': 7.11.2(openapi-types@12.1.3) + '@orval/swr': 7.11.2(openapi-types@12.1.3) + '@orval/zod': 7.11.2(openapi-types@12.1.3) + ajv: 8.17.1 + cac: 6.7.14 + chalk: 4.1.2 + chokidar: 4.0.3 + enquirer: 2.4.1 + execa: 5.1.1 + find-up: 5.0.0 + fs-extra: 11.3.1 + lodash.uniq: 4.5.0 + openapi3-ts: 4.2.2 + string-argv: 0.3.2 + tsconfck: 2.1.2(typescript@5.8.3) + typedoc: 0.28.10(typescript@5.8.3) + typedoc-plugin-markdown: 4.8.1(typedoc@0.28.10(typescript@5.8.3)) + typescript: 5.8.3 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -8817,6 +9983,8 @@ snapshots: transitivePeerDependencies: - react + pony-cause@1.1.1: {} + possible-typed-array-names@1.1.0: {} postcss@8.4.31: @@ -8843,6 +10011,8 @@ snapshots: proxy-from-env@1.1.0: {} + punycode.js@2.3.1: {} + punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -8878,6 +10048,8 @@ snapshots: react@19.1.0: {} + readdirp@4.1.2: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -8889,6 +10061,8 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + reftools@1.1.9: {} + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -8919,6 +10093,8 @@ snapshots: dependencies: jsesc: 3.0.2 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} resolve-from@4.0.0: {} @@ -9006,6 +10182,8 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@1.1.1: {} + sax@1.2.1: {} scheduler@0.26.0: {} @@ -9093,6 +10271,32 @@ snapshots: shebang-regex@3.0.0: {} + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -9121,6 +10325,12 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} + + simple-eval@1.0.1: + dependencies: + jsep: 1.4.0 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -9166,6 +10376,14 @@ snapshots: streamsearch@1.1.0: {} + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -9222,10 +10440,16 @@ snapshots: is-obj: 1.0.1 is-regexp: 1.0.0 + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + strip-bom@3.0.0: {} strip-comments@2.0.1: {} + strip-final-newline@2.0.0: {} + strip-json-comments@3.1.1: {} strnum@2.1.1: {} @@ -9268,6 +10492,22 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 + swagger2openapi@7.0.8: + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + tailwind-merge@3.3.1: {} tailwindcss@4.0.0: {} @@ -9321,6 +10561,8 @@ snapshots: dependencies: is-number: 7.0.0 + tr46@0.0.3: {} + tr46@1.0.1: dependencies: punycode: 2.3.1 @@ -9329,6 +10571,10 @@ snapshots: dependencies: typescript: 5.8.3 + tsconfck@2.1.2(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -9336,6 +10582,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} tw-animate-css@1.3.6: {} @@ -9381,10 +10629,25 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedoc-plugin-markdown@4.8.1(typedoc@0.28.10(typescript@5.8.3)): + dependencies: + typedoc: 0.28.10(typescript@5.8.3) + + typedoc@0.28.10(typescript@5.8.3): + dependencies: + '@gerrit0/mini-shiki': 3.11.0 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.8.3 + yaml: 2.8.1 + typescript@5.8.3: {} ua-parser-js@1.0.40: {} + uc.micro@2.1.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -9447,15 +10710,21 @@ snapshots: dependencies: punycode: 2.3.1 + urijs@1.19.11: {} + + utility-types@3.11.0: {} + uuid@11.1.0: {} uuid@9.0.1: {} + validator@13.15.15: {} + vimeo-video-element@1.5.4: dependencies: '@vimeo/player': 2.29.0 - vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1): + vite@7.0.6(@types/node@20.19.9)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) @@ -9469,6 +10738,7 @@ snapshots: jiti: 2.5.1 lightningcss: 1.30.1 terser: 5.43.1 + yaml: 2.8.1 watchpack@2.4.0: dependencies: @@ -9482,6 +10752,8 @@ snapshots: weakmap-polyfill@2.0.4: {} + webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} webpack-sources@1.4.3: @@ -9523,6 +10795,11 @@ snapshots: - esbuild - uglify-js + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -9705,17 +10982,42 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 6.6.0 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrappy@1.0.2: {} + y18n@5.0.8: {} + yallist@3.1.1: {} yallist@5.0.0: {} + yaml@1.10.2: {} + + yaml@2.8.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} youtube-video-element@1.6.2: {} - zustand@5.0.7(@types/react@19.1.9)(react@19.1.0): + zustand@5.0.7(@types/react@19.1.9)(immer@9.0.21)(react@19.1.0): optionalDependencies: '@types/react': 19.1.9 + immer: 9.0.21 react: 19.1.0 diff --git a/src/app/(pages)/(auth)/auth/kakao/callback/page.tsx b/src/app/(pages)/(auth)/auth/kakao/callback/page.tsx index b2ba358..6e6a356 100644 --- a/src/app/(pages)/(auth)/auth/kakao/callback/page.tsx +++ b/src/app/(pages)/(auth)/auth/kakao/callback/page.tsx @@ -1,4 +1,4 @@ -import { authService } from '@/lib/auth/auth.service'; +import { authService } from '@/services/auth/auth.service'; import { redirect } from 'next/navigation'; interface SearchParams { @@ -16,24 +16,43 @@ export default async function KakaoCallbackPage({ const params = await searchParams; const { code, error, error_description } = params; - // try { - // const result = await authService.kakaoLogin(code ?? ''); + // 에러 처리 + if (error) { + console.error('Kakao login error:', error, error_description); + redirect('/login?error=kakao_auth_failed'); + } - // // token이 있다고 가정 - // const token = result.token; + if (!code) { + console.error('No authorization code received'); + redirect('/login?error=no_code'); + } - // const response = await fetch('/api/cookie-set', { - // method: 'POST', - // body: JSON.stringify({ token }), - // }); + try { + const result = await authService.kakaoLogin(code); + console.log(result); + const token = result.data.accessToken; + console.log('token', token); - // if (!response.ok) { - // throw new Error('Failed to set cookie'); - // } - // redirect('/'); - // } catch (error) { - // console.error(error); - // } + const response = await fetch( + `${process.env.NEXT_PUBLIC_API_ROUTE_URL}/api/cookie-set`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ token }), + }, + ); - return null; + if (!response.ok) { + console.error('Failed to set cookie:', response.statusText); + redirect('/login?error=cookie_failed'); + } + } catch (error) { + console.error('Kakao login failed:', error); + redirect('/login?error=login_failed'); + } + + // 성공 시 리디렉션 + redirect('/'); } diff --git a/src/app/(pages)/(auth)/login/page.tsx b/src/app/(pages)/(auth)/login/page.tsx index 27a5619..ad67b64 100644 --- a/src/app/(pages)/(auth)/login/page.tsx +++ b/src/app/(pages)/(auth)/login/page.tsx @@ -1,15 +1,33 @@ 'use client'; -import { kakaoAuthService } from '@/lib/auth/kakao.service'; +import { kakaoAuthService } from '@/services/auth/kakao.service'; import KakaoLogo from '@/public/svg/logo/kakao-logo.svg'; import LoginMainBigLogo from '@/public/svg/logo/login-main-big.svg'; -import { useRouter } from 'next/navigation'; +import { redirect, useRouter } from 'next/navigation'; export default function LoginPage() { const router = useRouter(); const handleKakaoLogin = () => { kakaoAuthService.login(); }; + const handleGuestLogin = async () => { + const token = 'guest'; + const response = await fetch( + `${process.env.NEXT_PUBLIC_API_ROUTE_URL}/api/cookie-set`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ token }), + }, + ); + if (!response.ok) { + console.error('Failed to set cookie:', response.statusText); + return; + } + router.push('/home'); + }; return (
{/* 헤더 || 로고 영역 */} @@ -34,7 +52,7 @@ export default function LoginPage() { {/* 게스트 로그인 */} + {step > 1 ? ( + + ) : ( +
+ )} {/* Progress Bar */} diff --git a/src/app/api/cookie-set/route.ts b/src/app/api/cookie-set/route.ts index 4daeb33..22feef9 100644 --- a/src/app/api/cookie-set/route.ts +++ b/src/app/api/cookie-set/route.ts @@ -12,17 +12,14 @@ export async function POST(request: NextRequest) { const isProduction = process.env.NODE_ENV === 'production'; const response = NextResponse.json({ success: true }); - // NextResponse로 쿠키 설정 (더 안정적) response.cookies.set('accessToken', token, { httpOnly: isProduction, secure: isProduction, - sameSite: isProduction ? 'none' : 'strict', - maxAge: 60 * 60 * 24 * 7, // 7일 + sameSite: isProduction ? 'lax' : 'strict', + maxAge: 60 * 60 * 24 * 7, path: '/', }); - console.log('Cookie set via NextResponse'); - return response; } catch (error) { return NextResponse.json( diff --git a/src/components/logo-header.tsx b/src/components/logo-header.tsx index 9b716d4..4cab035 100644 --- a/src/components/logo-header.tsx +++ b/src/components/logo-header.tsx @@ -7,13 +7,6 @@ export function LogoHeader() { - {/* 임시 온보딩 확인용 */} - - onboarding - ); } diff --git a/src/lib/api/authentication/authentication.ts b/src/lib/api/authentication/authentication.ts index 14a28ff..737cf73 100644 --- a/src/lib/api/authentication/authentication.ts +++ b/src/lib/api/authentication/authentication.ts @@ -5,27 +5,22 @@ * API documentation for HT Server * OpenAPI spec version: 1.0 */ -import type { - KakaoLoginRequest, - LoginResponse -} from '../../../types/api'; +import type { KakaoLoginRequest, LoginResponse } from '../../../types/api'; -import { apiClient } from '.././config'; +import { apiClient } from '../axios-client-config'; - - - /** +/** * 카카오 OAuth Authorization Code를 사용하여 사용자 정보를 가져오고 로그인 처리합니다. 새로운 사용자라면 자동으로 회원가입됩니다. * @summary 카카오 Authorization Code로 로그인 */ -export const kakaoLogin = ( - kakaoLoginRequest: KakaoLoginRequest, - ) => { - return apiClient( - {url: `/auth/kakao-login`, method: 'POST', - headers: {'Content-Type': 'application/json', }, - data: kakaoLoginRequest - }, - ); - } - export type KakaoLoginResult = NonNullable>> +export const kakaoLogin = (kakaoLoginRequest: KakaoLoginRequest) => { + return apiClient({ + url: `/auth/kakao-login`, + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + data: kakaoLoginRequest, + }); +}; +export type KakaoLoginResult = NonNullable< + Awaited> +>; diff --git a/src/lib/api/config.ts b/src/lib/api/axios-client-config.ts similarity index 91% rename from src/lib/api/config.ts rename to src/lib/api/axios-client-config.ts index 675483e..031259a 100644 --- a/src/lib/api/config.ts +++ b/src/lib/api/axios-client-config.ts @@ -1,6 +1,5 @@ import axios from 'axios'; import type { AxiosRequestConfig } from 'axios'; -import { cookies } from 'next/headers'; import { useAuthStore } from '../stores/auth-store'; const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:3000'; @@ -27,9 +26,8 @@ instance.interceptors.request.use( if (isNoAuthRequired) { return config; } - const cookieStore = await cookies(); - const accessToken = cookieStore.get('accessToken')?.value; - + const accessToken = useAuthStore.getState().accessToken; + console.log('accessToken', accessToken); if (accessToken) { config.headers.Authorization = `Bearer ${accessToken}`; } else { diff --git a/src/lib/api/axios-server-config.ts b/src/lib/api/axios-server-config.ts new file mode 100644 index 0000000..db3067e --- /dev/null +++ b/src/lib/api/axios-server-config.ts @@ -0,0 +1,65 @@ +import axios from 'axios'; +import type { AxiosRequestConfig } from 'axios'; +import { cookies } from 'next/headers'; +import { redirect } from 'next/navigation'; + +const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:3000'; + +// 기본 axios 인스턴스 생성 +const instance = axios.create({ + baseURL: API_BASE_URL, + timeout: 10000, + withCredentials: true, +}); + +// 토큰 검사를 하지 않을 경로들 +const NO_AUTH_REQUIRED_PATHS = ['/auth/kakao-login']; + +if (typeof window !== 'undefined') { + instance.interceptors.request.use( + async config => { + const requestPath = config.url || ''; + + // 인증이 필요하지 않은 경로는 토큰 체크 스킵 + const isNoAuthRequired = NO_AUTH_REQUIRED_PATHS.some(path => + requestPath.includes(path), + ); + + if (isNoAuthRequired) { + return config; + } + const cookieStore = await cookies(); + const accessToken = cookieStore.get('accessToken')?.value; + if (accessToken) { + config.headers.Authorization = `Bearer ${accessToken}`; + } else { + throw new Error('인증이 필요합니다'); + } + + return config; + }, + error => Promise.reject(error as Error), + ); +} + +// Response 인터셉터 - 에러 처리 +instance.interceptors.response.use( + response => response, + error => { + if (error.response?.status === 401) { + // console.log('401 error'); + // // useAuthStore.getState().clearToken(); + // // if (typeof window !== 'undefined') { + // // } + // redirect('/login'); + } + return Promise.reject(error as Error); + }, +); + +// Orval mutator 함수 - Orval이 요구하는 시그니처 +export const apiServer = (config: AxiosRequestConfig): Promise => { + return instance.request(config).then(response => response.data as T); +}; + +export default instance; diff --git a/src/lib/api/home/home.ts b/src/lib/api/home/home.ts index 85668c4..3f6db3f 100644 --- a/src/lib/api/home/home.ts +++ b/src/lib/api/home/home.ts @@ -5,24 +5,18 @@ * API documentation for HT Server * OpenAPI spec version: 1.0 */ -import type { - HomeResponse -} from '../../../types/api'; +import type { HomeResponse } from '../../../types/api'; +import { apiClient } from '../axios-client-config'; -import { apiClient } from '.././config'; +import { apiServer } from '../axios-server-config'; - - - /** +/** * 인증된 사용자의 홈 화면 데이터를 조회합니다 * @summary 홈 화면 데이터 조회 */ -export const getHomeData = ( - - ) => { - return apiClient( - {url: `/home`, method: 'GET' - }, - ); - } - export type GetHomeDataResult = NonNullable>> +export const getHomeData = () => { + return apiClient({ url: `/home`, method: 'GET' }); +}; +export type GetHomeDataResult = NonNullable< + Awaited> +>; diff --git a/src/lib/api/store/store.ts b/src/lib/api/store/store.ts index b2fc23f..adea7a1 100644 --- a/src/lib/api/store/store.ts +++ b/src/lib/api/store/store.ts @@ -9,54 +9,49 @@ import type { CreateStoreRequest, CreateStoreResponse, StoreResponse, - UpdateStoreRequest + UpdateStoreRequest, } from '../../../types/api'; -import { apiClient } from '.././config'; +import { apiClient } from '../axios-client-config'; - - - /** +/** * 가게 ID로 가게 정보를 조회합니다 * @summary 가게 정보 조회 */ -export const getStore = ( - storeId: string, - ) => { - return apiClient( - {url: `/stores/${storeId}`, method: 'GET' - }, - ); - } - /** +export const getStore = (storeId: string) => { + return apiClient({ url: `/stores/${storeId}`, method: 'GET' }); +}; +/** * 기존 가게의 정보를 수정합니다 * @summary 가게 정보 수정 */ export const updateStore = ( - storeId: string, - updateStoreRequest: UpdateStoreRequest, - ) => { - return apiClient( - {url: `/stores/${storeId}`, method: 'PUT', - headers: {'Content-Type': 'application/json', }, - data: updateStoreRequest - }, - ); - } - /** + storeId: string, + updateStoreRequest: UpdateStoreRequest, +) => { + return apiClient({ + url: `/stores/${storeId}`, + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + data: updateStoreRequest, + }); +}; +/** * 새로운 가게를 생성합니다 * @summary 가게 생성 */ -export const createStore = ( - createStoreRequest: CreateStoreRequest, - ) => { - return apiClient( - {url: `/stores`, method: 'POST', - headers: {'Content-Type': 'application/json', }, - data: createStoreRequest - }, - ); - } - export type GetStoreResult = NonNullable>> -export type UpdateStoreResult = NonNullable>> -export type CreateStoreResult = NonNullable>> +export const createStore = (createStoreRequest: CreateStoreRequest) => { + return apiClient({ + url: `/stores`, + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + data: createStoreRequest, + }); +}; +export type GetStoreResult = NonNullable>>; +export type UpdateStoreResult = NonNullable< + Awaited> +>; +export type CreateStoreResult = NonNullable< + Awaited> +>; diff --git a/src/lib/api/user/user-server.ts b/src/lib/api/user/user-server.ts new file mode 100644 index 0000000..7b3a375 --- /dev/null +++ b/src/lib/api/user/user-server.ts @@ -0,0 +1,9 @@ +import { UserOnboardingStatusResponse } from '@/types/api'; +import { apiServer } from '../axios-server-config'; + +export const getOnboardingStatusServer = () => { + return apiServer({ + url: `/users/onboarding`, + method: 'GET', + }); +}; diff --git a/src/lib/api/user/user.ts b/src/lib/api/user/user.ts index 8ddd9be..f2c0af8 100644 --- a/src/lib/api/user/user.ts +++ b/src/lib/api/user/user.ts @@ -7,38 +7,40 @@ */ import type { UpdateUserOnboardingStatusRequest, - UserOnboardingStatusResponse + UserOnboardingStatusResponse, } from '../../../types/api'; -import { apiClient } from '.././config'; +import { apiClient } from '../axios-client-config'; +import { apiServer } from '../axios-server-config'; - - - /** +/** * 현재 사용자의 온보딩 정보 및 동의 상태를 조회합니다 * @summary 사용자 온보딩 상태 조회 */ -export const getOnboardingStatus = ( - - ) => { - return apiClient( - {url: `/users/onboarding`, method: 'GET' - }, - ); - } - /** +export const getOnboardingStatus = () => { + return apiClient({ + url: `/users/onboarding`, + method: 'GET', + }); +}; + +/** * 사용자의 닉네임 및 서비스 이용약관, 개인정보보호정책, 위치기반서비스 동의 상태를 업데이트합니다 * @summary 사용자 온보딩 상태 업데이트 */ export const updateUserOnboardingStatus = ( - updateUserOnboardingStatusRequest: UpdateUserOnboardingStatusRequest, - ) => { - return apiClient( - {url: `/users/onboarding`, method: 'PUT', - headers: {'Content-Type': 'application/json', }, - data: updateUserOnboardingStatusRequest - }, - ); - } - export type GetOnboardingStatusResult = NonNullable>> -export type UpdateUserOnboardingStatusResult = NonNullable>> + updateUserOnboardingStatusRequest: UpdateUserOnboardingStatusRequest, +) => { + return apiClient({ + url: `/users/onboarding`, + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + data: updateUserOnboardingStatusRequest, + }); +}; +export type GetOnboardingStatusResult = NonNullable< + Awaited> +>; +export type UpdateUserOnboardingStatusResult = NonNullable< + Awaited> +>; diff --git a/src/lib/api/video/video.ts b/src/lib/api/video/video.ts index 061ec93..5c1810a 100644 --- a/src/lib/api/video/video.ts +++ b/src/lib/api/video/video.ts @@ -9,64 +9,56 @@ import type { CreateVideoGenerationRequest, CreateVideoGenerationResponse, VideoGenerationStatusResponse, - VideoResponse + VideoResponse, } from '../../../types/api'; -import { apiClient } from '.././config'; +import { apiClient } from '../axios-client-config'; - - - /** +/** * 새로운 영상 생성을 요청합니다 * @summary 영상 생성 요청 */ export const createVideoGeneration = ( - createVideoGenerationRequest: CreateVideoGenerationRequest, - ) => { - return apiClient( - {url: `/videos/generations`, method: 'POST', - headers: {'Content-Type': 'application/json', }, - data: createVideoGenerationRequest - }, - ); - } - /** + createVideoGenerationRequest: CreateVideoGenerationRequest, +) => { + return apiClient({ + url: `/videos/generations`, + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + data: createVideoGenerationRequest, + }); +}; +/** * 영상 ID로 영상 정보를 조회합니다 * @summary 영상 조회 */ -export const getVideo = ( - videoId: string, - ) => { - return apiClient( - {url: `/videos/${videoId}`, method: 'GET' - }, - ); - } - /** +export const getVideo = (videoId: string) => { + return apiClient({ url: `/videos/${videoId}`, method: 'GET' }); +}; +/** * 영상 ID로 영상을 삭제합니다 * @summary 영상 삭제 */ -export const deleteVideo = ( - videoId: string, - ) => { - return apiClient( - {url: `/videos/${videoId}`, method: 'DELETE' - }, - ); - } - /** +export const deleteVideo = (videoId: string) => { + return apiClient({ url: `/videos/${videoId}`, method: 'DELETE' }); +}; +/** * 영상 생성 ID로 생성 상태를 조회합니다 * @summary 영상 생성 상태 조회 */ -export const getVideoGenerationStatus = ( - videoGenerationId: string, - ) => { - return apiClient( - {url: `/videos/generations/${videoGenerationId}`, method: 'GET' - }, - ); - } - export type CreateVideoGenerationResult = NonNullable>> -export type GetVideoResult = NonNullable>> -export type DeleteVideoResult = NonNullable>> -export type GetVideoGenerationStatusResult = NonNullable>> +export const getVideoGenerationStatus = (videoGenerationId: string) => { + return apiClient({ + url: `/videos/generations/${videoGenerationId}`, + method: 'GET', + }); +}; +export type CreateVideoGenerationResult = NonNullable< + Awaited> +>; +export type GetVideoResult = NonNullable>>; +export type DeleteVideoResult = NonNullable< + Awaited> +>; +export type GetVideoGenerationStatusResult = NonNullable< + Awaited> +>; diff --git a/src/lib/providers/auth-providers.tsx b/src/lib/providers/auth-providers.tsx index f24bdcf..a9ea80d 100644 --- a/src/lib/providers/auth-providers.tsx +++ b/src/lib/providers/auth-providers.tsx @@ -10,8 +10,10 @@ interface AuthProviderProps { export function AuthProvider({ children, initialToken }: AuthProviderProps) { const setAccessToken = useAuthStore(state => state.setAccessToken); - + console.log('initialToken', initialToken); + setAccessToken(initialToken); useEffect(() => { + console.log('initialToken', initialToken); if (initialToken) { setAccessToken(initialToken); } diff --git a/src/middleware.ts b/src/middleware.ts index d2d9397..389aeb9 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -35,9 +35,9 @@ function redirectToLogin(request: NextRequest): NextResponse { const loginUrl = new URL('/login', request.url); // 현재 URL을 callbackUrl로 저장 (로그인 후 원래 페이지로 돌아가기 위함) - if (request.nextUrl.pathname !== '/login') { - loginUrl.searchParams.set('callbackUrl', request.url); - } + // if (request.nextUrl.pathname !== '/login') { + // loginUrl.searchParams.set('callbackUrl', request.url); + // } return NextResponse.redirect(loginUrl); } diff --git a/src/services/auth/auth.service.ts b/src/services/auth/auth.service.ts index 782c299..44ed3b9 100644 --- a/src/services/auth/auth.service.ts +++ b/src/services/auth/auth.service.ts @@ -1,4 +1,4 @@ -import { apiClient } from '../../lib/api/config'; +import { apiClient } from '../../lib/api/axios-client-config'; import { ApiResponse, LoginResponse } from '../../types/auth'; export const authService = { From ddfd686bf6ae09ce90e941128057f0c2fe5f6009 Mon Sep 17 00:00:00 2001 From: yyj0917 Date: Sat, 23 Aug 2025 17:20:19 +0900 Subject: [PATCH 3/7] =?UTF-8?q?feat=20:=20home,=20mypage=20api=20connect?= =?UTF-8?q?=20set=20&=20tanstack=20query=20=EC=BA=90=EC=8B=B1=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(main)/home/_components/owner-intro.tsx | 15 +-- .../(main)/home/_components/video-section.tsx | 50 ++++------ src/app/(pages)/(main)/home/page.tsx | 33 +++++-- .../_components/make-video-contents.tsx | 4 +- .../_components/make-video-input-ui.tsx | 4 +- .../(main)/mypage/(mypage)/info/page.tsx | 11 +++ .../mypage/_components/info/info-contents.tsx | 22 ++--- .../mypage/_components/info/info-owner.tsx | 10 +- .../_components/info/info-store-card.tsx | 25 +++-- .../_components/info/info-store-detail.tsx | 5 +- .../_components/info/store-add-form.tsx | 6 +- .../_components/info/store-detail-ui.tsx | 22 +++-- .../_components/info/store-edit-form.tsx | 24 +++-- src/app/(pages)/(main)/mypage/page.tsx | 3 + src/app/(pages)/layout.tsx | 4 +- src/components/header.tsx | 37 ++++++- src/components/input-form-field.tsx | 42 ++++---- src/components/loading-spinner.tsx | 8 ++ src/hooks/queries/use-home-data.ts | 21 ++++ .../{use-store-detail.ts => use-store.ts} | 14 ++- src/hooks/queries/use-user-onboarding.ts | 21 ++++ src/hooks/use-store-mutation.ts | 97 +++++++++++++++++++ src/lib/api/axios-client-config.ts | 7 +- src/lib/api/axios-server-config.ts | 58 ++++++----- src/lib/api/home/home-server.ts | 14 +++ src/lib/api/store/store-server.ts | 10 ++ src/lib/api/store/store.ts | 21 ++-- src/lib/constants/style.constant.ts | 14 ++- src/lib/providers/auth-providers.tsx | 8 +- src/lib/stores/mypage-store.ts | 96 ++++++++++-------- src/middleware.ts | 18 +++- src/types/store/index.ts | 1 + 32 files changed, 502 insertions(+), 223 deletions(-) create mode 100644 src/hooks/queries/use-home-data.ts rename src/hooks/queries/{use-store-detail.ts => use-store.ts} (79%) create mode 100644 src/hooks/queries/use-user-onboarding.ts create mode 100644 src/hooks/use-store-mutation.ts create mode 100644 src/lib/api/home/home-server.ts create mode 100644 src/lib/api/store/store-server.ts diff --git a/src/app/(pages)/(main)/home/_components/owner-intro.tsx b/src/app/(pages)/(main)/home/_components/owner-intro.tsx index 345abe6..2a69f4e 100644 --- a/src/app/(pages)/(main)/home/_components/owner-intro.tsx +++ b/src/app/(pages)/(main)/home/_components/owner-intro.tsx @@ -1,19 +1,22 @@ -const OWNER_NICKNAME = '윤멋사'; -const HITS_COUNT_PERCENT = 12; +'use client'; + +import { useUserOnboarding } from '@/hooks/queries/use-user-onboarding'; export function OwnerIntro() { + const { data: user } = useUserOnboarding(); + console.log('userInfo', user); + return ( -
+

- {OWNER_NICKNAME} + {user?.nickname} 사장님

- 조회수가 {HITS_COUNT_PERCENT}% 올랐어요 + 숏폼으로 입소문 타는 중!

-

전날 대비

); } diff --git a/src/app/(pages)/(main)/home/_components/video-section.tsx b/src/app/(pages)/(main)/home/_components/video-section.tsx index 5266ec4..10a5b72 100644 --- a/src/app/(pages)/(main)/home/_components/video-section.tsx +++ b/src/app/(pages)/(main)/home/_components/video-section.tsx @@ -1,50 +1,36 @@ +'use client'; + import NoneCameraIcon from '@/public/svg/home/none-camera.svg'; import { VideoCard } from './video-card'; - -const UPLOAD_VIDEO_STATE = false; -const VIDEO_CARD_LIST = [ - { - id: 1, - hits_count: 9400000, - }, - { - id: 2, - hits_count: 9400000, - }, - { - id: 3, - hits_count: 9400000, - }, - { - id: 4, - hits_count: 9400000, - }, - { - id: 5, - hits_count: 9400000, - }, -]; +import { useHomeData } from '@/hooks/queries/use-home-data'; export function VideoSection() { + const { data: videoList } = useHomeData(); + return (
업로드 된 영상
- {UPLOAD_VIDEO_STATE ? ( + {videoList?.videos && videoList.videos.length > 0 ? (
- {VIDEO_CARD_LIST.map(video => ( + {videoList.videos.map(video => ( ))}
) : ( -
- -

- 아직 업로드 된 영상이 없어요 -

-
+ )}
); } +export const NoneVideoSection = () => { + return ( +
+ +

+ 아직 업로드 된 영상이 없어요 +

+
+ ); +}; diff --git a/src/app/(pages)/(main)/home/page.tsx b/src/app/(pages)/(main)/home/page.tsx index 825bf72..1ac4516 100644 --- a/src/app/(pages)/(main)/home/page.tsx +++ b/src/app/(pages)/(main)/home/page.tsx @@ -1,30 +1,45 @@ import { LogoHeader } from '@/components/logo-header'; import { OwnerIntro } from './_components/owner-intro'; import Link from 'next/link'; -import { VideoSection } from './_components/video-section'; +import { NoneVideoSection, VideoSection } from './_components/video-section'; import VideoLayerIcon from '@/public/svg/home/video-layer.svg'; import VideoTapeLayerIcon from '@/public/svg/home/video-tape-layer.svg'; -import { getHomeData } from '@/lib/api/home/home'; +import { getHomeDataServer } from '@/lib/api/home/home-server'; import { getOnboardingStatusServer } from '@/lib/api/user/user-server'; +import { Suspense } from 'react'; +import { QueryClient } from '@tanstack/react-query'; const HITS_COUNT = 333333; const HOME_BUTTON_STYLE = 'pl-6 py-6 w-full h-auto flex flex-col bg-white000 items-start gap-2 rounded-[15px] shadow-[0_4px_10px_0_rgba(154,159,160,0.15)] hover:bg-slate-50/40 transition-colors duration-300'; export default async function HomePage() { - const response = await getHomeData(); - console.log('response', response); - // console.log('response', response); - // const user = await getOnboardingStatusServer(); - // console.log('user', user); + const queryClient = new QueryClient(); + + await Promise.all([ + queryClient.prefetchQuery({ + queryKey: ['home-data'], + queryFn: () => getHomeDataServer(), + staleTime: Infinity, + }), + queryClient.prefetchQuery({ + queryKey: ['user-onboarding'], + queryFn: () => getOnboardingStatusServer(), + staleTime: Infinity, + }), + ]); return (
- + }> + + - + }> + + {/* 영상 제작 링크 이동 버튼 */} diff --git a/src/app/(pages)/(main)/make-video/_components/make-video-contents.tsx b/src/app/(pages)/(main)/make-video/_components/make-video-contents.tsx index 7090e98..51c17f0 100644 --- a/src/app/(pages)/(main)/make-video/_components/make-video-contents.tsx +++ b/src/app/(pages)/(main)/make-video/_components/make-video-contents.tsx @@ -5,7 +5,7 @@ import { InfoStoreCard } from '../../mypage/_components/info/info-store-card'; import { MakeVideoInputUi } from './make-video-input-ui'; import { cn } from '@/lib/utils/cn'; import { useMakeVideoQuery } from '@/hooks/use-make-video-query'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; +import { useStoreDetail } from '@/hooks/queries/use-store'; import { LoadingSpinner } from '@/components/loading-spinner'; export function MakeVideoContents() { @@ -30,7 +30,7 @@ export function MakeVideoContents() { ); } - if (storeDetail.storeName === '') { + if (storeDetail.name === '') { return (
diff --git a/src/app/(pages)/(main)/make-video/_components/make-video-input-ui.tsx b/src/app/(pages)/(main)/make-video/_components/make-video-input-ui.tsx index a90b642..92a5e4f 100644 --- a/src/app/(pages)/(main)/make-video/_components/make-video-input-ui.tsx +++ b/src/app/(pages)/(main)/make-video/_components/make-video-input-ui.tsx @@ -9,7 +9,7 @@ import { ImageUploadCard } from './image-upload-card'; import MakeVideoStartIcon from '@/public/svg/make-video/make-video-start.svg'; import { GradientProgressBar } from '@/components/gradient-progress-bar'; import { useRouter } from 'next/navigation'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; +import { useStoreDetail } from '@/hooks/queries/use-store'; import type { StoreDetail } from '@/types/store'; export const StoreField = [ @@ -177,7 +177,7 @@ export function MakeVideoInputUi({ {/* 업로드 버튼 + position fixed */} diff --git a/src/app/(pages)/(main)/mypage/(mypage)/info/page.tsx b/src/app/(pages)/(main)/mypage/(mypage)/info/page.tsx index 7fc905d..9f475e5 100644 --- a/src/app/(pages)/(main)/mypage/(mypage)/info/page.tsx +++ b/src/app/(pages)/(main)/mypage/(mypage)/info/page.tsx @@ -1,8 +1,19 @@ import { Suspense } from 'react'; import { InfoContents } from '../../_components/info/info-contents'; import { LoadingSpinner } from '@/components/loading-spinner'; +import { getStoreByUserClient } from '@/lib/api/store/store'; +import { getStoreByUserServer } from '@/lib/api/store/store-server'; +import { QueryClient } from '@tanstack/react-query'; export default async function MyPageInfoPage() { + const queryClient = new QueryClient(); + + await queryClient.prefetchQuery({ + queryKey: ['store-user'], + queryFn: () => getStoreByUserServer(), + staleTime: Infinity, + }); + return ( }> diff --git a/src/app/(pages)/(main)/mypage/_components/info/info-contents.tsx b/src/app/(pages)/(main)/mypage/_components/info/info-contents.tsx index cc25cfc..e6f97d7 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/info-contents.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/info-contents.tsx @@ -5,24 +5,18 @@ import { InfoStoreCard } from './info-store-card'; import { InfoStoreDetail } from './info-store-detail'; import { StoreAddButton } from '@/components/store-add-button'; import { StoreAddForm } from './store-add-form'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; -import { LoadingSpinner } from '@/components/loading-spinner'; +import { useStoreByUser } from '@/hooks/queries/use-store'; import { InfoOwner } from './info-owner'; +import { StoreResponse } from '@/types/api'; +import { LoadingSpinnerBasic } from '@/components/loading-spinner'; export function InfoContents() { const { tabLabel, storeAdd } = useStoreQuery(); + const { data: storeData, isLoading } = useStoreByUser(); - const { data: storeDetail, isLoading, error } = useStoreDetail('donkatsu'); + if (isLoading) return ; - if (isLoading) { - return ( -
- -
- ); - } - - if (error || !storeDetail || storeDetail.name === '') { + if (!storeData?.[0]) { return ( <> {!storeAdd ? ( @@ -42,7 +36,9 @@ export function InfoContents() { <> {tabLabel === '가게 정보' && (
- + } + />
)} {tabLabel === '상세 정보' && } diff --git a/src/app/(pages)/(main)/mypage/_components/info/info-owner.tsx b/src/app/(pages)/(main)/mypage/_components/info/info-owner.tsx index d6bab17..89d5951 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/info-owner.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/info-owner.tsx @@ -1,11 +1,17 @@ 'use client'; +import { LoadingSpinnerBasic } from '@/components/loading-spinner'; import { FieldContainer } from '@/components/store-info'; +import { useUserOnboarding } from '@/hooks/queries/use-user-onboarding'; export function InfoOwner() { + const { data: userInfo, isLoading } = useUserOnboarding(); + + if (isLoading) return ; + return ( -
- +
+
); } diff --git a/src/app/(pages)/(main)/mypage/_components/info/info-store-card.tsx b/src/app/(pages)/(main)/mypage/_components/info/info-store-card.tsx index d349e18..4395e44 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/info-store-card.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/info-store-card.tsx @@ -3,40 +3,39 @@ import { useStoreQuery } from '@/hooks/use-store-query'; import { usePathname } from 'next/navigation'; import { useMakeVideoQuery } from '@/hooks/use-make-video-query'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; +import { StoreResponse } from '@/types/api'; -export function InfoStoreCard() { +export function InfoStoreCard({ + storeDetail, +}: { + storeDetail: Required; +}) { const pathname = usePathname(); const isMakeVideo = pathname.includes('make-video'); const { setStoreName, setTab } = useStoreQuery(); const { setMakeVideoInput } = useMakeVideoQuery(); - // TanStack Query로 StoreDetail 가져오기 - const { data: storeDetail } = useStoreDetail('donkatsu'); - - if (!storeDetail) return null; - return (
{ if (isMakeVideo) { void setMakeVideoInput(true); - void setStoreName(storeDetail.storeName); + void setStoreName(storeDetail.name); } else { void setTab('store-detail'); - void setStoreName(storeDetail.storeName); + void setStoreName(storeDetail.name); } }} className='p-6 w-full h-auto flex flex-col gap-6 rounded-[15px] border border-gray100 bg-white shadow-[0_4px_10px_0_rgba(154,159,160,0.15)] cursor-pointer' >

- {storeDetail.storeName} + {storeDetail.name}

{Object.entries({ - 주소: storeDetail.storeAddress, - 소개: storeDetail.storeDescription, - 메뉴: `${storeDetail.storeMenu.slice(0, 3).join(', ')}...`, + 주소: storeDetail.address, + 소개: storeDetail.description, + // 메뉴: `${storeDetail.menu.slice(0, 3).join(', ')}...`, }).map(([label, content]) => (

{label}

diff --git a/src/app/(pages)/(main)/mypage/_components/info/info-store-detail.tsx b/src/app/(pages)/(main)/mypage/_components/info/info-store-detail.tsx index c16366c..c6bdcff 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/info-store-detail.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/info-store-detail.tsx @@ -3,13 +3,10 @@ import { useStoreQuery } from '@/hooks/use-store-query'; import { StoreEditForm } from './store-edit-form'; import { StoreDetailUI } from './store-detail-ui'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; +import { useStoreDetail } from '@/hooks/queries/use-store'; export function InfoStoreDetail() { const { edit } = useStoreQuery(); - const { data: storeDetail } = useStoreDetail('donkatsu'); - - if (!storeDetail) return null; return (
diff --git a/src/app/(pages)/(main)/mypage/_components/info/store-add-form.tsx b/src/app/(pages)/(main)/mypage/_components/info/store-add-form.tsx index bf5d988..511d459 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/store-add-form.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/store-add-form.tsx @@ -10,18 +10,18 @@ export function StoreAddForm() { {/* 가게 상호명, 주소, 소개 */} {FORM_FIELDS.map( field => - field.key !== 'storeNaverMap' && ( + field.key !== 'naverUrl' && ( ), )} {/* 가게 메뉴 */} - + {/* */} {/* 네이버 지도 연결 */} @@ -31,7 +31,9 @@ export function StoreDetailUI() { ))} @@ -39,11 +41,11 @@ export function StoreDetailUI() { {/* */} - 쇼츠테이블 둘러보기에서 프로프 클릭 시
+ 쇼츠테이블 둘러보기에서 프로필 클릭 시
자동으로 네이버 지도로 연결돼요!
diff --git a/src/app/(pages)/(main)/mypage/_components/info/store-edit-form.tsx b/src/app/(pages)/(main)/mypage/_components/info/store-edit-form.tsx index f0e5a8c..43354cf 100644 --- a/src/app/(pages)/(main)/mypage/_components/info/store-edit-form.tsx +++ b/src/app/(pages)/(main)/mypage/_components/info/store-edit-form.tsx @@ -3,7 +3,7 @@ import { useMyPageStore } from '@/lib/stores/mypage-store'; import { useStoreQuery } from '@/hooks/use-store-query'; import { useEffect } from 'react'; -import { useStoreDetail } from '@/hooks/queries/use-store-detail'; +import { useStoreByUser, useStoreDetail } from '@/hooks/queries/use-store'; import { FORM_FIELDS } from '@/lib/constants/style.constant'; import { InputFormField } from '@/components/input-form-field'; import { StoreMenuEditor } from './store-menu-editor'; @@ -16,19 +16,19 @@ import { StoreMenuEditor } from './store-menu-editor'; // Main Components export function StoreEditForm() { const { edit } = useStoreQuery(); - const { data: storeDetail } = useStoreDetail('donkatsu'); + const { data: storeDetail } = useStoreByUser(); const initializeFormData = useMyPageStore(state => state.initializeFormData); const resetFormData = useMyPageStore(state => state.resetFormData); useEffect(() => { if (storeDetail) { - initializeFormData(storeDetail); + initializeFormData(storeDetail[0]!); } }, [storeDetail]); useEffect(() => { if (!edit && storeDetail) { - resetFormData(storeDetail); + resetFormData(storeDetail[0]!); } }, [edit]); @@ -36,21 +36,31 @@ export function StoreEditForm() { return ( <> + {/* hidden input field store id */} + {/* 가게 상호명, 주소, 소개 */} {FORM_FIELDS.map( field => - field.key !== 'storeNaverMap' && ( + field.key !== 'naverUrl' && + field.key !== 'id' && ( ), )} {/* 가게 메뉴 */} - + {/* */} {/* 네이버 지도 연결 */} ) { const cookieStore = await cookies(); const initialToken = cookieStore.get('accessToken')?.value ?? null; - console.log('initialToken', initialToken); return ( @@ -129,7 +128,8 @@ export default async function RootLayout({ - {children} + {children} + diff --git a/src/components/header.tsx b/src/components/header.tsx index a2b291b..d25b4a6 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -6,6 +6,9 @@ import { usePathname, useRouter } from 'next/navigation'; import { useMyPageStore } from '@/lib/stores/mypage-store'; import { useMemo } from 'react'; import { useMakeVideoQuery } from '@/hooks/use-make-video-query'; +import { useQueryClient } from '@tanstack/react-query'; +import { StoreResponse } from '@/types/api'; +import { useStoreSubmit, useUpdateStore } from '@/hooks/use-store-mutation'; type HeaderType = | 'STORE_INFO' @@ -39,7 +42,10 @@ export function Header() { const { makeVideoInput, setMakeVideoInput, fileUpload, setFileUpload } = useMakeVideoQuery(); - const handleSave = useMyPageStore(state => state.handleSave); + const queryClient = useQueryClient(); + + const handleStoreSave = useMyPageStore(state => state.handleStoreSave); + // const updateStore = useUpdateStore(); const getHeaderType = (): HeaderType => { if (isShorts) return 'SHORTS'; @@ -57,9 +63,27 @@ export function Header() { const handleClick = () => { if (edit || storeAdd) { - void handleSave(storeAdd ? 'storeAdd' : 'storeEdit'); + const response = handleStoreSave(storeAdd ? 'storeAdd' : 'storeEdit'); + console.log('response', response); void setEdit(false); void setStoreAdd(false); + // void queryClient.invalidateQueries({ queryKey: ['storeByUser'] }); + void queryClient.setQueryData( + ['storeByUser'], + (oldData: StoreResponse) => ({ + ...oldData, + ...response, + }), + ); + // void updateStore.mutate({ + // storeId: response.id ?? '', + // data: { + // name: response.name ?? '', + // address: response.address ?? '', + // description: response.description ?? '', + // naverUrl: response.naverUrl ?? '', + // }, + // }); } else { void setEdit(true); void setStoreAdd(false); @@ -127,7 +151,14 @@ export function Header() { showEditButton: false, }; } - }, [getHeaderType, handleSave, storeAdd, setEdit, setStoreAdd, tabLabel]); + }, [ + getHeaderType, + handleStoreSave, + storeAdd, + setEdit, + setStoreAdd, + tabLabel, + ]); const handleBack = () => { if (edit) { diff --git a/src/components/input-form-field.tsx b/src/components/input-form-field.tsx index 8c64b43..fefd246 100644 --- a/src/components/input-form-field.tsx +++ b/src/components/input-form-field.tsx @@ -13,8 +13,10 @@ import { CopyButton } from '@/components/copy-button'; export const InputFormField = ({ field, + isHidden = false, }: { field: (typeof FORM_FIELDS)[number]; + isHidden?: boolean; }) => { const formData = useMyPageStore(state => state.formData); const updateField = useMyPageStore(state => state.updateField); @@ -37,22 +39,28 @@ export const InputFormField = ({