Compare commits
13 Commits
feat/deskt
...
refactor/i
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00588bcc0a | ||
|
|
e24d0ce605 | ||
|
|
de725337d6 | ||
|
|
9d1d369f37 | ||
|
|
2bd925d441 | ||
|
|
bb8dc6f7eb | ||
|
|
be3e5ba7e7 | ||
|
|
663134839f | ||
|
|
736f83a70c | ||
|
|
05d2175f43 | ||
|
|
97bd808431 | ||
|
|
a13c2fd4c1 | ||
|
|
16044b5840 |
@@ -17,7 +17,7 @@
|
|||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/language": "^6.9.2",
|
"@codemirror/language": "6.9.0",
|
||||||
"@lezer/highlight": "1.1.4",
|
"@lezer/highlight": "1.1.4",
|
||||||
"@lezer/lr": "^1.3.13"
|
"@lezer/lr": "^1.3.13"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hoppscotch-backend",
|
"name": "hoppscotch-backend",
|
||||||
"version": "2023.8.3",
|
"version": "2023.8.3-1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|||||||
@@ -257,6 +257,7 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
|
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
|
||||||
"check_console_details": "Check console log for details.",
|
"check_console_details": "Check console log for details.",
|
||||||
|
"check_how_to_add_origin": "Check how you can add an origin",
|
||||||
"curl_invalid_format": "cURL is not formatted properly",
|
"curl_invalid_format": "cURL is not formatted properly",
|
||||||
"danger_zone": "Danger zone",
|
"danger_zone": "Danger zone",
|
||||||
"delete_account": "Your account is currently an owner in these teams:",
|
"delete_account": "Your account is currently an owner in these teams:",
|
||||||
@@ -277,6 +278,7 @@
|
|||||||
"no_environments_to_export": "No environments to export. Please create an environment to get started.",
|
"no_environments_to_export": "No environments to export. Please create an environment to get started.",
|
||||||
"no_results_found": "No matches found",
|
"no_results_found": "No matches found",
|
||||||
"page_not_found": "This page could not be found",
|
"page_not_found": "This page could not be found",
|
||||||
|
"please_install_extension": "Please install the extension and add origin to the extension.",
|
||||||
"proxy_error": "Proxy error",
|
"proxy_error": "Proxy error",
|
||||||
"script_fail": "Could not execute pre-request script",
|
"script_fail": "Could not execute pre-request script",
|
||||||
"something_went_wrong": "Something went wrong",
|
"something_went_wrong": "Something went wrong",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@hoppscotch/common",
|
"name": "@hoppscotch/common",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2023.8.3",
|
"version": "2023.8.3-1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
||||||
"test": "vitest --run",
|
"test": "vitest --run",
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"@codemirror/lang-javascript": "^6.2.1",
|
"@codemirror/lang-javascript": "^6.2.1",
|
||||||
"@codemirror/lang-json": "^6.0.1",
|
"@codemirror/lang-json": "^6.0.1",
|
||||||
"@codemirror/lang-xml": "^6.0.2",
|
"@codemirror/lang-xml": "^6.0.2",
|
||||||
"@codemirror/language": "^6.9.2",
|
"@codemirror/language": "6.9.0",
|
||||||
"@codemirror/legacy-modes": "^6.3.3",
|
"@codemirror/legacy-modes": "^6.3.3",
|
||||||
"@codemirror/lint": "^6.4.2",
|
"@codemirror/lint": "^6.4.2",
|
||||||
"@codemirror/search": "^6.5.4",
|
"@codemirror/search": "^6.5.4",
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
"workbox-window": "^7.0.0",
|
"workbox-window": "^7.0.0",
|
||||||
"xml-formatter": "^3.5.0",
|
"xml-formatter": "^3.5.0",
|
||||||
"yargs-parser": "^21.1.1",
|
"yargs-parser": "^21.1.1",
|
||||||
"zod": "^3.22.2"
|
"zod": "^3.22.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
||||||
|
|||||||
1
packages/hoppscotch-common/public/badge-dark.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="156" height="32" fill="none"><rect width="156" height="32" fill="#000" rx="4"/><text xmlns="http://www.w3.org/2000/svg" x="50%" y="50%" fill="#fff" dominant-baseline="central" font-family="Helvetica,sans-serif" font-size="12" font-weight="bold" text-anchor="middle" text-rendering="geometricPrecision">▶ Run in Hoppscotch</text></svg>
|
||||||
|
After Width: | Height: | Size: 386 B |
1
packages/hoppscotch-common/public/badge-light.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="156" height="32" fill="none"><rect width="156" height="32" fill="#fff" rx="4"/><text xmlns="http://www.w3.org/2000/svg" x="50%" y="50%" fill="#000" dominant-baseline="central" font-family="Helvetica,sans-serif" font-size="12" font-weight="bold" text-anchor="middle" text-rendering="geometricPrecision">▶ Run in Hoppscotch</text></svg>
|
||||||
|
After Width: | Height: | Size: 386 B |
|
Before Width: | Height: | Size: 926 KiB After Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 462 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 400 B After Width: | Height: | Size: 624 B |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 871 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 510 KiB After Width: | Height: | Size: 360 KiB |
|
Before Width: | Height: | Size: 535 KiB After Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 178 KiB |
@@ -1 +1,50 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" fill="none"><path fill="#10B981" d="M0 0h512v512H0z"/><circle cx="197.76" cy="157.84" r="10" fill="#fff" fill-opacity=".75"/><circle cx="259.76" cy="161.84" r="12" fill="#fff" fill-opacity=".75"/><circle cx="319.76" cy="177.84" r="10" fill="#fff" fill-opacity=".75"/><path d="M344.963 235.676c2.075-12.698-38.872-29.804-90.967-38.094-52.09-8.296-96.404-4.665-98.48 8.033-.257 1.035 0 1.812.263 2.853-1.298-.521-76.714 211.212-76.714 211.212H364.14s-17.621-181.414-20.211-181.414c.515-.772 1.035-1.549 1.035-2.59Z" fill="url(#a)"/><path d="M314.902 227.386c-1.298 8.033-30.839 9.845-66.343 4.402-35.247-5.7-62.982-16.843-61.684-24.618.521-2.59 3.888-4.665 9.331-5.7-18.141.777-30.062 4.145-31.096 9.845-1.555 10.628 34.726 25.139 81.373 32.657 46.647 7.512 85.782 4.665 87.594-5.7 1.041-6.226-9.33-12.961-26.431-19.439 4.923 2.847 7.513 5.957 7.256 8.553Z" fill="#A7F3D0" fill-opacity=".5"/><path d="M333.557 157.413c-3.104-32.137-27.729-59.351-60.9-64.53-33.172-5.186-64.531 12.954-77.749 42.238 21.251 1.298 44.057 3.631 67.904 7.518 25.396 3.888 49.237 9.074 70.745 14.774Z" fill="url(#b)"/><path d="M74.142 158.002c-2.59 15.808 30.319 35.247 81.894 51.055-.257-1.04-.257-1.818-.257-2.853 2.07-12.698 46.127-16.328 98.48-8.032 52.347 8.29 93.037 25.396 90.961 38.094-.257 1.04-.514 1.818-1.035 2.589 53.645.778 90.968-7.512 93.557-23.32 3.625-24.104-74.638-56.498-174.93-72.306-100.555-15.808-185.045-9.331-188.67 14.773Zm115.586-1.298c.778-4.145 4.665-7.255 8.81-6.477 4.145.777 7.256 4.665 6.478 8.81-.52 4.145-4.665 6.998-8.81 6.478-4.145-.778-7.255-4.666-6.478-8.811Zm59.866 4.145c.777-5.7 6.22-9.587 11.92-8.547 5.7.778 9.588 6.215 8.553 11.921-1.041 5.442-6.478 9.33-11.92 8.553-5.706-.778-9.594-6.221-8.553-11.927Zm62.975 15.294c.778-4.145 4.665-7.255 8.81-6.478 4.145.778 7.255 4.666 6.478 8.811-.515 4.145-4.665 7.255-8.81 6.477-4.145-.777-7.256-4.665-6.478-8.81Z" fill="url(#c)"/><defs><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 32.7063 -69.3245 0 264.232 124.706)"><stop stop-color="#047857"/><stop offset="1" stop-color="#064E3B"/></radialGradient><radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(255.837 186.754) scale(1389.61)"><stop stop-color="#047857"/><stop offset=".115" stop-color="#064E3B"/></radialGradient><linearGradient id="a" x1="224.998" y1="157.606" x2="224.998" y2="403.696" gradientUnits="userSpaceOnUse"><stop stop-color="#86EFAC" stop-opacity=".75"/><stop offset=".635" stop-color="#fff" stop-opacity=".2"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient></defs></svg>
|
<svg width="824" height="824" viewBox="0 0 824 824" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="824" height="824" rx="184" fill="#08110F"/>
|
||||||
|
<rect width="824" height="824" rx="184" fill="url(#paint0_radial_0_21)" fill-opacity="0.5"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint1_linear_0_21)"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint2_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint3_linear_0_21)"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint4_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint5_linear_0_21)"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint6_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint7_linear_0_21)"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint8_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<defs>
|
||||||
|
<radialGradient id="paint0_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(814.524 12.36) rotate(125.613) scale(1089.59 1210.34)">
|
||||||
|
<stop stop-color="#00D196" stop-opacity="0.5"/>
|
||||||
|
<stop offset="0.996771" stop-color="#00D196" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint1_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint2_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint3_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint4_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint5_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint6_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint7_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint8_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 5.9 KiB |
12
packages/hoppscotch-common/src/components.d.ts
vendored
@@ -1,11 +1,11 @@
|
|||||||
// generated by unplugin-vue-components
|
/* eslint-disable */
|
||||||
// We suggest you to commit this file into source control
|
/* prettier-ignore */
|
||||||
|
// @ts-nocheck
|
||||||
|
// Generated by unplugin-vue-components
|
||||||
// Read more: https://github.com/vuejs/core/pull/3399
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
import '@vue/runtime-core'
|
|
||||||
|
|
||||||
export {}
|
export {}
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
AppActionHandler: typeof import('./components/app/ActionHandler.vue')['default']
|
AppActionHandler: typeof import('./components/app/ActionHandler.vue')['default']
|
||||||
AppAnnouncement: typeof import('./components/app/Announcement.vue')['default']
|
AppAnnouncement: typeof import('./components/app/Announcement.vue')['default']
|
||||||
@@ -154,6 +154,7 @@ declare module '@vue/runtime-core' {
|
|||||||
IconLucideMinus: typeof import('~icons/lucide/minus')['default']
|
IconLucideMinus: typeof import('~icons/lucide/minus')['default']
|
||||||
IconLucideSearch: typeof import('~icons/lucide/search')['default']
|
IconLucideSearch: typeof import('~icons/lucide/search')['default']
|
||||||
IconLucideUsers: typeof import('~icons/lucide/users')['default']
|
IconLucideUsers: typeof import('~icons/lucide/users')['default']
|
||||||
|
InterceptorsErrorPlaceholder: typeof import('./components/interceptors/ErrorPlaceholder.vue')['default']
|
||||||
InterceptorsExtensionSubtitle: typeof import('./components/interceptors/ExtensionSubtitle.vue')['default']
|
InterceptorsExtensionSubtitle: typeof import('./components/interceptors/ExtensionSubtitle.vue')['default']
|
||||||
LensesHeadersRenderer: typeof import('./components/lenses/HeadersRenderer.vue')['default']
|
LensesHeadersRenderer: typeof import('./components/lenses/HeadersRenderer.vue')['default']
|
||||||
LensesHeadersRendererEntry: typeof import('./components/lenses/HeadersRendererEntry.vue')['default']
|
LensesHeadersRendererEntry: typeof import('./components/lenses/HeadersRendererEntry.vue')['default']
|
||||||
@@ -218,5 +219,4 @@ declare module '@vue/runtime-core' {
|
|||||||
WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default']
|
WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default']
|
||||||
WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default']
|
WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default']
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<header
|
<header
|
||||||
|
ref="headerRef"
|
||||||
class="flex items-center justify-between flex-1 flex-shrink-0 px-2 py-2 space-x-2 overflow-x-auto overflow-y-hidden"
|
class="flex items-center justify-between flex-1 flex-shrink-0 px-2 py-2 space-x-2 overflow-x-auto overflow-y-hidden"
|
||||||
|
@mousedown.prevent="platform.ui?.appHeader?.onHeaderAreaClick?.()"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="inline-flex items-center justify-start flex-1 space-x-2"
|
class="inline-flex items-center justify-start flex-1 space-x-2"
|
||||||
|
|||||||
@@ -1,50 +1,55 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="field-title" :class="{ 'field-highlighted': isHighlighted }">
|
<div class="flex justify-between gap-2">
|
||||||
{{ fieldName }}
|
<div
|
||||||
<span v-if="fieldArgs.length > 0">
|
class="field-title flex-1"
|
||||||
(
|
:class="{ 'field-highlighted': isHighlighted }"
|
||||||
<span v-for="(field, index) in fieldArgs" :key="`field-${index}`">
|
>
|
||||||
{{ field.name }}:
|
{{ fieldName }}
|
||||||
<GraphqlTypeLink
|
<span v-if="fieldArgs.length > 0">
|
||||||
:gql-type="field.type"
|
(
|
||||||
:jump-type-callback="jumpTypeCallback"
|
<span v-for="(field, index) in fieldArgs" :key="`field-${index}`">
|
||||||
/>
|
{{ field.name }}:
|
||||||
<span v-if="index !== fieldArgs.length - 1">, </span>
|
<GraphqlTypeLink
|
||||||
|
:gql-type="field.type"
|
||||||
|
@jump-to-type="jumpToType"
|
||||||
|
/>
|
||||||
|
<span v-if="index !== fieldArgs.length - 1">, </span>
|
||||||
|
</span>
|
||||||
|
) </span
|
||||||
|
>:
|
||||||
|
<GraphqlTypeLink :gql-type="gqlField.type" @jump-to-type="jumpToType" />
|
||||||
|
</div>
|
||||||
|
<div v-if="gqlField.deprecationReason">
|
||||||
|
<span
|
||||||
|
v-tippy="{ theme: 'tomato' }"
|
||||||
|
class="!text-red-500 hover:!text-red-600 text-xs flex items-center gap-2 cursor-pointer"
|
||||||
|
:title="gqlField.deprecationReason"
|
||||||
|
>
|
||||||
|
<IconAlertTriangle /> {{ t("state.deprecated") }}
|
||||||
</span>
|
</span>
|
||||||
) </span
|
</div>
|
||||||
>:
|
|
||||||
<GraphqlTypeLink
|
|
||||||
:gql-type="gqlField.type"
|
|
||||||
:jump-type-callback="jumpTypeCallback"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="gqlField.description"
|
v-if="gqlField.description"
|
||||||
class="py-2 text-secondaryLight field-desc"
|
class="field-desc py-2 text-secondaryLight"
|
||||||
>
|
>
|
||||||
{{ gqlField.description }}
|
{{ gqlField.description }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
v-if="gqlField.isDeprecated"
|
|
||||||
class="inline-block px-2 py-1 my-1 text-black bg-yellow-200 rounded field-deprecated"
|
|
||||||
>
|
|
||||||
{{ t("state.deprecated") }}
|
|
||||||
</div>
|
|
||||||
<div v-if="fieldArgs.length > 0">
|
<div v-if="fieldArgs.length > 0">
|
||||||
<h5 class="my-2">Arguments:</h5>
|
<h5 class="my-2">Arguments:</h5>
|
||||||
<div class="pl-4 border-l-2 border-divider">
|
<div class="border-l-2 border-divider pl-4">
|
||||||
<div v-for="(field, index) in fieldArgs" :key="`field-${index}`">
|
<div v-for="(field, index) in fieldArgs" :key="`field-${index}`">
|
||||||
<span>
|
<span>
|
||||||
{{ field.name }}:
|
{{ field.name }}:
|
||||||
<GraphqlTypeLink
|
<GraphqlTypeLink
|
||||||
:gql-type="field.type"
|
:gql-type="field.type"
|
||||||
:jump-type-callback="jumpTypeCallback"
|
@jump-to-type="jumpToType"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<div
|
<div
|
||||||
v-if="field.description"
|
v-if="field.description"
|
||||||
class="py-2 text-secondaryLight field-desc"
|
class="field-desc py-2 text-secondaryLight"
|
||||||
>
|
>
|
||||||
{{ field.description }}
|
{{ field.description }}
|
||||||
</div>
|
</div>
|
||||||
@@ -54,37 +59,41 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script setup lang="ts">
|
||||||
// TypeScript + Script Setup this :)
|
|
||||||
import { defineComponent } from "vue"
|
|
||||||
import { useI18n } from "@composables/i18n"
|
import { useI18n } from "@composables/i18n"
|
||||||
|
import { GraphQLType } from "graphql"
|
||||||
|
import { computed } from "vue"
|
||||||
|
import IconAlertTriangle from "~icons/lucide/alert-triangle"
|
||||||
|
|
||||||
export default defineComponent({
|
const t = useI18n()
|
||||||
props: {
|
|
||||||
gqlField: { type: Object, default: () => ({}) },
|
|
||||||
jumpTypeCallback: { type: Function, default: () => ({}) },
|
|
||||||
isHighlighted: { type: Boolean, default: false },
|
|
||||||
},
|
|
||||||
setup() {
|
|
||||||
return {
|
|
||||||
t: useI18n(),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
fieldName() {
|
|
||||||
return this.gqlField.name
|
|
||||||
},
|
|
||||||
|
|
||||||
fieldArgs() {
|
const props = withDefaults(
|
||||||
return this.gqlField.args || []
|
defineProps<{
|
||||||
},
|
gqlField: any
|
||||||
},
|
isHighlighted: boolean
|
||||||
})
|
}>(),
|
||||||
|
{
|
||||||
|
gqlField: {},
|
||||||
|
isHighlighted: false,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: "jump-to-type", type: GraphQLType): void
|
||||||
|
}>()
|
||||||
|
|
||||||
|
const fieldName = computed(() => props.gqlField.name)
|
||||||
|
|
||||||
|
const fieldArgs = computed(() => props.gqlField.args || [])
|
||||||
|
|
||||||
|
const jumpToType = (type: GraphQLType) => {
|
||||||
|
emit("jump-to-type", type)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.field-highlighted {
|
.field-highlighted {
|
||||||
@apply border-accent border-b-2;
|
@apply border-b-2 border-accent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-title {
|
.field-title {
|
||||||
|
|||||||
@@ -58,8 +58,8 @@
|
|||||||
v-for="(field, index) in filteredQueryFields"
|
v-for="(field, index) in filteredQueryFields"
|
||||||
:key="`field-${index}`"
|
:key="`field-${index}`"
|
||||||
:gql-field="field"
|
:gql-field="field"
|
||||||
:jump-type-callback="handleJumpToType"
|
|
||||||
class="p-4"
|
class="p-4"
|
||||||
|
@jump-to-type="handleJumpToType"
|
||||||
/>
|
/>
|
||||||
</HoppSmartTab>
|
</HoppSmartTab>
|
||||||
<HoppSmartTab
|
<HoppSmartTab
|
||||||
@@ -72,8 +72,8 @@
|
|||||||
v-for="(field, index) in filteredMutationFields"
|
v-for="(field, index) in filteredMutationFields"
|
||||||
:key="`field-${index}`"
|
:key="`field-${index}`"
|
||||||
:gql-field="field"
|
:gql-field="field"
|
||||||
:jump-type-callback="handleJumpToType"
|
|
||||||
class="p-4"
|
class="p-4"
|
||||||
|
@jump-to-type="handleJumpToType"
|
||||||
/>
|
/>
|
||||||
</HoppSmartTab>
|
</HoppSmartTab>
|
||||||
<HoppSmartTab
|
<HoppSmartTab
|
||||||
@@ -86,8 +86,8 @@
|
|||||||
v-for="(field, index) in filteredSubscriptionFields"
|
v-for="(field, index) in filteredSubscriptionFields"
|
||||||
:key="`field-${index}`"
|
:key="`field-${index}`"
|
||||||
:gql-field="field"
|
:gql-field="field"
|
||||||
:jump-type-callback="handleJumpToType"
|
|
||||||
class="p-4"
|
class="p-4"
|
||||||
|
@jump-to-type="handleJumpToType"
|
||||||
/>
|
/>
|
||||||
</HoppSmartTab>
|
</HoppSmartTab>
|
||||||
<HoppSmartTab
|
<HoppSmartTab
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
:gql-types="graphqlTypes"
|
:gql-types="graphqlTypes"
|
||||||
:is-highlighted="isGqlTypeHighlighted(type)"
|
:is-highlighted="isGqlTypeHighlighted(type)"
|
||||||
:highlighted-fields="getGqlTypeHighlightedFields(type)"
|
:highlighted-fields="getGqlTypeHighlightedFields(type)"
|
||||||
:jump-type-callback="handleJumpToType"
|
@jump-to-type="handleJumpToType"
|
||||||
/>
|
/>
|
||||||
</HoppSmartTab>
|
</HoppSmartTab>
|
||||||
</HoppSmartTabs>
|
</HoppSmartTabs>
|
||||||
|
|||||||
@@ -7,38 +7,31 @@
|
|||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineComponent } from "vue"
|
import { GraphQLScalarType, GraphQLType } from "graphql"
|
||||||
import { GraphQLScalarType } from "graphql"
|
import { computed } from "vue"
|
||||||
|
|
||||||
export default defineComponent({
|
const props = defineProps<{
|
||||||
props: {
|
gqlType: GraphQLType
|
||||||
// eslint-disable-next-line vue/require-default-prop
|
}>()
|
||||||
gqlType: null,
|
|
||||||
// (typeName: string) => void
|
|
||||||
// eslint-disable-next-line vue/require-default-prop
|
|
||||||
jumpTypeCallback: Function,
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
const emit = defineEmits<{
|
||||||
typeString() {
|
(e: "jump-to-type", type: GraphQLType): void
|
||||||
return `${this.gqlType}`
|
}>()
|
||||||
},
|
|
||||||
isScalar() {
|
|
||||||
return this.resolveRootType(this.gqlType) instanceof GraphQLScalarType
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
const typeString = computed(() => `${props.gqlType}`)
|
||||||
jumpToType() {
|
const isScalar = computed(() => {
|
||||||
if (this.isScalar) return
|
return resolveRootType(props.gqlType) instanceof GraphQLScalarType
|
||||||
this.jumpTypeCallback(this.gqlType)
|
|
||||||
},
|
|
||||||
resolveRootType(type) {
|
|
||||||
let t = type
|
|
||||||
while (t.ofType != null) t = t.ofType
|
|
||||||
return t
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function resolveRootType(type: GraphQLType) {
|
||||||
|
let t = type as any
|
||||||
|
while (t.ofType != null) t = t.ofType
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
function jumpToType() {
|
||||||
|
if (isScalar.value) return
|
||||||
|
emit("jump-to-type", props.gqlType)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import { useI18n } from "@composables/i18n"
|
|||||||
import { useToast } from "@composables/toast"
|
import { useToast } from "@composables/toast"
|
||||||
import { tokenRequest } from "~/helpers/oauth"
|
import { tokenRequest } from "~/helpers/oauth"
|
||||||
import { getCombinedEnvVariables } from "~/helpers/preRequest"
|
import { getCombinedEnvVariables } from "~/helpers/preRequest"
|
||||||
|
import * as E from "fp-ts/Either"
|
||||||
|
|
||||||
const t = useI18n()
|
const t = useI18n()
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
@@ -98,7 +99,11 @@ const handleAccessTokenRequest = async () => {
|
|||||||
clientSecret: parseTemplateString(clientSecret.value, envVars),
|
clientSecret: parseTemplateString(clientSecret.value, envVars),
|
||||||
scope: parseTemplateString(scope.value, envVars),
|
scope: parseTemplateString(scope.value, envVars),
|
||||||
}
|
}
|
||||||
await tokenRequest(tokenReqParams)
|
const res = await tokenRequest(tokenReqParams)
|
||||||
|
|
||||||
|
if (res && E.isLeft(res)) {
|
||||||
|
toast.error(res.left)
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
toast.error(`${e}`)
|
toast.error(`${e}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -350,7 +350,6 @@ const newSendRequest = async () => {
|
|||||||
const streamResult = await streamPromise
|
const streamResult = await streamPromise
|
||||||
|
|
||||||
requestCancelFunc.value = cancel
|
requestCancelFunc.value = cancel
|
||||||
|
|
||||||
if (E.isRight(streamResult)) {
|
if (E.isRight(streamResult)) {
|
||||||
subscribeToStream(
|
subscribeToStream(
|
||||||
streamResult.right,
|
streamResult.right,
|
||||||
@@ -365,6 +364,20 @@ const newSendRequest = async () => {
|
|||||||
loading.value = false
|
loading.value = false
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
// TODO: Change this any to a proper type
|
||||||
|
const result = (streamResult.right as any).value
|
||||||
|
if (
|
||||||
|
result.type === "network_fail" &&
|
||||||
|
result.error?.error === "NO_PW_EXT_HOOK"
|
||||||
|
) {
|
||||||
|
const errorResponse: HoppRESTResponse = {
|
||||||
|
type: "extension_error",
|
||||||
|
error: result.error.humanMessage.heading,
|
||||||
|
component: result.error.component,
|
||||||
|
req: result.req,
|
||||||
|
}
|
||||||
|
updateRESTResponse(errorResponse)
|
||||||
|
}
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,6 +11,12 @@
|
|||||||
<HoppSmartSpinner class="my-4" />
|
<HoppSmartSpinner class="my-4" />
|
||||||
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
|
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<component
|
||||||
|
:is="response.component"
|
||||||
|
v-if="response.type === 'extension_error'"
|
||||||
|
class="flex-1"
|
||||||
|
/>
|
||||||
<HoppSmartPlaceholder
|
<HoppSmartPlaceholder
|
||||||
v-if="response.type === 'network_fail'"
|
v-if="response.type === 'network_fail'"
|
||||||
:src="`/images/states/${colorMode.value}/youre_lost.svg`"
|
:src="`/images/states/${colorMode.value}/youre_lost.svg`"
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
<template>
|
||||||
|
<HoppSmartPlaceholder
|
||||||
|
:src="`/images/states/${colorMode.value}/youre_lost.svg`"
|
||||||
|
:alt="`${t('error.network_fail')}`"
|
||||||
|
:heading="t('error.network_fail')"
|
||||||
|
large
|
||||||
|
>
|
||||||
|
<div class="my-1 text-secondaryLight flex flex-col items-center">
|
||||||
|
<span>
|
||||||
|
{{ t("error.please_install_extension") }}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{{ t("error.check_how_to_add_origin") }}
|
||||||
|
<HoppSmartLink
|
||||||
|
blank
|
||||||
|
to="https://docs.hoppscotch.io/documentation/features/interceptor#browser-extension"
|
||||||
|
class="text-accent hover:text-accentDark"
|
||||||
|
>
|
||||||
|
here
|
||||||
|
</HoppSmartLink>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col py-4 space-y-2">
|
||||||
|
<span>
|
||||||
|
<HoppSmartItem
|
||||||
|
to="https://chrome.google.com/webstore/detail/hoppscotch-browser-extens/amknoiejhlmhancpahfcfcfhllgkpbld"
|
||||||
|
blank
|
||||||
|
:icon="IconChrome"
|
||||||
|
label="Chrome"
|
||||||
|
:info-icon="hasChromeExtInstalled ? IconCheckCircle : null"
|
||||||
|
:active-info-icon="hasChromeExtInstalled"
|
||||||
|
outline
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<HoppSmartItem
|
||||||
|
to="https://addons.mozilla.org/en-US/firefox/addon/hoppscotch"
|
||||||
|
blank
|
||||||
|
:icon="IconFirefox"
|
||||||
|
label="Firefox"
|
||||||
|
:info-icon="hasFirefoxExtInstalled ? IconCheckCircle : null"
|
||||||
|
:active-info-icon="hasFirefoxExtInstalled"
|
||||||
|
outline
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="py-4 space-y-4">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<HoppSmartToggle
|
||||||
|
:on="extensionEnabled"
|
||||||
|
@change="extensionEnabled = !extensionEnabled"
|
||||||
|
>
|
||||||
|
{{ t("settings.extensions_use_toggle") }}
|
||||||
|
</HoppSmartToggle>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</HoppSmartPlaceholder>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import IconChrome from "~icons/brands/chrome"
|
||||||
|
import IconFirefox from "~icons/brands/firefox"
|
||||||
|
import IconCheckCircle from "~icons/lucide/check-circle"
|
||||||
|
import { useI18n } from "@composables/i18n"
|
||||||
|
import { ExtensionInterceptorService } from "~/platform/std/interceptors/extension"
|
||||||
|
import { useService } from "dioc/vue"
|
||||||
|
import { computed } from "vue"
|
||||||
|
import { InterceptorService } from "~/services/interceptor.service"
|
||||||
|
import { platform } from "~/platform"
|
||||||
|
import { useColorMode } from "~/composables/theming"
|
||||||
|
|
||||||
|
const colorMode = useColorMode()
|
||||||
|
const t = useI18n()
|
||||||
|
|
||||||
|
const interceptorService = useService(InterceptorService)
|
||||||
|
const extensionService = useService(ExtensionInterceptorService)
|
||||||
|
|
||||||
|
const hasChromeExtInstalled = extensionService.chromeExtensionInstalled
|
||||||
|
const hasFirefoxExtInstalled = extensionService.firefoxExtensionInstalled
|
||||||
|
|
||||||
|
const extensionEnabled = computed({
|
||||||
|
get() {
|
||||||
|
return (
|
||||||
|
interceptorService.currentInterceptorID.value ===
|
||||||
|
extensionService.interceptorID
|
||||||
|
)
|
||||||
|
},
|
||||||
|
set(active) {
|
||||||
|
if (active) {
|
||||||
|
interceptorService.currentInterceptorID.value =
|
||||||
|
extensionService.interceptorID
|
||||||
|
} else {
|
||||||
|
interceptorService.currentInterceptorID.value =
|
||||||
|
platform.interceptors.default
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@@ -152,12 +152,14 @@ export function useStreamSubscriber(): {
|
|||||||
error?: (e: any) => void,
|
error?: (e: any) => void,
|
||||||
complete?: () => void
|
complete?: () => void
|
||||||
) => {
|
) => {
|
||||||
const sub = stream.subscribe({
|
let sub: Subscription | null = null
|
||||||
|
|
||||||
|
sub = stream.subscribe({
|
||||||
next,
|
next,
|
||||||
error,
|
error,
|
||||||
complete: () => {
|
complete: () => {
|
||||||
if (complete) complete()
|
if (complete) complete()
|
||||||
subs.splice(subs.indexOf(sub), 1)
|
if (sub) subs.splice(subs.indexOf(sub), 1)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ import {
|
|||||||
removeLocalConfig,
|
removeLocalConfig,
|
||||||
} from "~/newstore/localpersistence"
|
} from "~/newstore/localpersistence"
|
||||||
|
|
||||||
const redirectUri = `${window.location.origin}/`
|
import * as E from "fp-ts/Either"
|
||||||
|
import { z } from "zod"
|
||||||
|
|
||||||
|
const redirectUri = `${window.location.origin}/oauth`
|
||||||
|
|
||||||
// GENERAL HELPER FUNCTIONS
|
// GENERAL HELPER FUNCTIONS
|
||||||
|
|
||||||
@@ -16,7 +19,7 @@ const redirectUri = `${window.location.origin}/`
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const sendPostRequest = async (url, params) => {
|
const sendPostRequest = async (url: string, params: Record<string, string>) => {
|
||||||
const body = Object.keys(params)
|
const body = Object.keys(params)
|
||||||
.map((key) => `${key}=${params[key]}`)
|
.map((key) => `${key}=${params[key]}`)
|
||||||
.join("&")
|
.join("&")
|
||||||
@@ -30,9 +33,9 @@ const sendPostRequest = async (url, params) => {
|
|||||||
try {
|
try {
|
||||||
const response = await fetch(url, options)
|
const response = await fetch(url, options)
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
return data
|
return E.right(data)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
return E.left("AUTH_TOKEN_REQUEST_FAILED")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +46,7 @@ const sendPostRequest = async (url, params) => {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const parseQueryString = (searchQuery) => {
|
const parseQueryString = (searchQuery: string): Record<string, string> => {
|
||||||
if (searchQuery === "") {
|
if (searchQuery === "") {
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
@@ -61,7 +64,7 @@ const parseQueryString = (searchQuery) => {
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const getTokenConfiguration = async (endpoint) => {
|
const getTokenConfiguration = async (endpoint: string) => {
|
||||||
const options = {
|
const options = {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
@@ -71,9 +74,9 @@ const getTokenConfiguration = async (endpoint) => {
|
|||||||
try {
|
try {
|
||||||
const response = await fetch(endpoint, options)
|
const response = await fetch(endpoint, options)
|
||||||
const config = await response.json()
|
const config = await response.json()
|
||||||
return config
|
return E.right(config)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
return E.left("OIDC_DISCOVERY_FAILED")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +100,7 @@ const generateRandomString = () => {
|
|||||||
* @returns {Promise<ArrayBuffer>}
|
* @returns {Promise<ArrayBuffer>}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const sha256 = (plain) => {
|
const sha256 = (plain: string) => {
|
||||||
const encoder = new TextEncoder()
|
const encoder = new TextEncoder()
|
||||||
const data = encoder.encode(plain)
|
const data = encoder.encode(plain)
|
||||||
return window.crypto.subtle.digest("SHA-256", data)
|
return window.crypto.subtle.digest("SHA-256", data)
|
||||||
@@ -111,15 +114,18 @@ const sha256 = (plain) => {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
const base64urlencode = (
|
const base64urlencode = (
|
||||||
str // Converts the ArrayBuffer to string using Uint8 array to convert to what btoa accepts.
|
str: ArrayBuffer // Converts the ArrayBuffer to string using Uint8 array to convert to what btoa accepts.
|
||||||
) =>
|
) => {
|
||||||
|
const hashArray = Array.from(new Uint8Array(str))
|
||||||
|
|
||||||
// btoa accepts chars only within ascii 0-255 and base64 encodes them.
|
// btoa accepts chars only within ascii 0-255 and base64 encodes them.
|
||||||
// Then convert the base64 encoded to base64url encoded
|
// Then convert the base64 encoded to base64url encoded
|
||||||
// (replace + with -, replace / with _, trim trailing =)
|
// (replace + with -, replace / with _, trim trailing =)
|
||||||
btoa(String.fromCharCode.apply(null, new Uint8Array(str)))
|
return btoa(String.fromCharCode.apply(null, hashArray))
|
||||||
.replace(/\+/g, "-")
|
.replace(/\+/g, "-")
|
||||||
.replace(/\//g, "_")
|
.replace(/\//g, "_")
|
||||||
.replace(/=+$/, "")
|
.replace(/=+$/, "")
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the base64-urlencoded sha256 hash for the PKCE challenge
|
* Return the base64-urlencoded sha256 hash for the PKCE challenge
|
||||||
@@ -128,13 +134,23 @@ const base64urlencode = (
|
|||||||
* @returns {String}
|
* @returns {String}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const pkceChallengeFromVerifier = async (v) => {
|
const pkceChallengeFromVerifier = async (v: string) => {
|
||||||
const hashed = await sha256(v)
|
const hashed = await sha256(v)
|
||||||
return base64urlencode(hashed)
|
return base64urlencode(hashed)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OAUTH REQUEST
|
// OAUTH REQUEST
|
||||||
|
|
||||||
|
type TokenRequestParams = {
|
||||||
|
oidcDiscoveryUrl: string
|
||||||
|
grantType: string
|
||||||
|
authUrl: string
|
||||||
|
accessTokenUrl: string
|
||||||
|
clientId: string
|
||||||
|
clientSecret: string
|
||||||
|
scope: string
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiates PKCE Auth Code flow when requested
|
* Initiates PKCE Auth Code flow when requested
|
||||||
*
|
*
|
||||||
@@ -150,16 +166,28 @@ const tokenRequest = async ({
|
|||||||
clientId,
|
clientId,
|
||||||
clientSecret,
|
clientSecret,
|
||||||
scope,
|
scope,
|
||||||
}) => {
|
}: TokenRequestParams) => {
|
||||||
// Check oauth configuration
|
// Check oauth configuration
|
||||||
if (oidcDiscoveryUrl !== "") {
|
if (oidcDiscoveryUrl !== "") {
|
||||||
// eslint-disable-next-line camelcase
|
const res = await getTokenConfiguration(oidcDiscoveryUrl)
|
||||||
const { authorization_endpoint, token_endpoint } =
|
|
||||||
await getTokenConfiguration(oidcDiscoveryUrl)
|
const OIDCConfigurationSchema = z.object({
|
||||||
// eslint-disable-next-line camelcase
|
authorization_endpoint: z.string(),
|
||||||
authUrl = authorization_endpoint
|
token_endpoint: z.string(),
|
||||||
// eslint-disable-next-line camelcase
|
})
|
||||||
accessTokenUrl = token_endpoint
|
|
||||||
|
if (E.isLeft(res)) {
|
||||||
|
return E.left("OIDC_DISCOVERY_FAILED" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsedOIDCConfiguration = OIDCConfigurationSchema.safeParse(res.right)
|
||||||
|
|
||||||
|
if (!parsedOIDCConfiguration.success) {
|
||||||
|
return E.left("OIDC_DISCOVERY_FAILED" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
authUrl = parsedOIDCConfiguration.data.authorization_endpoint
|
||||||
|
accessTokenUrl = parsedOIDCConfiguration.data.token_endpoint
|
||||||
}
|
}
|
||||||
// Store oauth information
|
// Store oauth information
|
||||||
setLocalConfig("tokenEndpoint", accessTokenUrl)
|
setLocalConfig("tokenEndpoint", accessTokenUrl)
|
||||||
@@ -190,7 +218,7 @@ const tokenRequest = async ({
|
|||||||
)}&code_challenge_method=S256`
|
)}&code_challenge_method=S256`
|
||||||
|
|
||||||
// Redirect to the authorization server
|
// Redirect to the authorization server
|
||||||
window.location = buildUrl()
|
window.location.assign(buildUrl())
|
||||||
}
|
}
|
||||||
|
|
||||||
// OAUTH REDIRECT HANDLING
|
// OAUTH REDIRECT HANDLING
|
||||||
@@ -202,44 +230,84 @@ const tokenRequest = async ({
|
|||||||
* @returns {Promise<any | void>}
|
* @returns {Promise<any | void>}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const oauthRedirect = () => {
|
const handleOAuthRedirect = async () => {
|
||||||
let tokenResponse = ""
|
const queryParams = parseQueryString(window.location.search.substring(1))
|
||||||
const q = parseQueryString(window.location.search.substring(1))
|
|
||||||
// Check if the server returned an error string
|
// Check if the server returned an error string
|
||||||
if (q.error) {
|
if (queryParams.error) {
|
||||||
alert(`Error returned from authorization server: ${q.error}`)
|
return E.left("AUTH_SERVER_RETURNED_ERROR" as const)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!queryParams.code) {
|
||||||
|
return E.left("NO_AUTH_CODE" as const)
|
||||||
|
}
|
||||||
|
|
||||||
// If the server returned an authorization code, attempt to exchange it for an access token
|
// If the server returned an authorization code, attempt to exchange it for an access token
|
||||||
if (q.code) {
|
// Verify state matches what we set at the beginning
|
||||||
// Verify state matches what we set at the beginning
|
if (getLocalConfig("pkce_state") !== queryParams.state) {
|
||||||
if (getLocalConfig("pkce_state") !== q.state) {
|
return E.left("INVALID_STATE" as const)
|
||||||
alert("Invalid state")
|
|
||||||
Promise.reject(tokenResponse)
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
// Exchange the authorization code for an access token
|
|
||||||
tokenResponse = sendPostRequest(getLocalConfig("tokenEndpoint"), {
|
|
||||||
grant_type: "authorization_code",
|
|
||||||
code: q.code,
|
|
||||||
client_id: getLocalConfig("client_id"),
|
|
||||||
client_secret: getLocalConfig("client_secret"),
|
|
||||||
redirect_uri: redirectUri,
|
|
||||||
code_verifier: getLocalConfig("pkce_codeVerifier"),
|
|
||||||
})
|
|
||||||
} catch (e) {
|
|
||||||
console.error(e)
|
|
||||||
return Promise.reject(tokenResponse)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Clean these up since we don't need them anymore
|
|
||||||
removeLocalConfig("pkce_state")
|
|
||||||
removeLocalConfig("pkce_codeVerifier")
|
|
||||||
removeLocalConfig("tokenEndpoint")
|
|
||||||
removeLocalConfig("client_id")
|
|
||||||
removeLocalConfig("client_secret")
|
|
||||||
return tokenResponse
|
|
||||||
}
|
}
|
||||||
return Promise.reject(tokenResponse)
|
|
||||||
|
const tokenEndpoint = getLocalConfig("tokenEndpoint")
|
||||||
|
const clientID = getLocalConfig("client_id")
|
||||||
|
const clientSecret = getLocalConfig("client_secret")
|
||||||
|
const codeVerifier = getLocalConfig("pkce_codeVerifier")
|
||||||
|
|
||||||
|
if (!tokenEndpoint) {
|
||||||
|
return E.left("NO_TOKEN_ENDPOINT" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!clientID) {
|
||||||
|
return E.left("NO_CLIENT_ID" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!clientSecret) {
|
||||||
|
return E.left("NO_CLIENT_SECRET" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!codeVerifier) {
|
||||||
|
return E.left("NO_CODE_VERIFIER" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exchange the authorization code for an access token
|
||||||
|
const tokenResponse: E.Either<string, any> = await sendPostRequest(
|
||||||
|
tokenEndpoint,
|
||||||
|
{
|
||||||
|
grant_type: "authorization_code",
|
||||||
|
code: queryParams.code,
|
||||||
|
client_id: clientID,
|
||||||
|
client_secret: clientSecret,
|
||||||
|
redirect_uri: redirectUri,
|
||||||
|
code_verifier: codeVerifier,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Clean these up since we don't need them anymore
|
||||||
|
clearPKCEState()
|
||||||
|
|
||||||
|
if (E.isLeft(tokenResponse)) {
|
||||||
|
return E.left("AUTH_TOKEN_REQUEST_FAILED" as const)
|
||||||
|
}
|
||||||
|
|
||||||
|
const withAccessTokenSchema = z.object({
|
||||||
|
access_token: z.string(),
|
||||||
|
})
|
||||||
|
|
||||||
|
const parsedTokenResponse = withAccessTokenSchema.safeParse(
|
||||||
|
tokenResponse.right
|
||||||
|
)
|
||||||
|
|
||||||
|
return parsedTokenResponse.success
|
||||||
|
? E.right(parsedTokenResponse.data)
|
||||||
|
: E.left("AUTH_TOKEN_REQUEST_INVALID_RESPONSE" as const)
|
||||||
}
|
}
|
||||||
|
|
||||||
export { tokenRequest, oauthRedirect }
|
const clearPKCEState = () => {
|
||||||
|
removeLocalConfig("pkce_state")
|
||||||
|
removeLocalConfig("pkce_codeVerifier")
|
||||||
|
removeLocalConfig("tokenEndpoint")
|
||||||
|
removeLocalConfig("client_id")
|
||||||
|
removeLocalConfig("client_secret")
|
||||||
|
}
|
||||||
|
|
||||||
|
export { tokenRequest, handleOAuthRedirect }
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import { HoppRESTRequest } from "@hoppscotch/data"
|
import { HoppRESTRequest } from "@hoppscotch/data"
|
||||||
|
import { Component } from "vue"
|
||||||
|
|
||||||
export type HoppRESTResponseHeader = { key: string; value: string }
|
export type HoppRESTResponseHeader = { key: string; value: string }
|
||||||
|
|
||||||
@@ -39,3 +40,9 @@ export type HoppRESTResponse =
|
|||||||
|
|
||||||
req: HoppRESTRequest
|
req: HoppRESTRequest
|
||||||
}
|
}
|
||||||
|
| {
|
||||||
|
type: "extension_error"
|
||||||
|
error: string
|
||||||
|
component: Component
|
||||||
|
req: HoppRESTRequest
|
||||||
|
}
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ import { applySetting } from "~/newstore/settings"
|
|||||||
import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence"
|
import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence"
|
||||||
import { useToast } from "~/composables/toast"
|
import { useToast } from "~/composables/toast"
|
||||||
import { useI18n } from "~/composables/i18n"
|
import { useI18n } from "~/composables/i18n"
|
||||||
|
import { platform } from "~/platform"
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
@@ -98,7 +99,10 @@ onBeforeMount(() => {
|
|||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes"
|
const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes"
|
||||||
if (!cookiesAllowed) {
|
const platformAllowsCookiePrompts =
|
||||||
|
platform.platformFeatureFlags.promptAsUsingCookies ?? true
|
||||||
|
|
||||||
|
if (!cookiesAllowed && platformAllowsCookiePrompts) {
|
||||||
toast.show(`${t("app.we_use_cookies")}`, {
|
toast.show(`${t("app.we_use_cookies")}`, {
|
||||||
duration: 0,
|
duration: 0,
|
||||||
action: [
|
action: [
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onMounted, onBeforeUnmount, onBeforeMount } from "vue"
|
import { ref, onMounted, onBeforeUnmount } from "vue"
|
||||||
import { safelyExtractRESTRequest } from "@hoppscotch/data"
|
import { safelyExtractRESTRequest } from "@hoppscotch/data"
|
||||||
import { translateExtURLParams } from "~/helpers/RESTExtURLParams"
|
import { translateExtURLParams } from "~/helpers/RESTExtURLParams"
|
||||||
import { useRoute } from "vue-router"
|
import { useRoute } from "vue-router"
|
||||||
@@ -114,7 +114,6 @@ import {
|
|||||||
} from "rxjs"
|
} from "rxjs"
|
||||||
import { useToast } from "~/composables/toast"
|
import { useToast } from "~/composables/toast"
|
||||||
import { watchDebounced } from "@vueuse/core"
|
import { watchDebounced } from "@vueuse/core"
|
||||||
import { oauthRedirect } from "~/helpers/oauth"
|
|
||||||
import { useReadonlyStream } from "~/composables/stream"
|
import { useReadonlyStream } from "~/composables/stream"
|
||||||
import {
|
import {
|
||||||
changeCurrentSyncStatus,
|
changeCurrentSyncStatus,
|
||||||
@@ -414,28 +413,6 @@ function setupTabStateSync() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function oAuthURL() {
|
|
||||||
onBeforeMount(async () => {
|
|
||||||
try {
|
|
||||||
const tokenInfo = await oauthRedirect()
|
|
||||||
if (
|
|
||||||
typeof tokenInfo === "object" &&
|
|
||||||
tokenInfo.hasOwnProperty("access_token")
|
|
||||||
) {
|
|
||||||
if (
|
|
||||||
tabs.currentActiveTab.value.document.request.auth.authType ===
|
|
||||||
"oauth-2"
|
|
||||||
) {
|
|
||||||
tabs.currentActiveTab.value.document.request.auth.token =
|
|
||||||
tokenInfo.access_token
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-empty
|
|
||||||
} catch (_) {}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
defineActionHandler("contextmenu.open", ({ position, text }) => {
|
defineActionHandler("contextmenu.open", ({ position, text }) => {
|
||||||
if (text) {
|
if (text) {
|
||||||
contextMenu.value = {
|
contextMenu.value = {
|
||||||
@@ -454,7 +431,6 @@ defineActionHandler("contextmenu.open", ({ position, text }) => {
|
|||||||
|
|
||||||
setupTabStateSync()
|
setupTabStateSync()
|
||||||
bindRequestToURLParams()
|
bindRequestToURLParams()
|
||||||
oAuthURL()
|
|
||||||
|
|
||||||
defineActionHandler("rest.request.open", ({ doc }) => {
|
defineActionHandler("rest.request.open", ({ doc }) => {
|
||||||
tabs.createNewTab(doc)
|
tabs.createNewTab(doc)
|
||||||
|
|||||||
43
packages/hoppscotch-common/src/pages/oauth.vue
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div class="flex justify-center items-center">
|
||||||
|
<HoppSmartSpinner />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { handleOAuthRedirect } from "~/helpers/oauth"
|
||||||
|
import { useToast } from "~/composables/toast"
|
||||||
|
|
||||||
|
import * as E from "fp-ts/Either"
|
||||||
|
import { useService } from "dioc/vue"
|
||||||
|
import { RESTTabService } from "~/services/tab/rest"
|
||||||
|
import { onMounted } from "vue"
|
||||||
|
|
||||||
|
import { useRouter } from "vue-router"
|
||||||
|
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
|
const toast = useToast()
|
||||||
|
|
||||||
|
const tabs = useService(RESTTabService)
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const tokenInfo = await handleOAuthRedirect()
|
||||||
|
|
||||||
|
if (E.isLeft(tokenInfo)) {
|
||||||
|
toast.error(tokenInfo.left)
|
||||||
|
router.push("/")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
tabs.currentActiveTab.value.document.request.auth.authType === "oauth-2"
|
||||||
|
) {
|
||||||
|
tabs.currentActiveTab.value.document.request.auth.token =
|
||||||
|
tokenInfo.right.access_token
|
||||||
|
|
||||||
|
router.push("/")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@@ -35,6 +35,14 @@ export type PlatformDef = {
|
|||||||
* If a value is not given, then the value is assumed to be false
|
* If a value is not given, then the value is assumed to be false
|
||||||
*/
|
*/
|
||||||
cookiesEnabled?: boolean
|
cookiesEnabled?: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the platform should prompt the user that cookies are being used.
|
||||||
|
* This will result in the user being notified a cookies advisory and is meant for web apps.
|
||||||
|
*
|
||||||
|
* If a value is not given, then the value is assumed to be true
|
||||||
|
*/
|
||||||
|
promptAsUsingCookies?: boolean
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { computed, readonly, ref } from "vue"
|
|||||||
import { browserIsChrome, browserIsFirefox } from "~/helpers/utils/userAgent"
|
import { browserIsChrome, browserIsFirefox } from "~/helpers/utils/userAgent"
|
||||||
import SettingsExtension from "~/components/settings/Extension.vue"
|
import SettingsExtension from "~/components/settings/Extension.vue"
|
||||||
import InterceptorsExtensionSubtitle from "~/components/interceptors/ExtensionSubtitle.vue"
|
import InterceptorsExtensionSubtitle from "~/components/interceptors/ExtensionSubtitle.vue"
|
||||||
|
import InterceptorsErrorPlaceholder from "~/components/interceptors/ErrorPlaceholder.vue"
|
||||||
|
|
||||||
export const defineSubscribableObject = <T extends object>(obj: T) => {
|
export const defineSubscribableObject = <T extends object>(obj: T) => {
|
||||||
const proxyObject = {
|
const proxyObject = {
|
||||||
@@ -217,6 +218,7 @@ export class ExtensionInterceptorService
|
|||||||
description: () => "Heading not found",
|
description: () => "Heading not found",
|
||||||
},
|
},
|
||||||
error: "NO_PW_EXT_HOOK",
|
error: "NO_PW_EXT_HOOK",
|
||||||
|
component: InterceptorsErrorPlaceholder,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,11 @@ export type UIPlatformDef = {
|
|||||||
appHeader?: {
|
appHeader?: {
|
||||||
paddingTop?: Ref<string>
|
paddingTop?: Ref<string>
|
||||||
paddingLeft?: Ref<string>
|
paddingLeft?: Ref<string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A function which is called when the header area of the app receives a click event
|
||||||
|
*/
|
||||||
|
onHeaderAreaClick?: () => void
|
||||||
}
|
}
|
||||||
onCodemirrorInstanceMount?: (element: HTMLElement) => void
|
onCodemirrorInstanceMount?: (element: HTMLElement) => void
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { HeaderInspectorService } from "../header.inspector"
|
|||||||
import { InspectionService } from "../../index"
|
import { InspectionService } from "../../index"
|
||||||
import { getDefaultRESTRequest } from "~/helpers/rest/default"
|
import { getDefaultRESTRequest } from "~/helpers/rest/default"
|
||||||
import { ref } from "vue"
|
import { ref } from "vue"
|
||||||
|
import { InterceptorService } from "~/services/interceptor.service"
|
||||||
|
|
||||||
vi.mock("~/modules/i18n", () => ({
|
vi.mock("~/modules/i18n", () => ({
|
||||||
__esModule: true,
|
__esModule: true,
|
||||||
@@ -58,5 +59,48 @@ describe("HeaderInspectorService", () => {
|
|||||||
|
|
||||||
expect(result.value).toHaveLength(0)
|
expect(result.value).toHaveLength(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should return an empty array when headers contain cookies but interceptor supports cookies", () => {
|
||||||
|
const container = new TestContainer()
|
||||||
|
|
||||||
|
container.bindMock(InterceptorService, {
|
||||||
|
currentInterceptor: ref({ supportsCookies: true }) as any,
|
||||||
|
})
|
||||||
|
|
||||||
|
const headerInspector = container.bind(HeaderInspectorService)
|
||||||
|
|
||||||
|
const req = ref({
|
||||||
|
...getDefaultRESTRequest(),
|
||||||
|
endpoint: "http://example.com/api/data",
|
||||||
|
headers: [{ key: "Cookie", value: "some-cookie", active: true }],
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = headerInspector.getInspections(req)
|
||||||
|
|
||||||
|
expect(result.value).toHaveLength(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should return an inspector result when headers contain cookies and the current interceptor doesn't support cookies", () => {
|
||||||
|
const container = new TestContainer()
|
||||||
|
|
||||||
|
container.bindMock(InterceptorService, {
|
||||||
|
currentInterceptor: ref({ supportsCookies: false }) as any,
|
||||||
|
})
|
||||||
|
|
||||||
|
const headerInspector = container.bind(HeaderInspectorService)
|
||||||
|
|
||||||
|
const req = ref({
|
||||||
|
...getDefaultRESTRequest(),
|
||||||
|
endpoint: "http://example.com/api/data",
|
||||||
|
headers: [{ key: "Cookie", value: "some-cookie", active: true }],
|
||||||
|
})
|
||||||
|
|
||||||
|
const result = headerInspector.getInspections(req)
|
||||||
|
|
||||||
|
expect(result.value).not.toHaveLength(0)
|
||||||
|
expect(result.value).toContainEqual(
|
||||||
|
expect.objectContaining({ id: "header", isApplicable: true })
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { getI18n } from "~/modules/i18n"
|
|||||||
import { HoppRESTRequest } from "@hoppscotch/data"
|
import { HoppRESTRequest } from "@hoppscotch/data"
|
||||||
import { Ref, computed, markRaw } from "vue"
|
import { Ref, computed, markRaw } from "vue"
|
||||||
import IconAlertTriangle from "~icons/lucide/alert-triangle"
|
import IconAlertTriangle from "~icons/lucide/alert-triangle"
|
||||||
|
import { InterceptorService } from "~/services/interceptor.service"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This inspector is responsible for inspecting the header of a request.
|
* This inspector is responsible for inspecting the header of a request.
|
||||||
@@ -19,6 +20,7 @@ export class HeaderInspectorService extends Service implements Inspector {
|
|||||||
public readonly inspectorID = "header"
|
public readonly inspectorID = "header"
|
||||||
|
|
||||||
private readonly inspection = this.bind(InspectionService)
|
private readonly inspection = this.bind(InspectionService)
|
||||||
|
private readonly interceptorService = this.bind(InterceptorService)
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super()
|
||||||
@@ -42,7 +44,10 @@ export class HeaderInspectorService extends Service implements Inspector {
|
|||||||
|
|
||||||
const isContainCookies = headerKeys.includes("Cookie")
|
const isContainCookies = headerKeys.includes("Cookie")
|
||||||
|
|
||||||
if (isContainCookies) {
|
if (
|
||||||
|
isContainCookies &&
|
||||||
|
!this.interceptorService.currentInterceptor.value?.supportsCookies
|
||||||
|
) {
|
||||||
headerKeys.forEach((headerKey, index) => {
|
headerKeys.forEach((headerKey, index) => {
|
||||||
if (this.cookiesCheck(headerKey)) {
|
if (this.cookiesCheck(headerKey)) {
|
||||||
results.push({
|
results.push({
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export type InterceptorError =
|
|||||||
description: (t: ReturnType<typeof getI18n>) => string
|
description: (t: ReturnType<typeof getI18n>) => string
|
||||||
}
|
}
|
||||||
error?: unknown
|
error?: unknown
|
||||||
|
component?: Component
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -25,3 +25,6 @@ dist-ssr
|
|||||||
|
|
||||||
# Sitemap
|
# Sitemap
|
||||||
.sitemap-gen
|
.sitemap-gen
|
||||||
|
|
||||||
|
# Backend Code generation
|
||||||
|
src/api/generated
|
||||||
|
|||||||
18
packages/hoppscotch-selfhost-desktop/gql-codegen.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
overwrite: true
|
||||||
|
schema: "../../gql-gen/*.gql"
|
||||||
|
generates:
|
||||||
|
src/api/generated/graphql.ts:
|
||||||
|
documents: "src/**/*.graphql"
|
||||||
|
plugins:
|
||||||
|
- add:
|
||||||
|
content: >
|
||||||
|
/* eslint-disable */
|
||||||
|
// Auto-generated file (DO NOT EDIT!!!), refer gql-codegen.yml
|
||||||
|
- typescript
|
||||||
|
- typescript-operations
|
||||||
|
- typed-document-node
|
||||||
|
- typescript-urql-graphcache
|
||||||
|
|
||||||
|
src/api/generated/backend-schema.json:
|
||||||
|
plugins:
|
||||||
|
- urql-introspection
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
{
|
{
|
||||||
"name": "@hoppscotch/selfhost-desktop",
|
"name": "@hoppscotch/selfhost-desktop",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.0",
|
"version": "2023.8.3-1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev:vite": "vite",
|
||||||
|
"dev:gql-codegen": "graphql-codegen --require dotenv/config --config gql-codegen.yml dotenv_config_path=\"../../.env\" --watch",
|
||||||
|
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
||||||
"build": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
|
"build": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"tauri": "tauri"
|
"tauri": "tauri",
|
||||||
|
"gql-codegen": "graphql-codegen --require dotenv/config --config gql-codegen.yml dotenv_config_path=\"../../.env\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dioc": "workspace:^",
|
|
||||||
"@hoppscotch/common": "workspace:^",
|
"@hoppscotch/common": "workspace:^",
|
||||||
"@platform/auth": "^0.1.106",
|
"@platform/auth": "^0.1.106",
|
||||||
"@tauri-apps/api": "^1.3.0",
|
"@tauri-apps/api": "^1.3.0",
|
||||||
@@ -18,6 +20,7 @@
|
|||||||
"@vueuse/core": "^10.4.1",
|
"@vueuse/core": "^10.4.1",
|
||||||
"axios": "^0.21.4",
|
"axios": "^0.21.4",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
|
"dioc": "workspace:^",
|
||||||
"environments.api": "link:@platform/environments/environments.api",
|
"environments.api": "link:@platform/environments/environments.api",
|
||||||
"event": "link:@tauri-apps/api/event",
|
"event": "link:@tauri-apps/api/event",
|
||||||
"fp-ts": "^2.16.0",
|
"fp-ts": "^2.16.0",
|
||||||
@@ -33,6 +36,14 @@
|
|||||||
"workbox-window": "^6.5.4"
|
"workbox-window": "^6.5.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@graphql-codegen/add": "^5.0.0",
|
||||||
|
"@graphql-codegen/cli": "^5.0.0",
|
||||||
|
"@graphql-codegen/typed-document-node": "^5.0.1",
|
||||||
|
"@graphql-codegen/typescript": "^4.0.1",
|
||||||
|
"@graphql-codegen/typescript-operations": "^4.0.1",
|
||||||
|
"@graphql-codegen/typescript-urql-graphcache": "^2.4.5",
|
||||||
|
"@graphql-codegen/urql-introspection": "^2.2.1",
|
||||||
|
"@graphql-typed-document-node/core": "^3.2.0",
|
||||||
"@intlify/vite-plugin-vue-i18n": "^6.0.1",
|
"@intlify/vite-plugin-vue-i18n": "^6.0.1",
|
||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
"@types/lodash-es": "^4.17.9",
|
"@types/lodash-es": "^4.17.9",
|
||||||
@@ -46,6 +57,7 @@
|
|||||||
"eslint": "^8.28.0",
|
"eslint": "^8.28.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"eslint-plugin-vue": "^9.5.1",
|
"eslint-plugin-vue": "^9.5.1",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"unplugin-icons": "^0.14.9",
|
"unplugin-icons": "^0.14.9",
|
||||||
"unplugin-vue-components": "^0.21.0",
|
"unplugin-vue-components": "^0.21.0",
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
"withGlobalTauri": false
|
"withGlobalTauri": false
|
||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "hoppscotch-desktop",
|
"productName": "Hoppscotch",
|
||||||
"version": "0.0.0"
|
"version": "23.8.1-1"
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"allowlist": {
|
"allowlist": {
|
||||||
|
|||||||
@@ -15,64 +15,72 @@ import { useSettingStatic } from "@hoppscotch/common/composables/settings"
|
|||||||
import { appWindow } from "@tauri-apps/api/window"
|
import { appWindow } from "@tauri-apps/api/window"
|
||||||
import { stdFooterItems } from "@hoppscotch/common/platform/std/ui/footerItem"
|
import { stdFooterItems } from "@hoppscotch/common/platform/std/ui/footerItem"
|
||||||
import { stdSupportOptionItems } from "@hoppscotch/common/platform/std/ui/supportOptionsItem"
|
import { stdSupportOptionItems } from "@hoppscotch/common/platform/std/ui/supportOptionsItem"
|
||||||
import { useMousePressed } from "@vueuse/core"
|
|
||||||
import { ioDef } from "./platform/io"
|
import { ioDef } from "./platform/io"
|
||||||
|
|
||||||
const headerPaddingLeft = ref("0px")
|
const headerPaddingLeft = ref("0px")
|
||||||
const headerPaddingTop = ref("0px")
|
const headerPaddingTop = ref("0px")
|
||||||
|
|
||||||
createHoppApp("#app", {
|
|
||||||
ui: {
|
|
||||||
additionalFooterMenuItems: stdFooterItems,
|
|
||||||
additionalSupportOptionsMenuItems: stdSupportOptionItems,
|
|
||||||
appHeader: {
|
|
||||||
paddingLeft: headerPaddingLeft,
|
|
||||||
paddingTop: headerPaddingTop,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
io: ioDef,
|
|
||||||
auth: authDef,
|
|
||||||
sync: {
|
|
||||||
environments: environmentsDef,
|
|
||||||
collections: collectionsDef,
|
|
||||||
settings: settingsDef,
|
|
||||||
history: historyDef,
|
|
||||||
tabState: tabStateDef,
|
|
||||||
},
|
|
||||||
interceptors: {
|
|
||||||
default: "native",
|
|
||||||
interceptors: [
|
|
||||||
{ type: "service", service: NativeInterceptorService },
|
|
||||||
{ type: "standalone", interceptor: proxyInterceptor },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
additionalInspectors: [
|
|
||||||
{ type: "service", service: ExtensionInspectorService },
|
|
||||||
],
|
|
||||||
platformFeatureFlags: {
|
|
||||||
exportAsGIST: false,
|
|
||||||
hasTelemetry: false,
|
|
||||||
cookiesEnabled: true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(
|
|
||||||
useSettingStatic("BG_COLOR")[0],
|
|
||||||
async () => {
|
|
||||||
await nextTick()
|
|
||||||
|
|
||||||
await emit(
|
|
||||||
"hopp-bg-changed",
|
|
||||||
getComputedStyle(document.documentElement).getPropertyValue(
|
|
||||||
"--primary-color"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
{ immediate: true }
|
|
||||||
)
|
|
||||||
;(async () => {
|
;(async () => {
|
||||||
const platform = await type()
|
const platform = await type()
|
||||||
|
|
||||||
|
createHoppApp("#app", {
|
||||||
|
ui: {
|
||||||
|
additionalFooterMenuItems: stdFooterItems,
|
||||||
|
additionalSupportOptionsMenuItems: stdSupportOptionItems,
|
||||||
|
appHeader: {
|
||||||
|
paddingLeft: headerPaddingLeft,
|
||||||
|
paddingTop: headerPaddingTop,
|
||||||
|
onHeaderAreaClick() {
|
||||||
|
if (platform === "Darwin") {
|
||||||
|
// Drag thw window when the user drags the header area
|
||||||
|
// TODO: Ignore click on headers and fields
|
||||||
|
appWindow.startDragging()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
io: ioDef,
|
||||||
|
auth: authDef,
|
||||||
|
sync: {
|
||||||
|
environments: environmentsDef,
|
||||||
|
collections: collectionsDef,
|
||||||
|
settings: settingsDef,
|
||||||
|
history: historyDef,
|
||||||
|
tabState: tabStateDef,
|
||||||
|
},
|
||||||
|
interceptors: {
|
||||||
|
default: "native",
|
||||||
|
interceptors: [
|
||||||
|
{ type: "service", service: NativeInterceptorService },
|
||||||
|
{ type: "standalone", interceptor: proxyInterceptor },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
additionalInspectors: [
|
||||||
|
{ type: "service", service: ExtensionInspectorService },
|
||||||
|
],
|
||||||
|
platformFeatureFlags: {
|
||||||
|
exportAsGIST: false,
|
||||||
|
hasTelemetry: false,
|
||||||
|
cookiesEnabled: true,
|
||||||
|
promptAsUsingCookies: false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(
|
||||||
|
useSettingStatic("BG_COLOR")[0],
|
||||||
|
async () => {
|
||||||
|
await nextTick()
|
||||||
|
|
||||||
|
await emit(
|
||||||
|
"hopp-bg-changed",
|
||||||
|
getComputedStyle(document.documentElement).getPropertyValue(
|
||||||
|
"--primary-color"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
|
||||||
if (platform === "Darwin") {
|
if (platform === "Darwin") {
|
||||||
listen("will-enter-fullscreen", () => {
|
listen("will-enter-fullscreen", () => {
|
||||||
headerPaddingTop.value = "0px"
|
headerPaddingTop.value = "0px"
|
||||||
@@ -87,27 +95,4 @@ watch(
|
|||||||
headerPaddingTop.value = "2px"
|
headerPaddingTop.value = "2px"
|
||||||
headerPaddingLeft.value = "70px"
|
headerPaddingLeft.value = "70px"
|
||||||
}
|
}
|
||||||
|
|
||||||
const { pressed } = useMousePressed()
|
|
||||||
|
|
||||||
document.addEventListener("mousemove", (ev) => {
|
|
||||||
const { clientX, clientY } = ev
|
|
||||||
|
|
||||||
const el = document.querySelector("header")
|
|
||||||
|
|
||||||
if (!el) return
|
|
||||||
|
|
||||||
const { left, top, width, height } = el.getBoundingClientRect()
|
|
||||||
|
|
||||||
if (
|
|
||||||
clientX >= left &&
|
|
||||||
clientX <= left + width &&
|
|
||||||
clientY >= top &&
|
|
||||||
clientY <= top + height
|
|
||||||
) {
|
|
||||||
if (pressed.value) {
|
|
||||||
appWindow.startDragging()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})()
|
})()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@hoppscotch/selfhost-web",
|
"name": "@hoppscotch/selfhost-web",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2023.8.3",
|
"version": "2023.8.3-1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev:vite": "vite",
|
"dev:vite": "vite",
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Hoppscotch Admin</title>
|
<title>Hoppscotch Admin</title>
|
||||||
<meta property="og:image" content="/cover.jpg" />
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "hoppscotch-sh-admin",
|
"name": "hoppscotch-sh-admin",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2023.8.3",
|
"version": "2023.8.3-1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
50
packages/hoppscotch-sh-admin/public/logo.svg
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<svg width="824" height="824" viewBox="0 0 824 824" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="824" height="824" rx="184" fill="#08110F"/>
|
||||||
|
<rect width="824" height="824" rx="184" fill="url(#paint0_radial_0_21)" fill-opacity="0.5"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint1_linear_0_21)"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint2_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint3_linear_0_21)"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint4_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint5_linear_0_21)"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint6_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint7_linear_0_21)"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint8_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<defs>
|
||||||
|
<radialGradient id="paint0_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(814.524 12.36) rotate(125.613) scale(1089.59 1210.34)">
|
||||||
|
<stop stop-color="#00D196" stop-opacity="0.5"/>
|
||||||
|
<stop offset="0.996771" stop-color="#00D196" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint1_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint2_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint3_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint4_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint5_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint6_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint7_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint8_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -16,7 +16,7 @@
|
|||||||
<div class="flex items-center justify-start px-4 my-4">
|
<div class="flex items-center justify-start px-4 my-4">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<HoppSmartLink class="flex items-center space-x-4" to="/dashboard">
|
<HoppSmartLink class="flex items-center space-x-4" to="/dashboard">
|
||||||
<img src="/cover.jpg" alt="hoppscotch-logo" class="h-7" />
|
<img src="/logo.svg" alt="hoppscotch-logo" class="h-7 w-7" />
|
||||||
|
|
||||||
<span
|
<span
|
||||||
v-if="isExpanded"
|
v-if="isExpanded"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex flex-col justify-center text-center px-4">
|
<div class="flex flex-col justify-center text-center px-4">
|
||||||
<div class="flex justify-center items-center py-6">
|
<div class="flex justify-center items-center py-6">
|
||||||
<img src="/cover.jpg" alt="hoppscotch-logo" class="h-15" />
|
<img src="/logo.svg" alt="hoppscotch-logo" class="h-15 w-15" />
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col items-center">
|
<div class="flex flex-col items-center">
|
||||||
<h1 class="text-2xl text-secondaryDark">Login to Admin Dashboard</h1>
|
<h1 class="text-2xl text-secondaryDark">Login to Admin Dashboard</h1>
|
||||||
|
|||||||
@@ -3,18 +3,16 @@ import { defineConfig } from "histoire"
|
|||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
theme: {
|
theme: {
|
||||||
title: "Hoppscotch • UI",
|
title: "Hoppscotch Design • Hoppscotch",
|
||||||
logo: {
|
logo: {
|
||||||
square: "/logo.png",
|
square: "/logo.svg",
|
||||||
light: "/logo.png",
|
light: "/logo.svg",
|
||||||
dark: "/logo.png",
|
dark: "/logo.svg",
|
||||||
},
|
},
|
||||||
logoHref: "https://ui.hoppscotch.io",
|
logoHref: "/",
|
||||||
favicon: 'favicon.ico',
|
favicon: "favicon.ico",
|
||||||
},
|
},
|
||||||
setupFile: "histoire.setup.ts",
|
setupFile: "histoire.setup.ts",
|
||||||
plugins: [HstVue()],
|
plugins: [HstVue()],
|
||||||
viteIgnorePlugins: [
|
viteIgnorePlugins: ["vite:dts"],
|
||||||
'vite:dts'
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 60 KiB |
50
packages/hoppscotch-ui/public/logo.svg
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<svg width="824" height="824" viewBox="0 0 824 824" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="824" height="824" rx="184" fill="#08110F"/>
|
||||||
|
<rect width="824" height="824" rx="184" fill="url(#paint0_radial_0_21)" fill-opacity="0.5"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint1_linear_0_21)"/>
|
||||||
|
<path d="M435.425 463.217C429.441 476.657 411.033 481.515 394.309 474.07C377.585 466.624 368.879 449.693 374.863 436.253C380.846 422.813 399.254 417.954 415.978 425.4C432.702 432.846 441.409 449.777 435.425 463.217Z" fill="url(#paint2_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint3_linear_0_21)"/>
|
||||||
|
<path d="M535.563 521.172C553.071 526.191 570.536 518.856 574.571 504.789C578.606 490.722 567.684 475.251 550.175 470.232C532.666 465.213 515.201 472.548 511.166 486.615C507.131 500.682 518.054 516.153 535.563 521.172Z" fill="url(#paint4_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint5_linear_0_21)"/>
|
||||||
|
<path d="M292.782 355.633C308.227 365.286 314.462 383.173 306.709 395.584C298.955 407.995 280.149 410.231 264.704 400.578C249.258 390.924 243.023 373.037 250.777 360.626C258.53 348.215 277.337 345.98 292.782 355.633Z" fill="url(#paint6_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint7_linear_0_21)"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M502.355 231.325C581.373 266.506 632.095 343.263 634.119 429.03C680.633 465.639 726.858 516.883 705.36 565.168C681.25 619.319 595.382 617.091 497.781 589.689C450.767 615.718 392.444 620.168 339.689 596.68C286.934 573.192 251.229 526.908 239.1 474.517C153.428 420.321 94.3151 357.999 118.425 303.847C139.923 255.562 208.935 255.626 267.265 265.697C332.356 209.81 423.338 196.144 502.355 231.325ZM159.38 322.082C147.667 348.389 210.578 423.052 382.845 499.751C555.111 576.449 652.693 573.241 664.405 546.934C674.099 525.16 634.213 483.308 588.537 450.878C553.009 425.484 504.344 397.494 440.864 369.231C423.586 361.538 416.839 341.008 424.104 324.691C431.369 308.374 447.329 297.463 480.93 295.91C496.747 295.862 498.823 291.476 499.546 287.716C500.442 281.915 492.401 276.002 484.108 272.31C418.17 242.953 337.453 255.265 281.503 314.178C226.84 301.933 169.074 300.309 159.38 322.082Z" fill="url(#paint8_radial_0_21)" style="mix-blend-mode:soft-light"/>
|
||||||
|
<defs>
|
||||||
|
<radialGradient id="paint0_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(814.524 12.36) rotate(125.613) scale(1089.59 1210.34)">
|
||||||
|
<stop stop-color="#00D196" stop-opacity="0.5"/>
|
||||||
|
<stop offset="0.996771" stop-color="#00D196" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint1_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint2_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint3_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint4_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint5_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint6_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="paint7_linear_0_21" x1="411.893" y1="212" x2="411.893" y2="612" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#00D196"/>
|
||||||
|
<stop offset="1" stop-color="#00B381"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="paint8_radial_0_21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(644.721 344.481) rotate(159.984) scale(631.37 385.135)">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.9 KiB |
300
pnpm-lock.yaml
generated
@@ -35,8 +35,8 @@ importers:
|
|||||||
packages/codemirror-lang-graphql:
|
packages/codemirror-lang-graphql:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language':
|
'@codemirror/language':
|
||||||
specifier: ^6.9.2
|
specifier: 6.9.0
|
||||||
version: 6.9.2
|
version: 6.9.0
|
||||||
'@lezer/highlight':
|
'@lezer/highlight':
|
||||||
specifier: 1.1.4
|
specifier: 1.1.4
|
||||||
version: 1.1.4
|
version: 1.1.4
|
||||||
@@ -372,7 +372,7 @@ importers:
|
|||||||
version: 10.1.0(openapi-types@12.1.3)
|
version: 10.1.0(openapi-types@12.1.3)
|
||||||
'@codemirror/autocomplete':
|
'@codemirror/autocomplete':
|
||||||
specifier: ^6.10.2
|
specifier: ^6.10.2
|
||||||
version: 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
|
version: 6.10.2(@codemirror/language@6.9.0)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
|
||||||
'@codemirror/commands':
|
'@codemirror/commands':
|
||||||
specifier: ^6.3.0
|
specifier: ^6.3.0
|
||||||
version: 6.3.0
|
version: 6.3.0
|
||||||
@@ -386,8 +386,8 @@ importers:
|
|||||||
specifier: ^6.0.2
|
specifier: ^6.0.2
|
||||||
version: 6.0.2(@codemirror/view@6.22.0)
|
version: 6.0.2(@codemirror/view@6.22.0)
|
||||||
'@codemirror/language':
|
'@codemirror/language':
|
||||||
specifier: ^6.9.2
|
specifier: 6.9.0
|
||||||
version: 6.9.2
|
version: 6.9.0
|
||||||
'@codemirror/legacy-modes':
|
'@codemirror/legacy-modes':
|
||||||
specifier: ^6.3.3
|
specifier: ^6.3.3
|
||||||
version: 6.3.3
|
version: 6.3.3
|
||||||
@@ -611,8 +611,8 @@ importers:
|
|||||||
specifier: ^21.1.1
|
specifier: ^21.1.1
|
||||||
version: 21.1.1
|
version: 21.1.1
|
||||||
zod:
|
zod:
|
||||||
specifier: ^3.22.2
|
specifier: ^3.22.4
|
||||||
version: 3.22.2
|
version: 3.22.4
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@esbuild-plugins/node-globals-polyfill':
|
'@esbuild-plugins/node-globals-polyfill':
|
||||||
specifier: ^0.2.3
|
specifier: ^0.2.3
|
||||||
@@ -944,6 +944,30 @@ importers:
|
|||||||
specifier: ^6.5.4
|
specifier: ^6.5.4
|
||||||
version: 6.6.0
|
version: 6.6.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@graphql-codegen/add':
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/cli':
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.0(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/typed-document-node':
|
||||||
|
specifier: ^5.0.1
|
||||||
|
version: 5.0.1(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/typescript':
|
||||||
|
specifier: ^4.0.1
|
||||||
|
version: 4.0.1(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/typescript-operations':
|
||||||
|
specifier: ^4.0.1
|
||||||
|
version: 4.0.1(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/typescript-urql-graphcache':
|
||||||
|
specifier: ^2.4.5
|
||||||
|
version: 2.4.5(@urql/exchange-graphcache@5.2.0)(graphql-tag@2.12.6)(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/urql-introspection':
|
||||||
|
specifier: ^2.2.1
|
||||||
|
version: 2.2.1(graphql@16.8.1)
|
||||||
|
'@graphql-typed-document-node/core':
|
||||||
|
specifier: ^3.2.0
|
||||||
|
version: 3.2.0(graphql@16.8.1)
|
||||||
'@intlify/vite-plugin-vue-i18n':
|
'@intlify/vite-plugin-vue-i18n':
|
||||||
specifier: ^6.0.1
|
specifier: ^6.0.1
|
||||||
version: 6.0.1(vite@4.5.0)
|
version: 6.0.1(vite@4.5.0)
|
||||||
@@ -983,6 +1007,9 @@ importers:
|
|||||||
eslint-plugin-vue:
|
eslint-plugin-vue:
|
||||||
specifier: ^9.5.1
|
specifier: ^9.5.1
|
||||||
version: 9.17.0(eslint@8.47.0)
|
version: 9.17.0(eslint@8.47.0)
|
||||||
|
npm-run-all:
|
||||||
|
specifier: ^4.1.5
|
||||||
|
version: 4.1.5
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^4.9.5
|
specifier: ^4.9.5
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
@@ -4343,7 +4370,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.0.3):
|
/@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.0)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.0.3):
|
||||||
resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==}
|
resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@codemirror/language': ^6.0.0
|
'@codemirror/language': ^6.0.0
|
||||||
@@ -4351,13 +4378,13 @@ packages:
|
|||||||
'@codemirror/view': ^6.0.0
|
'@codemirror/view': ^6.0.0
|
||||||
'@lezer/common': ^1.0.0
|
'@lezer/common': ^1.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
'@lezer/common': 1.0.3
|
'@lezer/common': 1.0.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0):
|
/@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.0)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0):
|
||||||
resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==}
|
resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@codemirror/language': ^6.0.0
|
'@codemirror/language': ^6.0.0
|
||||||
@@ -4365,7 +4392,7 @@ packages:
|
|||||||
'@codemirror/view': ^6.0.0
|
'@codemirror/view': ^6.0.0
|
||||||
'@lezer/common': ^1.0.0
|
'@lezer/common': ^1.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
'@lezer/common': 1.1.0
|
'@lezer/common': 1.1.0
|
||||||
@@ -4374,7 +4401,7 @@ packages:
|
|||||||
/@codemirror/commands@6.3.0:
|
/@codemirror/commands@6.3.0:
|
||||||
resolution: {integrity: sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==}
|
resolution: {integrity: sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
'@lezer/common': 1.1.0
|
'@lezer/common': 1.1.0
|
||||||
@@ -4382,8 +4409,8 @@ packages:
|
|||||||
/@codemirror/lang-javascript@6.2.1:
|
/@codemirror/lang-javascript@6.2.1:
|
||||||
resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==}
|
resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
|
'@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.0)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.1.0)
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/lint': 6.4.2
|
'@codemirror/lint': 6.4.2
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
@@ -4394,14 +4421,14 @@ packages:
|
|||||||
/@codemirror/lang-json@6.0.1:
|
/@codemirror/lang-json@6.0.1:
|
||||||
resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
|
resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@lezer/json': 1.0.1
|
'@lezer/json': 1.0.1
|
||||||
|
|
||||||
/@codemirror/lang-xml@6.0.2(@codemirror/view@6.22.0):
|
/@codemirror/lang-xml@6.0.2(@codemirror/view@6.22.0):
|
||||||
resolution: {integrity: sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==}
|
resolution: {integrity: sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.2)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.0.3)
|
'@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.0)(@codemirror/state@6.3.1)(@codemirror/view@6.22.0)(@lezer/common@1.0.3)
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@lezer/common': 1.0.3
|
'@lezer/common': 1.0.3
|
||||||
'@lezer/xml': 1.0.2
|
'@lezer/xml': 1.0.2
|
||||||
@@ -4409,8 +4436,8 @@ packages:
|
|||||||
- '@codemirror/view'
|
- '@codemirror/view'
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@codemirror/language@6.9.2:
|
/@codemirror/language@6.9.0:
|
||||||
resolution: {integrity: sha512-QGTQXSpAKDIzaSE96zNK1UfIUhPgkT1CLjh1N5qVzZuxgsEOhz5RqaN8QCIdyOQklGLx3MgHd9YrE3X3+Pl1ow==}
|
resolution: {integrity: sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
@@ -4422,7 +4449,7 @@ packages:
|
|||||||
/@codemirror/legacy-modes@6.3.3:
|
/@codemirror/legacy-modes@6.3.3:
|
||||||
resolution: {integrity: sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==}
|
resolution: {integrity: sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@codemirror/lint@6.4.2:
|
/@codemirror/lint@6.4.2:
|
||||||
@@ -4446,7 +4473,7 @@ packages:
|
|||||||
/@codemirror/theme-one-dark@6.1.0:
|
/@codemirror/theme-one-dark@6.1.0:
|
||||||
resolution: {integrity: sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==}
|
resolution: {integrity: sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/view': 6.22.0
|
'@codemirror/view': 6.22.0
|
||||||
'@lezer/highlight': 1.1.4
|
'@lezer/highlight': 1.1.4
|
||||||
@@ -5504,9 +5531,9 @@ packages:
|
|||||||
'@parcel/watcher':
|
'@parcel/watcher':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/generator': 7.22.10
|
'@babel/generator': 7.23.0
|
||||||
'@babel/template': 7.22.5
|
'@babel/template': 7.22.15
|
||||||
'@babel/types': 7.22.10
|
'@babel/types': 7.23.0
|
||||||
'@graphql-codegen/core': 4.0.0(graphql@16.8.0)
|
'@graphql-codegen/core': 4.0.0(graphql@16.8.0)
|
||||||
'@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.0)
|
'@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.0)
|
||||||
'@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.0)
|
'@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.0)
|
||||||
@@ -5518,7 +5545,7 @@ packages:
|
|||||||
'@graphql-tools/load': 8.0.0(graphql@16.8.0)
|
'@graphql-tools/load': 8.0.0(graphql@16.8.0)
|
||||||
'@graphql-tools/prisma-loader': 8.0.1(@types/node@17.0.27)(graphql@16.8.0)
|
'@graphql-tools/prisma-loader': 8.0.1(@types/node@17.0.27)(graphql@16.8.0)
|
||||||
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.0)
|
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.0)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.0)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.0)
|
||||||
'@whatwg-node/fetch': 0.8.8
|
'@whatwg-node/fetch': 0.8.8
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
cosmiconfig: 8.2.0
|
cosmiconfig: 8.2.0
|
||||||
@@ -5559,9 +5586,9 @@ packages:
|
|||||||
'@parcel/watcher':
|
'@parcel/watcher':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/generator': 7.22.10
|
'@babel/generator': 7.23.0
|
||||||
'@babel/template': 7.22.5
|
'@babel/template': 7.22.15
|
||||||
'@babel/types': 7.22.10
|
'@babel/types': 7.23.0
|
||||||
'@graphql-codegen/core': 4.0.0(graphql@16.8.1)
|
'@graphql-codegen/core': 4.0.0(graphql@16.8.1)
|
||||||
'@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
|
'@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
|
||||||
'@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1)
|
'@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1)
|
||||||
@@ -5573,7 +5600,7 @@ packages:
|
|||||||
'@graphql-tools/load': 8.0.0(graphql@16.8.1)
|
'@graphql-tools/load': 8.0.0(graphql@16.8.1)
|
||||||
'@graphql-tools/prisma-loader': 8.0.1(@types/node@17.0.27)(graphql@16.8.1)
|
'@graphql-tools/prisma-loader': 8.0.1(@types/node@17.0.27)(graphql@16.8.1)
|
||||||
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.1)
|
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.1)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
'@whatwg-node/fetch': 0.8.8
|
'@whatwg-node/fetch': 0.8.8
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
cosmiconfig: 8.2.0
|
cosmiconfig: 8.2.0
|
||||||
@@ -5604,6 +5631,61 @@ packages:
|
|||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@graphql-codegen/cli@5.0.0(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@parcel/watcher': ^2.1.0
|
||||||
|
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@parcel/watcher':
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@babel/generator': 7.23.0
|
||||||
|
'@babel/template': 7.22.15
|
||||||
|
'@babel/types': 7.23.0
|
||||||
|
'@graphql-codegen/core': 4.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1)
|
||||||
|
'@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/code-file-loader': 8.0.2(graphql@16.8.1)
|
||||||
|
'@graphql-tools/git-loader': 8.0.2(graphql@16.8.1)
|
||||||
|
'@graphql-tools/github-loader': 8.0.0(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/load': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/prisma-loader': 8.0.1(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/url-loader': 8.0.0(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
|
'@whatwg-node/fetch': 0.8.8
|
||||||
|
chalk: 4.1.2
|
||||||
|
cosmiconfig: 8.2.0
|
||||||
|
debounce: 1.2.1
|
||||||
|
detect-indent: 6.1.0
|
||||||
|
graphql: 16.8.1
|
||||||
|
graphql-config: 5.0.2(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
inquirer: 8.2.6
|
||||||
|
is-glob: 4.0.3
|
||||||
|
jiti: 1.19.3
|
||||||
|
json-to-pretty-yaml: 1.2.2
|
||||||
|
listr2: 4.0.5
|
||||||
|
log-symbols: 4.1.0
|
||||||
|
micromatch: 4.0.5
|
||||||
|
shell-quote: 1.8.1
|
||||||
|
string-env-interpolation: 1.0.1
|
||||||
|
ts-log: 2.2.5
|
||||||
|
tslib: 2.6.2
|
||||||
|
yaml: 2.3.1
|
||||||
|
yargs: 17.7.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- bufferutil
|
||||||
|
- cosmiconfig-toml-loader
|
||||||
|
- encoding
|
||||||
|
- enquirer
|
||||||
|
- supports-color
|
||||||
|
- utf-8-validate
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@graphql-codegen/client-preset@2.1.0(graphql@16.6.0):
|
/@graphql-codegen/client-preset@2.1.0(graphql@16.6.0):
|
||||||
resolution: {integrity: sha512-mt5CyPwZmOUP+ifC56xMjeEyfywu0P6HSWbhWPn1Jbv7n3TMILXMDfgOAufnOmrU1Ian8wu72I9A5IMRGqmW1w==}
|
resolution: {integrity: sha512-mt5CyPwZmOUP+ifC56xMjeEyfywu0P6HSWbhWPn1Jbv7n3TMILXMDfgOAufnOmrU1Ian8wu72I9A5IMRGqmW1w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -6670,6 +6752,24 @@ packages:
|
|||||||
- '@types/node'
|
- '@types/node'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@graphql-tools/executor-http@1.0.2(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-JKTB4E3kdQM2/1NEcyrVPyQ8057ZVthCV5dFJiKktqY9IdmF00M8gupFcW3jlbM/Udn78ickeUBsUzA3EouqpA==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
|
dependencies:
|
||||||
|
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
||||||
|
'@repeaterjs/repeater': 3.0.4
|
||||||
|
'@whatwg-node/fetch': 0.9.9
|
||||||
|
extract-files: 11.0.0
|
||||||
|
graphql: 16.8.1
|
||||||
|
meros: 1.3.0(@types/node@18.18.8)
|
||||||
|
tslib: 2.6.2
|
||||||
|
value-or-promise: 1.0.12
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@graphql-tools/executor-legacy-ws@0.0.9(graphql@16.6.0):
|
/@graphql-tools/executor-legacy-ws@0.0.9(graphql@16.6.0):
|
||||||
resolution: {integrity: sha512-L7oDv7R5yoXzMH+KLKDB2WHVijfVW4dB2H+Ae1RdW3MFvwbYjhnIB6QzHqKEqksjp/FndtxZkbuTIuAOsYGTYw==}
|
resolution: {integrity: sha512-L7oDv7R5yoXzMH+KLKDB2WHVijfVW4dB2H+Ae1RdW3MFvwbYjhnIB6QzHqKEqksjp/FndtxZkbuTIuAOsYGTYw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -6870,6 +6970,26 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@graphql-tools/github-loader@8.0.0(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
|
dependencies:
|
||||||
|
'@ardatan/sync-fetch': 0.0.1
|
||||||
|
'@graphql-tools/executor-http': 1.0.2(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1)
|
||||||
|
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
||||||
|
'@whatwg-node/fetch': 0.9.9
|
||||||
|
graphql: 16.8.1
|
||||||
|
tslib: 2.6.2
|
||||||
|
value-or-promise: 1.0.12
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- encoding
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@graphql-tools/graphql-file-loader@7.4.0(graphql@16.8.0):
|
/@graphql-tools/graphql-file-loader@7.4.0(graphql@16.8.0):
|
||||||
resolution: {integrity: sha512-r1lslE5GlWO/nbDX82enHjvva7qQiZEIPm+LC9JSgKaYuVoYHuIuIAVYkpBHeaRK1Kbh/86pEhL7PuBZ/cIWSA==}
|
resolution: {integrity: sha512-r1lslE5GlWO/nbDX82enHjvva7qQiZEIPm+LC9JSgKaYuVoYHuIuIAVYkpBHeaRK1Kbh/86pEhL7PuBZ/cIWSA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -7270,7 +7390,7 @@ packages:
|
|||||||
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.0)
|
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.0)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.0)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.0)
|
||||||
'@types/js-yaml': 4.0.5
|
'@types/js-yaml': 4.0.5
|
||||||
'@types/json-stable-stringify': 1.0.34
|
'@types/json-stable-stringify': 1.0.34
|
||||||
'@whatwg-node/fetch': 0.9.9
|
'@whatwg-node/fetch': 0.9.9
|
||||||
@@ -7303,7 +7423,40 @@ packages:
|
|||||||
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.1)
|
'@graphql-tools/url-loader': 8.0.0(@types/node@17.0.27)(graphql@16.8.1)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
|
'@types/js-yaml': 4.0.5
|
||||||
|
'@types/json-stable-stringify': 1.0.34
|
||||||
|
'@whatwg-node/fetch': 0.9.9
|
||||||
|
chalk: 4.1.2
|
||||||
|
debug: 4.3.4(supports-color@9.2.2)
|
||||||
|
dotenv: 16.3.1
|
||||||
|
graphql: 16.8.1
|
||||||
|
graphql-request: 6.1.0(graphql@16.8.1)
|
||||||
|
http-proxy-agent: 7.0.0
|
||||||
|
https-proxy-agent: 7.0.1
|
||||||
|
jose: 4.14.4
|
||||||
|
js-yaml: 4.1.0
|
||||||
|
json-stable-stringify: 1.0.2
|
||||||
|
lodash: 4.17.21
|
||||||
|
scuid: 1.1.0
|
||||||
|
tslib: 2.6.2
|
||||||
|
yaml-ast-parser: 0.0.43
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- bufferutil
|
||||||
|
- encoding
|
||||||
|
- supports-color
|
||||||
|
- utf-8-validate
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@graphql-tools/prisma-loader@8.0.1(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-bl6e5sAYe35Z6fEbgKXNrqRhXlCJYeWKBkarohgYA338/SD9eEhXtg3Cedj7fut3WyRLoQFpHzfiwxKs7XrgXg==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
|
dependencies:
|
||||||
|
'@graphql-tools/url-loader': 8.0.0(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
'@types/js-yaml': 4.0.5
|
'@types/js-yaml': 4.0.5
|
||||||
'@types/json-stable-stringify': 1.0.34
|
'@types/json-stable-stringify': 1.0.34
|
||||||
'@whatwg-node/fetch': 0.9.9
|
'@whatwg-node/fetch': 0.9.9
|
||||||
@@ -7519,10 +7672,10 @@ packages:
|
|||||||
'@types/ws': 8.5.5
|
'@types/ws': 8.5.5
|
||||||
'@whatwg-node/fetch': 0.8.8
|
'@whatwg-node/fetch': 0.8.8
|
||||||
graphql: 16.6.0
|
graphql: 16.6.0
|
||||||
isomorphic-ws: 5.0.0(ws@8.13.0)
|
isomorphic-ws: 5.0.0(ws@8.14.2)
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
value-or-promise: 1.0.12
|
value-or-promise: 1.0.12
|
||||||
ws: 8.13.0
|
ws: 8.14.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- bufferutil
|
- bufferutil
|
||||||
@@ -7541,7 +7694,7 @@ packages:
|
|||||||
'@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.0)
|
'@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.0)
|
||||||
'@graphql-tools/executor-http': 1.0.2(@types/node@17.0.27)(graphql@16.8.0)
|
'@graphql-tools/executor-http': 1.0.2(@types/node@17.0.27)(graphql@16.8.0)
|
||||||
'@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.0)
|
'@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.0)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.0)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.0)
|
||||||
'@graphql-tools/wrap': 10.0.0(graphql@16.8.0)
|
'@graphql-tools/wrap': 10.0.0(graphql@16.8.0)
|
||||||
'@types/ws': 8.5.5
|
'@types/ws': 8.5.5
|
||||||
'@whatwg-node/fetch': 0.9.9
|
'@whatwg-node/fetch': 0.9.9
|
||||||
@@ -7568,7 +7721,34 @@ packages:
|
|||||||
'@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1)
|
'@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1)
|
||||||
'@graphql-tools/executor-http': 1.0.2(@types/node@17.0.27)(graphql@16.8.1)
|
'@graphql-tools/executor-http': 1.0.2(@types/node@17.0.27)(graphql@16.8.1)
|
||||||
'@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.1)
|
'@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.1)
|
||||||
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
|
'@graphql-tools/wrap': 10.0.0(graphql@16.8.1)
|
||||||
|
'@types/ws': 8.5.5
|
||||||
|
'@whatwg-node/fetch': 0.9.9
|
||||||
|
graphql: 16.8.1
|
||||||
|
isomorphic-ws: 5.0.0(ws@8.14.2)
|
||||||
|
tslib: 2.6.2
|
||||||
|
value-or-promise: 1.0.12
|
||||||
|
ws: 8.14.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- bufferutil
|
||||||
|
- encoding
|
||||||
|
- utf-8-validate
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@graphql-tools/url-loader@8.0.0(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
|
dependencies:
|
||||||
|
'@ardatan/sync-fetch': 0.0.1
|
||||||
|
'@graphql-tools/delegate': 10.0.2(graphql@16.8.1)
|
||||||
|
'@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/executor-http': 1.0.2(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.1)
|
||||||
|
'@graphql-tools/utils': 10.0.6(graphql@16.8.1)
|
||||||
'@graphql-tools/wrap': 10.0.0(graphql@16.8.1)
|
'@graphql-tools/wrap': 10.0.0(graphql@16.8.1)
|
||||||
'@types/ws': 8.5.5
|
'@types/ws': 8.5.5
|
||||||
'@whatwg-node/fetch': 0.9.9
|
'@whatwg-node/fetch': 0.9.9
|
||||||
@@ -7607,6 +7787,18 @@ packages:
|
|||||||
graphql: 16.8.1
|
graphql: 16.8.1
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
|
||||||
|
/@graphql-tools/utils@10.0.6(graphql@16.8.0):
|
||||||
|
resolution: {integrity: sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ==}
|
||||||
|
engines: {node: '>=16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||||
|
dependencies:
|
||||||
|
'@graphql-typed-document-node/core': 3.2.0(graphql@16.8.0)
|
||||||
|
dset: 3.1.2
|
||||||
|
graphql: 16.8.0
|
||||||
|
tslib: 2.6.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@graphql-tools/utils@10.0.6(graphql@16.8.1):
|
/@graphql-tools/utils@10.0.6(graphql@16.8.1):
|
||||||
resolution: {integrity: sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ==}
|
resolution: {integrity: sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=16.0.0'}
|
||||||
@@ -7617,7 +7809,6 @@ packages:
|
|||||||
dset: 3.1.2
|
dset: 3.1.2
|
||||||
graphql: 16.8.1
|
graphql: 16.8.1
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@graphql-tools/utils@8.13.1(graphql@16.6.0):
|
/@graphql-tools/utils@8.13.1(graphql@16.6.0):
|
||||||
resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==}
|
resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==}
|
||||||
@@ -7820,7 +8011,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@codemirror/commands': 6.3.0
|
'@codemirror/commands': 6.3.0
|
||||||
'@codemirror/lang-json': 6.0.1
|
'@codemirror/lang-json': 6.0.1
|
||||||
'@codemirror/language': 6.9.2
|
'@codemirror/language': 6.9.0
|
||||||
'@codemirror/lint': 6.4.2
|
'@codemirror/lint': 6.4.2
|
||||||
'@codemirror/state': 6.3.1
|
'@codemirror/state': 6.3.1
|
||||||
'@codemirror/theme-one-dark': 6.1.0
|
'@codemirror/theme-one-dark': 6.1.0
|
||||||
@@ -16941,6 +17132,35 @@ packages:
|
|||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/graphql-config@5.0.2(@types/node@18.18.8)(graphql@16.8.1):
|
||||||
|
resolution: {integrity: sha512-7TPxOrlbiG0JplSZYCyxn2XQtqVhXomEjXUmWJVSS5ET1nPhOJSsIb/WTwqWhcYX6G0RlHXSj9PLtGTKmxLNGg==}
|
||||||
|
engines: {node: '>= 16.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
cosmiconfig-toml-loader: ^1.0.0
|
||||||
|
graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
cosmiconfig-toml-loader:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/load': 8.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/merge': 9.0.0(graphql@16.8.1)
|
||||||
|
'@graphql-tools/url-loader': 8.0.0(@types/node@18.18.8)(graphql@16.8.1)
|
||||||
|
'@graphql-tools/utils': 10.0.5(graphql@16.8.1)
|
||||||
|
cosmiconfig: 8.2.0
|
||||||
|
graphql: 16.8.1
|
||||||
|
jiti: 1.19.1
|
||||||
|
minimatch: 4.2.3
|
||||||
|
string-env-interpolation: 1.0.1
|
||||||
|
tslib: 2.6.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- bufferutil
|
||||||
|
- encoding
|
||||||
|
- utf-8-validate
|
||||||
|
dev: true
|
||||||
|
|
||||||
/graphql-language-service-interface@2.10.2(@types/node@17.0.27)(graphql@16.8.0)(typescript@5.1.6):
|
/graphql-language-service-interface@2.10.2(@types/node@17.0.27)(graphql@16.8.0)(typescript@5.1.6):
|
||||||
resolution: {integrity: sha512-RKIEBPhRMWdXY3fxRs99XysTDnEgAvNbu8ov/5iOlnkZsWQNzitjtd0O0l1CutQOQt3iXoHde7w8uhCnKL4tcg==}
|
resolution: {integrity: sha512-RKIEBPhRMWdXY3fxRs99XysTDnEgAvNbu8ov/5iOlnkZsWQNzitjtd0O0l1CutQOQt3iXoHde7w8uhCnKL4tcg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -21013,7 +21233,7 @@ packages:
|
|||||||
minimatch: 3.1.2
|
minimatch: 3.1.2
|
||||||
pidtree: 0.3.1
|
pidtree: 0.3.1
|
||||||
read-pkg: 3.0.0
|
read-pkg: 3.0.0
|
||||||
shell-quote: 1.7.3
|
shell-quote: 1.8.1
|
||||||
string.prototype.padend: 3.1.3
|
string.prototype.padend: 3.1.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -23524,7 +23744,7 @@ packages:
|
|||||||
graphql: 16.8.1
|
graphql: 16.8.1
|
||||||
iterall: 1.3.0
|
iterall: 1.3.0
|
||||||
symbol-observable: 1.2.0
|
symbol-observable: 1.2.0
|
||||||
ws: 7.4.6
|
ws: 7.5.9
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
- utf-8-validate
|
- utf-8-validate
|
||||||
@@ -27540,7 +27760,6 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
utf-8-validate:
|
utf-8-validate:
|
||||||
optional: true
|
optional: true
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ws@8.12.1:
|
/ws@8.12.1:
|
||||||
resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==}
|
resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==}
|
||||||
@@ -27849,6 +28068,7 @@ packages:
|
|||||||
|
|
||||||
/zod@3.22.2:
|
/zod@3.22.2:
|
||||||
resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==}
|
resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/zod@3.22.4:
|
/zod@3.22.4:
|
||||||
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
|
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
|
||||||
|
|||||||