diff --git a/theseus_gui/.gitignore b/theseus_gui/.gitignore index d6cbf02e..5bc838d0 100644 --- a/theseus_gui/.gitignore +++ b/theseus_gui/.gitignore @@ -10,6 +10,7 @@ pnpm-debug.log* lerna-debug.log* node_modules +dist dist-ssr *.local diff --git a/theseus_gui/dist/.gitignore b/theseus_gui/dist/.gitignore deleted file mode 100644 index 0db63c67..00000000 --- a/theseus_gui/dist/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# except the gitignore -!.gitignore \ No newline at end of file diff --git a/theseus_gui/package.json b/theseus_gui/package.json index 22e509af..2ebf2230 100644 --- a/theseus_gui/package.json +++ b/theseus_gui/package.json @@ -14,11 +14,12 @@ }, "dependencies": { "@tauri-apps/api": "^1.2.0", - "ofetch": "^1.0.1", - "omorphia": "^0.4.2", + "omorphia": "^0.4.4", "pinia": "^2.0.33", "vite-svg-loader": "^4.0.0", "vue": "^3.2.45", + "dayjs": "^1.11.7", + "ofetch": "^1.0.1", "vue-multiselect": "^3.0.0-alpha.2", "vue-router": "4" }, @@ -34,4 +35,4 @@ "vite": "^4.0.0", "vite-plugin-eslint": "^1.8.1" } -} \ No newline at end of file +} diff --git a/theseus_gui/src/assets/external/bmac.svg b/theseus_gui/src/assets/external/bmac.svg new file mode 100644 index 00000000..be7e015e --- /dev/null +++ b/theseus_gui/src/assets/external/bmac.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/theseus_gui/src/assets/external/discord.svg b/theseus_gui/src/assets/external/discord.svg new file mode 100644 index 00000000..a655bf5c --- /dev/null +++ b/theseus_gui/src/assets/external/discord.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/theseus_gui/src/assets/external/index.js b/theseus_gui/src/assets/external/index.js new file mode 100644 index 00000000..b7aff27d --- /dev/null +++ b/theseus_gui/src/assets/external/index.js @@ -0,0 +1,6 @@ +export { default as BuyMeACoffeeIcon } from './bmac.svg' +export { default as DiscordIcon } from './discord.svg' +export { default as KoFiIcon } from './kofi.svg' +export { default as PatreonIcon } from './patreon.svg' +export { default as PaypalIcon } from './paypal.svg' +export { default as OpenCollectiveIcon } from './opencollective.svg' diff --git a/theseus_gui/src/assets/external/kofi.svg b/theseus_gui/src/assets/external/kofi.svg new file mode 100644 index 00000000..932483aa --- /dev/null +++ b/theseus_gui/src/assets/external/kofi.svg @@ -0,0 +1 @@ +Ko-fi \ No newline at end of file diff --git a/theseus_gui/src/assets/external/opencollective.svg b/theseus_gui/src/assets/external/opencollective.svg new file mode 100644 index 00000000..70e5816e --- /dev/null +++ b/theseus_gui/src/assets/external/opencollective.svg @@ -0,0 +1 @@ +Open Collective \ No newline at end of file diff --git a/theseus_gui/src/assets/external/patreon.svg b/theseus_gui/src/assets/external/patreon.svg new file mode 100644 index 00000000..d2be6e1c --- /dev/null +++ b/theseus_gui/src/assets/external/patreon.svg @@ -0,0 +1 @@ +Patreon \ No newline at end of file diff --git a/theseus_gui/src/assets/external/paypal.svg b/theseus_gui/src/assets/external/paypal.svg new file mode 100644 index 00000000..a5da5a46 --- /dev/null +++ b/theseus_gui/src/assets/external/paypal.svg @@ -0,0 +1 @@ +PayPal \ No newline at end of file diff --git a/theseus_gui/src/assets/icons/x-circle.svg b/theseus_gui/src/assets/icons/x-circle.svg new file mode 100644 index 00000000..275a3f98 --- /dev/null +++ b/theseus_gui/src/assets/icons/x-circle.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/theseus_gui/src/assets/stylesheets/global.css b/theseus_gui/src/assets/stylesheets/global.css deleted file mode 100644 index 00e5522d..00000000 --- a/theseus_gui/src/assets/stylesheets/global.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url('https://rsms.me/inter/inter.css'); - -:root { - font-family: var(--font-standard); -} - -* { - box-sizing: border-box; - margin: 0; - padding: 0; -} diff --git a/theseus_gui/src/assets/stylesheets/global.scss b/theseus_gui/src/assets/stylesheets/global.scss new file mode 100644 index 00000000..ea9b6cc8 --- /dev/null +++ b/theseus_gui/src/assets/stylesheets/global.scss @@ -0,0 +1,153 @@ +@import url('https://rsms.me/inter/inter.css'); + +:root { + font-family: var(--font-standard); +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +.card-divider { + background-color: var(--color-button-bg); + border: none; + color: var(--color-button-bg); + height: 1px; + margin: var(--gap-sm) 0; +} + +.no-wrap { + white-space: nowrap; +} + +a { + color: var(--color-link); + text-decoration: none; + + &:hover { + text-decoration: none; + } +} + +.multiselect { + color: var(--color-base) !important; + outline: 2px solid transparent; + + .multiselect__input:focus-visible { + outline: none !important; + box-shadow: none !important; + padding: 0 !important; + min-height: 0 !important; + font-weight: normal !important; + margin-left: 0.5rem; + margin-bottom: 10px; + } + + input { + background: transparent; + box-shadow: none; + border: none !important; + + &:focus { + box-shadow: none; + } + } + + input::placeholder { + color: var(--color-base); + } + + .multiselect__tags { + border-radius: var(--radius-md); + background: var(--color-button-bg); + box-shadow: var(--shadow-inset-sm); + border: none; + cursor: pointer; + padding-left: 0.5rem; + font-size: 1rem; + + transition: background-color 0.1s ease-in-out; + + &:active { + filter: brightness(1.25); + + .multiselect__spinner { + filter: brightness(1.25); + } + } + + .multiselect__single { + background: transparent; + } + + .multiselect__tag { + border-radius: var(--radius-md); + color: var(--color-base); + background: transparent; + border: 2px solid var(--color-brand); + } + + .multiselect__tag-icon { + background: transparent; + + &:after { + color: var(--color-contrast); + } + } + + .multiselect__placeholder { + color: var(--color-base); + margin-left: 0.5rem; + opacity: 0.6; + font-size: 1rem; + line-height: 1.25rem; + } + } + + .multiselect__content-wrapper { + background: var(--color-button-bg); + border: none; + overflow-x: hidden; + box-shadow: var(--shadow-inset-sm), var(--shadow-floating); + width: 100%; + + .multiselect__element { + .multiselect__option--highlight { + background: var(--color-button-bg); + filter: brightness(1.25); + color: var(--color-contrast); + } + + .multiselect__option--selected { + background: var(--color-brand); + font-weight: bold; + color: var(--color-accent-contrast); + } + } + } + + .multiselect__spinner { + background: var(--color-button-bg); + + &:active { + filter: brightness(1.25); + } + } + + &.multiselect--disabled { + background: none; + + .multiselect__current, + .multiselect__select { + background: none; + } + } +} + +.multiselect--above .multiselect__content-wrapper { + border-top: none !important; + border-top-left-radius: var(--radius-md) !important; + border-top-right-radius: var(--radius-md) !important; +} diff --git a/theseus_gui/src/helpers/utils.js b/theseus_gui/src/helpers/utils.js new file mode 100644 index 00000000..83238da9 --- /dev/null +++ b/theseus_gui/src/helpers/utils.js @@ -0,0 +1,12 @@ +export const releaseColor = (releaseType) => { + switch (releaseType) { + case 'release': + return 'green' + case 'beta': + return 'orange' + case 'alpha': + return 'red' + default: + return '' + } +} diff --git a/theseus_gui/src/main.js b/theseus_gui/src/main.js index f4fba6bc..20249253 100644 --- a/theseus_gui/src/main.js +++ b/theseus_gui/src/main.js @@ -3,7 +3,7 @@ import router from '@/routes' import App from '@/App.vue' import { createPinia } from 'pinia' import '../node_modules/omorphia/dist/style.css' -import '@/assets/stylesheets/global.css' +import '@/assets/stylesheets/global.scss' const pinia = createPinia() diff --git a/theseus_gui/src/pages/Browse.vue b/theseus_gui/src/pages/Browse.vue index 1fcd8a1b..eba0acdb 100644 --- a/theseus_gui/src/pages/Browse.vue +++ b/theseus_gui/src/pages/Browse.vue @@ -269,7 +269,7 @@ const handleReset = async () => {
{ ), ]" :project-type-display="result?.project_type" - project-type-url="instance" + project-type-url="project" :server-side="result?.server_side" :client-side="result?.client_side" :show-updated-date="false" :color="result?.color" - > - + />
@@ -412,125 +411,4 @@ const handleReset = async () => { } } } - -.multiselect { - color: var(--color-base) !important; - outline: 2px solid transparent; - - .multiselect__input:focus-visible { - outline: none !important; - box-shadow: none !important; - padding: 0 !important; - min-height: 0 !important; - font-weight: normal !important; - margin-left: 0.5rem; - margin-bottom: 10px; - } - - input { - background: transparent; - box-shadow: none; - border: none !important; - - &:focus { - box-shadow: none; - } - } - - input::placeholder { - color: var(--color-base); - } - - .multiselect__tags { - border-radius: var(--radius-md); - background: var(--color-button-bg); - box-shadow: var(--shadow-inset-sm); - border: none; - cursor: pointer; - padding-left: 0.5rem; - font-size: 1rem; - - transition: background-color 0.1s ease-in-out; - - &:active { - filter: brightness(1.25); - - .multiselect__spinner { - filter: brightness(1.25); - } - } - - .multiselect__single { - background: transparent; - } - - .multiselect__tag { - border-radius: var(--radius-md); - color: var(--color-base); - background: transparent; - border: 2px solid var(--color-brand); - } - - .multiselect__tag-icon { - background: transparent; - - &:after { - color: var(--color-contrast); - } - } - - .multiselect__placeholder { - color: var(--color-base); - margin-left: 0.5rem; - opacity: 0.6; - font-size: 1rem; - line-height: 1.25rem; - } - } - - .multiselect__content-wrapper { - background: var(--color-button-bg); - border: none; - overflow-x: hidden; - box-shadow: var(--shadow-inset-sm), var(--shadow-floating); - width: 100%; - - .multiselect__element { - .multiselect__option--highlight { - background: var(--color-button-bg); - filter: brightness(1.25); - color: var(--color-contrast); - } - - .multiselect__option--selected { - background: var(--color-brand); - font-weight: bold; - color: var(--color-accent-contrast); - } - } - } - - .multiselect__spinner { - background: var(--color-button-bg); - - &:active { - filter: brightness(1.25); - } - } - - &.multiselect--disabled { - background: none; - - .multiselect__current, - .multiselect__select { - background: none; - } - } -} - -.multiselect--above .multiselect__content-wrapper { - border-top: none !important; - border-top-left-radius: var(--radius-md) !important; - border-top-right-radius: var(--radius-md) !important; -} diff --git a/theseus_gui/src/pages/instance/Mods.vue b/theseus_gui/src/pages/instance/Mods.vue index c184f421..70794e9f 100644 --- a/theseus_gui/src/pages/instance/Mods.vue +++ b/theseus_gui/src/pages/instance/Mods.vue @@ -43,10 +43,10 @@
- + {{ mod.name }} - +
{{ mod.version }}
{{ mod.author }}
@@ -71,6 +71,7 @@ export default { mods: [ { name: 'Fabric API', + slug: 'fabric-api', icon: 'https://cdn.modrinth.com/data/P7dR8mSH/icon.png', version: '0.76.0+1.19.4', author: 'modmuss50', @@ -80,6 +81,7 @@ export default { }, { name: 'Spirit', + slug: 'spirit', icon: 'https://cdn.modrinth.com/data/b1LdOZlE/465598dc5d89f67fb8f8de6def21240fa35e3a54.png', version: '2.2.4', author: 'CodexAdrian', @@ -88,6 +90,7 @@ export default { }, { name: 'Botarium', + slug: 'botarium', icon: 'https://cdn.modrinth.com/data/2u6LRnMa/98b286b0d541ad4f9409e0af3df82ad09403f179.gif', version: '2.0.5', author: 'CodexAdrian', @@ -97,6 +100,7 @@ export default { }, { name: 'Tempad', + slug: 'tempad', icon: 'https://cdn.modrinth.com/data/gKNwt7xu/icon.gif', version: '2.2.4', author: 'CodexAdrian', @@ -105,6 +109,7 @@ export default { }, { name: 'Sodium', + slug: 'sodium', icon: 'https://cdn.modrinth.com/data/AANobbMI/icon.png', version: '0.4.10', author: 'jellysquid3', diff --git a/theseus_gui/src/pages/project/Changelog.vue b/theseus_gui/src/pages/project/Changelog.vue new file mode 100644 index 00000000..f9aae657 --- /dev/null +++ b/theseus_gui/src/pages/project/Changelog.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/theseus_gui/src/pages/project/Description.vue b/theseus_gui/src/pages/project/Description.vue new file mode 100644 index 00000000..d64022c9 --- /dev/null +++ b/theseus_gui/src/pages/project/Description.vue @@ -0,0 +1,37 @@ + + + + + + + diff --git a/theseus_gui/src/pages/project/Gallery.vue b/theseus_gui/src/pages/project/Gallery.vue new file mode 100644 index 00000000..2ed4f443 --- /dev/null +++ b/theseus_gui/src/pages/project/Gallery.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/theseus_gui/src/pages/project/Index.vue b/theseus_gui/src/pages/project/Index.vue new file mode 100644 index 00000000..b6811203 --- /dev/null +++ b/theseus_gui/src/pages/project/Index.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/theseus_gui/src/pages/project/Version.vue b/theseus_gui/src/pages/project/Version.vue new file mode 100644 index 00000000..925ccb21 --- /dev/null +++ b/theseus_gui/src/pages/project/Version.vue @@ -0,0 +1,385 @@ + + + + + diff --git a/theseus_gui/src/pages/project/Versions.vue b/theseus_gui/src/pages/project/Versions.vue new file mode 100644 index 00000000..19c5f173 --- /dev/null +++ b/theseus_gui/src/pages/project/Versions.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/theseus_gui/src/pages/project/index.js b/theseus_gui/src/pages/project/index.js new file mode 100644 index 00000000..56a7b3b9 --- /dev/null +++ b/theseus_gui/src/pages/project/index.js @@ -0,0 +1,7 @@ +import Index from './Index.vue' +import Description from './Description.vue' +import Versions from './Versions.vue' +import Gallery from './Gallery.vue' +import Version from './Version.vue' + +export { Index, Description, Versions, Gallery, Version } diff --git a/theseus_gui/src/routes.js b/theseus_gui/src/routes.js index d2de889d..71c1d2d6 100644 --- a/theseus_gui/src/routes.js +++ b/theseus_gui/src/routes.js @@ -1,5 +1,6 @@ import { createRouter, createWebHistory } from 'vue-router' import * as Pages from '@/pages' +import * as Project from '@/pages/project' import * as Instance from '@/pages/instance' /** @@ -38,6 +39,35 @@ export default new createRouter({ name: 'Settings', component: Pages.Settings, }, + { + path: '/project/:id', + name: 'Project', + component: Project.Index, + props: true, + children: [ + { + path: '', + name: 'Description', + component: Project.Description, + }, + { + path: 'versions', + name: 'Versions', + component: Project.Versions, + }, + { + path: 'version/:version', + name: 'Version', + component: Project.Version, + props: true, + }, + { + path: 'gallery', + name: 'Gallery', + component: Project.Gallery, + }, + ], + }, { path: '/instance/:id', name: 'Instance', diff --git a/theseus_gui/yarn.lock b/theseus_gui/yarn.lock index c288e0ce..28209cbc 100644 --- a/theseus_gui/yarn.lock +++ b/theseus_gui/yarn.lock @@ -449,6 +449,20 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -519,6 +533,13 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -614,6 +635,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + destr@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f" @@ -879,6 +905,20 @@ floating-vue@^2.0.0-beta.20: "@floating-ui/dom" "^0.1.10" vue-resize "^2.0.0-alpha.1" +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1120,6 +1160,18 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -1168,10 +1220,10 @@ ofetch@^1.0.1: node-fetch-native "^1.0.2" ufo "^1.1.0" -omorphia@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/omorphia/-/omorphia-0.4.3.tgz#a247e2e15b77b4b5f55fe766f1c64419bb6fbc72" - integrity sha512-aGjtYhUrWNgjKM3HiL+MF5DdXfrllfDxql2mzu7JRzpjTB20xnksHKvU71x17FS9P1QXxumzADVF5v2rn9lb6A== +omorphia@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/omorphia/-/omorphia-0.4.4.tgz#788e5953eb1ae81c8a65ce277a5086668acf50a4" + integrity sha512-HnIZahQVQmH6kHPzeb5iQTzgPhWu8VUwgNnCIUzWhudFqgB32NNUHNQW3seHgM8pmLSeIA3/2fjqkTrzK9EQvw== dependencies: dayjs "^1.11.7" floating-vue "^2.0.0-beta.20" @@ -1287,6 +1339,11 @@ prettier@^2.8.7: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"