From b04ac46a49351cc550ed1fca3ff6468debbc154d Mon Sep 17 00:00:00 2001 From: Bernardo Date: Wed, 31 May 2023 20:18:39 -0300 Subject: [PATCH] Move files back. We will keep Turbo. --- .../basic/apps => apps}/debug/.eslintrc.js | 0 .../basic/apps => apps}/debug/.gitignore | 0 .../basic/apps => apps}/debug/.prettierrc | 0 .../basic/apps => apps}/debug/README.md | 0 .../basic/apps => apps}/debug/next-env.d.ts | 0 .../basic/apps => apps}/debug/next.config.js | 0 .../basic/apps => apps}/debug/package.json | 0 .../basic/apps => apps}/debug/pages/_app.tsx | 0 .../basic/apps => apps}/debug/pages/index.tsx | 2 + .../apps => apps}/debug/postcss.config.js | 0 .../apps => apps}/debug/styles/globals.css | 0 .../apps => apps}/debug/tailwind.config.js | 0 .../basic/apps => apps}/debug/tsconfig.json | 0 .../basic/apps => apps}/plugin/.eslintrc.js | 0 .../basic/apps => apps}/plugin/.gitignore | 0 .../basic/apps => apps}/plugin/README.md | 0 .../basic/apps => apps}/plugin/package.json | 2 +- .../apps => apps}/plugin/plugin-src/code.ts | 0 .../plugin/plugin-src/tsconfig.json | 0 .../apps => apps}/plugin/postcss.config.js | 0 .../apps => apps}/plugin/tailwind.config.js | 0 .../basic/apps => apps}/plugin/tsconfig.json | 0 .../basic/apps => apps}/plugin/ui-src/App.tsx | 0 .../apps => apps}/plugin/ui-src/index.css | 0 .../apps => apps}/plugin/ui-src/index.html | 0 .../apps => apps}/plugin/ui-src/main.tsx | 0 .../basic/apps => apps}/plugin/vite-env.d.ts | 0 .../basic/apps => apps}/plugin/vite.config.ts | 0 manifest.json | 36 +- package.json | 77 +- .../backend/package.json | 0 .../backend/src/altNodes/altConversion.ts | 0 .../backend/src/altNodes/altMixins2.ts | 0 .../src/altNodes/convertGroupToFrame.ts | 0 .../src/altNodes/convertNodesOnRectangle.ts | 0 .../packages => packages}/backend/src/code.ts | 0 {src => packages/backend/src}/common/color.ts | 0 .../backend/src/common/commonPadding.ts | 0 .../backend/src/common/commonPosition.ts | 0 .../backend/src/common/commonRadius.ts | 0 .../src/common/commonTextHeightSpacing.ts | 0 .../backend/src}/common/convertFontWeight.ts | 0 .../backend/src/common/indentString.ts | 0 .../backend/src/common/nodeWidthHeight.ts | 0 .../backend/src/common/numToAutoFixed.ts | 0 .../backend/src/common/parentCoordinates.ts | 0 .../backend/src/common/parseJSX.ts | 0 .../backend/src}/common/retrieveFill.ts | 0 .../backend/src/common/retrieveUI/commonUI.ts | 0 .../src/common/retrieveUI/retrieveColors.ts | 0 .../src/common/retrieveUI/retrieveTexts.ts | 0 .../flutter/builderImpl/flutterAutoLayout.ts | 0 .../src/flutter/builderImpl/flutterBlend.ts | 0 .../src/flutter/builderImpl/flutterBorder.ts | 0 .../src/flutter/builderImpl/flutterColor.ts | 0 .../src/flutter/builderImpl/flutterPadding.ts | 0 .../flutter/builderImpl/flutterPosition.ts | 0 .../src/flutter/builderImpl/flutterShadow.ts | 0 .../src/flutter/builderImpl/flutterSize.ts | 0 .../backend/src/flutter/flutterContainer.ts | 0 .../src/flutter/flutterDefaultBuilder.ts | 0 .../backend/src/flutter/flutterMain.ts | 0 .../backend/src/flutter/flutterTextBuilder.ts | 0 .../src/html/builderImpl/htmlAutoLayout.ts | 0 .../backend/src/html/builderImpl/htmlBlend.ts | 0 .../src/html/builderImpl/htmlBorderRadius.ts | 0 .../backend/src/html/builderImpl/htmlColor.ts | 0 .../src/html/builderImpl/htmlPadding.ts | 0 .../src/html/builderImpl/htmlShadow.ts | 0 .../backend/src/html/builderImpl/htmlSize.ts | 0 .../backend/src/html/htmlDefaultBuilder.ts | 0 .../backend/src/html/htmlMain.ts | 0 .../backend/src/html/htmlTextBuilder.ts | 0 .../backend/src/index.ts | 0 .../src}/nearest-color/nearestColor.ts | 0 .../src/swiftui/builderImpl/swiftuiBlend.ts | 0 .../src/swiftui/builderImpl/swiftuiBorder.ts | 0 .../src/swiftui/builderImpl/swiftuiColor.ts | 0 .../src/swiftui/builderImpl/swiftuiEffects.ts | 0 .../src/swiftui/builderImpl/swiftuiPadding.ts | 0 .../swiftui/builderImpl/swiftuiPosition.ts | 0 .../src/swiftui/builderImpl/swiftuiSize.ts | 0 .../swiftui/builderImpl/swiftuiTextWeight.ts | 0 .../src/swiftui/swiftuiDefaultBuilder.ts | 0 .../backend/src/swiftui/swiftuiMain.ts | 0 .../backend/src/swiftui/swiftuiTextBuilder.ts | 0 .../builderImpl/tailwindAutoLayout.ts | 0 .../src/tailwind/builderImpl/tailwindBlend.ts | 0 .../tailwind/builderImpl/tailwindBorder.ts | 0 .../src/tailwind/builderImpl/tailwindColor.ts | 0 .../tailwind/builderImpl/tailwindPadding.ts | 0 .../tailwind/builderImpl/tailwindShadow.ts | 0 .../src/tailwind/builderImpl/tailwindSize.ts | 0 .../backend/src/tailwind/conversionTables.ts | 0 .../src/tailwind/retrieveUI/retrieveTexts.ts | 0 .../src/tailwind/tailwindDefaultBuilder.ts | 0 .../backend/src/tailwind/tailwindMain.ts | 0 .../src/tailwind/tailwindTextBuilder.ts | 0 .../backend/src/tailwind/vector.ts | 0 .../backend/tsconfig.json | 0 .../eslint-config-custom/index.js | 0 .../eslint-config-custom/package.json | 0 .../plugin-ui/package.json | 0 .../plugin-ui/src/PluginUI.tsx | 2 +- .../plugin-ui/src/description.tsx | 0 .../plugin-ui/src/index.tsx | 0 .../plugin-ui/tailwind.config.js | 0 .../plugin-ui/tsconfig.json | 0 .../tsconfig/backend.json | 0 .../packages => packages}/tsconfig/base.json | 0 .../tsconfig/nextjs.json | 0 .../tsconfig/package.json | 0 .../tsconfig/react-library.json | 0 .../basic/packages => packages}/ui/Button.tsx | 0 .../basic/packages => packages}/ui/index.tsx | 0 .../packages => packages}/ui/package.json | 0 .../packages => packages}/ui/tsconfig.json | 0 pnpm-lock.yaml | 13370 ++++------------ ...pnpm-workspace.yaml => pnpm-workspace.yaml | 0 public/README.md | 9 - src/altNodes/altConversion.ts | 469 - src/altNodes/altMixins.ts | 186 - src/altNodes/convertGroupToFrame.ts | 67 - src/altNodes/convertNodesOnRectangle.ts | 164 - src/altNodes/convertToAutoLayout.ts | 316 - src/code.ts | 109 - src/common/commonPadding.ts | 88 - src/common/commonPosition.ts | 103 - src/common/commonTextHeightSpacing.ts | 35 - src/common/indentString.ts | 10 - src/common/nodeWidthHeight.ts | 367 - src/common/numToAutoFixed.ts | 4 - src/common/parentCoordinates.ts | 15 - src/common/parseJSX.ts | 25 - src/common/retrieveUI/commonUI.ts | 39 - src/common/retrieveUI/retrieveColors.ts | 223 - src/common/retrieveUI/retrieveTexts.ts | 84 - src/flutter/builderImpl/flutterBlend.ts | 55 - src/flutter/builderImpl/flutterBorder.ts | 67 - src/flutter/builderImpl/flutterColor.ts | 82 - src/flutter/builderImpl/flutterPadding.ts | 60 - src/flutter/builderImpl/flutterPosition.ts | 69 - src/flutter/builderImpl/flutterShadow.ts | 58 - src/flutter/builderImpl/flutterSize.ts | 53 - src/flutter/flutterContainer.ts | 101 - src/flutter/flutterDefaultBuilder.ts | 57 - src/flutter/flutterMain.ts | 216 - src/flutter/flutterMaterial.ts | 93 - src/flutter/flutterTextBuilder.ts | 152 - src/html/builderImpl/htmlBlend.ts | 56 - src/html/builderImpl/htmlBorderRadius.ts | 68 - src/html/builderImpl/htmlColor.ts | 66 - src/html/builderImpl/htmlPadding.ts | 50 - src/html/builderImpl/htmlPosition.ts | 19 - src/html/builderImpl/htmlShadow.ts | 30 - src/html/builderImpl/htmlSize.ts | 46 - src/html/builderImpl/htmlTextSize.ts | 17 - src/html/htmlDefaultBuilder.ts | 216 - src/html/htmlMain.ts | 340 - src/html/htmlTextBuilder.ts | 181 - src/main.js | 7 - src/swiftui/builderImpl/swiftuiBlend.ts | 81 - src/swiftui/builderImpl/swiftuiBorder.ts | 126 - src/swiftui/builderImpl/swiftuiColor.ts | 91 - src/swiftui/builderImpl/swiftuiEffects.ts | 68 - src/swiftui/builderImpl/swiftuiPadding.ts | 46 - src/swiftui/builderImpl/swiftuiPosition.ts | 39 - src/swiftui/builderImpl/swiftuiSize.ts | 39 - src/swiftui/builderImpl/swiftuiTextWeight.ts | 63 - src/swiftui/swiftuiDefaultBuilder.ts | 113 - src/swiftui/swiftuiMain.ts | 231 - src/swiftui/swiftuiTextBuilder.ts | 149 - src/tailwind/builderImpl/tailwindBlend.ts | 56 - src/tailwind/builderImpl/tailwindBorder.ts | 74 - src/tailwind/builderImpl/tailwindColor.ts | 446 - src/tailwind/builderImpl/tailwindPadding.ts | 64 - src/tailwind/builderImpl/tailwindPosition.ts | 67 - src/tailwind/builderImpl/tailwindShadow.ts | 30 - src/tailwind/builderImpl/tailwindSize.ts | 68 - src/tailwind/conversionTables.ts | 132 - src/tailwind/retrieveUI/retrieveTexts.ts | 165 - src/tailwind/tailwindDefaultBuilder.ts | 226 - src/tailwind/tailwindMain.ts | 327 - src/tailwind/tailwindTextBuilder.ts | 168 - src/tailwind/vector.ts | 126 - src/template.html | 7 - src/ui/FlutterItemColor.svelte | 65 - src/ui/GenericGradientSection.svelte | 55 - src/ui/GenericSolidColorSection.svelte | 66 - src/ui/Main.svelte | 85 - src/ui/ScreenAbout.svelte | 205 - src/ui/ScreenFlutter.svelte | 224 - src/ui/ScreenHtml.svelte | 160 - src/ui/ScreenSwiftUI.svelte | 215 - src/ui/ScreenTailwind.svelte | 295 - src/ui/Switch.svelte | 56 - src/ui/TailwindItemColor.svelte | 26 - src/ui/TailwindItemText.svelte | 34 - src/ui/svelte-tabs/Tab.svelte | 68 - src/ui/svelte-tabs/TabList.svelte | 8 - src/ui/svelte-tabs/TabPanel.svelte | 29 - src/ui/svelte-tabs/Tabs.svelte | 114 - src/ui/svelte-tabs/id.js | 5 - src/ui/svelte-tabs/index.js | 6 - tailwind.config.js | 7 - turbo-test/basic/.eslintrc.js | 10 - turbo-test/basic/.gitignore | 36 - turbo-test/basic/.npmrc | 1 - turbo-test/basic/README.md | 87 - turbo-test/basic/apps/plugin/manifest.json | 36 - turbo-test/basic/meta.json | 6 - turbo-test/basic/package.json | 17 - .../packages/backend/src/common/color.ts | 81 - .../backend/src/common/convertFontWeight.ts | 41 - .../backend/src/common/retrieveFill.ts | 12 - .../backend/src/nearest-color/nearestColor.ts | 261 - turbo-test/basic/pnpm-lock.yaml | 4607 ------ turbo-test/basic/turbo.json => turbo.json | 0 webpack.config.js | 58 - yarn.lock | 8887 ---------- 220 files changed, 2995 insertions(+), 33831 deletions(-) rename {turbo-test/basic/apps => apps}/debug/.eslintrc.js (100%) rename {turbo-test/basic/apps => apps}/debug/.gitignore (100%) rename {turbo-test/basic/apps => apps}/debug/.prettierrc (100%) rename {turbo-test/basic/apps => apps}/debug/README.md (100%) rename {turbo-test/basic/apps => apps}/debug/next-env.d.ts (100%) rename {turbo-test/basic/apps => apps}/debug/next.config.js (100%) rename {turbo-test/basic/apps => apps}/debug/package.json (100%) rename {turbo-test/basic/apps => apps}/debug/pages/_app.tsx (100%) rename {turbo-test/basic/apps => apps}/debug/pages/index.tsx (97%) rename {turbo-test/basic/apps => apps}/debug/postcss.config.js (100%) rename {turbo-test/basic/apps => apps}/debug/styles/globals.css (100%) rename {turbo-test/basic/apps => apps}/debug/tailwind.config.js (100%) rename {turbo-test/basic/apps => apps}/debug/tsconfig.json (100%) rename {turbo-test/basic/apps => apps}/plugin/.eslintrc.js (100%) rename {turbo-test/basic/apps => apps}/plugin/.gitignore (100%) rename {turbo-test/basic/apps => apps}/plugin/README.md (100%) rename {turbo-test/basic/apps => apps}/plugin/package.json (93%) rename {turbo-test/basic/apps => apps}/plugin/plugin-src/code.ts (100%) rename {turbo-test/basic/apps => apps}/plugin/plugin-src/tsconfig.json (100%) rename {turbo-test/basic/apps => apps}/plugin/postcss.config.js (100%) rename {turbo-test/basic/apps => apps}/plugin/tailwind.config.js (100%) rename {turbo-test/basic/apps => apps}/plugin/tsconfig.json (100%) rename {turbo-test/basic/apps => apps}/plugin/ui-src/App.tsx (100%) rename {turbo-test/basic/apps => apps}/plugin/ui-src/index.css (100%) rename {turbo-test/basic/apps => apps}/plugin/ui-src/index.html (100%) rename {turbo-test/basic/apps => apps}/plugin/ui-src/main.tsx (100%) rename {turbo-test/basic/apps => apps}/plugin/vite-env.d.ts (100%) rename {turbo-test/basic/apps => apps}/plugin/vite.config.ts (100%) rename {turbo-test/basic/packages => packages}/backend/package.json (100%) rename {turbo-test/basic/packages => packages}/backend/src/altNodes/altConversion.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/altNodes/altMixins2.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/altNodes/convertGroupToFrame.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/altNodes/convertNodesOnRectangle.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/code.ts (100%) rename {src => packages/backend/src}/common/color.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/commonPadding.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/commonPosition.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/commonRadius.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/commonTextHeightSpacing.ts (100%) rename {src => packages/backend/src}/common/convertFontWeight.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/indentString.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/nodeWidthHeight.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/numToAutoFixed.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/parentCoordinates.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/parseJSX.ts (100%) rename {src => packages/backend/src}/common/retrieveFill.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/retrieveUI/commonUI.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/retrieveUI/retrieveColors.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/common/retrieveUI/retrieveTexts.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterAutoLayout.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterBlend.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterBorder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterColor.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterPadding.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterPosition.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterShadow.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/builderImpl/flutterSize.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/flutterContainer.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/flutterDefaultBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/flutterMain.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/flutter/flutterTextBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlAutoLayout.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlBlend.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlBorderRadius.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlColor.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlPadding.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlShadow.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/builderImpl/htmlSize.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/htmlDefaultBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/htmlMain.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/html/htmlTextBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/index.ts (100%) rename {src => packages/backend/src}/nearest-color/nearestColor.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiBlend.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiBorder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiColor.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiEffects.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiPadding.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiPosition.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiSize.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/builderImpl/swiftuiTextWeight.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/swiftuiDefaultBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/swiftuiMain.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/swiftui/swiftuiTextBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindAutoLayout.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindBlend.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindBorder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindColor.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindPadding.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindShadow.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/builderImpl/tailwindSize.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/conversionTables.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/retrieveUI/retrieveTexts.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/tailwindDefaultBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/tailwindMain.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/tailwindTextBuilder.ts (100%) rename {turbo-test/basic/packages => packages}/backend/src/tailwind/vector.ts (100%) rename {turbo-test/basic/packages => packages}/backend/tsconfig.json (100%) rename {turbo-test/basic/packages => packages}/eslint-config-custom/index.js (100%) rename {turbo-test/basic/packages => packages}/eslint-config-custom/package.json (100%) rename {turbo-test/basic/packages => packages}/plugin-ui/package.json (100%) rename {turbo-test/basic/packages => packages}/plugin-ui/src/PluginUI.tsx (99%) rename {turbo-test/basic/packages => packages}/plugin-ui/src/description.tsx (100%) rename {turbo-test/basic/packages => packages}/plugin-ui/src/index.tsx (100%) rename {turbo-test/basic/packages => packages}/plugin-ui/tailwind.config.js (100%) rename {turbo-test/basic/packages => packages}/plugin-ui/tsconfig.json (100%) rename {turbo-test/basic/packages => packages}/tsconfig/backend.json (100%) rename {turbo-test/basic/packages => packages}/tsconfig/base.json (100%) rename {turbo-test/basic/packages => packages}/tsconfig/nextjs.json (100%) rename {turbo-test/basic/packages => packages}/tsconfig/package.json (100%) rename {turbo-test/basic/packages => packages}/tsconfig/react-library.json (100%) rename {turbo-test/basic/packages => packages}/ui/Button.tsx (100%) rename {turbo-test/basic/packages => packages}/ui/index.tsx (100%) rename {turbo-test/basic/packages => packages}/ui/package.json (100%) rename {turbo-test/basic/packages => packages}/ui/tsconfig.json (100%) rename turbo-test/basic/pnpm-workspace.yaml => pnpm-workspace.yaml (100%) delete mode 100644 public/README.md delete mode 100644 src/altNodes/altConversion.ts delete mode 100644 src/altNodes/altMixins.ts delete mode 100644 src/altNodes/convertGroupToFrame.ts delete mode 100644 src/altNodes/convertNodesOnRectangle.ts delete mode 100644 src/altNodes/convertToAutoLayout.ts delete mode 100644 src/code.ts delete mode 100644 src/common/commonPadding.ts delete mode 100644 src/common/commonPosition.ts delete mode 100644 src/common/commonTextHeightSpacing.ts delete mode 100644 src/common/indentString.ts delete mode 100644 src/common/nodeWidthHeight.ts delete mode 100644 src/common/numToAutoFixed.ts delete mode 100644 src/common/parentCoordinates.ts delete mode 100644 src/common/parseJSX.ts delete mode 100644 src/common/retrieveUI/commonUI.ts delete mode 100644 src/common/retrieveUI/retrieveColors.ts delete mode 100644 src/common/retrieveUI/retrieveTexts.ts delete mode 100644 src/flutter/builderImpl/flutterBlend.ts delete mode 100644 src/flutter/builderImpl/flutterBorder.ts delete mode 100644 src/flutter/builderImpl/flutterColor.ts delete mode 100644 src/flutter/builderImpl/flutterPadding.ts delete mode 100644 src/flutter/builderImpl/flutterPosition.ts delete mode 100644 src/flutter/builderImpl/flutterShadow.ts delete mode 100644 src/flutter/builderImpl/flutterSize.ts delete mode 100644 src/flutter/flutterContainer.ts delete mode 100644 src/flutter/flutterDefaultBuilder.ts delete mode 100644 src/flutter/flutterMain.ts delete mode 100644 src/flutter/flutterMaterial.ts delete mode 100644 src/flutter/flutterTextBuilder.ts delete mode 100644 src/html/builderImpl/htmlBlend.ts delete mode 100644 src/html/builderImpl/htmlBorderRadius.ts delete mode 100644 src/html/builderImpl/htmlColor.ts delete mode 100644 src/html/builderImpl/htmlPadding.ts delete mode 100644 src/html/builderImpl/htmlPosition.ts delete mode 100644 src/html/builderImpl/htmlShadow.ts delete mode 100644 src/html/builderImpl/htmlSize.ts delete mode 100644 src/html/builderImpl/htmlTextSize.ts delete mode 100644 src/html/htmlDefaultBuilder.ts delete mode 100644 src/html/htmlMain.ts delete mode 100644 src/html/htmlTextBuilder.ts delete mode 100644 src/main.js delete mode 100644 src/swiftui/builderImpl/swiftuiBlend.ts delete mode 100644 src/swiftui/builderImpl/swiftuiBorder.ts delete mode 100644 src/swiftui/builderImpl/swiftuiColor.ts delete mode 100644 src/swiftui/builderImpl/swiftuiEffects.ts delete mode 100644 src/swiftui/builderImpl/swiftuiPadding.ts delete mode 100644 src/swiftui/builderImpl/swiftuiPosition.ts delete mode 100644 src/swiftui/builderImpl/swiftuiSize.ts delete mode 100644 src/swiftui/builderImpl/swiftuiTextWeight.ts delete mode 100644 src/swiftui/swiftuiDefaultBuilder.ts delete mode 100644 src/swiftui/swiftuiMain.ts delete mode 100644 src/swiftui/swiftuiTextBuilder.ts delete mode 100644 src/tailwind/builderImpl/tailwindBlend.ts delete mode 100644 src/tailwind/builderImpl/tailwindBorder.ts delete mode 100644 src/tailwind/builderImpl/tailwindColor.ts delete mode 100644 src/tailwind/builderImpl/tailwindPadding.ts delete mode 100644 src/tailwind/builderImpl/tailwindPosition.ts delete mode 100644 src/tailwind/builderImpl/tailwindShadow.ts delete mode 100644 src/tailwind/builderImpl/tailwindSize.ts delete mode 100644 src/tailwind/conversionTables.ts delete mode 100644 src/tailwind/retrieveUI/retrieveTexts.ts delete mode 100644 src/tailwind/tailwindDefaultBuilder.ts delete mode 100644 src/tailwind/tailwindMain.ts delete mode 100644 src/tailwind/tailwindTextBuilder.ts delete mode 100644 src/tailwind/vector.ts delete mode 100644 src/template.html delete mode 100644 src/ui/FlutterItemColor.svelte delete mode 100644 src/ui/GenericGradientSection.svelte delete mode 100644 src/ui/GenericSolidColorSection.svelte delete mode 100644 src/ui/Main.svelte delete mode 100644 src/ui/ScreenAbout.svelte delete mode 100644 src/ui/ScreenFlutter.svelte delete mode 100644 src/ui/ScreenHtml.svelte delete mode 100644 src/ui/ScreenSwiftUI.svelte delete mode 100644 src/ui/ScreenTailwind.svelte delete mode 100644 src/ui/Switch.svelte delete mode 100644 src/ui/TailwindItemColor.svelte delete mode 100644 src/ui/TailwindItemText.svelte delete mode 100644 src/ui/svelte-tabs/Tab.svelte delete mode 100644 src/ui/svelte-tabs/TabList.svelte delete mode 100644 src/ui/svelte-tabs/TabPanel.svelte delete mode 100644 src/ui/svelte-tabs/Tabs.svelte delete mode 100644 src/ui/svelte-tabs/id.js delete mode 100644 src/ui/svelte-tabs/index.js delete mode 100644 tailwind.config.js delete mode 100644 turbo-test/basic/.eslintrc.js delete mode 100644 turbo-test/basic/.gitignore delete mode 100644 turbo-test/basic/.npmrc delete mode 100644 turbo-test/basic/README.md delete mode 100644 turbo-test/basic/apps/plugin/manifest.json delete mode 100644 turbo-test/basic/meta.json delete mode 100644 turbo-test/basic/package.json delete mode 100644 turbo-test/basic/packages/backend/src/common/color.ts delete mode 100644 turbo-test/basic/packages/backend/src/common/convertFontWeight.ts delete mode 100644 turbo-test/basic/packages/backend/src/common/retrieveFill.ts delete mode 100644 turbo-test/basic/packages/backend/src/nearest-color/nearestColor.ts delete mode 100644 turbo-test/basic/pnpm-lock.yaml rename turbo-test/basic/turbo.json => turbo.json (100%) delete mode 100644 webpack.config.js delete mode 100644 yarn.lock diff --git a/turbo-test/basic/apps/debug/.eslintrc.js b/apps/debug/.eslintrc.js similarity index 100% rename from turbo-test/basic/apps/debug/.eslintrc.js rename to apps/debug/.eslintrc.js diff --git a/turbo-test/basic/apps/debug/.gitignore b/apps/debug/.gitignore similarity index 100% rename from turbo-test/basic/apps/debug/.gitignore rename to apps/debug/.gitignore diff --git a/turbo-test/basic/apps/debug/.prettierrc b/apps/debug/.prettierrc similarity index 100% rename from turbo-test/basic/apps/debug/.prettierrc rename to apps/debug/.prettierrc diff --git a/turbo-test/basic/apps/debug/README.md b/apps/debug/README.md similarity index 100% rename from turbo-test/basic/apps/debug/README.md rename to apps/debug/README.md diff --git a/turbo-test/basic/apps/debug/next-env.d.ts b/apps/debug/next-env.d.ts similarity index 100% rename from turbo-test/basic/apps/debug/next-env.d.ts rename to apps/debug/next-env.d.ts diff --git a/turbo-test/basic/apps/debug/next.config.js b/apps/debug/next.config.js similarity index 100% rename from turbo-test/basic/apps/debug/next.config.js rename to apps/debug/next.config.js diff --git a/turbo-test/basic/apps/debug/package.json b/apps/debug/package.json similarity index 100% rename from turbo-test/basic/apps/debug/package.json rename to apps/debug/package.json diff --git a/turbo-test/basic/apps/debug/pages/_app.tsx b/apps/debug/pages/_app.tsx similarity index 100% rename from turbo-test/basic/apps/debug/pages/_app.tsx rename to apps/debug/pages/_app.tsx diff --git a/turbo-test/basic/apps/debug/pages/index.tsx b/apps/debug/pages/index.tsx similarity index 97% rename from turbo-test/basic/apps/debug/pages/index.tsx rename to apps/debug/pages/index.tsx index c4371caf..f41e1598 100644 --- a/turbo-test/basic/apps/debug/pages/index.tsx +++ b/apps/debug/pages/index.tsx @@ -24,6 +24,7 @@ export default function Web() { setSelectedFramework={setSelectedFramework} htmlPreview={null} preferences={undefined} + onPreferenceChange={() => {}} /> @@ -38,6 +39,7 @@ export default function Web() { emptySelection={false} htmlPreview={null} preferences={undefined} + onPreferenceChange={() => {}} /> diff --git a/turbo-test/basic/apps/debug/postcss.config.js b/apps/debug/postcss.config.js similarity index 100% rename from turbo-test/basic/apps/debug/postcss.config.js rename to apps/debug/postcss.config.js diff --git a/turbo-test/basic/apps/debug/styles/globals.css b/apps/debug/styles/globals.css similarity index 100% rename from turbo-test/basic/apps/debug/styles/globals.css rename to apps/debug/styles/globals.css diff --git a/turbo-test/basic/apps/debug/tailwind.config.js b/apps/debug/tailwind.config.js similarity index 100% rename from turbo-test/basic/apps/debug/tailwind.config.js rename to apps/debug/tailwind.config.js diff --git a/turbo-test/basic/apps/debug/tsconfig.json b/apps/debug/tsconfig.json similarity index 100% rename from turbo-test/basic/apps/debug/tsconfig.json rename to apps/debug/tsconfig.json diff --git a/turbo-test/basic/apps/plugin/.eslintrc.js b/apps/plugin/.eslintrc.js similarity index 100% rename from turbo-test/basic/apps/plugin/.eslintrc.js rename to apps/plugin/.eslintrc.js diff --git a/turbo-test/basic/apps/plugin/.gitignore b/apps/plugin/.gitignore similarity index 100% rename from turbo-test/basic/apps/plugin/.gitignore rename to apps/plugin/.gitignore diff --git a/turbo-test/basic/apps/plugin/README.md b/apps/plugin/README.md similarity index 100% rename from turbo-test/basic/apps/plugin/README.md rename to apps/plugin/README.md diff --git a/turbo-test/basic/apps/plugin/package.json b/apps/plugin/package.json similarity index 93% rename from turbo-test/basic/apps/plugin/package.json rename to apps/plugin/package.json index 4901ba47..e27d235b 100644 --- a/turbo-test/basic/apps/plugin/package.json +++ b/apps/plugin/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "scripts": { - "build": "pnpm run build:ui && pnpm run build:main -- --minify --tree-shaking=true", + "build": "pnpm run build:ui && pnpm run build:main --minify --tree-shaking=true", "build:main": "esbuild plugin-src/code.ts --bundle --target=ES6 --outfile=dist/code.js", "build:ui": "npx vite build --minify esbuild --emptyOutDir=false", "build:watch": "concurrently -n backend,ui \"pnpm run build:main --watch\" \"pnpm run build:ui --watch\"", diff --git a/turbo-test/basic/apps/plugin/plugin-src/code.ts b/apps/plugin/plugin-src/code.ts similarity index 100% rename from turbo-test/basic/apps/plugin/plugin-src/code.ts rename to apps/plugin/plugin-src/code.ts diff --git a/turbo-test/basic/apps/plugin/plugin-src/tsconfig.json b/apps/plugin/plugin-src/tsconfig.json similarity index 100% rename from turbo-test/basic/apps/plugin/plugin-src/tsconfig.json rename to apps/plugin/plugin-src/tsconfig.json diff --git a/turbo-test/basic/apps/plugin/postcss.config.js b/apps/plugin/postcss.config.js similarity index 100% rename from turbo-test/basic/apps/plugin/postcss.config.js rename to apps/plugin/postcss.config.js diff --git a/turbo-test/basic/apps/plugin/tailwind.config.js b/apps/plugin/tailwind.config.js similarity index 100% rename from turbo-test/basic/apps/plugin/tailwind.config.js rename to apps/plugin/tailwind.config.js diff --git a/turbo-test/basic/apps/plugin/tsconfig.json b/apps/plugin/tsconfig.json similarity index 100% rename from turbo-test/basic/apps/plugin/tsconfig.json rename to apps/plugin/tsconfig.json diff --git a/turbo-test/basic/apps/plugin/ui-src/App.tsx b/apps/plugin/ui-src/App.tsx similarity index 100% rename from turbo-test/basic/apps/plugin/ui-src/App.tsx rename to apps/plugin/ui-src/App.tsx diff --git a/turbo-test/basic/apps/plugin/ui-src/index.css b/apps/plugin/ui-src/index.css similarity index 100% rename from turbo-test/basic/apps/plugin/ui-src/index.css rename to apps/plugin/ui-src/index.css diff --git a/turbo-test/basic/apps/plugin/ui-src/index.html b/apps/plugin/ui-src/index.html similarity index 100% rename from turbo-test/basic/apps/plugin/ui-src/index.html rename to apps/plugin/ui-src/index.html diff --git a/turbo-test/basic/apps/plugin/ui-src/main.tsx b/apps/plugin/ui-src/main.tsx similarity index 100% rename from turbo-test/basic/apps/plugin/ui-src/main.tsx rename to apps/plugin/ui-src/main.tsx diff --git a/turbo-test/basic/apps/plugin/vite-env.d.ts b/apps/plugin/vite-env.d.ts similarity index 100% rename from turbo-test/basic/apps/plugin/vite-env.d.ts rename to apps/plugin/vite-env.d.ts diff --git a/turbo-test/basic/apps/plugin/vite.config.ts b/apps/plugin/vite.config.ts similarity index 100% rename from turbo-test/basic/apps/plugin/vite.config.ts rename to apps/plugin/vite.config.ts diff --git a/manifest.json b/manifest.json index 186edf5c..b2a4eea8 100644 --- a/manifest.json +++ b/manifest.json @@ -1,8 +1,36 @@ { - "name": "Figma to Code", + "name": "Figma to Code [Dev]", "id": "842128343887142055", "api": "1.0.0", - "main": "public/code.js", - "ui": "public/index.html", - "editorType": ["figma"] + "main": "apps/plugin/dist/code.js", + "ui": "apps/plugin/dist/index.html", + "editorType": ["figma", "inspect"], + "capabilities": ["panel", "codegen"], + "permissions": [], + "codegenLanguages": [ + { "label": "HTML / React", "value": "html" }, + { "label": "Tailwind", "value": "tailwind" }, + { "label": "Flutter", "value": "flutter" }, + { "label": "SwiftUI", "value": "swiftUI" } + ], + "codegenPreferences": [ + { + "itemType": "alternative-unit", + "scaledUnit": "Pixels", + "defaultScaleFactor": 16, + "default": true, + "includedLanguages": ["tailwind"] + }, + + { + "itemType": "select", + "propertyName": "tabSize", + "label": "Tab Size", + "options": [ + { "label": "2", "value": "2", "isDefault": true }, + { "label": "4", "value": "4" } + ], + "includedLanguages": ["tailwind"] + } + ] } diff --git a/package.json b/package.json index 0d0bf639..20acc566 100644 --- a/package.json +++ b/package.json @@ -1,72 +1,17 @@ { - "name": "figma-to-code", - "version": "1.0.0", - "description": "", - "main": "code.js", + "private": true, "scripts": { - "build": "rollup -c", - "watch": "rollup -c -w", - "release": "rollup -c --environment INCLUDE_DEPS,BUILD:production", - "wp": "webpack --mode=development --watch", - "test": "jest", - "coverage": "jest --coverage", - "start": "sirv public", - "lint": "eslint . --ext .ts" - }, - "author": "Bernardo Ferrari", - "license": "GPL-3.0", - "dependencies": { - "@figma/plugin-typings": "^1.63.0", - "clipboard-copy": "^4.0.1", - "prism-theme-night-owl": "^1.4.0", - "sirv-cli": "^1.0.14", - "svelte-prism": "^1.1.6", - "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.2.17" + "build": "turbo run build", + "build:watch": "turbo run build:watch", + "dev": "turbo run dev --concurrency 20", + "lint": "turbo run lint", + "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "devDependencies": { - "@fullhuman/postcss-purgecss": "^2.3.0", - "@rollup/plugin-commonjs": "^17.1.0", - "@rollup/plugin-image": "^2.1.1", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-typescript": "^8.5.0", - "@types/eslint": "^8.37.0", - "@types/jest": "^29.5.1", - "@types/node": "^18.16.3", - "@typescript-eslint/parser": "^5.59.2", - "autoprefixer": "^9.8.8", - "cross-env": "^7.0.3", - "css-loader": "^3.6.0", - "cssnano": "^4.1.11", - "eslint": "^8.39.0", - "eslint-config-kentcdodds": "^20.5.0", - "figma-api-stub": "0.0.56", - "figma-plugin-ds-svelte": "^1.4.3", - "file-loader": "^6.2.0", - "jest": "^29.5.0", - "mini-css-extract-plugin": "^0.9.0", - "postcss": "^7.0.39", - "postcss-load-config": "^2.1.2", - "postcss-loader": "^3.0.0", + "eslint": "^8.41.0", + "eslint-config-custom": "workspace:*", "prettier": "^2.8.8", - "prettier-eslint-cli": "^7.1.0", - "rollup": "^2.79.1", - "rollup-plugin-html-bundle": "0.0.3", - "rollup-plugin-livereload": "^2.0.5", - "rollup-plugin-postcss": "^2.9.0", - "rollup-plugin-purgecss": "^1.0.0", - "rollup-plugin-svelte": "^7.1.4", - "rollup-plugin-svg": "^2.0.0", - "rollup-plugin-terser": "^7.0.2", - "style-loader": "^2.0.0", - "svelte": "^3.58.0", - "svelte-loader": "^3.1.7", - "svelte-preprocess": "^4.10.7", - "ts-jest": "^29.1.0", - "ts-loader": "^8.4.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.5", - "url-loader": "^4.1.1", - "webpack": "^4.46.0", - "webpack-cli": "^3.3.12" - } + "turbo": "^1.10.1" + }, + "packageManager": "pnpm@7.15.0" } diff --git a/turbo-test/basic/packages/backend/package.json b/packages/backend/package.json similarity index 100% rename from turbo-test/basic/packages/backend/package.json rename to packages/backend/package.json diff --git a/turbo-test/basic/packages/backend/src/altNodes/altConversion.ts b/packages/backend/src/altNodes/altConversion.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/altNodes/altConversion.ts rename to packages/backend/src/altNodes/altConversion.ts diff --git a/turbo-test/basic/packages/backend/src/altNodes/altMixins2.ts b/packages/backend/src/altNodes/altMixins2.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/altNodes/altMixins2.ts rename to packages/backend/src/altNodes/altMixins2.ts diff --git a/turbo-test/basic/packages/backend/src/altNodes/convertGroupToFrame.ts b/packages/backend/src/altNodes/convertGroupToFrame.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/altNodes/convertGroupToFrame.ts rename to packages/backend/src/altNodes/convertGroupToFrame.ts diff --git a/turbo-test/basic/packages/backend/src/altNodes/convertNodesOnRectangle.ts b/packages/backend/src/altNodes/convertNodesOnRectangle.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/altNodes/convertNodesOnRectangle.ts rename to packages/backend/src/altNodes/convertNodesOnRectangle.ts diff --git a/turbo-test/basic/packages/backend/src/code.ts b/packages/backend/src/code.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/code.ts rename to packages/backend/src/code.ts diff --git a/src/common/color.ts b/packages/backend/src/common/color.ts similarity index 100% rename from src/common/color.ts rename to packages/backend/src/common/color.ts diff --git a/turbo-test/basic/packages/backend/src/common/commonPadding.ts b/packages/backend/src/common/commonPadding.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/commonPadding.ts rename to packages/backend/src/common/commonPadding.ts diff --git a/turbo-test/basic/packages/backend/src/common/commonPosition.ts b/packages/backend/src/common/commonPosition.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/commonPosition.ts rename to packages/backend/src/common/commonPosition.ts diff --git a/turbo-test/basic/packages/backend/src/common/commonRadius.ts b/packages/backend/src/common/commonRadius.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/commonRadius.ts rename to packages/backend/src/common/commonRadius.ts diff --git a/turbo-test/basic/packages/backend/src/common/commonTextHeightSpacing.ts b/packages/backend/src/common/commonTextHeightSpacing.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/commonTextHeightSpacing.ts rename to packages/backend/src/common/commonTextHeightSpacing.ts diff --git a/src/common/convertFontWeight.ts b/packages/backend/src/common/convertFontWeight.ts similarity index 100% rename from src/common/convertFontWeight.ts rename to packages/backend/src/common/convertFontWeight.ts diff --git a/turbo-test/basic/packages/backend/src/common/indentString.ts b/packages/backend/src/common/indentString.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/indentString.ts rename to packages/backend/src/common/indentString.ts diff --git a/turbo-test/basic/packages/backend/src/common/nodeWidthHeight.ts b/packages/backend/src/common/nodeWidthHeight.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/nodeWidthHeight.ts rename to packages/backend/src/common/nodeWidthHeight.ts diff --git a/turbo-test/basic/packages/backend/src/common/numToAutoFixed.ts b/packages/backend/src/common/numToAutoFixed.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/numToAutoFixed.ts rename to packages/backend/src/common/numToAutoFixed.ts diff --git a/turbo-test/basic/packages/backend/src/common/parentCoordinates.ts b/packages/backend/src/common/parentCoordinates.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/parentCoordinates.ts rename to packages/backend/src/common/parentCoordinates.ts diff --git a/turbo-test/basic/packages/backend/src/common/parseJSX.ts b/packages/backend/src/common/parseJSX.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/parseJSX.ts rename to packages/backend/src/common/parseJSX.ts diff --git a/src/common/retrieveFill.ts b/packages/backend/src/common/retrieveFill.ts similarity index 100% rename from src/common/retrieveFill.ts rename to packages/backend/src/common/retrieveFill.ts diff --git a/turbo-test/basic/packages/backend/src/common/retrieveUI/commonUI.ts b/packages/backend/src/common/retrieveUI/commonUI.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/retrieveUI/commonUI.ts rename to packages/backend/src/common/retrieveUI/commonUI.ts diff --git a/turbo-test/basic/packages/backend/src/common/retrieveUI/retrieveColors.ts b/packages/backend/src/common/retrieveUI/retrieveColors.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/retrieveUI/retrieveColors.ts rename to packages/backend/src/common/retrieveUI/retrieveColors.ts diff --git a/turbo-test/basic/packages/backend/src/common/retrieveUI/retrieveTexts.ts b/packages/backend/src/common/retrieveUI/retrieveTexts.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/common/retrieveUI/retrieveTexts.ts rename to packages/backend/src/common/retrieveUI/retrieveTexts.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterAutoLayout.ts b/packages/backend/src/flutter/builderImpl/flutterAutoLayout.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterAutoLayout.ts rename to packages/backend/src/flutter/builderImpl/flutterAutoLayout.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterBlend.ts b/packages/backend/src/flutter/builderImpl/flutterBlend.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterBlend.ts rename to packages/backend/src/flutter/builderImpl/flutterBlend.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterBorder.ts b/packages/backend/src/flutter/builderImpl/flutterBorder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterBorder.ts rename to packages/backend/src/flutter/builderImpl/flutterBorder.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterColor.ts b/packages/backend/src/flutter/builderImpl/flutterColor.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterColor.ts rename to packages/backend/src/flutter/builderImpl/flutterColor.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterPadding.ts b/packages/backend/src/flutter/builderImpl/flutterPadding.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterPadding.ts rename to packages/backend/src/flutter/builderImpl/flutterPadding.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterPosition.ts b/packages/backend/src/flutter/builderImpl/flutterPosition.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterPosition.ts rename to packages/backend/src/flutter/builderImpl/flutterPosition.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterShadow.ts b/packages/backend/src/flutter/builderImpl/flutterShadow.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterShadow.ts rename to packages/backend/src/flutter/builderImpl/flutterShadow.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterSize.ts b/packages/backend/src/flutter/builderImpl/flutterSize.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/builderImpl/flutterSize.ts rename to packages/backend/src/flutter/builderImpl/flutterSize.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/flutterContainer.ts b/packages/backend/src/flutter/flutterContainer.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/flutterContainer.ts rename to packages/backend/src/flutter/flutterContainer.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/flutterDefaultBuilder.ts b/packages/backend/src/flutter/flutterDefaultBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/flutterDefaultBuilder.ts rename to packages/backend/src/flutter/flutterDefaultBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/flutterMain.ts b/packages/backend/src/flutter/flutterMain.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/flutterMain.ts rename to packages/backend/src/flutter/flutterMain.ts diff --git a/turbo-test/basic/packages/backend/src/flutter/flutterTextBuilder.ts b/packages/backend/src/flutter/flutterTextBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/flutter/flutterTextBuilder.ts rename to packages/backend/src/flutter/flutterTextBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlAutoLayout.ts b/packages/backend/src/html/builderImpl/htmlAutoLayout.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlAutoLayout.ts rename to packages/backend/src/html/builderImpl/htmlAutoLayout.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlBlend.ts b/packages/backend/src/html/builderImpl/htmlBlend.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlBlend.ts rename to packages/backend/src/html/builderImpl/htmlBlend.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlBorderRadius.ts b/packages/backend/src/html/builderImpl/htmlBorderRadius.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlBorderRadius.ts rename to packages/backend/src/html/builderImpl/htmlBorderRadius.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlColor.ts b/packages/backend/src/html/builderImpl/htmlColor.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlColor.ts rename to packages/backend/src/html/builderImpl/htmlColor.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlPadding.ts b/packages/backend/src/html/builderImpl/htmlPadding.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlPadding.ts rename to packages/backend/src/html/builderImpl/htmlPadding.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlShadow.ts b/packages/backend/src/html/builderImpl/htmlShadow.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlShadow.ts rename to packages/backend/src/html/builderImpl/htmlShadow.ts diff --git a/turbo-test/basic/packages/backend/src/html/builderImpl/htmlSize.ts b/packages/backend/src/html/builderImpl/htmlSize.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/builderImpl/htmlSize.ts rename to packages/backend/src/html/builderImpl/htmlSize.ts diff --git a/turbo-test/basic/packages/backend/src/html/htmlDefaultBuilder.ts b/packages/backend/src/html/htmlDefaultBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/htmlDefaultBuilder.ts rename to packages/backend/src/html/htmlDefaultBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/html/htmlMain.ts b/packages/backend/src/html/htmlMain.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/htmlMain.ts rename to packages/backend/src/html/htmlMain.ts diff --git a/turbo-test/basic/packages/backend/src/html/htmlTextBuilder.ts b/packages/backend/src/html/htmlTextBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/html/htmlTextBuilder.ts rename to packages/backend/src/html/htmlTextBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/index.ts b/packages/backend/src/index.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/index.ts rename to packages/backend/src/index.ts diff --git a/src/nearest-color/nearestColor.ts b/packages/backend/src/nearest-color/nearestColor.ts similarity index 100% rename from src/nearest-color/nearestColor.ts rename to packages/backend/src/nearest-color/nearestColor.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiBlend.ts b/packages/backend/src/swiftui/builderImpl/swiftuiBlend.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiBlend.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiBlend.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiBorder.ts b/packages/backend/src/swiftui/builderImpl/swiftuiBorder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiBorder.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiBorder.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiColor.ts b/packages/backend/src/swiftui/builderImpl/swiftuiColor.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiColor.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiColor.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiEffects.ts b/packages/backend/src/swiftui/builderImpl/swiftuiEffects.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiEffects.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiEffects.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiPadding.ts b/packages/backend/src/swiftui/builderImpl/swiftuiPadding.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiPadding.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiPadding.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiPosition.ts b/packages/backend/src/swiftui/builderImpl/swiftuiPosition.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiPosition.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiPosition.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiSize.ts b/packages/backend/src/swiftui/builderImpl/swiftuiSize.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiSize.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiSize.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiTextWeight.ts b/packages/backend/src/swiftui/builderImpl/swiftuiTextWeight.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/builderImpl/swiftuiTextWeight.ts rename to packages/backend/src/swiftui/builderImpl/swiftuiTextWeight.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/swiftuiDefaultBuilder.ts b/packages/backend/src/swiftui/swiftuiDefaultBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/swiftuiDefaultBuilder.ts rename to packages/backend/src/swiftui/swiftuiDefaultBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/swiftuiMain.ts b/packages/backend/src/swiftui/swiftuiMain.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/swiftuiMain.ts rename to packages/backend/src/swiftui/swiftuiMain.ts diff --git a/turbo-test/basic/packages/backend/src/swiftui/swiftuiTextBuilder.ts b/packages/backend/src/swiftui/swiftuiTextBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/swiftui/swiftuiTextBuilder.ts rename to packages/backend/src/swiftui/swiftuiTextBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindAutoLayout.ts b/packages/backend/src/tailwind/builderImpl/tailwindAutoLayout.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindAutoLayout.ts rename to packages/backend/src/tailwind/builderImpl/tailwindAutoLayout.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindBlend.ts b/packages/backend/src/tailwind/builderImpl/tailwindBlend.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindBlend.ts rename to packages/backend/src/tailwind/builderImpl/tailwindBlend.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindBorder.ts b/packages/backend/src/tailwind/builderImpl/tailwindBorder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindBorder.ts rename to packages/backend/src/tailwind/builderImpl/tailwindBorder.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindColor.ts b/packages/backend/src/tailwind/builderImpl/tailwindColor.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindColor.ts rename to packages/backend/src/tailwind/builderImpl/tailwindColor.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindPadding.ts b/packages/backend/src/tailwind/builderImpl/tailwindPadding.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindPadding.ts rename to packages/backend/src/tailwind/builderImpl/tailwindPadding.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindShadow.ts b/packages/backend/src/tailwind/builderImpl/tailwindShadow.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindShadow.ts rename to packages/backend/src/tailwind/builderImpl/tailwindShadow.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindSize.ts b/packages/backend/src/tailwind/builderImpl/tailwindSize.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/builderImpl/tailwindSize.ts rename to packages/backend/src/tailwind/builderImpl/tailwindSize.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/conversionTables.ts b/packages/backend/src/tailwind/conversionTables.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/conversionTables.ts rename to packages/backend/src/tailwind/conversionTables.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/retrieveUI/retrieveTexts.ts b/packages/backend/src/tailwind/retrieveUI/retrieveTexts.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/retrieveUI/retrieveTexts.ts rename to packages/backend/src/tailwind/retrieveUI/retrieveTexts.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/tailwindDefaultBuilder.ts b/packages/backend/src/tailwind/tailwindDefaultBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/tailwindDefaultBuilder.ts rename to packages/backend/src/tailwind/tailwindDefaultBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/tailwindMain.ts b/packages/backend/src/tailwind/tailwindMain.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/tailwindMain.ts rename to packages/backend/src/tailwind/tailwindMain.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/tailwindTextBuilder.ts b/packages/backend/src/tailwind/tailwindTextBuilder.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/tailwindTextBuilder.ts rename to packages/backend/src/tailwind/tailwindTextBuilder.ts diff --git a/turbo-test/basic/packages/backend/src/tailwind/vector.ts b/packages/backend/src/tailwind/vector.ts similarity index 100% rename from turbo-test/basic/packages/backend/src/tailwind/vector.ts rename to packages/backend/src/tailwind/vector.ts diff --git a/turbo-test/basic/packages/backend/tsconfig.json b/packages/backend/tsconfig.json similarity index 100% rename from turbo-test/basic/packages/backend/tsconfig.json rename to packages/backend/tsconfig.json diff --git a/turbo-test/basic/packages/eslint-config-custom/index.js b/packages/eslint-config-custom/index.js similarity index 100% rename from turbo-test/basic/packages/eslint-config-custom/index.js rename to packages/eslint-config-custom/index.js diff --git a/turbo-test/basic/packages/eslint-config-custom/package.json b/packages/eslint-config-custom/package.json similarity index 100% rename from turbo-test/basic/packages/eslint-config-custom/package.json rename to packages/eslint-config-custom/package.json diff --git a/turbo-test/basic/packages/plugin-ui/package.json b/packages/plugin-ui/package.json similarity index 100% rename from turbo-test/basic/packages/plugin-ui/package.json rename to packages/plugin-ui/package.json diff --git a/turbo-test/basic/packages/plugin-ui/src/PluginUI.tsx b/packages/plugin-ui/src/PluginUI.tsx similarity index 99% rename from turbo-test/basic/packages/plugin-ui/src/PluginUI.tsx rename to packages/plugin-ui/src/PluginUI.tsx index e1e82c90..6aa294c2 100644 --- a/turbo-test/basic/packages/plugin-ui/src/PluginUI.tsx +++ b/packages/plugin-ui/src/PluginUI.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { coldarkDark as theme } from "react-syntax-highlighter/dist/esm/styles/prism"; -import copy from "clipboard-copy"; +import copy from "copy-to-clipboard"; export type FrameworkTypes = "HTML" | "Tailwind" | "Flutter" | "SwiftUI"; diff --git a/turbo-test/basic/packages/plugin-ui/src/description.tsx b/packages/plugin-ui/src/description.tsx similarity index 100% rename from turbo-test/basic/packages/plugin-ui/src/description.tsx rename to packages/plugin-ui/src/description.tsx diff --git a/turbo-test/basic/packages/plugin-ui/src/index.tsx b/packages/plugin-ui/src/index.tsx similarity index 100% rename from turbo-test/basic/packages/plugin-ui/src/index.tsx rename to packages/plugin-ui/src/index.tsx diff --git a/turbo-test/basic/packages/plugin-ui/tailwind.config.js b/packages/plugin-ui/tailwind.config.js similarity index 100% rename from turbo-test/basic/packages/plugin-ui/tailwind.config.js rename to packages/plugin-ui/tailwind.config.js diff --git a/turbo-test/basic/packages/plugin-ui/tsconfig.json b/packages/plugin-ui/tsconfig.json similarity index 100% rename from turbo-test/basic/packages/plugin-ui/tsconfig.json rename to packages/plugin-ui/tsconfig.json diff --git a/turbo-test/basic/packages/tsconfig/backend.json b/packages/tsconfig/backend.json similarity index 100% rename from turbo-test/basic/packages/tsconfig/backend.json rename to packages/tsconfig/backend.json diff --git a/turbo-test/basic/packages/tsconfig/base.json b/packages/tsconfig/base.json similarity index 100% rename from turbo-test/basic/packages/tsconfig/base.json rename to packages/tsconfig/base.json diff --git a/turbo-test/basic/packages/tsconfig/nextjs.json b/packages/tsconfig/nextjs.json similarity index 100% rename from turbo-test/basic/packages/tsconfig/nextjs.json rename to packages/tsconfig/nextjs.json diff --git a/turbo-test/basic/packages/tsconfig/package.json b/packages/tsconfig/package.json similarity index 100% rename from turbo-test/basic/packages/tsconfig/package.json rename to packages/tsconfig/package.json diff --git a/turbo-test/basic/packages/tsconfig/react-library.json b/packages/tsconfig/react-library.json similarity index 100% rename from turbo-test/basic/packages/tsconfig/react-library.json rename to packages/tsconfig/react-library.json diff --git a/turbo-test/basic/packages/ui/Button.tsx b/packages/ui/Button.tsx similarity index 100% rename from turbo-test/basic/packages/ui/Button.tsx rename to packages/ui/Button.tsx diff --git a/turbo-test/basic/packages/ui/index.tsx b/packages/ui/index.tsx similarity index 100% rename from turbo-test/basic/packages/ui/index.tsx rename to packages/ui/index.tsx diff --git a/turbo-test/basic/packages/ui/package.json b/packages/ui/package.json similarity index 100% rename from turbo-test/basic/packages/ui/package.json rename to packages/ui/package.json diff --git a/turbo-test/basic/packages/ui/tsconfig.json b/packages/ui/tsconfig.json similarity index 100% rename from turbo-test/basic/packages/ui/tsconfig.json rename to packages/ui/tsconfig.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95a6e270..0c2da47d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,205 +1,300 @@ -lockfileVersion: "6.0" - -dependencies: - "@figma/plugin-typings": - specifier: ^1.63.0 - version: 1.63.0 - clipboard-copy: - specifier: ^4.0.1 - version: 4.0.1 - prism-theme-night-owl: - specifier: ^1.4.0 - version: 1.4.0 - sirv-cli: - specifier: ^1.0.14 - version: 1.0.14 - svelte-prism: - specifier: ^1.1.6 - version: 1.1.6 - tailwindcss: - specifier: npm:@tailwindcss/postcss7-compat@^2.2.17 - version: /@tailwindcss/postcss7-compat@2.2.17(ts-node@10.9.1) - -devDependencies: - "@fullhuman/postcss-purgecss": - specifier: ^2.3.0 - version: 2.3.0 - "@rollup/plugin-commonjs": - specifier: ^17.1.0 - version: 17.1.0(rollup@2.79.1) - "@rollup/plugin-image": - specifier: ^2.1.1 - version: 2.1.1(rollup@2.79.1) - "@rollup/plugin-node-resolve": - specifier: ^11.2.1 - version: 11.2.1(rollup@2.79.1) - "@rollup/plugin-typescript": - specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) - "@types/eslint": - specifier: ^8.37.0 - version: 8.37.0 - "@types/jest": - specifier: ^29.5.1 - version: 29.5.1 - "@types/node": - specifier: ^18.16.3 - version: 18.16.3 - "@typescript-eslint/parser": - specifier: ^5.59.2 - version: 5.59.2(eslint@8.39.0)(typescript@4.9.5) - autoprefixer: - specifier: ^9.8.8 - version: 9.8.8 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - css-loader: - specifier: ^3.6.0 - version: 3.6.0(webpack@4.46.0) - cssnano: - specifier: ^4.1.11 - version: 4.1.11 - eslint: - specifier: ^8.39.0 - version: 8.39.0 - eslint-config-kentcdodds: - specifier: ^20.5.0 - version: 20.5.0(eslint@8.39.0)(jest@29.5.0)(typescript@4.9.5) - figma-api-stub: - specifier: 0.0.56 - version: 0.0.56 - figma-plugin-ds-svelte: - specifier: ^1.4.3 - version: 1.4.3 - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@4.46.0) - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - mini-css-extract-plugin: - specifier: ^0.9.0 - version: 0.9.0(webpack@4.46.0) - postcss: - specifier: ^7.0.39 - version: 7.0.39 - postcss-load-config: - specifier: ^2.1.2 - version: 2.1.2 - postcss-loader: - specifier: ^3.0.0 - version: 3.0.0 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - prettier-eslint-cli: - specifier: ^7.1.0 - version: 7.1.0(prettier-eslint@15.0.1) - rollup: - specifier: ^2.79.1 - version: 2.79.1 - rollup-plugin-html-bundle: - specifier: 0.0.3 - version: 0.0.3 - rollup-plugin-livereload: - specifier: ^2.0.5 - version: 2.0.5 - rollup-plugin-postcss: - specifier: ^2.9.0 - version: 2.9.0 - rollup-plugin-purgecss: - specifier: ^1.0.0 - version: 1.0.0 - rollup-plugin-svelte: - specifier: ^7.1.4 - version: 7.1.4(rollup@2.79.1)(svelte@3.58.0) - rollup-plugin-svg: - specifier: ^2.0.0 - version: 2.0.0 - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@2.79.1) - style-loader: - specifier: ^2.0.0 - version: 2.0.0(webpack@4.46.0) - svelte: - specifier: ^3.58.0 - version: 3.58.0 - svelte-loader: - specifier: ^3.1.7 - version: 3.1.7(svelte@3.58.0) - svelte-preprocess: - specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.21.5)(postcss-load-config@2.1.2)(postcss@7.0.39)(svelte@3.58.0)(typescript@4.9.5) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.5)(jest@29.5.0)(typescript@4.9.5) - ts-loader: - specifier: ^8.4.0 - version: 8.4.0(typescript@4.9.5)(webpack@4.46.0) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.3)(typescript@4.9.5) - typescript: - specifier: ^4.9.5 - version: 4.9.5 - url-loader: - specifier: ^4.1.1 - version: 4.1.1(file-loader@6.2.0)(webpack@4.46.0) - webpack: - specifier: ^4.46.0 - version: 4.46.0(webpack-cli@3.3.12) - webpack-cli: - specifier: ^3.3.12 - version: 3.3.12(webpack@4.46.0) +lockfileVersion: '6.1' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + eslint: + specifier: ^8.41.0 + version: 8.41.0 + eslint-config-custom: + specifier: workspace:* + version: link:packages/eslint-config-custom + prettier: + specifier: ^2.8.8 + version: 2.8.8 + turbo: + specifier: ^1.10.1 + version: 1.10.1 + + apps/debug: + dependencies: + backend: + specifier: workspace:* + version: link:../../packages/backend + next: + specifier: latest + version: 13.4.1(react-dom@18.2.0)(react@18.2.0) + plugin-ui: + specifier: workspace:* + version: link:../../packages/plugin-ui + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: ^18.15.3 + version: 18.15.3 + '@types/react': + specifier: ^18.0.28 + version: 18.2.0 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.2.1 + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.21) + eslint-config-custom: + specifier: workspace:* + version: link:../../packages/eslint-config-custom + postcss: + specifier: ^8.4.21 + version: 8.4.21 + tailwindcss: + specifier: 3.2.7 + version: 3.2.7(postcss@8.4.21) + tsconfig: + specifier: workspace:* + version: link:../../packages/tsconfig + typescript: + specifier: ^5.0.2 + version: 5.0.2 + + apps/plugin: + dependencies: + '@figma/plugin-typings': + specifier: github:figma/plugin-typings#readonly-preview + version: github.com/figma/plugin-typings/d3a04ff44ea9532ed69059af3597c61173f07eae + backend: + specifier: workspace:* + version: link:../../packages/backend + plugin-ui: + specifier: workspace:* + version: link:../../packages/plugin-ui + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: ^17.0.45 + version: 17.0.45 + '@types/react': + specifier: ^18.2.6 + version: 18.2.6 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.6 + version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.59.6 + version: 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@vitejs/plugin-react': + specifier: ^4.0.0 + version: 4.0.0(vite@4.3.7) + '@vitejs/plugin-react-swc': + specifier: ^3.3.1 + version: 3.3.1(vite@4.3.7) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.23) + concurrently: + specifier: ^8.0.1 + version: 8.0.1 + esbuild: + specifier: ^0.17.19 + version: 0.17.19 + eslint-config-custom: + specifier: workspace:* + version: link:../../packages/eslint-config-custom + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.41.0) + eslint-plugin-react-refresh: + specifier: ^0.4.1 + version: 0.4.1(eslint@8.41.0) + postcss: + specifier: ^8.4.23 + version: 8.4.23 + tailwindcss: + specifier: 3.3.2 + version: 3.3.2 + tsconfig: + specifier: workspace:* + version: link:../../packages/tsconfig + typescript: + specifier: ^5.0.4 + version: 5.0.4 + vite: + specifier: ^4.3.7 + version: 4.3.7(@types/node@17.0.45) + vite-plugin-singlefile: + specifier: ^0.13.5 + version: 0.13.5(rollup@3.23.0)(vite@4.3.7) + + packages/backend: + dependencies: + '@figma/plugin-typings': + specifier: github:figma/plugin-typings#readonly-preview + version: github.com/figma/plugin-typings/d3a04ff44ea9532ed69059af3597c61173f07eae + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.6 + version: 18.2.6 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + eslint: + specifier: ^8.36.0 + version: 8.36.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + tsconfig: + specifier: workspace:* + version: link:../tsconfig + tsup: + specifier: ^6.7.0 + version: 6.7.0(typescript@5.0.2) + typescript: + specifier: ^5.0.2 + version: 5.0.2 + + packages/eslint-config-custom: + dependencies: + eslint-config-next: + specifier: latest + version: 13.4.1(eslint@8.41.0)(typescript@5.0.4) + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.41.0) + eslint-config-turbo: + specifier: latest + version: 1.9.3(eslint@8.41.0) + eslint-plugin-react: + specifier: 7.28.0 + version: 7.28.0(eslint@8.41.0) + + packages/plugin-ui: + dependencies: + copy-to-clipboard: + specifier: ^3.3.3 + version: 3.3.3 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-syntax-highlighter: + specifier: ^15.5.0 + version: 15.5.0(react@18.2.0) + tailwindcss: + specifier: 3.3.2 + version: 3.3.2 + devDependencies: + '@types/react': + specifier: ^18.2.6 + version: 18.2.6 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + '@types/react-syntax-highlighter': + specifier: 15.5.6 + version: 15.5.6 + eslint: + specifier: ^8.40.0 + version: 8.40.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: ^5.0.4 + version: 5.0.4 + + packages/tsconfig: {} + + packages/ui: + devDependencies: + '@types/react': + specifier: ^18.0.28 + version: 18.0.28 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + eslint: + specifier: ^8.36.0 + version: 8.36.0 + eslint-config-custom: + specifier: workspace:* + version: link:../eslint-config-custom + react: + specifier: ^18.2.0 + version: 18.2.0 + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: ^5.0.2 + version: 5.0.2 packages: + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + /@ampproject/remapping@2.2.1: - resolution: - { - integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@babel/code-frame@7.21.4: - resolution: - { - integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/highlight": 7.18.6 + '@babel/highlight': 7.18.6 + dev: true /@babel/compat-data@7.21.7: - resolution: - { - integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/core@7.21.5: - resolution: - { - integrity: sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@ampproject/remapping": 2.2.1 - "@babel/code-frame": 7.21.4 - "@babel/generator": 7.21.5 - "@babel/helper-compilation-targets": 7.21.5(@babel/core@7.21.5) - "@babel/helper-module-transforms": 7.21.5 - "@babel/helpers": 7.21.5 - "@babel/parser": 7.21.5 - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.5 - "@babel/types": 7.21.5 + resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.21.8: + resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-module-transforms': 7.21.5 + '@babel/helpers': 7.21.5 + '@babel/parser': 7.21.8 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -210,2809 +305,1397 @@ packages: dev: true /@babel/generator@7.21.5: - resolution: - { - integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.5 - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 + resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.5): - resolution: - { - integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==, - } - engines: { node: ">=6.9.0" } + /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): + resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 dependencies: - "@babel/compat-data": 7.21.7 - "@babel/core": 7.21.5 - "@babel/helper-validator-option": 7.21.0 + '@babel/compat-data': 7.21.7 + '@babel/core': 7.21.8 + '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 dev: true /@babel/helper-environment-visitor@7.21.5: - resolution: - { - integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} + engines: {node: '>=6.9.0'} dev: true /@babel/helper-function-name@7.21.0: - resolution: - { - integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/template": 7.20.7 - "@babel/types": 7.21.5 + '@babel/template': 7.20.7 + '@babel/types': 7.21.5 dev: true /@babel/helper-hoist-variables@7.18.6: - resolution: - { - integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.21.5 + '@babel/types': 7.21.5 dev: true /@babel/helper-module-imports@7.21.4: - resolution: - { - integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.21.5 + '@babel/types': 7.21.5 dev: true /@babel/helper-module-transforms@7.21.5: - resolution: - { - integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-environment-visitor": 7.21.5 - "@babel/helper-module-imports": 7.21.4 - "@babel/helper-simple-access": 7.21.5 - "@babel/helper-split-export-declaration": 7.18.6 - "@babel/helper-validator-identifier": 7.19.1 - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.5 - "@babel/types": 7.21.5 + resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.21.5 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true /@babel/helper-plugin-utils@7.21.5: - resolution: - { - integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} + engines: {node: '>=6.9.0'} dev: true /@babel/helper-simple-access@7.21.5: - resolution: - { - integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.21.5 + '@babel/types': 7.21.5 dev: true /@babel/helper-split-export-declaration@7.18.6: - resolution: - { - integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.21.5 + '@babel/types': 7.21.5 dev: true /@babel/helper-string-parser@7.21.5: - resolution: - { - integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + engines: {node: '>=6.9.0'} dev: true /@babel/helper-validator-identifier@7.19.1: - resolution: - { - integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.21.0: - resolution: - { - integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} dev: true /@babel/helpers@7.21.5: - resolution: - { - integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.5 - "@babel/types": 7.21.5 + resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true /@babel/highlight@7.18.6: - resolution: - { - integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/helper-validator-identifier": 7.19.1 + '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true - /@babel/parser@7.21.5: - resolution: - { - integrity: sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==, - } - engines: { node: ">=6.0.0" } + /@babel/parser@7.21.8: + resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} + engines: {node: '>=6.0.0'} hasBin: true dependencies: - "@babel/types": 7.21.5 + '@babel/types': 7.21.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } + /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.8): + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.5): - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@babel/runtime@7.21.5: + resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 - dev: true + regenerator-runtime: 0.13.11 + dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@babel/runtime@7.22.0: + resolution: {integrity: sha512-TT6NB0oszYQ4oxLNUdG+FNHIc3MohXVCKA2BeyQ4WeM2VCSC6wBZ6P0Yfkdzxv+87D8Xk0LJyHeCKlWMvpZt0g==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + regenerator-runtime: 0.13.11 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@babel/runtime@7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 - dev: true + regenerator-runtime: 0.13.11 + dev: false - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.8 + '@babel/types': 7.21.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@babel/traverse@7.21.5: + resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.5 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.8 + '@babel/types': 7.21.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@babel/types@7.21.5: + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + '@babel/helper-string-parser': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.5): - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.5): - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.5): - resolution: - { - integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.5 - "@babel/helper-plugin-utils": 7.21.5 + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/runtime@7.21.5: - resolution: - { - integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - regenerator-runtime: 0.13.11 + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/template@7.20.7: - resolution: - { - integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.21.4 - "@babel/parser": 7.21.5 - "@babel/types": 7.21.5 + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/traverse@7.21.5: - resolution: - { - integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.21.4 - "@babel/generator": 7.21.5 - "@babel/helper-environment-visitor": 7.21.5 - "@babel/helper-function-name": 7.21.0 - "@babel/helper-hoist-variables": 7.18.6 - "@babel/helper-split-export-declaration": 7.18.6 - "@babel/parser": 7.21.5 - "@babel/types": 7.21.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/types@7.21.5: - resolution: - { - integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-string-parser": 7.21.5 - "@babel/helper-validator-identifier": 7.19.1 - to-fast-properties: 2.0.0 + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@bcoe/v8-coverage@0.2.3: - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@cspotcode/source-map-support@0.8.1: - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - dependencies: - "@jridgewell/trace-mapping": 0.3.9 - - /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.39.0 - eslint-visitor-keys: 3.4.0 + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@eslint-community/regexpp@4.5.1: - resolution: - { - integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@eslint/eslintrc@2.0.2: - resolution: - { - integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@eslint/js@8.39.0: - resolution: - { - integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true dev: true + optional: true - /@figma/plugin-typings@1.63.0: - resolution: - { - integrity: sha512-bVayE0SHdBJL8VFf2CvfLIC9aW4f+6KBBNuBQ67Q5Vy0RI5MCymEppWBkJoSFfUu3XQskb6A1UMVDI7hurd0LA==, - } - dev: false + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@fullhuman/postcss-purgecss@2.3.0: - resolution: - { - integrity: sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==, - } - dependencies: - postcss: 7.0.32 - purgecss: 2.3.0 + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true dev: true + optional: true - /@humanwhocodes/config-array@0.11.8: - resolution: - { - integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==, - } - engines: { node: ">=10.10.0" } - dependencies: - "@humanwhocodes/object-schema": 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true dev: true + optional: true - /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true dev: true + optional: true - /@humanwhocodes/object-schema@1.2.1: - resolution: - { - integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, - } - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@istanbuljs/schema@0.1.3: - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@jest/console@29.5.0: - resolution: - { - integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@jest/core@29.5.0(ts-node@10.9.1): - resolution: - { - integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /@eslint-community/eslint-utils@4.3.0(eslint@8.36.0): + resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - "@jest/console": 29.5.0 - "@jest/reporters": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node + eslint: 8.36.0 + eslint-visitor-keys: 3.3.0 dev: true - /@jest/environment@29.5.0: - resolution: - { - integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - "@jest/fake-timers": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - jest-mock: 29.5.0 + eslint: 8.40.0 + eslint-visitor-keys: 3.4.1 dev: true - /@jest/expect-utils@29.5.0: - resolution: - { - integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - jest-get-type: 29.4.3 - dev: true + eslint: 8.41.0 + eslint-visitor-keys: 3.4.1 - /@jest/expect@29.5.0: - resolution: - { - integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color + /@eslint-community/regexpp@4.4.0: + resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@jest/fake-timers@29.5.0: - resolution: - { - integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@sinonjs/fake-timers": 10.0.2 - "@types/node": 18.16.3 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /@jest/globals@29.5.0: - resolution: - { - integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/expect": 29.5.0 - "@jest/types": 29.5.0 - jest-mock: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@jest/reporters@29.5.0: - resolution: - { - integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /@eslint/eslintrc@2.0.1: + resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@jridgewell/trace-mapping": 0.3.18 - "@types/node": 18.16.3 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.0 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /@jest/schemas@29.4.3: - resolution: - { - integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@sinclair/typebox": 0.25.24 - dev: true + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color - /@jest/source-map@29.4.3: - resolution: - { - integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 + /@eslint/js@8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@jest/test-result@29.5.0: - resolution: - { - integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.5.0 - "@jest/types": 29.5.0 - "@types/istanbul-lib-coverage": 2.0.4 - collect-v8-coverage: 1.0.1 + /@eslint/js@8.40.0: + resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@jest/test-sequencer@29.5.0: - resolution: - { - integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - slash: 3.0.0 - dev: true + /@eslint/js@8.41.0: + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@jest/transform@29.5.0: - resolution: - { - integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} dependencies: - "@babel/core": 7.21.5 - "@jest/types": 29.5.0 - "@jridgewell/trace-mapping": 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@29.5.0: - resolution: - { - integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/schemas": 29.4.3 - "@types/istanbul-lib-coverage": 2.0.4 - "@types/istanbul-reports": 3.0.1 - "@types/node": 18.16.3 - "@types/yargs": 17.0.24 - chalk: 4.1.2 - dev: true + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} /@jridgewell/gen-mapping@0.3.3: - resolution: - { - integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} dependencies: - "@jridgewell/set-array": 1.1.2 - "@jridgewell/sourcemap-codec": 1.4.15 - "@jridgewell/trace-mapping": 0.3.18 - dev: true + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 /@jridgewell/resolve-uri@3.1.0: - resolution: - { - integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, - } - engines: { node: ">=6.0.0" } - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: - { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} /@jridgewell/set-array@1.1.2: - resolution: - { - integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, - } - engines: { node: ">=6.0.0" } - dev: true - - /@jridgewell/source-map@0.3.3: - resolution: - { - integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==, - } - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 - dev: true + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} /@jridgewell/sourcemap-codec@1.4.14: - resolution: - { - integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, - } - dev: true + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} /@jridgewell/trace-mapping@0.3.18: - resolution: - { - integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, - } + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - dev: true + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping@0.3.9: - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 + /@next/env@13.4.1: + resolution: {integrity: sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg==} + dev: false - /@messageformat/core@3.1.0: - resolution: - { - integrity: sha512-UxAnjecnRG4u2iaggwIyylYPHmk5BTErJcKmWyAKTXqYgSW1bFLp4D7fIzuh6bk17Qfcmf3qtufdrstCB23nBA==, - } + /@next/eslint-plugin-next@13.4.1: + resolution: {integrity: sha512-tVPS/2FKlA3ANCRCYZVT5jdbUKasBU8LG6bYqcNhyORDFTlDYa4cAWQJjZ7msIgLwMQIbL8CAsxrOL8maa/4Lg==} dependencies: - "@messageformat/date-skeleton": 1.0.1 - "@messageformat/number-skeleton": 1.1.0 - "@messageformat/parser": 5.0.0 - "@messageformat/runtime": 3.0.1 - make-plural: 7.2.0 - safe-identifier: 0.4.2 - dev: true + glob: 7.1.7 + dev: false - /@messageformat/date-skeleton@1.0.1: - resolution: - { - integrity: sha512-jPXy8fg+WMPIgmGjxSlnGJn68h/2InfT0TNSkVx0IGXgp4ynnvYkbZ51dGWmGySEK+pBiYUttbQdu5XEqX5CRg==, - } - dev: true + /@next/swc-darwin-arm64@13.4.1: + resolution: {integrity: sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /@messageformat/number-skeleton@1.1.0: - resolution: - { - integrity: sha512-F0Io+GOSvFFxvp9Ze3L5kAoZ2NnOAT0Mr/jpGNd3fqo8A0t4NxNIAcCdggtl2B/gN2ErkIKSBVPrF7xcW1IGvA==, - } - dev: true + /@next/swc-darwin-x64@13.4.1: + resolution: {integrity: sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true - /@messageformat/parser@5.0.0: - resolution: - { - integrity: sha512-WiDKhi8F0zQaFU8cXgqq69eYFarCnTVxKcvhAONufKf0oUxbqLMW6JX6rV4Hqh+BEQWGyKKKHY4g1XA6bCLylA==, - } - dependencies: - moo: 0.5.2 - dev: true + /@next/swc-linux-arm64-gnu@13.4.1: + resolution: {integrity: sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@messageformat/runtime@3.0.1: - resolution: - { - integrity: sha512-6RU5ol2lDtO8bD9Yxe6CZkl0DArdv0qkuoZC+ZwowU+cdRlVE1157wjCmlA5Rsf1Xc/brACnsZa5PZpEDfTFFg==, - } - dependencies: - make-plural: 7.2.0 - dev: true + /@next/swc-linux-arm64-musl@13.4.1: + resolution: {integrity: sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true - /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.stat": 2.0.5 + /@next/swc-linux-x64-gnu@13.4.1: + resolution: {integrity: sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.4.1: + resolution: {integrity: sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.4.1: + resolution: {integrity: sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.4.1: + resolution: {integrity: sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.4.1: + resolution: {integrity: sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@polka/url@1.0.0-next.21: - resolution: - { - integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==, - } + /@pkgr/utils@2.4.1: + resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.2.12 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.5.2 dev: false - /@rollup/plugin-commonjs@17.1.0(rollup@2.79.1): - resolution: - { - integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==, - } - engines: { node: ">= 8.0.0" } - peerDependencies: - rollup: ^2.30.0 - dependencies: - "@rollup/pluginutils": 3.1.0(rollup@2.79.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.2 - rollup: 2.79.1 + /@rushstack/eslint-patch@1.3.0: + resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} + dev: false + + /@swc/core-darwin-arm64@1.3.58: + resolution: {integrity: sha512-NwX9768gcM4HjBEE+2VCMB+h/5bwNDF4DngOTJa9w02l3AwGZXWE66X4ulJQ3Oxv8EAz1nzWb8lbi3XT+WCtmQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-image@2.1.1(rollup@2.79.1): - resolution: - { - integrity: sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g==, - } - engines: { node: ">= 8.0.0" } - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - dependencies: - "@rollup/pluginutils": 3.1.0(rollup@2.79.1) - mini-svg-data-uri: 1.4.4 - rollup: 2.79.1 + /@swc/core-darwin-x64@1.3.58: + resolution: {integrity: sha512-XUdKXRIu8S7N5kmrtd0Nxf3uPIgZhQbgVHPhkvYH+Qwb+uXsdltKPiRwhvLI9M0yF3fvIrKtGJ8qUJdH5ih4zw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): - resolution: - { - integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==, - } - engines: { node: ">= 10.0.0" } - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - "@rollup/pluginutils": 3.1.0(rollup@2.79.1) - "@types/resolve": 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.2 - rollup: 2.79.1 + /@swc/core-linux-arm-gnueabihf@1.3.58: + resolution: {integrity: sha512-9M3/5RzjCXnz94a1kxb+0eBzqyZkxzeYTMmvcjIJSy7MVvWNuy0wHuh+x96X/6197g40P9LkzAiZ7q0DvxSPQQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): - resolution: - { - integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==, - } - engines: { node: ">=8.0.0" } - peerDependencies: - rollup: ^2.14.0 - tslib: "*" - typescript: ">=3.7.0" - peerDependenciesMeta: - tslib: - optional: true - dependencies: - "@rollup/pluginutils": 3.1.0(rollup@2.79.1) - resolve: 1.22.2 - rollup: 2.79.1 - typescript: 4.9.5 + /@swc/core-linux-arm64-gnu@1.3.58: + resolution: {integrity: sha512-hRjJIJdnYUAZlUi9ACCrsfS/hSFP4MmZRaUVOlQOif578Rw4kQlxsxFd1Rh1bhzUCid0KyZOyCvRzHSD/2ONgw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/pluginutils@3.1.0(rollup@2.79.1): - resolution: - { - integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==, - } - engines: { node: ">= 8.0.0" } - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - "@types/estree": 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 + /@swc/core-linux-arm64-musl@1.3.58: + resolution: {integrity: sha512-3wrqZbRhbTKtxcQebMAMGKtyypL6BQU0OwqzAk4dBIgm9GaH45xu7sH2OekfHMp3vuj4uWuere+tYtr9HU7xcQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/pluginutils@4.2.1: - resolution: - { - integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, - } - engines: { node: ">= 8.0.0" } - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 + /@swc/core-linux-x64-gnu@1.3.58: + resolution: {integrity: sha512-yOI5ucB+8g+gtp4L2AydPBThobZ2I3WR/dU2T+x2DFIE5Qpe/fqt6HPTFb02qmvqvOw36TLT45pRwAe4cY5LAw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rushstack/eslint-patch@1.2.0: - resolution: - { - integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==, - } + /@swc/core-linux-x64-musl@1.3.58: + resolution: {integrity: sha512-xPwxgPLxSWXsK9Yf792SsUmLKISdShAI9o/Kk6jjv0r7PRBS25hZ5FyOjAb/rMbAzDcmyGKHevKc3TMUPSMjwg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@sinclair/typebox@0.25.24: - resolution: - { - integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==, - } + /@swc/core-win32-arm64-msvc@1.3.58: + resolution: {integrity: sha512-HW61trwkYGiaFprc+fJay6IKJ3scdquSdJaXsyumGF+jc/5kokQzNfY+JH6RWpk0/8zHnUWI4e+iNGuMYxYGeA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@sinonjs/commons@2.0.0: - resolution: - { - integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==, - } - dependencies: - type-detect: 4.0.8 + /@swc/core-win32-ia32-msvc@1.3.58: + resolution: {integrity: sha512-nODSJgHCY8GU6qHR9ieoxshaFD5GYGrPen/6VUvQkGwnV/yMI2Yvecgd1vLSUV4v67ZruPhIkP9OJruD+Juwhg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@sinonjs/fake-timers@10.0.2: - resolution: - { - integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==, - } - dependencies: - "@sinonjs/commons": 2.0.0 + /@swc/core-win32-x64-msvc@1.3.58: + resolution: {integrity: sha512-If/uQ3MW6Pdtah2FHhfBY2xBdBXBJzOusXpFQAkwNbaxnrJgpqIIxpYphwsJMDQp6ooSS3U90YizW7mJNxb6UA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@tailwindcss/postcss7-compat@2.2.17(ts-node@10.9.1): - resolution: - { - integrity: sha512-3h2svqQAqYHxRZ1KjsJjZOVTQ04m29LjfrLjXyZZEJuvUuJN+BCIF9GI8vhE1s0plS0mogd6E6YLg6mu4Wv/Vw==, - } - engines: { node: ">=12.13.0" } - hasBin: true - dependencies: - arg: 5.0.2 - autoprefixer: 9.8.8 - bytes: 3.1.2 - chalk: 4.1.2 - chokidar: 3.5.3 - color: 4.2.3 - cosmiconfig: 7.1.0 - detective: 5.2.1 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.12 - fs-extra: 10.1.0 - glob-parent: 6.0.2 - html-tags: 3.3.1 - is-color-stop: 1.1.0 - is-glob: 4.0.3 - lodash: 4.17.21 - lodash.topath: 4.5.2 - modern-normalize: 1.1.0 - node-emoji: 1.11.0 - normalize-path: 3.0.0 - object-hash: 2.2.0 - postcss: 7.0.39 - postcss-functions: 3.0.0 - postcss-js: 2.0.3 - postcss-load-config: 3.1.4(postcss@7.0.39)(ts-node@10.9.1) - postcss-nested: 4.2.3 - postcss-selector-parser: 6.0.12 - postcss-value-parser: 4.2.0 - pretty-hrtime: 1.0.3 - purgecss: 4.1.3 - quick-lru: 5.1.1 - reduce-css-calc: 2.1.8 - resolve: 1.22.2 - tmp: 0.2.1 - transitivePeerDependencies: - - ts-node + /@swc/core@1.3.58: + resolution: {integrity: sha512-tSDcHXMBQIo2ohQ/0ryZnUA+0mBrVhe49+cR+QsFru+XEhCok1BLqdE6cZ2a+sgZ1I+Dmw8aTxYm8Ox64PSKPQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.58 + '@swc/core-darwin-x64': 1.3.58 + '@swc/core-linux-arm-gnueabihf': 1.3.58 + '@swc/core-linux-arm64-gnu': 1.3.58 + '@swc/core-linux-arm64-musl': 1.3.58 + '@swc/core-linux-x64-gnu': 1.3.58 + '@swc/core-linux-x64-musl': 1.3.58 + '@swc/core-win32-arm64-msvc': 1.3.58 + '@swc/core-win32-ia32-msvc': 1.3.58 + '@swc/core-win32-x64-msvc': 1.3.58 + dev: true + + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + dependencies: + tslib: 2.5.2 dev: false - /@testing-library/dom@8.20.0: - resolution: - { - integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==, - } - engines: { node: ">=12" } + /@types/hast@2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: - "@babel/code-frame": 7.21.4 - "@babel/runtime": 7.21.5 - "@types/aria-query": 5.0.1 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - - /@tsconfig/node10@1.0.9: - resolution: - { - integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==, - } - - /@tsconfig/node12@1.0.11: - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - /@tsconfig/node14@1.0.3: - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - /@tsconfig/node16@1.0.3: - resolution: - { - integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==, - } + '@types/unist': 2.0.6 + dev: false - /@types/aria-query@5.0.1: - resolution: - { - integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==, - } + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/babel__core@7.20.0: - resolution: - { - integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==, - } - dependencies: - "@babel/parser": 7.21.5 - "@babel/types": 7.21.5 - "@types/babel__generator": 7.6.4 - "@types/babel__template": 7.4.1 - "@types/babel__traverse": 7.18.5 - dev: true + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false - /@types/babel__generator@7.6.4: - resolution: - { - integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, - } - dependencies: - "@babel/types": 7.21.5 + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true - /@types/babel__template@7.4.1: - resolution: - { - integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, - } - dependencies: - "@babel/parser": 7.21.5 - "@babel/types": 7.21.5 + /@types/node@18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} dev: true - /@types/babel__traverse@7.18.5: - resolution: - { - integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==, - } - dependencies: - "@babel/types": 7.21.5 + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/eslint@8.37.0: - resolution: - { - integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==, - } + /@types/react-dom@18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - "@types/estree": 1.0.1 - "@types/json-schema": 7.0.11 + '@types/react': 18.0.28 dev: true - /@types/estree@0.0.39: - resolution: - { - integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==, - } - dev: true - - /@types/estree@1.0.1: - resolution: - { - integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==, - } - dev: true - - /@types/graceful-fs@4.1.6: - resolution: - { - integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==, - } + /@types/react-dom@18.2.1: + resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} dependencies: - "@types/node": 18.16.3 + '@types/react': 18.2.0 dev: true - /@types/istanbul-lib-coverage@2.0.4: - resolution: - { - integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, - } - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, - } + /@types/react-dom@18.2.4: + resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - "@types/istanbul-lib-coverage": 2.0.4 + '@types/react': 18.2.6 dev: true - /@types/istanbul-reports@3.0.1: - resolution: - { - integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, - } + /@types/react-syntax-highlighter@15.5.6: + resolution: {integrity: sha512-i7wFuLbIAFlabTeD2I1cLjEOrG/xdMa/rpx2zwzAoGHuXJDhSqp9BSfDlMHSh9JSuNfxHk9eEmMX6D55GiyjGg==} dependencies: - "@types/istanbul-lib-report": 3.0.0 + '@types/react': 18.2.6 dev: true - /@types/jest@29.5.1: - resolution: - { - integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==, - } + /@types/react@18.0.28: + resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /@types/json-schema@7.0.11: - resolution: - { - integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, - } - dev: true - - /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - dev: true - - /@types/node@18.16.3: - resolution: - { - integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==, - } - - /@types/normalize-package-data@2.4.1: - resolution: - { - integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, - } - dev: true - - /@types/parse-json@4.0.0: - resolution: - { - integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==, - } - dev: false - - /@types/prettier@2.7.2: - resolution: - { - integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==, - } - dev: true - - /@types/pug@2.0.6: - resolution: - { - integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==, - } - dev: true - - /@types/q@1.5.5: - resolution: - { - integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==, - } + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 dev: true - /@types/resolve@1.17.1: - resolution: - { - integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==, - } + /@types/react@18.2.0: + resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} dependencies: - "@types/node": 18.16.3 + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 dev: true - /@types/sass@1.45.0: - resolution: - { - integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==, - } - deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. + /@types/react@18.2.6: + resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} dependencies: - sass: 1.62.1 + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 dev: true - /@types/semver@7.3.13: - resolution: - { - integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==, - } + /@types/scheduler@0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true - /@types/stack-utils@2.0.1: - resolution: - { - integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, - } + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/yargs-parser@21.0.0: - resolution: - { - integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, - } + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/yargs@17.0.24: - resolution: - { - integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==, - } - dependencies: - "@types/yargs-parser": 21.0.0 - dev: true + /@types/unist@2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: false - /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - "@typescript-eslint/parser": ^5.0.0 + '@typescript-eslint/parser': ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - "@eslint-community/regexpp": 4.5.1 - "@typescript-eslint/parser": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/type-utils": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - "@typescript-eslint/utils": 5.59.2(eslint@8.39.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/type-utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.39.0 + eslint: 8.41.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.2(eslint@8.39.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/parser@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/typescript-estree": 5.59.2(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) debug: 4.3.4 - eslint: 8.39.0 - typescript: 4.9.5 + eslint: 8.41.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.2: - resolution: - { - integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/parser@5.59.8(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.8 + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/typescript-estree': 5.59.8(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.41.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@5.59.6: + resolution: {integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/visitor-keys": 5.59.2 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 dev: true - /@typescript-eslint/type-utils@5.59.2(eslint@8.39.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/scope-manager@5.59.8: + resolution: {integrity: sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/visitor-keys': 5.59.8 + dev: false + + /@typescript-eslint/type-utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: "*" - typescript: "*" + eslint: '*' + typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - "@typescript-eslint/typescript-estree": 5.59.2(typescript@4.9.5) - "@typescript-eslint/utils": 5.59.2(eslint@8.39.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.39.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + eslint: 8.41.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.2: - resolution: - { - integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/types@5.59.6: + resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.2(typescript@4.9.5): - resolution: - { - integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/types@5.59.8: + resolution: {integrity: sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@5.59.6(typescript@5.0.4): + resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/visitor-keys": 5.59.2 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.2(eslint@8.39.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/typescript-estree@5.59.8(typescript@5.0.4): + resolution: {integrity: sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/visitor-keys': 5.59.8 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.39.0) - "@types/json-schema": 7.0.11 - "@types/semver": 7.3.13 - "@typescript-eslint/scope-manager": 5.59.2 - "@typescript-eslint/types": 5.59.2 - "@typescript-eslint/typescript-estree": 5.59.2(typescript@4.9.5) - eslint: 8.39.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + eslint: 8.41.0 eslint-scope: 5.1.1 - semver: 7.5.0 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.2: - resolution: - { - integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - "@typescript-eslint/types": 5.59.2 - eslint-visitor-keys: 3.4.0 - dev: true - - /@webassemblyjs/ast@1.9.0: - resolution: - { - integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==, - } - dependencies: - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.9.0: - resolution: - { - integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==, - } - dev: true - - /@webassemblyjs/helper-api-error@1.9.0: - resolution: - { - integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==, - } - dev: true - - /@webassemblyjs/helper-buffer@1.9.0: - resolution: - { - integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==, - } - dev: true - - /@webassemblyjs/helper-code-frame@1.9.0: - resolution: - { - integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==, - } - dependencies: - "@webassemblyjs/wast-printer": 1.9.0 - dev: true - - /@webassemblyjs/helper-fsm@1.9.0: - resolution: - { - integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==, - } - dev: true - - /@webassemblyjs/helper-module-context@1.9.0: - resolution: - { - integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==, - } - dependencies: - "@webassemblyjs/ast": 1.9.0 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.9.0: - resolution: - { - integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==, - } - dev: true - - /@webassemblyjs/helper-wasm-section@1.9.0: - resolution: - { - integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==, - } - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - dev: true - - /@webassemblyjs/ieee754@1.9.0: - resolution: - { - integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==, - } - dependencies: - "@xtuc/ieee754": 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.9.0: - resolution: - { - integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==, - } - dependencies: - "@xtuc/long": 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.9.0: - resolution: - { - integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==, - } - dev: true - - /@webassemblyjs/wasm-edit@1.9.0: - resolution: - { - integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==, - } - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/helper-wasm-section": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-opt": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - "@webassemblyjs/wast-printer": 1.9.0 - dev: true - - /@webassemblyjs/wasm-gen@1.9.0: - resolution: - { - integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==, - } - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - dev: true - - /@webassemblyjs/wasm-opt@1.9.0: - resolution: - { - integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==, - } + /@typescript-eslint/visitor-keys@5.59.6: + resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 + '@typescript-eslint/types': 5.59.6 + eslint-visitor-keys: 3.4.1 dev: true - /@webassemblyjs/wasm-parser@1.9.0: - resolution: - { - integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==, - } + /@typescript-eslint/visitor-keys@5.59.8: + resolution: {integrity: sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - dev: true + '@typescript-eslint/types': 5.59.8 + eslint-visitor-keys: 3.4.1 + dev: false - /@webassemblyjs/wast-parser@1.9.0: - resolution: - { - integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==, - } + /@vitejs/plugin-react-swc@3.3.1(vite@4.3.7): + resolution: {integrity: sha512-ZoYjGxMniXP7X+5ry/W1tpY7w0OeLUEsBF5RHFPmAhpgwwNWie8OF4056MRXRi9QgvYYoZPDzdOXGK3wlCoTfQ==} + peerDependencies: + vite: ^4 dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/floating-point-hex-parser": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-code-frame": 1.9.0 - "@webassemblyjs/helper-fsm": 1.9.0 - "@xtuc/long": 4.2.2 + '@swc/core': 1.3.58 + vite: 4.3.7(@types/node@17.0.45) + transitivePeerDependencies: + - '@swc/helpers' dev: true - /@webassemblyjs/wast-printer@1.9.0: - resolution: - { - integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==, - } + /@vitejs/plugin-react@4.0.0(vite@4.3.7): + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 - "@xtuc/long": 4.2.2 - dev: true - - /@xtuc/ieee754@1.2.0: - resolution: - { - integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, - } - dev: true - - /@xtuc/long@4.2.2: - resolution: - { - integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, - } + '@babel/core': 7.21.8 + '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.8) + react-refresh: 0.14.0 + vite: 4.3.7(@types/node@17.0.45) + transitivePeerDependencies: + - supports-color dev: true /acorn-jsx@5.3.2(acorn@8.8.2): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.2 - dev: true /acorn-node@1.8.2: - resolution: - { - integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==, - } + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 xtend: 4.0.2 - dev: false + dev: true /acorn-walk@7.2.0: - resolution: - { - integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==, - } - engines: { node: ">=0.4.0" } - dev: false - - /acorn-walk@8.2.0: - resolution: - { - integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, - } - engines: { node: ">=0.4.0" } - - /acorn@6.4.2: - resolution: - { - integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==, - } - engines: { node: ">=0.4.0" } - hasBin: true + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} dev: true /acorn@7.4.1: - resolution: - { - integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} hasBin: true - dev: false + dev: true /acorn@8.8.2: - resolution: - { - integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} hasBin: true - /ajv-errors@1.0.1(ajv@6.12.6): - resolution: - { - integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==, - } - peerDependencies: - ajv: ">=5.0.0" - dependencies: - ajv: 6.12.6 - dev: true - - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: - { - integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==, - } - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true - /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - - /alphanum-sort@1.0.2: - resolution: - { - integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==, - } - dev: true - - /ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-regex@2.1.1: - resolution: - { - integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /ansi-regex@3.0.1: - resolution: - { - integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==, - } - engines: { node: ">=4" } - dev: true - - /ansi-regex@4.1.1: - resolution: - { - integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, - } - engines: { node: ">=6" } - dev: true /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - dev: true - - /ansi-styles@2.2.1: - resolution: - { - integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, - } - engines: { node: ">=0.10.0" } - dev: true + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } - dev: true - - /anymatch@2.0.0: - resolution: - { - integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==, - } - dependencies: - micromatch: 3.1.10(supports-color@6.1.0) - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: true - optional: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /aproba@1.2.0: - resolution: - { - integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==, - } - dev: true - - /arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } - /arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } - dev: false - - /argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - dependencies: - sprintf-js: 1.0.3 - dev: true + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - dev: true + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} /aria-query@5.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==, - } + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.1 - dev: true - - /arr-diff@4.0.0: - resolution: - { - integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /arr-flatten@1.1.0: - resolution: - { - integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /arr-union@3.1.0: - resolution: - { - integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==, - } - engines: { node: ">=0.10.0" } - dev: true + dev: false /array-buffer-byte-length@1.0.0: - resolution: - { - integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, - } + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 - dev: true + dev: false /array-includes@3.1.6: - resolution: - { - integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-string: 1.0.7 - dev: true + dev: false /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } - dev: true - - /array-unique@0.3.2: - resolution: - { - integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==, - } - engines: { node: ">=0.10.0" } - dev: true + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} /array.prototype.flat@1.3.1: - resolution: - { - integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - dev: true + dev: false /array.prototype.flatmap@1.3.1: - resolution: - { - integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - dev: true - - /array.prototype.reduce@1.0.5: - resolution: - { - integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: true + dev: false /array.prototype.tosorted@1.1.1: - resolution: - { - integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==, - } + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.0 - dev: true - - /arrify@2.0.1: - resolution: - { - integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, - } - engines: { node: ">=8" } - dev: true - - /asn1.js@5.4.1: - resolution: - { - integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==, - } - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - - /assert@1.5.0: - resolution: - { - integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==, - } - dependencies: - object-assign: 4.1.1 - util: 0.10.3 - dev: true - - /assign-symbols@1.0.0: - resolution: - { - integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==, - } - engines: { node: ">=0.10.0" } - dev: true + get-intrinsic: 1.2.1 + dev: false /ast-types-flow@0.0.7: - resolution: - { - integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==, - } - dev: true - - /async-each@1.0.6: - resolution: - { - integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==, - } - dev: true - optional: true + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: false - /atob@2.1.2: - resolution: - { - integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==, - } - engines: { node: ">= 4.5.0" } + /autoprefixer@10.4.14(postcss@8.4.21): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.5 + caniuse-lite: 1.0.30001482 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: true - /autoprefixer@9.8.8: - resolution: - { - integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==, - } + /autoprefixer@10.4.14(postcss@8.4.23): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001481 + caniuse-lite: 1.0.30001482 + fraction.js: 4.2.0 normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 + picocolors: 1.0.0 + postcss: 8.4.23 postcss-value-parser: 4.2.0 + dev: true /available-typed-arrays@1.0.5: - resolution: - { - integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, - } - engines: { node: ">= 0.4" } - dev: true + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false - /axe-core@4.7.0: - resolution: - { - integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==, - } - engines: { node: ">=4" } - dev: true + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + engines: {node: '>=4'} + dev: false /axobject-query@3.1.1: - resolution: - { - integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==, - } + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.2.1 - dev: true - - /babel-jest@29.5.0(@babel/core@7.21.5): - resolution: - { - integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.8.0 - dependencies: - "@babel/core": 7.21.5 - "@jest/transform": 29.5.0 - "@types/babel__core": 7.20.0 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.21.5) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: ">=8" } - dependencies: - "@babel/helper-plugin-utils": 7.21.5 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: - { - integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/template": 7.20.7 - "@babel/types": 7.21.5 - "@types/babel__core": 7.20.0 - "@types/babel__traverse": 7.18.5 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.5): - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, - } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.21.5 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.21.5) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.21.5) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.21.5) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.21.5) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.21.5) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.21.5) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.21.5) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.21.5): - resolution: - { - integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.21.5 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.5) - dev: true + dev: false /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - /base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - dev: true - - /base@0.11.2: - resolution: - { - integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==, - } - engines: { node: ">=0.10.0" } - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - - /big.js@5.2.2: - resolution: - { - integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==, - } - dev: true - - /binary-extensions@1.13.1: - resolution: - { - integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==, - } - engines: { node: ">=0.10.0" } - dev: true - optional: true + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: false /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} - /bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} dependencies: - file-uri-to-path: 1.0.0 - dev: true - optional: true - - /bluebird@3.7.2: - resolution: - { - integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==, - } - dev: true - - /bn.js@4.12.0: - resolution: - { - integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==, - } - dev: true - - /bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - dev: true - - /boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, - } - dev: true - - /boolify@1.0.1: - resolution: - { - integrity: sha512-ma2q0Tc760dW54CdOyJjhrg/a54317o1zYADQJFgperNGKIKgAUGIcKnuMiff8z57+yGlrGNEt4lPgZfCgTJgA==, - } - dev: true + big-integer: 1.6.51 + dev: false /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /braces@2.3.2(supports-color@6.1.0): - resolution: - { - integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2(supports-color@6.1.0) - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /brorand@1.1.0: - resolution: - { - integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, - } - dev: true - - /browserify-aes@1.2.0: - resolution: - { - integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==, - } - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-cipher@1.0.1: - resolution: - { - integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==, - } - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: - { - integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==, - } - dependencies: - cipher-base: 1.0.4 - des.js: 1.0.1 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-rsa@4.1.0: - resolution: - { - integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==, - } - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.1: - resolution: - { - integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==, - } - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /browserify-zlib@0.2.0: - resolution: - { - integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==, - } - dependencies: - pako: 1.0.11 - dev: true - /browserslist@4.21.5: - resolution: - { - integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001481 - electron-to-chromium: 1.4.378 + caniuse-lite: 1.0.30001482 + electron-to-chromium: 1.4.397 node-releases: 2.0.10 update-browserslist-db: 1.0.11(browserslist@4.21.5) - - /bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: ">= 6" } - dependencies: - fast-json-stable-stringify: 2.1.0 dev: true - /bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-crc32@0.2.13: - resolution: - { - integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, - } - dev: true - - /buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - dev: true - - /buffer-xor@1.0.3: - resolution: - { - integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==, - } - dev: true + run-applescript: 5.0.0 + dev: false - /buffer@4.9.2: - resolution: - { - integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==, - } + /bundle-require@4.0.1(esbuild@0.17.19): + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - dev: true - - /builtin-modules@3.3.0: - resolution: - { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, - } - engines: { node: ">=6" } + esbuild: 0.17.19 + load-tsconfig: 0.2.3 dev: true - /builtin-status-codes@3.0.0: - resolution: - { - integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==, - } - dev: true - - /bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: ">= 0.8" } + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 dev: false - /cacache@12.0.4: - resolution: - { - integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==, - } - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - figgy-pudding: 3.5.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - infer-owner: 1.0.4 - lru-cache: 5.1.1 - mississippi: 3.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 6.0.2 - unique-filename: 1.1.1 - y18n: 4.0.3 - dev: true - - /cache-base@1.0.1: - resolution: - { - integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} dev: true /call-bind@1.0.2: - resolution: - { - integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, - } + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: true - - /caller-callsite@2.0.0: - resolution: - { - integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==, - } - engines: { node: ">=4" } - dependencies: - callsites: 2.0.0 - dev: true - - /caller-path@2.0.0: - resolution: - { - integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==, - } - engines: { node: ">=4" } - dependencies: - caller-callsite: 2.0.0 - dev: true - - /callsites@2.0.0: - resolution: - { - integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==, - } - engines: { node: ">=4" } - dev: true + get-intrinsic: 1.2.1 + dev: false /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} /camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, - } - engines: { node: ">= 6" } - dev: false - - /camelcase-keys@7.0.2: - resolution: - { - integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==, - } - engines: { node: ">=12" } - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - dev: true - - /camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } - dev: true - - /camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } - dev: true + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} - /caniuse-api@3.0.0: - resolution: - { - integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, - } - dependencies: - browserslist: 4.21.5 - caniuse-lite: 1.0.30001481 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 + /caniuse-lite@1.0.30001482: + resolution: {integrity: sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==} dev: true - /caniuse-lite@1.0.30001481: - resolution: - { - integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==, - } - - /chalk@1.1.3: - resolution: - { - integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==, - } - engines: { node: ">=0.10.0" } - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - dev: true + /caniuse-lite@1.0.30001492: + resolution: {integrity: sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw==} + dev: false /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } - dev: true - - /chokidar@2.1.8: - resolution: - { - integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==, - } - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2(supports-color@6.1.0) - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: true - optional: true + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: false + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: false + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: false /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: ">= 8.10.0" } + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -3024,787 +1707,136 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chownr@1.1.4: - resolution: - { - integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, - } - dev: true - - /chrome-trace-event@1.0.3: - resolution: - { - integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==, - } - engines: { node: ">=6.0" } - dev: true - - /ci-info@3.8.0: - resolution: - { - integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==, - } - engines: { node: ">=8" } - dev: true - - /cipher-base@1.0.4: - resolution: - { - integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==, - } - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /cjs-module-lexer@1.2.2: - resolution: - { - integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==, - } - dev: true - - /class-utils@0.3.6: - resolution: - { - integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: true - - /clipboard-copy@4.0.1: - resolution: - { - integrity: sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==, - } + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui@5.0.0: - resolution: - { - integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==, - } - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - dev: true - /cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 dev: true - /clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, - } - engines: { node: ">=6" } - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - - /co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - dev: true - - /coa@2.0.2: - resolution: - { - integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==, - } - engines: { node: ">= 4.0" } - dependencies: - "@types/q": 1.5.5 - chalk: 2.4.2 - q: 1.5.1 - dev: true - - /collect-v8-coverage@1.0.1: - resolution: - { - integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==, - } - dev: true - - /collection-visit@1.0.0: - resolution: - { - integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==, - } - engines: { node: ">=0.10.0" } - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string@1.9.1: - resolution: - { - integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, - } - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 + /comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /color@3.2.1: - resolution: - { - integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==, - } + /concurrently@8.0.1: + resolution: {integrity: sha512-Sh8bGQMEL0TAmAm2meAXMjcASHZa7V0xXQVDBLknCPa9TPtkY9yYs+0cnGGgfdkW0SV1Mlg+hVGfXcoI8d3MJA==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.1 + shell-quote: 1.8.1 + spawn-command: 0.0.2-1 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 dev: true - /color@4.2.3: - resolution: - { - integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, - } - engines: { node: ">=12.5.0" } + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 + toggle-selection: 1.0.6 dev: false - /commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csstype@3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /commander@5.1.0: - resolution: - { - integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==, - } - engines: { node: ">= 6" } + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /commander@8.3.0: - resolution: - { - integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, - } - engines: { node: ">= 12" } + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false - /common-tags@1.8.2: - resolution: - { - integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==, - } - engines: { node: ">=4.0.0" } - dev: true - - /commondir@1.0.1: - resolution: - { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, - } - dev: true - - /component-emitter@1.3.0: - resolution: - { - integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==, - } - dev: true - - /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - /concat-stream@1.6.2: - resolution: - { - integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==, - } - engines: { "0": node >= 0.8 } - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true - - /concat-with-sourcemaps@1.1.0: - resolution: - { - integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==, - } - dependencies: - source-map: 0.6.1 - dev: true - - /console-browserify@1.2.0: - resolution: - { - integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==, - } - dev: true - - /console-clear@1.1.1: - resolution: - { - integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==, - } - engines: { node: ">=4" } - dev: false - - /constants-browserify@1.0.0: - resolution: - { - integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==, - } - dev: true - - /convert-source-map@1.9.0: - resolution: - { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, - } - dev: true - - /convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } - dev: true - - /copy-concurrently@1.0.5: - resolution: - { - integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==, - } - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - - /copy-descriptor@0.1.1: - resolution: - { - integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==, - } - engines: { node: ">=0.10.0" } - dev: true - - /core-js@3.30.1: - resolution: - { - integrity: sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==, - } - requiresBuild: true - dev: true - - /core-util-is@1.0.3: - resolution: - { - integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, - } - dev: true - - /cosmiconfig@5.2.1: - resolution: - { - integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==, - } - engines: { node: ">=4" } - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - dev: true - - /cosmiconfig@7.1.0: - resolution: - { - integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, - } - engines: { node: ">=10" } - dependencies: - "@types/parse-json": 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /create-ecdh@4.0.4: - resolution: - { - integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==, - } - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - - /create-hash@1.2.0: - resolution: - { - integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==, - } - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: true - - /create-hmac@1.1.7: - resolution: - { - integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==, - } - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } - - /cross-env@7.0.3: - resolution: - { - integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==, - } - engines: { node: ">=10.14", npm: ">=6", yarn: ">=1" } - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - - /cross-spawn@6.0.5: - resolution: - { - integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==, - } - engines: { node: ">=4.8" } - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /crypto-browserify@3.12.0: - resolution: - { - integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==, - } - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.1 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - - /css-color-names@0.0.4: - resolution: - { - integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==, - } - - /css-declaration-sorter@4.0.1: - resolution: - { - integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==, - } - engines: { node: ">4" } - dependencies: - postcss: 7.0.39 - timsort: 0.3.0 - dev: true - - /css-loader@3.6.0(webpack@4.46.0): - resolution: - { - integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==, - } - engines: { node: ">= 8.9.0" } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - camelcase: 5.3.1 - cssesc: 3.0.0 - icss-utils: 4.1.1 - loader-utils: 1.4.2 - normalize-path: 3.0.0 - postcss: 7.0.39 - postcss-modules-extract-imports: 2.0.0 - postcss-modules-local-by-default: 3.0.3 - postcss-modules-scope: 2.2.0 - postcss-modules-values: 3.0.0 - postcss-value-parser: 4.2.0 - schema-utils: 2.7.1 - semver: 6.3.0 - webpack: 4.46.0(webpack-cli@3.3.12) - dev: true - - /css-modules-loader-core@1.1.0: - resolution: - { - integrity: sha512-XWOBwgy5nwBn76aA+6ybUGL/3JBnCtBX9Ay9/OWIpzKYWlVHMazvJ+WtHumfi+xxdPF440cWK7JCYtt8xDifew==, - } - dependencies: - icss-replace-symbols: 1.1.0 - postcss: 6.0.1 - postcss-modules-extract-imports: 1.1.0 - postcss-modules-local-by-default: 1.2.0 - postcss-modules-scope: 1.1.0 - postcss-modules-values: 1.3.0 - dev: true - - /css-select-base-adapter@0.1.1: - resolution: - { - integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==, - } - dev: true - - /css-select@2.1.0: - resolution: - { - integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==, - } - dependencies: - boolbase: 1.0.0 - css-what: 3.4.2 - domutils: 1.7.0 - nth-check: 1.0.2 - dev: true - - /css-selector-tokenizer@0.7.3: - resolution: - { - integrity: sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==, - } - dependencies: - cssesc: 3.0.0 - fastparse: 1.1.2 - dev: true - - /css-tree@1.0.0-alpha.37: - resolution: - { - integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==, - } - engines: { node: ">=8.0.0" } - dependencies: - mdn-data: 2.0.4 - source-map: 0.6.1 - dev: true - - /css-tree@1.1.3: - resolution: - { - integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, - } - engines: { node: ">=8.0.0" } - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: true - - /css-unit-converter@1.1.2: - resolution: - { - integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==, - } - dev: false - - /css-what@3.4.2: - resolution: - { - integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==, - } - engines: { node: ">= 6" } - dev: true - - /cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } - hasBin: true - - /cssnano-preset-default@4.0.8: - resolution: - { - integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - css-declaration-sorter: 4.0.1 - cssnano-util-raw-cache: 4.0.1 - postcss: 7.0.39 - postcss-calc: 7.0.5 - postcss-colormin: 4.0.3 - postcss-convert-values: 4.0.1 - postcss-discard-comments: 4.0.2 - postcss-discard-duplicates: 4.0.2 - postcss-discard-empty: 4.0.1 - postcss-discard-overridden: 4.0.1 - postcss-merge-longhand: 4.0.11 - postcss-merge-rules: 4.0.3 - postcss-minify-font-values: 4.0.2 - postcss-minify-gradients: 4.0.2 - postcss-minify-params: 4.0.2 - postcss-minify-selectors: 4.0.2 - postcss-normalize-charset: 4.0.1 - postcss-normalize-display-values: 4.0.2 - postcss-normalize-positions: 4.0.2 - postcss-normalize-repeat-style: 4.0.2 - postcss-normalize-string: 4.0.2 - postcss-normalize-timing-functions: 4.0.2 - postcss-normalize-unicode: 4.0.1 - postcss-normalize-url: 4.0.1 - postcss-normalize-whitespace: 4.0.2 - postcss-ordered-values: 4.1.2 - postcss-reduce-initial: 4.0.3 - postcss-reduce-transforms: 4.0.2 - postcss-svgo: 4.0.3 - postcss-unique-selectors: 4.0.1 - dev: true - - /cssnano-util-get-arguments@4.0.0: - resolution: - { - integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==, - } - engines: { node: ">=6.9.0" } - dev: true - - /cssnano-util-get-match@4.0.0: - resolution: - { - integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==, - } - engines: { node: ">=6.9.0" } - dev: true - - /cssnano-util-raw-cache@4.0.1: - resolution: - { - integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - dev: true - - /cssnano-util-same-parent@4.0.1: - resolution: - { - integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==, - } - engines: { node: ">=6.9.0" } - dev: true - - /cssnano@4.1.11: - resolution: - { - integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==, - } - engines: { node: ">=6.9.0" } - dependencies: - cosmiconfig: 5.2.1 - cssnano-preset-default: 4.0.8 - is-resolvable: 1.1.0 - postcss: 7.0.39 - dev: true - - /csso@4.2.0: - resolution: - { - integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==, - } - engines: { node: ">=8.0.0" } - dependencies: - css-tree: 1.1.3 - dev: true - - /cyclist@1.0.1: - resolution: - { - integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==, - } - dev: true - - /damerau-levenshtein@1.0.8: - resolution: - { - integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, - } - dev: true - - /debug@2.6.9(supports-color@6.1.0): - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - supports-color: 6.1.0 + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.22.0 dev: true /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.1.3 - dev: true + dev: false /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.1.2 - dev: true - - /decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /decode-uri-component@0.2.2: - resolution: - { - integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==, - } - engines: { node: ">=0.10" } - dev: true - - /dedent@0.7.0: - resolution: - { - integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, - } - dev: true /deep-equal@2.2.1: - resolution: - { - integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==, - } + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -3819,369 +1851,104 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.9 - dev: true + dev: false /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } - dev: true - - /deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } - dev: true - - /define-properties@1.2.0: - resolution: - { - integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, - } - engines: { node: ">= 0.4" } - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /define-property@0.2.5: - resolution: - { - integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-descriptor: 0.1.6 - dev: true + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /define-property@1.0.0: - resolution: - { - integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==, - } - engines: { node: ">=0.10.0" } + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} dependencies: - is-descriptor: 1.0.2 - dev: true + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: false - /define-property@2.0.2: - resolution: - { - integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==, - } - engines: { node: ">=0.10.0" } + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: true + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: false - /defined@1.0.1: - resolution: - { - integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==, - } + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} dev: false - /des.js@1.0.1: - resolution: - { - integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==, - } + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - - /detect-file@1.0.0: - resolution: - { - integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==, - } - engines: { node: ">=0.10.0" } - dev: true - - /detect-indent@6.1.0: - resolution: - { - integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, - } - engines: { node: ">=8" } - dev: true + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false - /detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } + /defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: true /detective@5.2.1: - resolution: - { - integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} hasBin: true dependencies: acorn-node: 1.8.2 defined: 1.0.1 - minimist: 1.2.8 - dev: false - - /didyoumean@1.2.2: - resolution: - { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, - } - dev: false - - /diff-sequences@29.4.3: - resolution: - { - integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + minimist: 1.2.7 dev: true - /diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } - - /diffie-hellman@5.0.3: - resolution: - { - integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==, - } - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, - } + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 - dev: true + dev: false /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: true - - /dom-accessibility-api@0.5.16: - resolution: - { - integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, - } - dev: true - - /dom-serializer@0.2.2: - resolution: - { - integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==, - } - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 - dev: true - /domain-browser@1.2.0: - resolution: - { - integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==, - } - engines: { node: ">=0.4", npm: ">=1.2" } - dev: true - - /domelementtype@1.3.1: - resolution: - { - integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==, - } - dev: true - - /domelementtype@2.3.0: - resolution: - { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, - } - dev: true - - /domutils@1.7.0: - resolution: - { - integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==, - } - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - dev: true - - /dot-prop@5.3.0: - resolution: - { - integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, - } - engines: { node: ">=8" } - dependencies: - is-obj: 2.0.0 - dev: true - - /duplexify@3.7.1: - resolution: - { - integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==, - } - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.1 - dev: true - - /electron-to-chromium@1.4.378: - resolution: - { - integrity: sha512-RfCD26kGStl6+XalfX3DGgt3z2DNwJS5DKRHCpkPq5T/PqpZMPB1moSRXuK9xhkt/sF57LlpzJgNoYl7mO7Z6w==, - } - - /elliptic@6.5.4: - resolution: - { - integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==, - } - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true - - /emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } - dev: true - - /emoji-regex@7.0.3: - resolution: - { - integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==, - } + /electron-to-chromium@1.4.397: + resolution: {integrity: sha512-jwnPxhh350Q/aMatQia31KAIQdhEsYS0fFZ0BQQlN9tfvOEwShu6ZNwI4kL/xBabjcB/nTy6lSt17kNIluJZ8Q==} dev: true /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true /emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - dev: true - - /emojis-list@3.0.0: - resolution: - { - integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==, - } - engines: { node: ">= 4" } - dev: true - - /end-of-stream@1.4.4: - resolution: - { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, - } - dependencies: - once: 1.4.0 - dev: true + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false - /enhanced-resolve@4.5.0: - resolution: - { - integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==, - } - engines: { node: ">=6.9.0" } + /enhanced-resolve@5.14.1: + resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 - memory-fs: 0.5.0 - tapable: 1.1.3 - dev: true - - /entities@2.2.0: - resolution: - { - integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, - } - dev: true - - /errno@0.1.8: - resolution: - { - integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, - } - hasBin: true - dependencies: - prr: 1.0.1 - dev: true - - /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } - dependencies: - is-arrayish: 0.2.1 + tapable: 2.2.1 + dev: false /es-abstract@1.21.2: - resolution: - { - integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 available-typed-arrays: 1.0.5 @@ -4189,7 +1956,7 @@ packages: es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -4217,23 +1984,13 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.9 - dev: true - - /es-array-method-boxes-properly@1.0.0: - resolution: - { - integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==, - } - dev: true + dev: false /es-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==, - } + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -4241,152 +1998,164 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true + dev: false /es-set-tostringtag@2.0.1: - resolution: - { - integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 - dev: true + dev: false /es-shim-unscopables@1.0.0: - resolution: - { - integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, - } + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - dev: true + dev: false /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true + dev: false - /es6-promise@3.3.1: - resolution: - { - integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==, - } + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: true /escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } - - /escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} dev: true /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } - dev: true - - /eslint-config-kentcdodds@20.5.0(eslint@8.39.0)(jest@29.5.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-vJGvi6Lxg1okngTvmDw4IJarAqpu4YF0eXxvgtMKN6hDpj9QQHVPd0BmcVuSdObBwJAuy6Q156sSTyUUHsmkEg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: ">=6", yarn: ">=1" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-next@13.4.1(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-ajuxjCkW1hvirr0EQZb3/B/bFH52Z7CT89uCtTcICFL9l30i5c8hN4p0LXvTjdOXNPV5fEDcxBgGHgXdzTj1/A==} peerDependencies: - eslint: ^8.0.0 - typescript: ^4.0.0 + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' peerDependenciesMeta: typescript: optional: true dependencies: - "@rushstack/eslint-patch": 1.2.0 - "@typescript-eslint/eslint-plugin": 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@4.9.5) - "@typescript-eslint/parser": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - eslint: 8.39.0 - eslint-config-prettier: 8.8.0(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint@8.39.0) - eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.59.2)(eslint@8.39.0)(jest@29.5.0)(typescript@4.9.5) - eslint-plugin-jest-dom: 4.0.3(eslint@8.39.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) - eslint-plugin-react: 7.32.2(eslint@8.39.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) - eslint-plugin-testing-library: 5.10.3(eslint@8.39.0)(typescript@4.9.5) - read-pkg-up: 7.0.1 - semver: 7.5.0 - typescript: 4.9.5 + '@next/eslint-plugin-next': 13.4.1 + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/parser': 5.59.8(eslint@8.41.0)(typescript@5.0.4) + eslint: 8.41.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.41.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.41.0) + eslint-plugin-react: 7.32.2(eslint@8.41.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0) + typescript: 5.0.4 transitivePeerDependencies: - - eslint-import-resolver-typescript - eslint-import-resolver-webpack - - jest - supports-color - dev: true + dev: false - /eslint-config-prettier@8.8.0(eslint@8.39.0): - resolution: - { - integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==, - } + /eslint-config-prettier@8.8.0(eslint@8.41.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: - eslint: ">=7.0.0" + eslint: '>=7.0.0' dependencies: - eslint: 8.39.0 - dev: true + eslint: 8.41.0 + dev: false + + /eslint-config-turbo@1.9.3(eslint@8.41.0): + resolution: {integrity: sha512-QG6jxFQkrGSpQqlFKefPdtgUfr20EbU0s4tGGIuGFOcPuJEdsY6VYZpZUxNJvmMcTGqPgMyOPjAFBKhy/DPHLA==} + peerDependencies: + eslint: '>6.6.0' + dependencies: + eslint: 8.41.0 + eslint-plugin-turbo: 1.9.3(eslint@8.41.0) + dev: false /eslint-import-resolver-node@0.3.7: - resolution: - { - integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==, - } + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.12.0 + is-core-module: 2.12.1 resolve: 1.22.2 transitivePeerDependencies: - supports-color - dev: true + dev: false + + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.41.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.14.1 + eslint: 8.41.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0) + get-tsconfig: 4.6.0 + globby: 13.1.4 + is-core-module: 2.12.1 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0): - resolution: - { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, - } - engines: { node: ">=4" } + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' peerDependenciesMeta: - "@typescript-eslint/parser": + '@typescript-eslint/parser': optional: true eslint: optional: true @@ -4397,38 +2166,36 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - "@typescript-eslint/parser": 5.59.2(eslint@8.39.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.8(eslint@8.41.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.39.0 + eslint: 8.41.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.41.0) transitivePeerDependencies: - supports-color - dev: true + dev: false - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.2)(eslint@8.39.0): - resolution: - { - integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==, - } - engines: { node: ">=4" } + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} peerDependencies: - "@typescript-eslint/parser": "*" + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 peerDependenciesMeta: - "@typescript-eslint/parser": + '@typescript-eslint/parser': optional: true dependencies: - "@typescript-eslint/parser": 5.59.2(eslint@8.39.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.8(eslint@8.41.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.39.0 + eslint: 8.41.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.41.0) has: 1.0.3 - is-core-module: 2.12.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -4439,67 +2206,24 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - - /eslint-plugin-jest-dom@4.0.3(eslint@8.39.0): - resolution: - { - integrity: sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: ">=6", yarn: ">=1" } - peerDependencies: - eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 - dependencies: - "@babel/runtime": 7.21.5 - "@testing-library/dom": 8.20.0 - eslint: 8.39.0 - requireindex: 1.2.0 - dev: true - - /eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.59.2)(eslint@8.39.0)(jest@29.5.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - jest: "*" - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - jest: - optional: true - dependencies: - "@typescript-eslint/eslint-plugin": 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@4.9.5) - "@typescript-eslint/utils": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - eslint: 8.39.0 - jest: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - transitivePeerDependencies: - - supports-color - - typescript - dev: true + dev: false - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.39.0): - resolution: - { - integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==, - } - engines: { node: ">=4.0" } + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.41.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - "@babel/runtime": 7.21.5 + '@babel/runtime': 7.22.3 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.7.0 + axe-core: 4.7.2 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.39.0 + eslint: 8.41.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -4507,26 +2231,50 @@ packages: object.entries: 1.1.6 object.fromentries: 2.0.6 semver: 6.3.0 - dev: true + dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.39.0): - resolution: - { - integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, - } - engines: { node: ">=10" } + /eslint-plugin-react-hooks@4.6.0(eslint@8.41.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.39.0 + eslint: 8.41.0 + + /eslint-plugin-react-refresh@0.4.1(eslint@8.41.0): + resolution: {integrity: sha512-QgrvtRJkmV+m4w953LS146+6RwEe5waouubFVNLBfOjXJf6MLczjymO8fOcKj9jMS8aKkTCMJqiPu2WEeFI99A==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: 8.41.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.39.0): - resolution: - { - integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==, - } - engines: { node: ">=4" } + /eslint-plugin-react@7.28.0(eslint@8.41.0): + resolution: {integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + doctrine: 2.1.0 + eslint: 8.41.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-plugin-react@7.32.2(eslint@8.41.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: @@ -4534,7 +2282,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.39.0 + eslint: 8.41.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -4546,80 +2294,109 @@ packages: resolve: 2.0.0-next.4 semver: 6.3.0 string.prototype.matchall: 4.0.8 - dev: true + dev: false - /eslint-plugin-testing-library@5.10.3(eslint@8.39.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: ">=6" } + /eslint-plugin-turbo@1.9.3(eslint@8.41.0): + resolution: {integrity: sha512-ZsRtksdzk3v+z5/I/K4E50E4lfZ7oYmLX395gkrUMBz4/spJlYbr+GC8hP9oVNLj9s5Pvnm9rLv/zoj5PVYaVw==} peerDependencies: - eslint: ^7.5.0 || ^8.0.0 + eslint: '>6.6.0' dependencies: - "@typescript-eslint/utils": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - eslint: 8.39.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true + eslint: 8.41.0 + dev: false - /eslint-scope@4.0.3: - resolution: - { - integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==, - } - engines: { node: ">=4.0.0" } + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 dev: true - /eslint-scope@5.1.1: - resolution: - { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, - } - engines: { node: ">=8.0.0" } + /eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 4.3.0 + estraverse: 5.3.0 dev: true /eslint-scope@7.2.0: - resolution: - { - integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + + /eslint-visitor-keys@3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@3.4.0: - resolution: - { - integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint@8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.3.0(eslint@8.36.0) + '@eslint-community/regexpp': 4.4.0 + '@eslint/eslintrc': 2.0.1 + '@eslint/js': 8.36.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.5.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint@8.39.0: - resolution: - { - integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /eslint@8.40.0: + resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.39.0) - "@eslint-community/regexpp": 4.5.1 - "@eslint/eslintrc": 2.0.2 - "@eslint/js": 8.39.0 - "@humanwhocodes/config-array": 0.11.8 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.40.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -4627,8 +2404,8 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4657,130 +2434,98 @@ packages: - supports-color dev: true - /espree@9.5.1: - resolution: - { - integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.41.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree@9.5.0: + resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.3.0 dev: true - /esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - dev: true + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true /estraverse@4.3.0: - resolution: - { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} dev: true /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } - dev: true - - /estree-walker@0.2.1: - resolution: - { - integrity: sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ==, - } - dev: true - - /estree-walker@0.6.1: - resolution: - { - integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==, - } - dev: true - - /estree-walker@1.0.1: - resolution: - { - integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==, - } - dev: true - - /estree-walker@2.0.2: - resolution: - { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, - } - dev: true + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } - dev: true - - /eventemitter3@4.0.7: - resolution: - { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, - } - dev: true - - /events@3.3.0: - resolution: - { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, - } - engines: { node: ">=0.8.x" } - dev: true - - /evp_bytestokey@1.0.3: - resolution: - { - integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==, - } - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: true + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -4791,563 +2536,174 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: ">= 0.8.0" } - dev: true - - /expand-brackets@2.1.4(supports-color@6.1.0): - resolution: - { - integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==, - } - engines: { node: ">=0.10.0" } - dependencies: - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /expand-tilde@2.0.2: - resolution: - { - integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==, - } - engines: { node: ">=0.10.0" } - dependencies: - homedir-polyfill: 1.0.3 - dev: true - - /expect@29.5.0: - resolution: - { - integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/expect-utils": 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true - - /extend-shallow@2.0.1: - resolution: - { - integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow@3.0.2: - resolution: - { - integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==, - } - engines: { node: ">=0.10.0" } - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true - - /extglob@2.0.4(supports-color@6.1.0): - resolution: - { - integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==, - } - engines: { node: ">=0.10.0" } + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4(supports-color@6.1.0) - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - dev: true + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} /fast-glob@3.2.12: - resolution: - { - integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, - } - engines: { node: ">=8.6.0" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } - dev: true + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } - dev: true - - /fastparse@1.1.2: - resolution: - { - integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==, - } - dev: true + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} /fastq@1.15.0: - resolution: - { - integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, - } + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } - dependencies: - bser: 2.1.1 - dev: true - - /figgy-pudding@3.5.2: - resolution: - { - integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==, - } - dev: true - - /figma-api-stub@0.0.56: - resolution: - { - integrity: sha512-tS4TC0mBky+OQPfv+IWyNWURvPBZ74LBSstHmoKgl+Nd8e1dbkKIURENy9AgViEnJqlt5Tqmv6/RYXFT/mmL5g==, - } - dependencies: - clone-deep: 4.0.1 - nanoid: 3.3.6 - rxjs: 6.6.7 - dev: true - - /figma-plugin-ds-svelte@1.4.3: - resolution: - { - integrity: sha512-a/8CHjsNiGD/cMItH0Tk0apyw/Fzgo6NsuywdEB89HDU5RWlgzGjeeHoIbyGjGBErJwxfGTGmzhn9afBFKp9eQ==, - } + /fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} dependencies: - svelte-click-outside: 1.0.0 - dev: true + format: 0.2.2 + dev: false /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: true - - /file-loader@6.2.0(webpack@4.46.0): - resolution: - { - integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==, - } - engines: { node: ">= 10.13.0" } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.1.2 - webpack: 4.46.0(webpack-cli@3.3.12) - dev: true - - /file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - dev: true - optional: true - - /fill-range@4.0.0: - resolution: - { - integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /find-cache-dir@2.1.0: - resolution: - { - integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==, - } - engines: { node: ">=6" } - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: true - - /find-up@3.0.0: - resolution: - { - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, - } - engines: { node: ">=6" } - dependencies: - locate-path: 3.0.0 - dev: true - - /find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - - /findup-sync@3.0.0(supports-color@6.1.0): - resolution: - { - integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==, - } - engines: { node: ">= 0.10" } - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 3.1.10(supports-color@6.1.0) - resolve-dir: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: true /flat-cache@3.0.4: - resolution: - { - integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true /flatted@3.2.7: - resolution: - { - integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, - } - dev: true - - /flush-write-stream@1.1.1: - resolution: - { - integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==, - } - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true - - /for-in@1.0.2: - resolution: - { - integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /fragment-cache@0.2.1: - resolution: - { - integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==, - } - engines: { node: ">=0.10.0" } - dependencies: - map-cache: 0.2.2 - dev: true - - /from2@2.3.0: - resolution: - { - integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==, - } - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true + dev: false - /fs-extra@10.1.0: - resolution: - { - integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, - } - engines: { node: ">=12" } - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} dev: false - /fs-write-stream-atomic@1.0.10: - resolution: - { - integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==, - } - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 + /fraction.js@4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - /fsevents@1.2.13: - resolution: - { - integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==, - } - engines: { node: ">= 4.0" } - os: [darwin] - deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.17.0 - dev: true - optional: true + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents@2.3.2: - resolution: - { - integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true /function-bind@1.1.1: - resolution: - { - integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, - } + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} /function.prototype.name@1.1.5: - resolution: - { - integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 functions-have-names: 1.2.3 - dev: true + dev: false /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } - dev: true - - /generic-names@2.0.1: - resolution: - { - integrity: sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==, - } - dependencies: - loader-utils: 1.4.2 - dev: true + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false /gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} dev: true /get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.2.0: - resolution: - { - integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, - } + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 - dev: true - - /get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } - dev: true - - /get-port@3.2.0: - resolution: - { - integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==, - } - engines: { node: ">=4" } dev: false - /get-stdin@8.0.0: - resolution: - { - integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==, - } - engines: { node: ">=10" } - dev: true - /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } - dev: true + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} /get-symbol-description@1.0.0: - resolution: - { - integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: true - - /get-value@2.0.6: - resolution: - { - integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==, - } - engines: { node: ">=0.10.0" } - dev: true + get-intrinsic: 1.2.1 + dev: false - /glob-parent@3.1.0: - resolution: - { - integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==, - } + /get-tsconfig@4.6.0: + resolution: {integrity: sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==} dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - dev: true - optional: true + resolve-pkg-maps: 1.0.0 + dev: false /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 /glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5356,88 +2712,48 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-modules@1.0.0: - resolution: - { - integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==, - } - engines: { node: ">=0.10.0" } + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: true + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false - /global-modules@2.0.0: - resolution: - { - integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==, - } - engines: { node: ">=6" } + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: - global-prefix: 3.0.0 - dev: true - - /global-prefix@1.0.2: - resolution: - { - integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==, - } - engines: { node: ">=0.10.0" } - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: true - - /global-prefix@3.0.0: - resolution: - { - integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==, - } - engines: { node: ">=6" } - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: true + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 /globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} dev: true /globals@13.20.0: - resolution: - { - integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: true /globalthis@1.0.3: - resolution: - { - integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 - dev: true + dev: false /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -5445,5184 +2761,1239 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true + + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: false /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.0 - dev: true + get-intrinsic: 1.2.1 + dev: false /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false /grapheme-splitter@1.0.4: - resolution: - { - integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, - } + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /has-ansi@2.0.0: - resolution: - { - integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, - } - engines: { node: ">=0.10.0" } - dependencies: - ansi-regex: 2.1.1 - dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, - } - dev: true - - /has-flag@1.0.0: - resolution: - { - integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==, - } - engines: { node: ">=0.10.0" } - dev: true + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} /has-property-descriptors@1.0.0: - resolution: - { - integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, - } + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.2.0 - dev: true + get-intrinsic: 1.2.1 + dev: false /has-proto@1.0.1: - resolution: - { - integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, - } - engines: { node: ">= 0.4" } - dev: true + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false /has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: ">= 0.4" } - dev: true + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false /has-tostringtag@1.0.0: - resolution: - { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true - - /has-value@0.3.1: - resolution: - { - integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==, - } - engines: { node: ">=0.10.0" } - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value@1.0.0: - resolution: - { - integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==, - } - engines: { node: ">=0.10.0" } - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values@0.1.4: - resolution: - { - integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /has-values@1.0.0: - resolution: - { - integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true + dev: false /has@1.0.3: - resolution: - { - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, - } - engines: { node: ">= 0.4.0" } + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hash-base@3.1.0: - resolution: - { - integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==, - } - engines: { node: ">=4" } - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /hash.js@1.1.7: - resolution: - { - integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, - } - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - - /hex-color-regex@1.1.0: - resolution: - { - integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==, - } - - /hmac-drbg@1.0.1: - resolution: - { - integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, - } - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: true + /hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + dev: false - /homedir-polyfill@1.0.3: - resolution: - { - integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==, - } - engines: { node: ">=0.10.0" } + /hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} dependencies: - parse-passwd: 1.0.0 - dev: true - - /hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } - dev: true - - /hsl-regex@1.0.0: - resolution: - { - integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==, - } - - /hsla-regex@1.0.0: - resolution: - { - integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==, - } - - /html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } - dev: true - - /html-tags@3.3.1: - resolution: - { - integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, - } - engines: { node: ">=8" } + '@types/hast': 2.3.4 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 dev: false - /https-browserify@1.0.0: - resolution: - { - integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==, - } - dev: true + /highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } - dev: true - - /icss-replace-symbols@1.1.0: - resolution: - { - integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==, - } - dev: true - - /icss-utils@4.1.1: - resolution: - { - integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==, - } - engines: { node: ">= 6" } - dependencies: - postcss: 7.0.39 - dev: true - - /ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - dev: true + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - /iferr@0.1.5: - resolution: - { - integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==, - } - dev: true + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: false /ignore@5.2.4: - resolution: - { - integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, - } - engines: { node: ">= 4" } - dev: true - - /immutable@4.3.0: - resolution: - { - integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==, - } - dev: true - - /import-cwd@2.1.0: - resolution: - { - integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==, - } - engines: { node: ">=4" } - dependencies: - import-from: 2.1.0 - dev: true - - /import-cwd@3.0.0: - resolution: - { - integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==, - } - engines: { node: ">=8" } - dependencies: - import-from: 3.0.0 - dev: true - - /import-fresh@2.0.0: - resolution: - { - integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==, - } - engines: { node: ">=4" } - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 - dev: true + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-from@2.1.0: - resolution: - { - integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==, - } - engines: { node: ">=4" } - dependencies: - resolve-from: 3.0.0 - dev: true - - /import-from@3.0.0: - resolution: - { - integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==, - } - engines: { node: ">=8" } - dependencies: - resolve-from: 5.0.0 - dev: true - - /import-local@2.0.0: - resolution: - { - integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==, - } - engines: { node: ">=6" } - hasBin: true - dependencies: - pkg-dir: 3.0.0 - resolve-cwd: 2.0.0 - dev: true - - /import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } - dev: true - - /indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } - dev: true - - /indexes-of@1.0.1: - resolution: - { - integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==, - } - dev: true - - /infer-owner@1.0.4: - resolution: - { - integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==, - } - dev: true + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.1: - resolution: - { - integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==, - } - dev: true - - /inherits@2.0.3: - resolution: - { - integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==, - } - dev: true - /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - /ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } - dev: true + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} /internal-slot@1.0.5: - resolution: - { - integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 - dev: true - - /interpret@1.4.0: - resolution: - { - integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==, - } - engines: { node: ">= 0.10" } - dev: true - - /is-absolute-url@2.1.0: - resolution: - { - integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==, - } - engines: { node: ">=0.10.0" } - dev: true + dev: false - /is-accessor-descriptor@0.1.6: - resolution: - { - integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==, - } - engines: { node: ">=0.10.0" } - dependencies: - kind-of: 3.2.2 - dev: true + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: false - /is-accessor-descriptor@1.0.0: - resolution: - { - integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==, - } - engines: { node: ">=0.10.0" } + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: - kind-of: 6.0.3 - dev: true + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: false /is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true + dev: false /is-array-buffer@3.0.2: - resolution: - { - integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, - } + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-typed-array: 1.1.10 - dev: true - - /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } - - /is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } + dev: false /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, - } + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true - - /is-binary-path@1.0.1: - resolution: - { - integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==, - } - engines: { node: ">=0.10.0" } - dependencies: - binary-extensions: 1.13.1 - dev: true - optional: true + dev: false /is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 /is-boolean-object@1.1.2: - resolution: - { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - - /is-buffer@1.1.6: - resolution: - { - integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, - } - dev: true + dev: false /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-color-stop@1.1.0: - resolution: - { - integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==, - } - dependencies: - css-color-names: 0.0.4 - hex-color-regex: 1.1.0 - hsl-regex: 1.0.0 - hsla-regex: 1.0.0 - rgb-regex: 1.0.1 - rgba-regex: 1.0.0 - - /is-core-module@2.12.0: - resolution: - { - integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==, - } - dependencies: - has: 1.0.3 - - /is-data-descriptor@0.1.4: - resolution: - { - integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==, - } - engines: { node: ">=0.10.0" } - dependencies: - kind-of: 3.2.2 - dev: true + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false - /is-data-descriptor@1.0.0: - resolution: - { - integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==, - } - engines: { node: ">=0.10.0" } + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: - kind-of: 6.0.3 - dev: true + has: 1.0.3 /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true - - /is-descriptor@0.1.6: - resolution: - { - integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor@1.0.2: - resolution: - { - integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true + dev: false - /is-directory@0.3.1: - resolution: - { - integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==, - } - engines: { node: ">=0.10.0" } - dev: true + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: false - /is-extendable@0.1.1: - resolution: - { - integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, - } - engines: { node: ">=0.10.0" } - dev: true + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false - /is-extendable@1.0.1: - resolution: - { - integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-plain-object: 2.0.4 - dev: true + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - - /is-fullwidth-code-point@2.0.0: - resolution: - { - integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, - } - engines: { node: ">=4" } - dev: true + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - dev: true - - /is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} dev: true - /is-glob@3.1.0: - resolution: - { - integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==, - } - engines: { node: ">=0.10.0" } + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true - optional: true - /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: false + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true dependencies: - is-extglob: 2.1.1 + is-docker: 3.0.0 + dev: false /is-map@2.0.2: - resolution: - { - integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, - } - dev: true - - /is-module@1.0.0: - resolution: - { - integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, - } - dev: true + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: false /is-negative-zero@2.0.2: - resolution: - { - integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, - } - engines: { node: ">= 0.4" } - dev: true + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true - - /is-number@3.0.0: - resolution: - { - integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==, - } - engines: { node: ">=0.10.0" } - dependencies: - kind-of: 3.2.2 - dev: true + dev: false /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - - /is-obj@2.0.0: - resolution: - { - integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, - } - engines: { node: ">=8" } - dev: true + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: ">=8" } - dev: true - - /is-plain-obj@1.1.0: - resolution: - { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } - dependencies: - isobject: 3.0.1 - dev: true - - /is-reference@1.2.1: - resolution: - { - integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, - } - dependencies: - "@types/estree": 1.0.1 - dev: true + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true - - /is-resolvable@1.1.0: - resolution: - { - integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==, - } - dev: true + dev: false /is-set@2.0.2: - resolution: - { - integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, - } - dev: true + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: false /is-shared-array-buffer@1.0.2: - resolution: - { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, - } + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - dev: true + dev: false /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } - dev: true + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true + dev: false /is-symbol@1.0.4: - resolution: - { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true + dev: false /is-typed-array@1.1.10: - resolution: - { - integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true + dev: false /is-weakmap@2.0.1: - resolution: - { - integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, - } - dev: true + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: false /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, - } + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 - dev: true + dev: false /is-weakset@2.0.2: - resolution: - { - integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, - } + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: true - - /is-windows@1.0.2: - resolution: - { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /is-wsl@1.1.0: - resolution: - { - integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==, - } - engines: { node: ">=4" } - dev: true + get-intrinsic: 1.2.1 + dev: false - /isarray@1.0.0: - resolution: - { - integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, - } - dev: true + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false /isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, - } - dev: true + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - dev: true + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isobject@2.1.0: - resolution: - { - integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==, - } - engines: { node: ">=0.10.0" } - dependencies: - isarray: 1.0.0 - dev: true + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true - /isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} dev: true - /istanbul-lib-coverage@3.2.0: - resolution: - { - integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==, - } - engines: { node: ">=8" } + /js-sdsl@4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} dev: true - /istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/core": 7.21.5 - "@babel/parser": 7.21.5 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: true - /istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==, - } - engines: { node: ">=8" } - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: ">=10" } - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: - { - integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==, - } - engines: { node: ">=8" } - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jest-changed-files@29.5.0: - resolution: - { - integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.5.0: - resolution: - { - integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/expect": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): - resolution: - { - integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0(ts-node@10.9.1) - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): - resolution: - { - integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - dependencies: - "@babel/core": 7.21.5 - "@jest/test-sequencer": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - babel-jest: 29.5.0(@babel/core@7.21.5) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.3)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-diff@29.5.0: - resolution: - { - integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-docblock@29.4.3: - resolution: - { - integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.5.0: - resolution: - { - integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /jest-environment-node@29.5.0: - resolution: - { - integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/fake-timers": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /jest-get-type@29.4.3: - resolution: - { - integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-haste-map@29.5.0: - resolution: - { - integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/graceful-fs": 4.1.6 - "@types/node": 18.16.3 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-leak-detector@29.5.0: - resolution: - { - integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-matcher-utils@29.5.0: - resolution: - { - integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-message-util@29.5.0: - resolution: - { - integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/code-frame": 7.21.4 - "@jest/types": 29.5.0 - "@types/stack-utils": 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@29.5.0: - resolution: - { - integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.5.0 - dev: true - - /jest-regex-util@29.4.3: - resolution: - { - integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-resolve-dependencies@29.5.0: - resolution: - { - integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.5.0: - resolution: - { - integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.5.0: - resolution: - { - integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.5.0 - "@jest/environment": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.5.0: - resolution: - { - integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/fake-timers": 29.5.0 - "@jest/globals": 29.5.0 - "@jest/source-map": 29.4.3 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.5.0: - resolution: - { - integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/core": 7.21.5 - "@babel/generator": 7.21.5 - "@babel/plugin-syntax-jsx": 7.21.4(@babel/core@7.21.5) - "@babel/plugin-syntax-typescript": 7.21.4(@babel/core@7.21.5) - "@babel/traverse": 7.21.5 - "@babel/types": 7.21.5 - "@jest/expect-utils": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/babel__traverse": 7.18.5 - "@types/prettier": 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.5) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@29.5.0: - resolution: - { - integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.5.0: - resolution: - { - integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true - - /jest-watcher@29.5.0: - resolution: - { - integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.16.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true - - /jest-worker@26.6.2: - resolution: - { - integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==, - } - engines: { node: ">= 10.13.0" } - dependencies: - "@types/node": 18.16.3 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true - - /jest-worker@29.5.0: - resolution: - { - integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@types/node": 18.16.3 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): - resolution: - { - integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0(ts-node@10.9.1) - "@jest/types": 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /js-sdsl@4.4.0: - resolution: - { - integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==, - } - dev: true - - /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - - /js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, - } - engines: { node: ">=4" } - hasBin: true - dev: true - - /json-parse-better-errors@1.0.2: - resolution: - { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, - } - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - - /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } - dev: true - - /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } - hasBin: true - dev: true - - /jsonfile@6.1.0: - resolution: - { - integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, - } - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsx-ast-utils@3.3.3: - resolution: - { - integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==, - } - engines: { node: ">=4.0" } - dependencies: - array-includes: 3.1.6 - object.assign: 4.1.4 - dev: true - - /kind-of@3.2.2: - resolution: - { - integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@4.0.0: - resolution: - { - integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@5.1.0: - resolution: - { - integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==, - } - engines: { node: ">=0.10.0" } - dev: true - - /kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } - dev: true - - /kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } - - /language-subtag-registry@0.3.22: - resolution: - { - integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, - } - dev: true - - /language-tags@1.0.5: - resolution: - { - integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==, - } - dependencies: - language-subtag-registry: 0.3.22 - dev: true - - /leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } - dev: true - - /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } - dev: false - - /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - - /livereload-js@3.4.1: - resolution: - { - integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==, - } - dev: true - - /livereload@0.9.3: - resolution: - { - integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==, - } - engines: { node: ">=8.0.0" } - hasBin: true - dependencies: - chokidar: 3.5.3 - livereload-js: 3.4.1 - opts: 2.0.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /loader-runner@2.4.0: - resolution: - { - integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==, - } - engines: { node: ">=4.3.0 <5.0.0 || >=5.10" } - dev: true - - /loader-utils@1.4.2: - resolution: - { - integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==, - } - engines: { node: ">=4.0.0" } - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - dev: true - - /loader-utils@2.0.4: - resolution: - { - integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==, - } - engines: { node: ">=8.9.0" } - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - dev: true - - /local-access@1.1.0: - resolution: - { - integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==, - } - engines: { node: ">=6" } - dev: false - - /locate-path@3.0.0: - resolution: - { - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, - } - engines: { node: ">=6" } - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.camelcase@4.3.0: - resolution: - { - integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, - } - dev: true - - /lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } - dev: true - - /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - dev: true - - /lodash.topath@4.5.2: - resolution: - { - integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==, - } - dev: false - - /lodash.uniq@4.5.0: - resolution: - { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, - } - dev: true - - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - - /loglevel-colored-level-prefix@1.0.0: - resolution: - { - integrity: sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==, - } - dependencies: - chalk: 1.1.3 - loglevel: 1.8.1 - dev: true - - /loglevel@1.8.1: - resolution: - { - integrity: sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==, - } - engines: { node: ">= 0.6.0" } - dev: true - - /loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: true - - /lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: ">=10" } - dependencies: - yallist: 4.0.0 - dev: true - - /lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, - } - hasBin: true - dev: true - - /magic-string@0.25.9: - resolution: - { - integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, - } - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, - } - engines: { node: ">=6" } - dependencies: - pify: 4.0.1 - semver: 5.7.1 - dev: true - - /make-dir@3.1.0: - resolution: - { - integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, - } - engines: { node: ">=8" } - dependencies: - semver: 6.3.0 - dev: true - - /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - - /make-plural@7.2.0: - resolution: - { - integrity: sha512-WkdI+iaWaBCFM2wUXwos8Z7spg5Dt64Xe/VI6NpRaly21cDtD76N6S97K//UtzV0dHOiXX+E90TnszdXHG0aMg==, - } - dev: true - - /makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } - dependencies: - tmpl: 1.0.5 - dev: true - - /map-cache@0.2.2: - resolution: - { - integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /map-obj@4.3.0: - resolution: - { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, - } - engines: { node: ">=8" } - dev: true - - /map-visit@1.0.0: - resolution: - { - integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==, - } - engines: { node: ">=0.10.0" } - dependencies: - object-visit: 1.0.1 - dev: true - - /md5.js@1.3.5: - resolution: - { - integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==, - } - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /mdn-data@2.0.14: - resolution: - { - integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, - } - dev: true - - /mdn-data@2.0.4: - resolution: - { - integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==, - } - dev: true - - /memory-fs@0.4.1: - resolution: - { - integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==, - } - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true - - /memory-fs@0.5.0: - resolution: - { - integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==, - } - engines: { node: ">=4.3.0 <5.0.0 || >=5.10" } - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true - - /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - dev: true - - /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } - - /micromatch@3.1.10(supports-color@6.1.0): - resolution: - { - integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2(supports-color@6.1.0) - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4(supports-color@6.1.0) - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13(supports-color@6.1.0) - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: ">=8.6" } - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /miller-rabin@4.0.1: - resolution: - { - integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==, - } - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - - /mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } - dev: true - - /mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } - dependencies: - mime-db: 1.52.0 - dev: true - - /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } - dev: true - - /min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } - dev: true - - /mini-css-extract-plugin@0.9.0(webpack@4.46.0): - resolution: - { - integrity: sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==, - } - engines: { node: ">= 6.9.0" } - peerDependencies: - webpack: ^4.4.0 - dependencies: - loader-utils: 1.4.2 - normalize-url: 1.9.1 - schema-utils: 1.0.0 - webpack: 4.46.0(webpack-cli@3.3.12) - webpack-sources: 1.4.3 - dev: true - - /mini-svg-data-uri@1.4.4: - resolution: - { - integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, - } - hasBin: true - dev: true - - /minimalistic-assert@1.0.1: - resolution: - { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, - } - dev: true - - /minimalistic-crypto-utils@1.0.1: - resolution: - { - integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, - } - dev: true - - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - dependencies: - brace-expansion: 1.1.11 - - /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - - /mississippi@3.0.0: - resolution: - { - integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==, - } - engines: { node: ">=4.0.0" } - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 3.0.0 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - dev: true - - /mixin-deep@1.3.2: - resolution: - { - integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==, - } - engines: { node: ">=0.10.0" } - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - - /mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /modern-normalize@1.1.0: - resolution: - { - integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==, - } - engines: { node: ">=6" } - dev: false - - /moo@0.5.2: - resolution: - { - integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==, - } - dev: true - - /move-concurrently@1.0.1: - resolution: - { - integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==, - } - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - dev: true - - /mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: ">=4" } - dev: false - - /mrmime@1.0.1: - resolution: - { - integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, - } - engines: { node: ">=10" } - dev: false - - /ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } - dev: true - - /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - dev: true - - /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - dev: true - - /nan@2.17.0: - resolution: - { - integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==, - } - dev: true - optional: true - - /nanoid@3.3.6: - resolution: - { - integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - /nanomatch@1.2.13(supports-color@6.1.0): - resolution: - { - integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /natural-compare-lite@1.4.0: - resolution: - { - integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, - } - dev: true - - /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } - dev: true - - /neo-async@2.6.2: - resolution: - { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, - } - dev: true - - /nice-try@1.0.5: - resolution: - { - integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, - } - dev: true - - /node-emoji@1.11.0: - resolution: - { - integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==, - } - dependencies: - lodash: 4.17.21 - dev: false - - /node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } - dev: true - - /node-libs-browser@2.2.1: - resolution: - { - integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==, - } - dependencies: - assert: 1.5.0 - browserify-zlib: 0.2.0 - buffer: 4.9.2 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - crypto-browserify: 3.12.0 - domain-browser: 1.2.0 - events: 3.3.0 - https-browserify: 1.0.0 - os-browserify: 0.3.0 - path-browserify: 0.0.1 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 2.3.8 - stream-browserify: 2.0.2 - stream-http: 2.8.3 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.0 - url: 0.11.0 - util: 0.11.1 - vm-browserify: 1.1.2 - dev: true - - /node-releases@2.0.10: - resolution: - { - integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, - } - - /normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@2.1.1: - resolution: - { - integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==, - } - engines: { node: ">=0.10.0" } - dependencies: - remove-trailing-separator: 1.1.0 - dev: true - optional: true - - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - - /normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - - /normalize-url@1.9.1: - resolution: - { - integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==, - } - engines: { node: ">=4" } - dependencies: - object-assign: 4.1.1 - prepend-http: 1.0.4 - query-string: 4.3.4 - sort-keys: 1.1.2 - dev: true - - /normalize-url@3.3.0: - resolution: - { - integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==, - } - engines: { node: ">=6" } - dev: true - - /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } - dependencies: - path-key: 3.1.1 - dev: true - - /nth-check@1.0.2: - resolution: - { - integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==, - } - dependencies: - boolbase: 1.0.0 - dev: true - - /num2fraction@1.2.2: - resolution: - { - integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==, - } - - /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } - - /object-copy@0.1.0: - resolution: - { - integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - - /object-hash@2.2.0: - resolution: - { - integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==, - } - engines: { node: ">= 6" } - dev: false - - /object-inspect@1.12.3: - resolution: - { - integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, - } - dev: true - - /object-is@1.1.5: - resolution: - { - integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - dev: true - - /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: ">= 0.4" } - dev: true - - /object-visit@1.0.1: - resolution: - { - integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==, - } - engines: { node: ">=0.10.0" } - dependencies: - isobject: 3.0.1 - dev: true - - /object.assign@4.1.4: - resolution: - { - integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.entries@1.1.6: - resolution: - { - integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /object.fromentries@2.0.6: - resolution: - { - integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /object.getownpropertydescriptors@2.1.6: - resolution: - { - integrity: sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==, - } - engines: { node: ">= 0.8" } - dependencies: - array.prototype.reduce: 1.0.5 - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - safe-array-concat: 1.0.0 - dev: true - - /object.hasown@1.1.2: - resolution: - { - integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==, - } - dependencies: - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /object.pick@1.3.0: - resolution: - { - integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - isobject: 3.0.1 - dev: true - - /object.values@1.1.6: - resolution: - { - integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: true - - /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - dependencies: - wrappy: 1.0.2 - - /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } - dependencies: - mimic-fn: 2.1.0 - dev: true - - /optionator@0.9.1: - resolution: - { - integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, - } - engines: { node: ">= 0.8.0" } - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - - /opts@2.0.2: - resolution: - { - integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==, - } - dev: true - - /os-browserify@0.3.0: - resolution: - { - integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==, - } - dev: true - - /p-finally@1.0.0: - resolution: - { - integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, - } - engines: { node: ">=4" } - dev: true - - /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@3.0.0: - resolution: - { - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, - } - engines: { node: ">=6" } - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } - dependencies: - p-limit: 3.1.0 - dev: true - - /p-queue@6.6.2: - resolution: - { - integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, - } - engines: { node: ">=8" } - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - dev: true - - /p-timeout@3.2.0: - resolution: - { - integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, - } - engines: { node: ">=8" } - dependencies: - p-finally: 1.0.0 - dev: true - - /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } - dev: true - - /pako@1.0.11: - resolution: - { - integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, - } - dev: true - - /parallel-transform@1.2.0: - resolution: - { - integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==, - } - dependencies: - cyclist: 1.0.1 - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: true - - /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } - dependencies: - callsites: 3.1.0 - - /parse-asn1@5.1.6: - resolution: - { - integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==, - } - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - - /parse-json@4.0.0: - resolution: - { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, - } - engines: { node: ">=4" } - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/code-frame": 7.21.4 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - /parse-passwd@1.0.0: - resolution: - { - integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==, - } - engines: { node: ">=0.10.0" } - dev: true - - /pascalcase@0.1.1: - resolution: - { - integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==, - } - engines: { node: ">=0.10.0" } - dev: true - - /path-browserify@0.0.1: - resolution: - { - integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==, - } - dev: true - - /path-dirname@1.0.2: - resolution: - { - integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==, - } - dev: true - optional: true - - /path-exists@3.0.0: - resolution: - { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, - } - engines: { node: ">=4" } - dev: true - - /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - dev: true - - /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - /path-key@2.0.1: - resolution: - { - integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, - } - engines: { node: ">=4" } - dev: true - - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - dev: true - - /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - - /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: ">=8" } - - /pbkdf2@3.1.2: - resolution: - { - integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==, - } - engines: { node: ">=0.12" } - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /picocolors@0.2.1: - resolution: - { - integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==, - } - - /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, - } - - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - - /pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } - dev: true - - /pify@5.0.0: - resolution: - { - integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==, - } - engines: { node: ">=10" } - dev: true - - /pirates@4.0.5: - resolution: - { - integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, - } - engines: { node: ">= 6" } - dev: true - - /pkg-dir@3.0.0: - resolution: - { - integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==, - } - engines: { node: ">=6" } - dependencies: - find-up: 3.0.0 - dev: true - - /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - dependencies: - find-up: 4.1.0 - dev: true - - /posix-character-classes@0.1.1: - resolution: - { - integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /postcss-calc@7.0.5: - resolution: - { - integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==, - } - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.12 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-colormin@4.0.3: - resolution: - { - integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==, - } - engines: { node: ">=6.9.0" } - dependencies: - browserslist: 4.21.5 - color: 3.2.1 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true - - /postcss-convert-values@4.0.1: - resolution: - { - integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true - - /postcss-discard-comments@4.0.2: - resolution: - { - integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - dev: true - - /postcss-discard-duplicates@4.0.2: - resolution: - { - integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - dev: true - - /postcss-discard-empty@4.0.1: - resolution: - { - integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - dev: true - - /postcss-discard-overridden@4.0.1: - resolution: - { - integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - dev: true - - /postcss-functions@3.0.0: - resolution: - { - integrity: sha512-N5yWXWKA+uhpLQ9ZhBRl2bIAdM6oVJYpDojuI1nF2SzXBimJcdjFwiAouBVbO5VuOF3qA6BSFWFc3wXbbj72XQ==, - } - dependencies: - glob: 7.2.3 - object-assign: 4.1.1 - postcss: 6.0.23 - postcss-value-parser: 3.3.1 - dev: false - - /postcss-js@2.0.3: - resolution: - { - integrity: sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==, - } - dependencies: - camelcase-css: 2.0.1 - postcss: 7.0.39 - dev: false - - /postcss-load-config@2.1.2: - resolution: - { - integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==, - } - engines: { node: ">= 4" } - dependencies: - cosmiconfig: 5.2.1 - import-cwd: 2.1.0 - dev: true - - /postcss-load-config@3.1.4(postcss@7.0.39)(ts-node@10.9.1): - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 7.0.39 - ts-node: 10.9.1(@types/node@18.16.3)(typescript@4.9.5) - yaml: 1.10.2 - dev: false - - /postcss-loader@3.0.0: - resolution: - { - integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==, - } - engines: { node: ">= 6" } - dependencies: - loader-utils: 1.4.2 - postcss: 7.0.39 - postcss-load-config: 2.1.2 - schema-utils: 1.0.0 - dev: true - - /postcss-merge-longhand@4.0.11: - resolution: - { - integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==, - } - engines: { node: ">=6.9.0" } - dependencies: - css-color-names: 0.0.4 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - stylehacks: 4.0.3 - dev: true - - /postcss-merge-rules@4.0.3: - resolution: - { - integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - browserslist: 4.21.5 - caniuse-api: 3.0.0 - cssnano-util-same-parent: 4.0.1 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - vendors: 1.0.4 - dev: true - - /postcss-minify-font-values@4.0.2: - resolution: - { - integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true - - /postcss-minify-gradients@4.0.2: - resolution: - { - integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-arguments: 4.0.0 - is-color-stop: 1.1.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true - - /postcss-minify-params@4.0.2: - resolution: - { - integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==, - } - engines: { node: ">=6.9.0" } - dependencies: - alphanum-sort: 1.0.2 - browserslist: 4.21.5 - cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - uniqs: 2.0.0 - dev: true - - /postcss-minify-selectors@4.0.2: - resolution: - { - integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==, - } - engines: { node: ">=6.9.0" } - dependencies: - alphanum-sort: 1.0.2 - has: 1.0.3 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - dev: true - - /postcss-modules-extract-imports@1.1.0: - resolution: - { - integrity: sha512-zF9+UIEvtpeqMGxhpeT9XaIevQSrBBCz9fi7SwfkmjVacsSj8DY5eFVgn+wY8I9vvdDDwK5xC8Myq4UkoLFIkA==, - } - dependencies: - postcss: 6.0.23 - dev: true - - /postcss-modules-extract-imports@2.0.0: - resolution: - { - integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==, - } - engines: { node: ">= 6" } - dependencies: - postcss: 7.0.39 - dev: true - - /postcss-modules-local-by-default@1.2.0: - resolution: - { - integrity: sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==, - } - dependencies: - css-selector-tokenizer: 0.7.3 - postcss: 6.0.23 - dev: true - - /postcss-modules-local-by-default@3.0.3: - resolution: - { - integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==, - } - engines: { node: ">= 6" } - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - postcss-selector-parser: 6.0.12 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-modules-scope@1.1.0: - resolution: - { - integrity: sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==, - } - dependencies: - css-selector-tokenizer: 0.7.3 - postcss: 6.0.23 - dev: true - - /postcss-modules-scope@2.2.0: - resolution: - { - integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==, - } - engines: { node: ">= 6" } - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.12 - dev: true - - /postcss-modules-values@1.3.0: - resolution: - { - integrity: sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==, - } - dependencies: - icss-replace-symbols: 1.1.0 - postcss: 6.0.23 - dev: true - - /postcss-modules-values@3.0.0: - resolution: - { - integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==, - } - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - dev: true - - /postcss-modules@2.0.0: - resolution: - { - integrity: sha512-eqp+Bva+U2cwQO7dECJ8/V+X+uH1HduNeITB0CPPFAu6d/8LKQ32/j+p9rQ2YL1QytVcrNU0X+fBqgGmQIA1Rw==, - } - dependencies: - css-modules-loader-core: 1.1.0 - generic-names: 2.0.1 - lodash.camelcase: 4.3.0 - postcss: 7.0.39 - string-hash: 1.1.3 - dev: true - - /postcss-nested@4.2.3: - resolution: - { - integrity: sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==, - } - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.0.12 - dev: false + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /postcss-normalize-charset@4.0.1: - resolution: - { - integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==, - } - engines: { node: ">=6.9.0" } + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: - postcss: 7.0.39 - dev: true + argparse: 2.0.1 - /postcss-normalize-display-values@4.0.2: - resolution: - { - integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true dev: true - /postcss-normalize-positions@4.0.2: - resolution: - { - integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-arguments: 4.0.0 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /postcss-normalize-repeat-style@4.0.2: - resolution: - { - integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-arguments: 4.0.0 - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - /postcss-normalize-string@4.0.2: - resolution: - { - integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==, - } - engines: { node: ">=6.9.0" } + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + minimist: 1.2.8 + dev: false - /postcss-normalize-timing-functions@4.0.2: - resolution: - { - integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-match: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true dev: true - /postcss-normalize-unicode@4.0.1: - resolution: - { - integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==, - } - engines: { node: ">=6.9.0" } + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} dependencies: - browserslist: 4.21.5 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: false - /postcss-normalize-url@4.0.1: - resolution: - { - integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==, - } - engines: { node: ">=6.9.0" } - dependencies: - is-absolute-url: 2.1.0 - normalize-url: 3.3.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: false - /postcss-normalize-whitespace@4.0.2: - resolution: - { - integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==, - } - engines: { node: ">=6.9.0" } + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + language-subtag-registry: 0.3.22 + dev: false - /postcss-ordered-values@4.1.2: - resolution: - { - integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==, - } - engines: { node: ">=6.9.0" } + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: - cssnano-util-get-arguments: 4.0.0 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + prelude-ls: 1.2.1 + type-check: 0.4.0 - /postcss-reduce-initial@4.0.3: - resolution: - { - integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==, - } - engines: { node: ">=6.9.0" } - dependencies: - browserslist: 4.21.5 - caniuse-api: 3.0.0 - has: 1.0.3 - postcss: 7.0.39 - dev: true + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - /postcss-reduce-transforms@4.0.2: - resolution: - { - integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==, - } - engines: { node: ">=6.9.0" } - dependencies: - cssnano-util-get-match: 4.0.0 - has: 1.0.3 - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - dev: true + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /postcss-selector-parser@3.1.2: - resolution: - { - integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==, - } - engines: { node: ">=8" } - dependencies: - dot-prop: 5.3.0 - indexes-of: 1.0.1 - uniq: 1.0.1 + /load-tsconfig@0.2.3: + resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /postcss-selector-parser@6.0.12: - resolution: - { - integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==, - } - engines: { node: ">=4" } + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 + p-locate: 5.0.0 - /postcss-svgo@4.0.3: - resolution: - { - integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==, - } - engines: { node: ">=6.9.0" } - dependencies: - postcss: 7.0.39 - postcss-value-parser: 3.3.1 - svgo: 1.3.2 - dev: true + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /postcss-unique-selectors@4.0.1: - resolution: - { - integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==, - } - engines: { node: ">=6.9.0" } - dependencies: - alphanum-sort: 1.0.2 - postcss: 7.0.39 - uniqs: 2.0.0 + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: true - /postcss-value-parser@3.3.1: - resolution: - { - integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==, - } - - /postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } - - /postcss@6.0.1: - resolution: - { - integrity: sha512-VbGX1LQgQbf9l3cZ3qbUuC3hGqIEOGQFHAEHQ/Diaeo0yLgpgK5Rb8J+OcamIfQ9PbAU/fzBjVtQX3AhJHUvZw==, - } - engines: { node: ">=4.0.0" } - dependencies: - chalk: 1.1.3 - source-map: 0.5.7 - supports-color: 3.2.3 - dev: true - - /postcss@6.0.23: - resolution: - { - integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==, - } - engines: { node: ">=4.0.0" } - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 5.5.0 - - /postcss@7.0.32: - resolution: - { - integrity: sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==, - } - engines: { node: ">=6.0.0" } - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 6.1.0 + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /postcss@7.0.39: - resolution: - { - integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==, - } - engines: { node: ">=6.0.0" } + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 + js-tokens: 4.0.0 - /postcss@8.4.23: - resolution: - { - integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==, - } - engines: { node: ^10 || ^12 || >=14 } + /lowlight@1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 + fault: 1.0.4 + highlight.js: 10.7.3 dev: false - /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } - dev: true - - /prepend-http@1.0.4: - resolution: - { - integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /prettier-eslint-cli@7.1.0(prettier-eslint@15.0.1): - resolution: - { - integrity: sha512-kMMvV7Mt6VqdJSb25aCkOA7HTIxy5mii2tzBb1vCSmzlIECOzTP2wRPIeAtBky6WdpfN0n1Zxa4E37Atp1IksA==, - } - engines: { node: ">=12.22" } - hasBin: true - peerDependencies: - prettier-eslint: "*" - peerDependenciesMeta: - prettier-eslint: - optional: true + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: - "@messageformat/core": 3.1.0 - "@prettier/eslint": /prettier-eslint@15.0.1 - arrify: 2.0.1 - boolify: 1.0.1 - camelcase-keys: 7.0.2 - chalk: 4.1.2 - common-tags: 1.8.2 - core-js: 3.30.1 - eslint: 8.39.0 - find-up: 5.0.0 - get-stdin: 8.0.0 - glob: 7.2.3 - ignore: 5.2.4 - indent-string: 4.0.0 - lodash.memoize: 4.1.2 - loglevel-colored-level-prefix: 1.0.0 - prettier-eslint: 15.0.1 - rxjs: 7.8.1 - yargs: 13.3.2 - transitivePeerDependencies: - - supports-color + yallist: 3.1.1 dev: true - /prettier-eslint@15.0.1: - resolution: - { - integrity: sha512-mGOWVHixSvpZWARqSDXbdtTL54mMBxc5oQYQ6RAqy8jecuNJBgN3t9E5a81G66F8x8fsKNiR1HWaBV66MJDOpg==, - } - engines: { node: ">=10.0.0" } + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: - "@types/eslint": 8.37.0 - "@types/prettier": 2.7.2 - "@typescript-eslint/parser": 5.59.2(eslint@8.39.0)(typescript@4.9.5) - common-tags: 1.8.2 - dlv: 1.1.3 - eslint: 8.39.0 - indent-string: 4.0.0 - lodash.merge: 4.6.2 - loglevel-colored-level-prefix: 1.0.0 - prettier: 2.8.8 - pretty-format: 23.6.0 - require-relative: 0.8.7 - typescript: 4.9.5 - vue-eslint-parser: 8.3.0(eslint@8.39.0) - transitivePeerDependencies: - - supports-color - dev: true - - /prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: ">=10.13.0" } - hasBin: true - dev: true + yallist: 4.0.0 - /pretty-format@23.6.0: - resolution: - { - integrity: sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==, - } - dependencies: - ansi-regex: 3.0.1 - ansi-styles: 3.2.1 - dev: true + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - /pretty-format@27.5.1: - resolution: - { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - /pretty-format@29.5.0: - resolution: - { - integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: - "@jest/schemas": 29.4.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-hrtime@1.0.3: - resolution: - { - integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==, - } - engines: { node: ">= 0.8" } - dev: false - - /prism-svelte@0.4.7: - resolution: - { - integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==, - } - dev: false + braces: 3.0.2 + picomatch: 2.3.1 - /prism-theme-night-owl@1.4.0: - resolution: - { - integrity: sha512-1N1GVbVorGd5t1Vw76yL/3rhqdiCpDrJg26Is+jGeMV7qiIMZL+bC7Mjx7HMMuVKZoi+2nWSbU5IutBYNy9tiQ==, - } - dev: false + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - /prismjs@1.29.0: - resolution: - { - integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, - } - engines: { node: ">=6" } + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} dev: false - /process-nextick-args@2.0.1: - resolution: - { - integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, - } - dev: true - - /process@0.11.10: - resolution: - { - integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, - } - engines: { node: ">= 0.6.0" } - dev: true - - /promise-inflight@1.0.1(bluebird@3.7.2): - resolution: - { - integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, - } - peerDependencies: - bluebird: "*" - peerDependenciesMeta: - bluebird: - optional: true - dependencies: - bluebird: 3.7.2 - dev: true - - /promise.series@0.2.0: - resolution: - { - integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==, - } - engines: { node: ">=0.12" } - dev: true - - /prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - - /prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true + brace-expansion: 1.1.11 - /prr@1.0.1: - resolution: - { - integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, - } + /minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true - /public-encrypt@4.0.3: - resolution: - { - integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==, - } - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false - /pump@2.0.1: - resolution: - { - integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==, - } - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /pump@3.0.0: - resolution: - { - integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, - } - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false - /pumpify@1.5.1: - resolution: - { - integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==, - } + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - dev: true - - /punycode@1.3.2: - resolution: - { - integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==, - } - dev: true - - /punycode@1.4.1: - resolution: - { - integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==, - } - dev: true + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 - /punycode@2.3.0: - resolution: - { - integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, - } - engines: { node: ">=6" } - dev: true - - /pure-rand@6.0.2: - resolution: - { - integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==, - } - dev: true - - /purgecss@1.4.2: - resolution: - { - integrity: sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==, - } - engines: { node: ">=4.4.0", npm: ">=5.2.0" } + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dependencies: - glob: 7.2.3 - postcss: 7.0.39 - postcss-selector-parser: 6.0.12 - yargs: 14.2.3 - dev: true - /purgecss@2.3.0: - resolution: - { - integrity: sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==, - } - hasBin: true - dependencies: - commander: 5.1.0 - glob: 7.2.3 - postcss: 7.0.32 - postcss-selector-parser: 6.0.12 + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /purgecss@4.1.3: - resolution: - { - integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==, - } + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /next@13.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==} + engines: {node: '>=16.8.0'} hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true dependencies: - commander: 8.3.0 - glob: 7.2.3 - postcss: 8.4.23 - postcss-selector-parser: 6.0.12 + '@next/env': 13.4.1 + '@swc/helpers': 0.5.1 + busboy: 1.6.0 + caniuse-lite: 1.0.30001492 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + zod: 3.21.4 + optionalDependencies: + '@next/swc-darwin-arm64': 13.4.1 + '@next/swc-darwin-x64': 13.4.1 + '@next/swc-linux-arm64-gnu': 13.4.1 + '@next/swc-linux-arm64-musl': 13.4.1 + '@next/swc-linux-x64-gnu': 13.4.1 + '@next/swc-linux-x64-musl': 13.4.1 + '@next/swc-win32-arm64-msvc': 13.4.1 + '@next/swc-win32-ia32-msvc': 13.4.1 + '@next/swc-win32-x64-msvc': 13.4.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros dev: false - /q@1.5.1: - resolution: - { - integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==, - } - engines: { node: ">=0.6.0", teleport: ">=0.2.0" } - dev: true - - /query-string@4.3.4: - resolution: - { - integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==, - } - engines: { node: ">=0.10.0" } - dependencies: - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true - /querystring-es3@0.2.1: - resolution: - { - integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==, - } - engines: { node: ">=0.4.x" } - dev: true + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - /querystring@0.2.0: - resolution: - { - integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==, - } - engines: { node: ">=0.4.x" } - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} dev: true - /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - - /quick-lru@5.1.1: - resolution: - { - integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==, - } - engines: { node: ">=10" } - - /randombytes@2.1.0: - resolution: - { - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, - } + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: - safe-buffer: 5.2.1 - dev: true + path-key: 3.1.1 - /randomfill@1.0.4: - resolution: - { - integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==, - } + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - - /react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } - dev: true - - /react-is@17.0.2: - resolution: - { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, - } - dev: true + path-key: 4.0.0 + dev: false - /react-is@18.2.0: - resolution: - { - integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, - } - dev: true + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - /read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: ">=8" } - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} - /read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: ">=8" } - dependencies: - "@types/normalize-package-data": 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false - /readable-stream@2.3.8: - resolution: - { - integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, - } + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true + call-bind: 1.0.2 + define-properties: 1.2.0 + dev: false - /readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: ">= 6" } - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false - /readdirp@2.2.1: - resolution: - { - integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==, - } - engines: { node: ">=0.10" } + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10(supports-color@6.1.0) - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - dev: true - optional: true + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false - /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} dependencies: - picomatch: 2.3.1 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false - /reduce-css-calc@2.1.8: - resolution: - { - integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==, - } + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} dependencies: - css-unit-converter: 1.1.2 - postcss-value-parser: 3.3.1 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } - dev: true - - /regex-not@1.0.2: - resolution: - { - integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==, - } - engines: { node: ">=0.10.0" } + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false - /regexp.prototype.flags@1.5.0: - resolution: - { - integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, - } - engines: { node: ">= 0.4" } + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true - - /remove-trailing-separator@1.1.0: - resolution: - { - integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==, - } - dev: true - optional: true - - /repeat-element@1.1.4: - resolution: - { - integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /repeat-string@1.6.1: - resolution: - { - integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==, - } - engines: { node: ">=0.10" } - dev: true + es-abstract: 1.21.2 + dev: false - /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } - dev: true + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 - /require-main-filename@2.0.0: - resolution: - { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, - } - dev: true + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 - /require-relative@0.8.7: - resolution: - { - integrity: sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==, - } - dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: false - /requireindex@1.2.0: - resolution: - { - integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==, - } - engines: { node: ">=0.10.5" } - dev: true + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: false - /resolve-cwd@2.0.0: - resolution: - { - integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==, - } - engines: { node: ">=4" } + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} dependencies: - resolve-from: 3.0.0 - dev: true + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 - /resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: - resolve-from: 5.0.0 - dev: true + yocto-queue: 0.1.0 - /resolve-dir@1.0.1: - resolution: - { - integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==, - } - engines: { node: ">=0.10.0" } + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: true + p-limit: 3.1.0 - /resolve-from@3.0.0: - resolution: - { - integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==, - } - engines: { node: ">=4" } - dev: true + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 - /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: false - /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } - dev: true + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - /resolve-url@0.2.1: - resolution: - { - integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==, - } - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - /resolve.exports@2.0.2: - resolution: - { - integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, - } - engines: { node: ">=10" } - dev: true + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - /resolve@1.22.2: - resolution: - { - integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==, - } - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: false - /resolve@2.0.0-next.4: - resolution: - { - integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==, - } - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /ret@0.1.15: - resolution: - { - integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==, - } - engines: { node: ">=0.12" } - dev: true + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - - /rgb-regex@1.0.1: - resolution: - { - integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==, - } - - /rgba-regex@1.0.0: - resolution: - { - integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==, - } - - /rimraf@2.7.1: - resolution: - { - integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==, - } - hasBin: true - dependencies: - glob: 7.2.3 - dev: true + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, - } - hasBin: true - dependencies: - glob: 7.2.3 + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - /ripemd160@2.0.2: - resolution: - { - integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==, - } - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} - /rollup-plugin-html-bundle@0.0.3: - resolution: - { - integrity: sha512-vGMJTnpb57cT8p/BL2igUdohEAofxebRujd11Fk1ZY2zE0xGa3YMvzX4PH1kRUKm4nuQvFeW3ZdIksB9ZGzurw==, - } - dev: true + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} - /rollup-plugin-livereload@2.0.5: - resolution: - { - integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==, - } - engines: { node: ">=8.3" } + /postcss-import@14.1.0(postcss@8.4.21): + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - livereload: 0.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 dev: true - /rollup-plugin-postcss@2.9.0: - resolution: - { - integrity: sha512-Y7qDwlqjZMBexbB1kRJf+jKIQL8HR6C+ay53YzN+nNJ64hn1PNZfBE3c61hFUhD//zrMwmm7uBW30RuTi+CD0w==, - } - engines: { node: ">=10" } + /postcss-import@15.1.0(postcss@8.4.23): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 4.1.11 - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 7.0.39 - postcss-load-config: 2.1.2 - postcss-modules: 2.0.0 - promise.series: 0.2.0 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 resolve: 1.22.2 - rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - dev: true - /rollup-plugin-purgecss@1.0.0: - resolution: - { - integrity: sha512-C4ZXwGaEACAfvOqnLkR+T9HwTzN165MhqgUzXC7cG2kebXATGWOJcHfUbIuaoS18/+bJ/GJB5HYq49+Re7AomQ==, - } - dependencies: - purgecss: 1.4.2 - rollup-pluginutils: 2.8.2 - dev: true - - /rollup-plugin-svelte@7.1.4(rollup@2.79.1)(svelte@3.58.0): - resolution: - { - integrity: sha512-Jm0FCydR7k8bBGe7wimXAes8x2zEK10Ew3f3lEZwYor/Zya3X0AZVeSAPRH7yiXB9hWQVzJu597EUeNwGDTdjQ==, - } - engines: { node: ">=10" } + /postcss-js@4.0.1(postcss@8.4.21): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} peerDependencies: - rollup: ">=2.0.0" - svelte: ">=3.5.0" + postcss: ^8.4.21 dependencies: - "@rollup/pluginutils": 4.2.1 - resolve.exports: 2.0.2 - rollup: 2.79.1 - svelte: 3.58.0 + camelcase-css: 2.0.1 + postcss: 8.4.21 dev: true - /rollup-plugin-svg@2.0.0: - resolution: - { - integrity: sha512-DmE7dSQHo1SC5L2uH2qul3Mjyd5oV6U1aVVkyvTLX/mUsRink7f1b1zaIm+32GEBA6EHu8H/JJi3DdWqM53ySQ==, - } + /postcss-js@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: - rollup-pluginutils: 1.5.2 - dev: true + camelcase-css: 2.0.1 + postcss: 8.4.23 - /rollup-plugin-terser@7.0.2(rollup@2.79.1): - resolution: - { - integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==, - } - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + /postcss-load-config@3.1.4(postcss@8.4.21): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} peerDependencies: - rollup: ^2.0.0 + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: - "@babel/code-frame": 7.21.4 - jest-worker: 26.6.2 - rollup: 2.79.1 - serialize-javascript: 4.0.0 - terser: 5.17.1 + lilconfig: 2.1.0 + postcss: 8.4.21 + yaml: 1.10.2 dev: true - /rollup-pluginutils@1.5.2: - resolution: - { - integrity: sha512-SjdWWWO/CUoMpDy8RUbZ/pSpG68YHmhk5ROKNIoi2En9bJ8bTt3IhYi254RWiTclQmL7Awmrq+rZFOhZkJAHmQ==, - } + /postcss-load-config@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: - estree-walker: 0.2.1 - minimatch: 3.1.2 - dev: true + lilconfig: 2.1.0 + postcss: 8.4.23 + yaml: 2.2.2 - /rollup-pluginutils@2.8.2: - resolution: - { - integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==, - } + /postcss-nested@6.0.0(postcss@8.4.21): + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - estree-walker: 0.6.1 - dev: true - - /rollup@2.79.1: - resolution: - { - integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==, - } - engines: { node: ">=10.0.0" } - hasBin: true - optionalDependencies: - fsevents: 2.3.2 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 dev: true - /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + /postcss-nested@6.0.1(postcss@8.4.23): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - queue-microtask: 1.2.3 + postcss: 8.4.23 + postcss-selector-parser: 6.0.12 - /run-queue@1.0.3: - resolution: - { - integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==, - } + /postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} dependencies: - aproba: 1.2.0 + cssesc: 3.0.0 + util-deprecate: 1.0.2 dev: true - /rxjs@6.6.7: - resolution: - { - integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, - } - engines: { npm: ">=2.0.0" } + /postcss-selector-parser@6.0.12: + resolution: {integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==} + engines: {node: '>=4'} dependencies: - tslib: 1.14.1 - dev: true + cssesc: 3.0.0 + util-deprecate: 1.0.2 - /rxjs@7.8.1: - resolution: - { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, - } + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} dependencies: - tslib: 2.5.0 - dev: true + cssesc: 3.0.0 + util-deprecate: 1.0.2 - /sade@1.8.1: - resolution: - { - integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, - } - engines: { node: ">=6" } - dependencies: - mri: 1.2.0 - dev: false + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /safe-array-concat@1.0.0: - resolution: - { - integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==, - } - engines: { node: ">=0.4" } + /postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - - /safe-buffer@5.1.2: - resolution: - { - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, - } - dev: true - - /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - dev: true - - /safe-identifier@0.4.2: - resolution: - { - integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==, - } - dev: true + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false - /safe-regex-test@1.0.0: - resolution: - { - integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, - } + /postcss@8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true - /safe-regex@1.1.0: - resolution: - { - integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==, - } + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} dependencies: - ret: 0.1.15 - dev: true - - /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - dev: true + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 - /sander@0.5.1: - resolution: - { - integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==, - } - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - rimraf: 2.7.1 - dev: true + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} - /sass@1.62.1: - resolution: - { - integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==, - } - engines: { node: ">=14.0.0" } + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true - dependencies: - chokidar: 3.5.3 - immutable: 4.3.0 - source-map-js: 1.0.2 dev: true - /sax@1.2.4: - resolution: - { - integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, - } - dev: true + /prismjs@1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + dev: false - /schema-utils@1.0.0: - resolution: - { - integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==, - } - engines: { node: ">= 4" } - dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false - /schema-utils@2.7.1: - resolution: - { - integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==, - } - engines: { node: ">= 8.9.0" } + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: - "@types/json-schema": 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false - /schema-utils@3.1.2: - resolution: - { - integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==, - } - engines: { node: ">= 10.13.0" } + /property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} dependencies: - "@types/json-schema": 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - - /semiver@1.1.0: - resolution: - { - integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==, - } - engines: { node: ">=6" } + xtend: 4.0.2 dev: false - /semver@5.7.1: - resolution: - { - integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, - } - hasBin: true - dev: true - - /semver@6.3.0: - resolution: - { - integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, - } - hasBin: true - dev: true - - /semver@7.5.0: - resolution: - { - integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} - /serialize-javascript@4.0.0: - resolution: - { - integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==, - } - dependencies: - randombytes: 2.1.0 - dev: true + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} dev: true - /set-value@2.0.1: - resolution: - { - integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, - } - engines: { node: ">=0.10.0" } + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false - /setimmediate@1.0.5: - resolution: - { - integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, - } - dev: true + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false - /sha.js@2.4.11: - resolution: - { - integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==, - } - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} dev: true - /shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, - } - engines: { node: ">=8" } + /react-syntax-highlighter@15.5.0(react@18.2.0): + resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} + peerDependencies: + react: '>= 0.14.0' dependencies: - kind-of: 6.0.3 - dev: true + '@babel/runtime': 7.21.5 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.29.0 + react: 18.2.0 + refractor: 3.6.0 + dev: false - /shebang-command@1.2.0: - resolution: - { - integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, - } - engines: { node: ">=0.10.0" } + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: - shebang-regex: 1.0.0 - dev: true + loose-envify: 1.4.0 - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@1.0.0: - resolution: - { - integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, - } - engines: { node: ">=0.10.0" } - dev: true + pify: 2.3.0 - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - dev: true - - /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, - } + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: true - - /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - dev: true - - /simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, - } - dependencies: - is-arrayish: 0.3.2 - - /sirv-cli@1.0.14: - resolution: - { - integrity: sha512-yyUTNr984ANKDloqepkYbBSqvx3buwYg2sQKPWjSU+IBia5loaoka2If8N9CMwt8AfP179cdEl7kYJ//iWJHjQ==, - } - engines: { node: ">= 10" } - hasBin: true + picomatch: 2.3.1 + + /refractor@3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} dependencies: - console-clear: 1.1.1 - get-port: 3.2.0 - kleur: 3.0.3 - local-access: 1.1.0 - sade: 1.8.1 - semiver: 1.1.0 - sirv: 1.0.19 - tinydate: 1.3.0 + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.27.0 dev: false - /sirv@1.0.19: - resolution: - { - integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==, - } - engines: { node: ">= 10" } + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} dependencies: - "@polka/url": 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 1.1.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 dev: false - /sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} dev: true - /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - dev: true - - /snapdragon-node@2.1.1: - resolution: - { - integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==, - } - engines: { node: ">=0.10.0" } - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util@3.0.1: - resolution: - { - integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon@0.8.2(supports-color@6.1.0): - resolution: - { - integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==, - } - engines: { node: ">=0.10.0" } - dependencies: - base: 0.11.2 - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} dev: true - /sorcery@0.10.0: - resolution: - { - integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==, - } + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + + /resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - buffer-crc32: 0.2.13 - minimist: 1.2.8 - sander: 0.5.1 - sourcemap-codec: 1.4.8 + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true - /sort-keys@1.1.2: - resolution: - { - integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==, - } - engines: { node: ">=0.10.0" } + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true dependencies: - is-plain-obj: 1.1.0 - dev: true - - /source-list-map@2.0.1: - resolution: - { - integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==, - } - dev: true - - /source-map-js@1.0.2: - resolution: - { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, - } - engines: { node: ">=0.10.0" } + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 - /source-map-resolve@0.5.3: - resolution: - { - integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==, - } - deprecated: See https://github.com/lydell/source-map-resolve#deprecated + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false - /source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true + glob: 7.2.3 - /source-map-url@0.4.1: - resolution: - { - integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==, - } - deprecated: See https://github.com/lydell/source-map-url#deprecated + /rollup@3.21.2: + resolution: {integrity: sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 dev: true - /source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: ">=0.10.0" } + /rollup@3.21.8: + resolution: {integrity: sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 dev: true - /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } - - /sourcemap-codec@1.4.8: - resolution: - { - integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, - } - deprecated: Please use @jridgewell/sourcemap-codec instead + /rollup@3.23.0: + resolution: {integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 dev: true - /spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-exceptions@2.3.0: - resolution: - { - integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, - } - dev: true + execa: 5.1.1 + dev: false - /spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-license-ids@3.0.13: - resolution: - { - integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, - } - dev: true + queue-microtask: 1.2.3 - /split-string@3.1.0: - resolution: - { - integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==, - } - engines: { node: ">=0.10.0" } + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - extend-shallow: 3.0.2 + tslib: 2.5.2 dev: true - /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - dev: true + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: false - /ssri@6.0.2: - resolution: - { - integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==, - } + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: - figgy-pudding: 3.5.2 - dev: true + loose-envify: 1.4.0 + dev: false - /stable@0.1.8: - resolution: - { - integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==, - } - deprecated: "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - dev: true + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true - /stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + engines: {node: '>=10'} + hasBin: true dependencies: - escape-string-regexp: 2.0.0 - dev: true + lru-cache: 6.0.0 - /static-extend@0.1.2: - resolution: - { - integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==, - } - engines: { node: ">=0.10.0" } + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true + shebang-regex: 3.0.0 - /stop-iteration-iterator@1.0.0: - resolution: - { - integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==, - } - engines: { node: ">= 0.4" } - dependencies: - internal-slot: 1.0.5 - dev: true + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - /stream-browserify@2.0.2: - resolution: - { - integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==, - } - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /stream-each@1.2.3: - resolution: - { - integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==, - } + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.1 - dev: true + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: false - /stream-http@2.8.3: - resolution: - { - integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==, - } - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 2.3.8 - to-arraybuffer: 1.0.1 - xtend: 4.0.2 - dev: true + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /stream-shift@1.0.1: - resolution: - { - integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==, - } - dev: true + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - /strict-uri-encode@1.1.0: - resolution: - { - integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==, - } - engines: { node: ">=0.10.0" } - dev: true + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false - /string-hash@1.1.3: - resolution: - { - integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==, - } - dev: true + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} - /string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + whatwg-url: 7.1.0 dev: true - /string-width@3.1.0: - resolution: - { - integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==, - } - engines: { node: ">=6" } - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 + /space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: false + + /spawn-command@0.0.2-1: + resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: false + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 @@ -10630,1212 +4001,522 @@ packages: dev: true /string.prototype.matchall@4.0.8: - resolution: - { - integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==, - } + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 - dev: true + dev: false /string.prototype.trim@1.2.7: - resolution: - { - integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true + dev: false /string.prototype.trimend@1.0.6: - resolution: - { - integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==, - } + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true + dev: false /string.prototype.trimstart@1.0.6: - resolution: - { - integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==, - } + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - dev: true - - /string_decoder@1.1.1: - resolution: - { - integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, - } - dependencies: - safe-buffer: 5.1.2 - dev: true - - /string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } - dependencies: - safe-buffer: 5.2.1 - dev: true - - /strip-ansi@3.0.1: - resolution: - { - integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, - } - engines: { node: ">=0.10.0" } - dependencies: - ansi-regex: 2.1.1 - dev: true - - /strip-ansi@5.2.0: - resolution: - { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, - } - engines: { node: ">=6" } - dependencies: - ansi-regex: 4.1.1 - dev: true + dev: false /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - dev: true - - /strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } - dev: true + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } - dev: true + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - /strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } - dependencies: - min-indent: 1.0.1 - dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: false /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } - dev: true - - /style-inject@0.3.0: - resolution: - { - integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==, - } - dev: true - - /style-loader@2.0.0(webpack@4.46.0): - resolution: - { - integrity: sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==, - } - engines: { node: ">= 10.13.0" } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /styled-jsx@5.1.1(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: - loader-utils: 2.0.4 - schema-utils: 3.1.2 - webpack: 4.46.0(webpack-cli@3.3.12) - dev: true + client-only: 0.0.1 + react: 18.2.0 + dev: false - /stylehacks@4.0.3: - resolution: - { - integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==, - } - engines: { node: ">=6.9.0" } + /sucrase@3.29.0: + resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} + engines: {node: '>=8'} + hasBin: true dependencies: - browserslist: 4.21.5 - postcss: 7.0.39 - postcss-selector-parser: 3.1.2 - dev: true - - /supports-color@2.0.0: - resolution: - { - integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, - } - engines: { node: ">=0.8.0" } + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 dev: true - /supports-color@3.2.3: - resolution: - { - integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==, - } - engines: { node: ">=0.8.0" } + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true dependencies: - has-flag: 1.0.0 - dev: true + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - dependencies: - has-flag: 3.0.0 - - /supports-color@6.1.0: - resolution: - { - integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 /supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } - - /svelte-click-outside@1.0.0: - resolution: - { - integrity: sha512-TVDn5Vd8L0WI0Y9BFh/2I7judkIqYCbFKkGwGl/f8D0inwBFNyU0weKhrbJY4VQtYnWriq0NPl+mIYGisgALbw==, - } - dev: true - - /svelte-dev-helper@1.1.9: - resolution: - { - integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==, - } - dev: true - - /svelte-hmr@0.14.12(svelte@3.58.0): - resolution: - { - integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==, - } - engines: { node: ^12.20 || ^14.13.1 || >= 16 } - peerDependencies: - svelte: ">=3.19.0" - dependencies: - svelte: 3.58.0 - dev: true - - /svelte-loader@3.1.7(svelte@3.58.0): - resolution: - { - integrity: sha512-YVg5gQaUdV26uaA5SEGj1VOUX0YQicD9PezKvVlkQ2JI644silWtJZ3hkxHtXSfjnlFr0OTNoyOgeINIODdT+A==, - } - peerDependencies: - svelte: ">3.0.0" - dependencies: - loader-utils: 2.0.4 - svelte: 3.58.0 - svelte-dev-helper: 1.1.9 - svelte-hmr: 0.14.12(svelte@3.58.0) - dev: true + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - /svelte-preprocess@4.10.7(@babel/core@7.21.5)(postcss-load-config@2.1.2)(postcss@7.0.39)(svelte@3.58.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==, - } - engines: { node: ">= 9.11.2" } - requiresBuild: true - peerDependencies: - "@babel/core": ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - node-sass: "*" - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 - svelte: ^3.23.0 - typescript: ^3.9.5 || ^4.0.0 - peerDependenciesMeta: - "@babel/core": - optional: true - coffeescript: - optional: true - less: - optional: true - node-sass: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: - "@babel/core": 7.21.5 - "@types/pug": 2.0.6 - "@types/sass": 1.45.0 - detect-indent: 6.1.0 - magic-string: 0.25.9 - postcss: 7.0.39 - postcss-load-config: 2.1.2 - sorcery: 0.10.0 - strip-indent: 3.0.0 - svelte: 3.58.0 - typescript: 4.9.5 - dev: true - - /svelte-prism@1.1.6: - resolution: - { - integrity: sha512-FEVBqD1wcSKYwRpgaMGRfEIQPquKMwo+vl91lnFHhQCtTivxgkCS6ZWNOyvZGRsNbWk50fYZOWOp3xXIBWNeSw==, - } - dependencies: - prism-svelte: 0.4.7 - prismjs: 1.29.0 + '@pkgr/utils': 2.4.1 + tslib: 2.5.2 dev: false - /svelte@3.58.0: - resolution: - { - integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==, - } - engines: { node: ">= 8" } - dev: true - - /svgo@1.3.2: - resolution: - { - integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==, - } - engines: { node: ">=4.0.0" } - deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + /tailwindcss@3.2.7(postcss@8.4.21): + resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} + engines: {node: '>=12.13.0'} hasBin: true - dependencies: - chalk: 2.4.2 - coa: 2.0.2 - css-select: 2.1.0 - css-select-base-adapter: 0.1.1 - css-tree: 1.0.0-alpha.37 - csso: 4.2.0 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - object.values: 1.1.6 - sax: 1.2.4 - stable: 0.1.8 - unquote: 1.1.1 - util.promisify: 1.0.1 - dev: true - - /tapable@1.1.3: - resolution: - { - integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==, - } - engines: { node: ">=6" } - dev: true - - /terser-webpack-plugin@1.4.5(webpack@4.46.0): - resolution: - { - integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==, - } - engines: { node: ">= 6.9.0" } peerDependencies: - webpack: ^4.0.0 - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - is-wsl: 1.1.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - source-map: 0.6.1 - terser: 4.8.1 - webpack: 4.46.0(webpack-cli@3.3.12) - webpack-sources: 1.4.3 - worker-farm: 1.7.0 - dev: true - - /terser@4.8.1: - resolution: - { - integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==, - } - engines: { node: ">=6.0.0" } - hasBin: true + postcss: ^8.0.9 dependencies: - acorn: 8.8.2 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node dev: true - /terser@5.17.1: - resolution: - { - integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==, - } - engines: { node: ">=10" } + /tailwindcss@3.3.2: + resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: - "@jridgewell/source-map": 0.3.3 - acorn: 8.8.2 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } - dependencies: - "@istanbuljs/schema": 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } - dev: true - - /through2@2.0.5: - resolution: - { - integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==, - } - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: true - - /timers-browserify@2.0.12: - resolution: - { - integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==, - } - engines: { node: ">=0.6.0" } - dependencies: - setimmediate: 1.0.5 - dev: true - - /timsort@0.3.0: - resolution: - { - integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==, - } - dev: true - - /tinydate@1.3.0: - resolution: - { - integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==, - } - engines: { node: ">=4" } - dev: false - - /tmp@0.2.1: - resolution: - { - integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==, - } - engines: { node: ">=8.17.0" } - dependencies: - rimraf: 3.0.2 - dev: false - - /tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } - dev: true + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.18.2 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.23 + postcss-import: 15.1.0(postcss@8.4.23) + postcss-js: 4.0.1(postcss@8.4.23) + postcss-load-config: 4.0.1(postcss@8.4.23) + postcss-nested: 6.0.1(postcss@8.4.23) + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + resolve: 1.22.2 + sucrase: 3.32.0 + transitivePeerDependencies: + - ts-node - /to-arraybuffer@1.0.1: - resolution: - { - integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==, - } - dev: true + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false - /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, - } - engines: { node: ">=4" } - dev: true + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /to-object-path@0.3.0: - resolution: - { - integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==, - } - engines: { node: ">=0.10.0" } + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: - kind-of: 3.2.2 - dev: true + thenify: 3.3.1 - /to-regex-range@2.1.1: - resolution: - { - integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==, - } - engines: { node: ">=0.10.0" } + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 + any-promise: 1.3.0 + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} dev: true /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /to-regex@3.0.2: - resolution: - { - integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==, - } - engines: { node: ">=0.10.0" } - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - - /totalist@1.1.0: - resolution: - { - integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==, - } - engines: { node: ">=6" } - dev: false - - /ts-jest@29.1.0(@babel/core@7.21.5)(jest@29.5.0)(typescript@4.9.5): - resolution: - { - integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^29.0.0 - babel-jest: ^29.0.0 - esbuild: "*" - jest: ^29.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - "@babel/core": 7.21.5 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) - jest-util: 29.5.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.0 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: true + /toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: false - /ts-loader@8.4.0(typescript@4.9.5)(webpack@4.46.0): - resolution: - { - integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - typescript: "*" - webpack: "*" + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: - chalk: 4.1.2 - enhanced-resolve: 4.5.0 - loader-utils: 2.0.4 - micromatch: 4.0.5 - semver: 7.5.0 - typescript: 4.9.5 - webpack: 4.46.0(webpack-cli@3.3.12) + punycode: 2.3.0 dev: true - /ts-node@10.9.1(@types/node@18.16.3)(typescript@4.9.5): - resolution: - { - integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, - } + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.9 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.3 - "@types/node": 18.16.3 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} /tsconfig-paths@3.14.2: - resolution: - { - integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, - } + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: - "@types/json5": 0.0.29 + '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true + dev: false /tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, - } - dev: true + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib@2.5.2: + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} - /tslib@2.5.0: - resolution: - { - integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, - } + /tsup@6.7.0(typescript@5.0.2): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.1(esbuild@0.17.19) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.17.19 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4(postcss@8.4.21) + resolve-from: 5.0.0 + rollup: 3.21.2 + source-map: 0.8.0-beta.0 + sucrase: 3.29.0 + tree-kill: 1.2.2 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + - ts-node dev: true - /tsutils@3.21.0(typescript@4.9.5): - resolution: - { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, - } - engines: { node: ">= 6" } + /tsutils@3.21.0(typescript@5.0.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.5 - dev: true + typescript: 5.0.4 - /tty-browserify@0.0.0: - resolution: - { - integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==, - } + /turbo-darwin-64@1.10.1: + resolution: {integrity: sha512-isLLoPuAOMNsYovOq9BhuQOZWQuU13zYsW988KkkaA4OJqOn7qwa9V/KBYCJL8uVQqtG+/Y42J37lO8RJjyXuA==} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 + /turbo-darwin-arm64@1.10.1: + resolution: {integrity: sha512-x1nloPR10fLElNCv17BKr0kCx/O5gse/UXAcVscMZH2tvRUtXrdBmut62uw2YU3J9hli2fszYjUWXkulVpQvFA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } + /turbo-linux-64@1.10.1: + resolution: {integrity: sha512-abV+ODCeOlz0503OZlHhPWdy3VwJZc1jObf1VQj7uQM+JqJ/kXbMyqJIMQVz+m7QJUFdferYPRxGhYT/NbYK7Q==} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, - } - engines: { node: ">=10" } + /turbo-linux-arm64@1.10.1: + resolution: {integrity: sha512-zRC3nZbHQ63tofOmbuySzEn1ROISWTkemYYr1L98rpmT5aVa0kERlGiYcfDwZh3cBso/Ylg/wxexRAaPzcCJYQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } + /turbo-windows-64@1.10.1: + resolution: {integrity: sha512-Irqz8IU+o7Q/5V44qatZBTunk+FQAOII1hZTsEU54ah62f9Y297K6/LSp+yncmVQOZlFVccXb6MDqcETExIQtA==} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: ">=8" } + /turbo-windows-arm64@1.10.1: + resolution: {integrity: sha512-124IT15d2gyjC+NEn11pHOaVFvZDRHpxfF+LDUzV7YxfNIfV0mGkR3R/IyVXtQHOgqOdtQTbC4y411sm31+SEw==} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: ">=8" } + /turbo@1.10.1: + resolution: {integrity: sha512-wq0YeSv6P/eEDXOL42jkMUr+T4z34dM8mdHu5u6C6OOAq8JuLJ72F/v4EVR1JmY8icyTkFz10ICLV0haUUYhbQ==} + hasBin: true + requiresBuild: true + optionalDependencies: + turbo-darwin-64: 1.10.1 + turbo-darwin-arm64: 1.10.1 + turbo-linux-64: 1.10.1 + turbo-linux-arm64: 1.10.1 + turbo-windows-64: 1.10.1 + turbo-windows-arm64: 1.10.1 dev: true - /type-fest@1.4.0: - resolution: - { - integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==, - } - engines: { node: ">=10" } - dev: true + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} /typed-array-length@1.0.4: - resolution: - { - integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, - } + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.10 - dev: true + dev: false - /typedarray@0.0.6: - resolution: - { - integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, - } + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true dev: true - /typescript@4.9.5: - resolution: - { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, - } - engines: { node: ">=4.2.0" } + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} hasBin: true /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, - } + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - - /union-value@1.0.1: - resolution: - { - integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - - /uniq@1.0.1: - resolution: - { - integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==, - } - dev: true - - /uniqs@2.0.0: - resolution: - { - integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==, - } - dev: true - - /unique-filename@1.1.1: - resolution: - { - integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==, - } - dependencies: - unique-slug: 2.0.2 - dev: true - - /unique-slug@2.0.2: - resolution: - { - integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==, - } - dependencies: - imurmurhash: 0.1.4 - dev: true - - /universalify@2.0.0: - resolution: - { - integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, - } - engines: { node: ">= 10.0.0" } dev: false - /unquote@1.1.1: - resolution: - { - integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==, - } - dev: true - - /unset-value@1.0.0: - resolution: - { - integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - - /upath@1.2.0: - resolution: - { - integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==, - } - engines: { node: ">=4" } - dev: true - optional: true + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: false /update-browserslist-db@1.0.11(browserslist@4.21.5): - resolution: - { - integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, - } + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: - browserslist: ">= 4.21.0" + browserslist: '>= 4.21.0' dependencies: browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true - - /urix@0.1.0: - resolution: - { - integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==, - } - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /url-loader@4.1.1(file-loader@6.2.0)(webpack@4.46.0): - resolution: - { - integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==, - } - engines: { node: ">= 10.13.0" } - peerDependencies: - file-loader: "*" - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - dependencies: - file-loader: 6.2.0(webpack@4.46.0) - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.1.2 - webpack: 4.46.0(webpack-cli@3.3.12) - dev: true - - /url@0.11.0: - resolution: - { - integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==, - } - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - - /use@3.1.1: - resolution: - { - integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==, - } - engines: { node: ">=0.10.0" } - dev: true /util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } - - /util.promisify@1.0.1: - resolution: - { - integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==, - } - dependencies: - define-properties: 1.2.0 - es-abstract: 1.21.2 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.6 - dev: true - - /util@0.10.3: - resolution: - { - integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==, - } - dependencies: - inherits: 2.0.1 - dev: true - - /util@0.11.1: - resolution: - { - integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==, - } - dependencies: - inherits: 2.0.3 - dev: true - - /v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } - - /v8-compile-cache@2.3.0: - resolution: - { - integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, - } - dev: true + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /v8-to-istanbul@9.1.0: - resolution: - { - integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==, - } - engines: { node: ">=10.12.0" } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - "@types/istanbul-lib-coverage": 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true - - /vendors@1.0.4: - resolution: - { - integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==, - } - dev: true - - /vm-browserify@1.1.2: - resolution: - { - integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==, - } - dev: true - - /vue-eslint-parser@8.3.0(eslint@8.39.0): - resolution: - { - integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /vite-plugin-singlefile@0.13.5(rollup@3.23.0)(vite@4.3.7): + resolution: {integrity: sha512-y/aRGh8qHmw2f1IhaI/C6PJAaov47ESYDvUv1am1YHMhpY+19B5k5Odp8P+tgs+zhfvak6QB1ykrALQErEAo7g==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ">=6.0.0" - dependencies: - debug: 4.3.4 - eslint: 8.39.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 - esquery: 1.5.0 - lodash: 4.17.21 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } - dependencies: - makeerror: 1.0.12 - dev: true - - /watchpack-chokidar2@2.0.1: - resolution: - { - integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==, - } - requiresBuild: true + rollup: '>=2.79.0' + vite: '>=3.2.0' dependencies: - chokidar: 2.1.8 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /watchpack@1.7.5: - resolution: - { - integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==, - } - dependencies: - graceful-fs: 4.2.11 - neo-async: 2.6.2 - optionalDependencies: - chokidar: 3.5.3 - watchpack-chokidar2: 2.0.1 - transitivePeerDependencies: - - supports-color + micromatch: 4.0.5 + rollup: 3.23.0 + vite: 4.3.7(@types/node@17.0.45) dev: true - /webpack-cli@3.3.12(webpack@4.46.0): - resolution: - { - integrity: sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==, - } - engines: { node: ">=6.11.5" } - hasBin: true - peerDependencies: - webpack: 4.x.x - dependencies: - chalk: 2.4.2 - cross-spawn: 6.0.5 - enhanced-resolve: 4.5.0 - findup-sync: 3.0.0(supports-color@6.1.0) - global-modules: 2.0.0 - import-local: 2.0.0 - interpret: 1.4.0 - loader-utils: 1.4.2 - supports-color: 6.1.0 - v8-compile-cache: 2.3.0 - webpack: 4.46.0(webpack-cli@3.3.12) - yargs: 13.3.2 - dev: true - - /webpack-sources@1.4.3: - resolution: - { - integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==, - } - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - dev: true - - /webpack@4.46.0(webpack-cli@3.3.12): - resolution: - { - integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==, - } - engines: { node: ">=6.11.5" } + /vite@4.3.7(@types/node@17.0.45): + resolution: {integrity: sha512-MTIFpbIm9v7Hh5b0wSBgkcWzSBz7SAa6K/cBTwS4kUiQJfQLFlZZRJRQgqunCVzhTPCk674tW+0Qaqh3Q00dBg==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: - webpack-cli: "*" - webpack-command: "*" + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 peerDependenciesMeta: - webpack-cli: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: optional: true - webpack-command: + terser: optional: true dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/wasm-edit": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - acorn: 6.4.2 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - chrome-trace-event: 1.0.3 - enhanced-resolve: 4.5.0 - eslint-scope: 4.0.3 - json-parse-better-errors: 1.0.2 - loader-runner: 2.4.0 - loader-utils: 1.4.2 - memory-fs: 0.4.1 - micromatch: 3.1.10(supports-color@6.1.0) - mkdirp: 0.5.6 - neo-async: 2.6.2 - node-libs-browser: 2.2.1 - schema-utils: 1.0.0 - tapable: 1.1.3 - terser-webpack-plugin: 1.4.5(webpack@4.46.0) - watchpack: 1.7.5 - webpack-cli: 3.3.12(webpack@4.46.0) - webpack-sources: 1.4.3 - transitivePeerDependencies: - - supports-color + '@types/node': 17.0.45 + esbuild: 0.17.19 + postcss: 8.4.23 + rollup: 3.21.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 dev: true /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, - } + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true + dev: false /which-collection@1.0.1: - resolution: - { - integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, - } + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - - /which-module@2.0.1: - resolution: - { - integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, - } - dev: true + dev: false /which-typed-array@1.1.9: - resolution: - { - integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 @@ -11843,64 +4524,22 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 is-typed-array: 1.1.10 - dev: true - - /which@1.3.1: - resolution: - { - integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, - } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true + dev: false /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - dev: true /word-wrap@1.2.3: - resolution: - { - integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /worker-farm@1.7.0: - resolution: - { - integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==, - } - dependencies: - errno: 0.1.8 - dev: true - - /wrap-ansi@5.1.0: - resolution: - { - integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==, - } - engines: { node: ">=6" } - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - dev: true + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 @@ -11908,153 +4547,41 @@ packages: dev: true /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - /write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /ws@7.5.9: - resolution: - { - integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==, - } - engines: { node: ">=8.3.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} /xtend@4.0.2: - resolution: - { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, - } - engines: { node: ">=0.4" } - - /y18n@4.0.3: - resolution: - { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, - } - dev: true + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} dev: true /yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - dev: true + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } - dev: false - - /yargs-parser@13.1.2: - resolution: - { - integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==, - } - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} dev: true - /yargs-parser@15.0.3: - resolution: - { - integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==, - } - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } - dev: true - - /yargs@13.3.2: - resolution: - { - integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==, - } - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - dev: true - - /yargs@14.2.3: - resolution: - { - integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==, - } - dependencies: - cliui: 5.0.0 - decamelize: 1.2.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 15.0.3 + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} dev: true /yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -12065,17 +4592,16 @@ packages: yargs-parser: 21.1.1 dev: true - /yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } - /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } - dev: true + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false + + github.com/figma/plugin-typings/d3a04ff44ea9532ed69059af3597c61173f07eae: + resolution: {tarball: https://codeload.github.com/figma/plugin-typings/tar.gz/d3a04ff44ea9532ed69059af3597c61173f07eae} + name: '@figma/plugin-typings' + version: 1.64.0 + dev: false diff --git a/turbo-test/basic/pnpm-workspace.yaml b/pnpm-workspace.yaml similarity index 100% rename from turbo-test/basic/pnpm-workspace.yaml rename to pnpm-workspace.yaml diff --git a/public/README.md b/public/README.md deleted file mode 100644 index 6c421e00..00000000 --- a/public/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Public Directory - -This directory is empty for a reason: [Rollup](https://rollupjs.org/) needs it, else it fails to compile. This is where the result, the output, the plugin, will be. - -## Compile commands - -- To build the project once: `yarn run build` -- To build the release version (minified): `yarn run release` -- To re-build the project every time there is a change: `yarn run watch` diff --git a/src/altNodes/altConversion.ts b/src/altNodes/altConversion.ts deleted file mode 100644 index 11a9fbe5..00000000 --- a/src/altNodes/altConversion.ts +++ /dev/null @@ -1,469 +0,0 @@ -import { convertNodesOnRectangle } from "./convertNodesOnRectangle"; -import { - AltSceneNode, - AltRectangleNode, - AltFrameNode, - AltTextNode, - AltGroupNode, - AltLayoutMixin, - AltFrameMixin, - AltGeometryMixin, - AltBlendMixin, - AltCornerMixin, - AltRectangleCornerMixin, - AltDefaultShapeMixin, - AltEllipseNode, -} from "./altMixins"; -import { convertToAutoLayout } from "./convertToAutoLayout"; - -export const convertSingleNodeToAlt = ( - node: SceneNode, - parent: AltFrameNode | AltGroupNode | null = null -): AltSceneNode => { - return convertIntoAltNodes([node], parent)[0]; -}; - -export const frameNodeToAlt = ( - node: FrameNode | InstanceNode | ComponentNode, - altParent: AltFrameNode | AltGroupNode | null = null -): AltRectangleNode | AltFrameNode | AltGroupNode => { - if (node.children.length === 0) { - // if it has no children, convert frame to rectangle - return frameToRectangleNode(node, altParent); - } - - const altNode = new AltFrameNode(); - - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertDefaultShape(altNode, node); - convertFrame(altNode, node); - convertCorner(altNode, node); - convertRectangleCorner(altNode, node); - - altNode.children = convertIntoAltNodes(node.children, altNode); - - return convertToAutoLayout(convertNodesOnRectangle(altNode)); -}; - -// auto convert Frame to Rectangle when Frame has no Children -const frameToRectangleNode = ( - node: FrameNode | InstanceNode | ComponentNode, - altParent: AltFrameNode | AltGroupNode | null -): AltRectangleNode => { - const newNode = new AltRectangleNode(); - - newNode.id = node.id; - newNode.name = node.name; - - if (altParent) { - newNode.parent = altParent; - } - - convertDefaultShape(newNode, node); - convertRectangleCorner(newNode, node); - convertCorner(newNode, node); - return newNode; -}; - -export const convertIntoAltNodes = ( - sceneNode: ReadonlyArray, - altParent: AltFrameNode | AltGroupNode | null = null -): Array => { - const mapped: Array = sceneNode.map( - (node: SceneNode) => { - if (node.type === "RECTANGLE" || node.type === "ELLIPSE") { - let altNode; - if (node.type === "RECTANGLE") { - altNode = new AltRectangleNode(); - convertRectangleCorner(altNode, node); - } else { - altNode = new AltEllipseNode(); - } - - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertDefaultShape(altNode, node); - convertCorner(altNode, node); - - return altNode; - } else if (node.type === "LINE") { - const altNode = new AltRectangleNode(); - - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertDefaultShape(altNode, node); - - // Lines have a height of zero, but they must have a height, so add 1. - altNode.height = 1; - - // Let them be CENTER, since on Lines this property is ignored. - altNode.strokeAlign = "CENTER"; - - // Remove 1 since it now has a height of 1. It won't be visually perfect, but will be almost. - altNode.strokeWeight = altNode.strokeWeight - 1; - - return altNode; - } else if ( - node.type === "FRAME" || - node.type === "INSTANCE" || - node.type === "COMPONENT" - ) { - const iconToRect = iconToRectangle(node, altParent); - if (iconToRect != null) { - return iconToRect; - } - - return frameNodeToAlt(node, altParent); - } else if (node.type === "GROUP") { - if (node.children.length === 1 && node.visible) { - // if Group is visible and has only one child, Group should disappear. - // there will be a single value anyway. - return convertIntoAltNodes(node.children, altParent)[0]; - } - - const iconToRect = iconToRectangle(node, altParent); - if (iconToRect != null) { - return iconToRect; - } - - const altNode = new AltGroupNode(); - - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertLayout(altNode, node); - convertBlend(altNode, node); - - altNode.children = convertIntoAltNodes(node.children, altNode); - - // try to find big rect and regardless of that result, also try to convert to autolayout. - // There is a big chance this will be returned as a Frame - // also, Group will always have at least 2 children. - return convertNodesOnRectangle(altNode); - } else if (node.type === "TEXT") { - const altNode = new AltTextNode(); - - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertDefaultShape(altNode, node); - convertIntoAltText(altNode, node); - return altNode; - } else if (node.type === "VECTOR") { - const altNode = new AltRectangleNode(); - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertDefaultShape(altNode, node); - - // Vector support is still missing. Meanwhile, add placeholder. - altNode.cornerRadius = 8; - - if (altNode.fills === figma.mixed || altNode.fills.length === 0) { - // Use rose[400] from Tailwind 3 when Vector has no color. - altNode.fills = [ - { - type: "SOLID", - color: { - r: 0.5, - g: 0.23, - b: 0.27, - }, - visible: true, - opacity: 0.5, - blendMode: "NORMAL", - }, - ]; - } - - return altNode; - } - - return null; - } - ); - - return mapped.filter(notEmpty); -}; - -const iconToRectangle = ( - node: FrameNode | InstanceNode | ComponentNode | GroupNode, - altParent: AltFrameNode | AltGroupNode | null -): AltRectangleNode | null => { - if (node.children.every((d) => d.type === "VECTOR")) { - const altNode = new AltRectangleNode(); - altNode.id = node.id; - altNode.name = node.name; - - if (altParent) { - altNode.parent = altParent; - } - - convertBlend(altNode, node); - - // width, x, y - convertLayout(altNode, node); - - // Vector support is still missing. Meanwhile, add placeholder. - altNode.cornerRadius = 8; - - altNode.strokes = []; - altNode.strokeWeight = 0; - altNode.strokeMiterLimit = 0; - altNode.strokeAlign = "CENTER"; - altNode.strokeCap = "NONE"; - altNode.strokeJoin = "BEVEL"; - altNode.dashPattern = []; - altNode.fillStyleId = ""; - altNode.strokeStyleId = ""; - - altNode.fills = [ - { - type: "IMAGE", - imageHash: "", - scaleMode: "FIT", - visible: true, - opacity: 0.5, - blendMode: "NORMAL", - }, - ]; - - return altNode; - } - return null; -}; - -const convertLayout = (altNode: AltLayoutMixin, node: LayoutMixin) => { - // Get the correct X/Y position when rotation is applied. - // This won't guarantee a perfect position, since we would still - // need to calculate the offset based on node width/height to compensate, - // which we are not currently doing. However, this is a lot better than nothing and will help LineNode. - if (node.rotation !== undefined && Math.round(node.rotation) !== 0) { - const boundingRect = getBoundingRect(node); - altNode.x = boundingRect.x; - altNode.y = boundingRect.y; - } else { - altNode.x = node.x; - altNode.y = node.y; - } - - altNode.width = node.width; - altNode.height = node.height; - altNode.rotation = node.rotation; - altNode.layoutAlign = node.layoutAlign; - altNode.layoutGrow = node.layoutGrow; -}; - -const convertFrame = (altNode: AltFrameMixin, node: DefaultFrameMixin) => { - altNode.layoutMode = node.layoutMode; - altNode.primaryAxisSizingMode = node.primaryAxisSizingMode; - altNode.counterAxisSizingMode = node.counterAxisSizingMode; - - // Fix this: https://stackoverflow.com/questions/57859754/flexbox-space-between-but-center-if-one-element - // It affects HTML, Tailwind, Flutter and possibly SwiftUI. So, let's be consistent. - if ( - node.primaryAxisAlignItems === "SPACE_BETWEEN" && - node.children.length === 1 - ) { - altNode.primaryAxisAlignItems = "CENTER"; - } else { - altNode.primaryAxisAlignItems = node.primaryAxisAlignItems; - } - - altNode.counterAxisAlignItems = - node.counterAxisAlignItems === "BASELINE" - ? "CENTER" - : node.counterAxisAlignItems; - - altNode.paddingLeft = node.paddingLeft; - altNode.paddingRight = node.paddingRight; - altNode.paddingTop = node.paddingTop; - altNode.paddingBottom = node.paddingBottom; - - altNode.itemSpacing = node.itemSpacing; - altNode.layoutGrids = node.layoutGrids; - altNode.gridStyleId = node.gridStyleId; - altNode.clipsContent = node.clipsContent; - altNode.guides = node.guides; -}; - -const convertGeometry = (altNode: AltGeometryMixin, node: GeometryMixin) => { - altNode.fills = node.fills; - altNode.strokes = node.strokes; - altNode.strokeWeight = 0; - if (node.strokeWeight !== figma.mixed) { - altNode.strokeWeight = node.strokeWeight; - } - altNode.strokeMiterLimit = node.strokeMiterLimit; - altNode.strokeAlign = node.strokeAlign; - altNode.strokeCap = node.strokeCap; - altNode.strokeJoin = node.strokeJoin; - altNode.dashPattern = node.dashPattern; - altNode.fillStyleId = node.fillStyleId; - altNode.strokeStyleId = node.strokeStyleId; -}; - -const convertBlend = ( - altNode: AltBlendMixin, - node: BlendMixin & SceneNodeMixin -) => { - altNode.opacity = node.opacity; - altNode.blendMode = node.blendMode; - altNode.isMask = node.isMask; - altNode.effects = node.effects; - altNode.effectStyleId = node.effectStyleId; - - altNode.visible = node.visible; -}; - -const convertDefaultShape = ( - altNode: AltDefaultShapeMixin, - node: DefaultShapeMixin -) => { - // opacity, visible - convertBlend(altNode, node); - - // fills, strokes - convertGeometry(altNode, node); - - // width, x, y - convertLayout(altNode, node); -}; - -const convertCorner = (altNode: AltCornerMixin, node: CornerMixin) => { - altNode.cornerRadius = node.cornerRadius; - altNode.cornerSmoothing = node.cornerSmoothing; -}; - -const convertRectangleCorner = ( - altNode: AltRectangleCornerMixin, - node: RectangleCornerMixin -) => { - altNode.topLeftRadius = node.topLeftRadius; - altNode.topRightRadius = node.topRightRadius; - altNode.bottomLeftRadius = node.bottomLeftRadius; - altNode.bottomRightRadius = node.bottomRightRadius; -}; - -const convertIntoAltText = (altNode: AltTextNode, node: TextNode) => { - altNode.textAlignHorizontal = node.textAlignHorizontal; - altNode.textAlignVertical = node.textAlignVertical; - altNode.paragraphIndent = node.paragraphIndent; - altNode.paragraphSpacing = node.paragraphSpacing; - altNode.fontSize = node.fontSize; - altNode.fontName = node.fontName; - altNode.textCase = node.textCase; - altNode.textDecoration = node.textDecoration; - altNode.letterSpacing = node.letterSpacing; - altNode.textAutoResize = - node.textAutoResize === "TRUNCATE" - ? "WIDTH_AND_HEIGHT" - : node.textAutoResize; - altNode.characters = node.characters; - altNode.lineHeight = node.lineHeight; -}; - -export function notEmpty( - value: TValue | null | undefined -): value is TValue { - return value !== null && value !== undefined; -} - -const applyMatrixToPoint = (matrix: number[][], point: number[]): number[] => { - return [ - point[0] * matrix[0][0] + point[1] * matrix[0][1] + matrix[0][2], - point[0] * matrix[1][0] + point[1] * matrix[1][1] + matrix[1][2], - ]; -}; - -/** - * this function return a bounding rect for an nodes - */ -// x/y absolute coordinates -// height/width -// x2/y2 bottom right coordinates -export const getBoundingRect = ( - node: LayoutMixin -): { - x: number; - y: number; - // x2: number; - // y2: number; - // height: number; - // width: number; -} => { - const boundingRect = { - x: 0, - y: 0, - // x2: 0, - // y2: 0, - // height: 0, - // width: 0, - }; - - const halfHeight = node.height / 2; - const halfWidth = node.width / 2; - - const [[c0, s0, x], [s1, c1, y]] = node.absoluteTransform; - const matrix = [ - [c0, s0, x + halfWidth * c0 + halfHeight * s0], - [s1, c1, y + halfWidth * s1 + halfHeight * c1], - ]; - - // the coordinates of the corners of the rectangle - const XY: { - x: number[]; - y: number[]; - } = { - x: [1, -1, 1, -1], - y: [1, -1, -1, 1], - }; - - // fill in - for (let i = 0; i <= 3; i++) { - const a = applyMatrixToPoint(matrix, [ - XY.x[i] * halfWidth, - XY.y[i] * halfHeight, - ]); - XY.x[i] = a[0]; - XY.y[i] = a[1]; - } - - XY.x.sort((a, b) => a - b); - XY.y.sort((a, b) => a - b); - - return { - x: XY.x[0], - y: XY.y[0], - }; - - return boundingRect; -}; diff --git a/src/altNodes/altMixins.ts b/src/altNodes/altMixins.ts deleted file mode 100644 index af77d3ef..00000000 --- a/src/altNodes/altMixins.ts +++ /dev/null @@ -1,186 +0,0 @@ -// ALTSCENENODE -export type AltSceneNode = - | AltFrameNode - | AltGroupNode - | AltRectangleNode - | AltEllipseNode - | AltTextNode; - -export interface AltGeometryMixin { - fills: ReadonlyArray | PluginAPI["mixed"]; - strokes: ReadonlyArray; - strokeWeight: number; - strokeMiterLimit: number; - strokeAlign: "CENTER" | "INSIDE" | "OUTSIDE"; - strokeCap: StrokeCap | PluginAPI["mixed"]; - strokeJoin: StrokeJoin | PluginAPI["mixed"]; - dashPattern: ReadonlyArray; - fillStyleId: string | PluginAPI["mixed"]; - strokeStyleId: string; -} - -export interface AltCornerMixin { - cornerRadius: number | PluginAPI["mixed"]; - cornerSmoothing: number; -} - -export interface AltRectangleCornerMixin { - topLeftRadius: number; - topRightRadius: number; - bottomLeftRadius: number; - bottomRightRadius: number; -} - -export interface AltBlendMixin { - opacity: number; - blendMode: "PASS_THROUGH" | BlendMode; - isMask: boolean; - effects: ReadonlyArray; - effectStyleId: string; - visible: boolean; -} - -export interface AltLayoutMixin { - x: number; - y: number; - rotation: number; // In degrees - - width: number; - height: number; - - layoutAlign: "MIN" | "CENTER" | "MAX" | "STRETCH" | "INHERIT"; // applicable only inside auto-layout frames - layoutGrow: number; -} - -export interface AltFrameMixin { - layoutMode: "NONE" | "HORIZONTAL" | "VERTICAL"; - primaryAxisSizingMode: "FIXED" | "AUTO"; // applicable only if layoutMode != "NONE" - counterAxisSizingMode: "FIXED" | "AUTO"; // applicable only if layoutMode != "NONE" - - primaryAxisAlignItems: "MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN"; // applicable only if layoutMode != "NONE" - counterAxisAlignItems: "MIN" | "MAX" | "CENTER"; // applicable only if layoutMode != "NONE" - - paddingLeft: number; // applicable only if layoutMode != "NONE" - paddingRight: number; // applicable only if layoutMode != "NONE" - paddingTop: number; // applicable only if layoutMode != "NONE" - paddingBottom: number; // applicable only if layoutMode != "NONE" - itemSpacing: number; // applicable only if layoutMode != "NONE" - - layoutGrids: ReadonlyArray; - gridStyleId: string; - clipsContent: boolean; - guides: ReadonlyArray; -} -export class AltRectangleNode { - readonly type = "RECTANGLE"; -} -export class AltEllipseNode { - readonly type = "ELLIPSE"; -} -export class AltFrameNode { - readonly type = "FRAME"; -} -export class AltGroupNode { - readonly type = "GROUP"; -} -export class AltTextNode { - readonly type = "TEXT"; -} - -export interface AltDefaultShapeMixin - extends AltBaseNodeMixin, - AltBlendMixin, - AltGeometryMixin, - AltRectangleCornerMixin, - AltCornerMixin, - AltLayoutMixin {} - -export interface AltRectangleNode - extends AltDefaultShapeMixin, - AltCornerMixin, - AltRectangleCornerMixin {} - -export interface AltEllipseNode extends AltDefaultShapeMixin, AltCornerMixin {} - -export interface AltFrameNode - extends AltFrameMixin, - AltBaseNodeMixin, - AltChildrenMixin, - AltGeometryMixin, - AltCornerMixin, - AltRectangleCornerMixin, - AltBlendMixin, - AltLayoutMixin {} - -export interface AltGroupNode - extends AltBaseNodeMixin, - AltChildrenMixin, - AltBlendMixin, - AltLayoutMixin {} - -// DOCUMENT -// interface AltDocumentNode extends AltBaseNodeMixin, AltChildrenMixin {} - -// PAGE -// interface AltPageNode extends AltBaseNodeMixin, AltChildrenMixin {} - -interface AltTextMixin { - characters: string; - textAutoResize: "NONE" | "WIDTH_AND_HEIGHT" | "HEIGHT"; - - textAlignHorizontal: "LEFT" | "CENTER" | "RIGHT" | "JUSTIFIED"; - textAlignVertical: "TOP" | "CENTER" | "BOTTOM"; - - paragraphIndent: number; - paragraphSpacing: number; - - fontSize: number | PluginAPI["mixed"]; - fontName: FontName | PluginAPI["mixed"]; - textCase: TextCase | PluginAPI["mixed"]; - textDecoration: TextDecoration | PluginAPI["mixed"]; - letterSpacing: LetterSpacing | PluginAPI["mixed"]; - lineHeight: LineHeight | PluginAPI["mixed"]; -} - -export interface AltTextNode - extends AltTextMixin, - AltDefaultShapeMixin, - AltBaseNodeMixin, - AltLayoutMixin {} - -export interface AltBaseNodeMixin { - id: string; - parent: (AltSceneNode & AltChildrenMixin) | null; - name: string; - pluginData: { [key: string]: string }; - - // setPluginData(key: string, value: string): void; - // getPluginData(key: string): string; - // remove(): void; -} - -export interface AltChildrenMixin { - children: Array; - isRelative?: boolean; -} - -// // DOCUMENT -// class AltDocumentNode { -// type = "DOCUMENT"; -// children = []; -// } - -// // PAGE -// class AltPageNode { -// type = "PAGE"; -// children = []; -// _selection: Array = []; - -// get selection() { -// return this._selection || []; -// } - -// set selection(value) { -// this._selection = value; -// } -// } diff --git a/src/altNodes/convertGroupToFrame.ts b/src/altNodes/convertGroupToFrame.ts deleted file mode 100644 index fbf30a20..00000000 --- a/src/altNodes/convertGroupToFrame.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { AltSceneNode, AltFrameNode, AltGroupNode } from "./altMixins"; - -export const convertGroupToFrame = (node: AltGroupNode): AltFrameNode => { - const newNode = new AltFrameNode(); - - newNode.id = node.id; - newNode.name = node.name; - - newNode.x = node.x; - newNode.y = node.y; - newNode.width = node.width; - newNode.height = node.height; - newNode.rotation = node.rotation; - - newNode.fills = []; - newNode.strokes = []; - newNode.effects = []; - newNode.cornerRadius = 0; - - newNode.layoutMode = "NONE"; - newNode.counterAxisSizingMode = "AUTO"; - newNode.primaryAxisSizingMode = "AUTO"; - newNode.primaryAxisAlignItems = "CENTER"; - newNode.primaryAxisAlignItems = "CENTER"; - newNode.clipsContent = false; - newNode.layoutGrids = []; - newNode.gridStyleId = ""; - newNode.guides = []; - - newNode.parent = node.parent; - - // update the children's x and y position. Modify the 'original' node, then pass them. - updateChildrenXY(node); - newNode.children = node.children; - - newNode.children.forEach((d) => { - // update the parent of each child - d.parent = newNode; - }); - - // don't need to take care of newNode.parent.children because method is recursive. - // .children =... calls convertGroupToFrame() which returns the correct node - - return newNode; -}; - -/** - * Update all children's X and Y value from a Group. - * Group uses relative values, while Frame use absolute. So child.x - group.x = child.x on Frames. - * This isn't recursive, because it is going to run from the inner-most to outer-most element. Therefore, it would calculate wrongly otherwise. - * - * This must be called with a GroupNode. Param accepts anything because of the recurison. - * Result of a Group with x,y = (250, 250) and child at (260, 260) must be child at (10, 10) - */ -const updateChildrenXY = (node: AltSceneNode): AltSceneNode => { - // the second condition is necessary, so it can convert the root - if (node.type === "GROUP") { - node.children.forEach((d) => { - d.x = d.x - node.x; - d.y = d.y - node.y; - updateChildrenXY(d); - }); - return node; - } else { - return node; - } -}; diff --git a/src/altNodes/convertNodesOnRectangle.ts b/src/altNodes/convertNodesOnRectangle.ts deleted file mode 100644 index f021f2aa..00000000 --- a/src/altNodes/convertNodesOnRectangle.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { - AltRectangleNode, - AltFrameNode, - AltGroupNode, - AltSceneNode, -} from "./altMixins"; -import { convertToAutoLayout } from "./convertToAutoLayout"; - -/** - * Identify all nodes that are inside Rectangles and transform those Rectangles into Frames containing those nodes. - */ -export const convertNodesOnRectangle = ( - node: AltFrameNode | AltGroupNode -): AltFrameNode | AltGroupNode => { - if (node.children.length < 2) { - return node; - } - if (!node.id) { - throw new Error( - "Node is missing an id! This error should only happen in tests." - ); - } - - const colliding = retrieveCollidingItems(node.children); - - const parentsKeys = Object.keys(colliding); - // start with all children. This is going to be filtered. - let updatedChildren: Array = [...node.children]; - - parentsKeys.forEach((key) => { - // dangerous cast, but this is always true - const parentNode = node.children.find( - (d) => d.id === key - ) as AltRectangleNode; - - // retrieve the position. Key should always be at the left side, so even when other items are removed, the index is kept the same. - const indexPosition = updatedChildren.findIndex((d) => d.id === key); - - // filter the children to remove those that are being modified - updatedChildren = updatedChildren.filter( - (d) => !colliding[key].map((dd) => dd.id).includes(d.id) && key !== d.id - ); - - const frameNode = convertRectangleToFrame(parentNode); - - // todo when the soon-to-be-parent is larger than its parent, things get weird. Happens, for example, when a large image is used in the background. Should this be handled or is this something user should never do? - - frameNode.children = [...colliding[key]]; - colliding[key].forEach((d) => { - d.parent = frameNode; - d.x = d.x - frameNode.x; - d.y = d.y - frameNode.y; - }); - - // try to convert the children to AutoLayout, and insert back at updatedChildren. - updatedChildren.splice(indexPosition, 0, convertToAutoLayout(frameNode)); - }); - - if (updatedChildren.length > 0) { - node.children = updatedChildren; - } - - // convert the resulting node to AutoLayout. - node = convertToAutoLayout(node); - - return node; -}; - -const convertRectangleToFrame = (rect: AltRectangleNode) => { - // if a Rect with elements inside were identified, extract this Rect - // outer methods are going to use it. - - const frameNode = new AltFrameNode(); - - frameNode.parent = rect.parent; - - frameNode.width = rect.width; - frameNode.height = rect.height; - frameNode.x = rect.x; - frameNode.y = rect.y; - frameNode.rotation = rect.rotation; - frameNode.layoutMode = "NONE"; - - // opacity should be ignored, else it will affect children - - // when invisible, add the layer but don't fill it; he designer might use invisible layers for alignment. - // visible can be undefined in tests - if (rect.visible) { - frameNode.fills = rect.fills; - frameNode.fillStyleId = rect.fillStyleId; - - frameNode.strokes = rect.strokes; - frameNode.strokeStyleId = rect.strokeStyleId; - - frameNode.effects = rect.effects; - frameNode.effectStyleId = rect.effectStyleId; - } - - // inner Rectangle shall get a FIXED size - frameNode.counterAxisAlignItems = "MIN"; - frameNode.counterAxisSizingMode = "FIXED"; - frameNode.primaryAxisAlignItems = "MIN"; - frameNode.primaryAxisSizingMode = "FIXED"; - - frameNode.strokeAlign = rect.strokeAlign; - frameNode.strokeCap = rect.strokeCap; - frameNode.strokeJoin = rect.strokeJoin; - frameNode.strokeMiterLimit = rect.strokeMiterLimit; - frameNode.strokeWeight = rect.strokeWeight; - - frameNode.cornerRadius = rect.cornerRadius; - frameNode.cornerSmoothing = rect.cornerSmoothing; - frameNode.topLeftRadius = rect.topLeftRadius; - frameNode.topRightRadius = rect.topRightRadius; - frameNode.bottomLeftRadius = rect.bottomLeftRadius; - frameNode.bottomRightRadius = rect.bottomRightRadius; - - frameNode.id = rect.id; - frameNode.name = rect.name; - - return frameNode; -}; - -/** - * Iterate over each Rectangle and check if it has any child on top. - * This is O(n^2), but is optimized to only do j=i+1 until length, and avoid repeated entries. - * A Node can only have a single parent. The order is defined by layer order. - */ -const retrieveCollidingItems = ( - children: ReadonlyArray -): Record> => { - const used: Record = {}; - const groups: Record> = {}; - - for (let i = 0; i < children.length - 1; i++) { - const item1 = children[i]; - - // ignore items that are not Rectangles - if (item1.type !== "RECTANGLE") { - continue; - } - - for (let j = i + 1; j < children.length; j++) { - const item2 = children[j]; - - if ( - !used[item2.id] && - item1.x <= item2.x && - item1.y <= item2.y && - item1.x + item1.width >= item2.x + item2.width && - item1.y + item1.height >= item2.y + item2.height - ) { - if (!groups[item1.id]) { - groups[item1.id] = [item2]; - } else { - groups[item1.id].push(item2); - } - used[item2.id] = true; - } - } - } - - return groups; -}; diff --git a/src/altNodes/convertToAutoLayout.ts b/src/altNodes/convertToAutoLayout.ts deleted file mode 100644 index 2928650f..00000000 --- a/src/altNodes/convertToAutoLayout.ts +++ /dev/null @@ -1,316 +0,0 @@ -import { mostFrequent } from "./../swiftui/swiftuiMain"; -import { AltFrameNode, AltGroupNode, AltSceneNode } from "./altMixins"; -import { convertGroupToFrame } from "./convertGroupToFrame"; - -/** - * Add AutoLayout attributes if layout has items aligned (either vertically or horizontally). - * To make the calculation, the average position of every child, ordered, needs to pass a threshold. - * If it fails for both X and Y axis, there is no AutoLayout and return it unchanged. - * If it finds, add the correct attributes. When original node is a Group, - * convert it to Frame before adding the attributes. Group doesn't have AutoLayout properties. - */ -export const convertToAutoLayout = ( - node: AltFrameNode | AltGroupNode -): AltFrameNode | AltGroupNode => { - // only go inside when AutoLayout is not already set. - - if ( - ("layoutMode" in node && - node.layoutMode === "NONE" && - node.children.length > 0) || - node.type === "GROUP" - ) { - const [orderedChildren, direction, itemSpacing] = reorderChildrenIfAligned( - node.children - ); - node.children = orderedChildren; - - if (direction === "NONE" && node.children.length > 1) { - node.isRelative = true; - } - - if (direction === "NONE" && node.children.length !== 1) { - // catches when children is 0 or children is larger than 1 - return node; - } - - // if node is a group, convert to frame - if (node.type === "GROUP") { - node = convertGroupToFrame(node); - } - - if (direction === "NONE" && node.children.length === 1) { - // Add fake AutoLayout when there is a single item. This is done for the Padding. - node.layoutMode = "HORIZONTAL"; - } else { - node.layoutMode = direction; - } - - node.itemSpacing = itemSpacing > 0 ? itemSpacing : 0; - - const padding = detectAutoLayoutPadding(node); - - node.paddingTop = Math.max(padding.top, 0); - node.paddingBottom = Math.max(padding.bottom, 0); - node.paddingLeft = Math.max(padding.left, 0); - node.paddingRight = Math.max(padding.right, 0); - - // set children to INHERIT or STRETCH - node.children.map((d) => { - // @ts-expect-error current node can't be AltGroupNode because it was converted into AltFrameNode - layoutAlignInChild(d, node); - }); - - const allChildrenDirection = node.children.map((d) => - // @ts-expect-error current node can't be AltGroupNode because it was converted into AltFrameNode - primaryAxisDirection(d, node) - ); - - const primaryDirection = allChildrenDirection.map((d) => d.primary); - const counterDirection = allChildrenDirection.map((d) => d.counter); - - // @ts-expect-error it is never going to be undefined. - node.primaryAxisAlignItems = mostFrequent(primaryDirection); - // @ts-expect-error it is never going to be undefined. - node.counterAxisAlignItems = mostFrequent(counterDirection); - - node.counterAxisSizingMode = "FIXED"; - node.primaryAxisSizingMode = "FIXED"; - } - - return node; -}; - -/** - * Standard average calculation. Length must be > 0 - */ -const average = (arr: Array) => - arr.reduce((p, c) => p + c, 0) / arr.length; - -/** - * Check the average of children positions against this threshold; - * This allows a small tolerance, which is useful when items are slightly overlayed. - * If you set this lower, layouts will get more responsive but with less visual fidelity. - */ -const threshold = -2; - -/** - * Verify if children are sorted by their relative position and return them sorted, if identified. - */ -const reorderChildrenIfAligned = ( - children: ReadonlyArray -): [Array, "HORIZONTAL" | "VERTICAL" | "NONE", number] => { - if (children.length === 1) { - return [[...children], "NONE", 0]; - } - - const updateChildren = [...children]; - const [visit, avg] = shouldVisit(updateChildren); - - // check against a threshold - if (visit === "VERTICAL") { - // if all elements are horizontally aligned - return [updateChildren.sort((a, b) => a.y - b.y), "VERTICAL", avg]; - } else if (visit === "HORIZONTAL") { - // if all elements are vertically aligned - return [updateChildren.sort((a, b) => a.x - b.x), "HORIZONTAL", avg]; - } - - return [updateChildren, "NONE", 0]; -}; - -/** - * Checks if layout is horizontally or vertically aligned. - * First verify if all items are vertically aligned in Y axis (spacing > 0), then for X axis, then the average for Y and finally the average for X. - * If no correspondence is found, returns "NONE". - * In a previous version, it used a "standard deviation", but "average" performed better. - */ -const shouldVisit = ( - children: ReadonlyArray -): ["HORIZONTAL" | "VERTICAL" | "NONE", number] => { - const intervalY = calculateInterval(children, "y"); - const intervalX = calculateInterval(children, "x"); - - const avgX = average(intervalX); - const avgY = average(intervalY); - - if (!intervalY.every((d) => d >= threshold)) { - if (!intervalX.every((d) => d >= threshold)) { - if (avgY <= threshold) { - if (avgX <= threshold) { - return ["NONE", 0]; - } - return ["HORIZONTAL", avgX]; - } - return ["VERTICAL", avgY]; - } - return ["HORIZONTAL", avgX]; - } - return ["VERTICAL", avgY]; -}; - -// todo improve this method to try harder. Idea: maybe use k-means or hierarchical cluster? - -/** - * This function calculates the distance (interval) between items. - * Example: for [item]--8--[item]--8--[item], the result is [8, 8] - */ -const calculateInterval = ( - children: ReadonlyArray, - xOrY: "x" | "y" -): Array => { - const hOrW: "width" | "height" = xOrY === "x" ? "width" : "height"; - - // sort children based on X or Y values - const sorted: Array = [...children].sort( - (a, b) => a[xOrY] - b[xOrY] - ); - - // calculate the distance between values (either vertically or horizontally) - const interval = []; - for (let i = 0; i < sorted.length - 1; i++) { - interval.push(sorted[i + 1][xOrY] - (sorted[i][xOrY] + sorted[i][hOrW])); - } - return interval; -}; - -/** - * Calculate the Padding. - * This is very verbose, but also more performant than calculating them independently. - */ -const detectAutoLayoutPadding = ( - node: AltFrameNode -): { - left: number; - right: number; - top: number; - bottom: number; -} => { - // this need to be run before VERTICAL or HORIZONTAL - if (node.children.length === 1) { - // left padding is first element's y value - const left = node.children[0].x; - - const right = node.width - (node.children[0].x + node.children[0].width); - - const top = node.children[0].y; - - const bottom = node.height - (node.children[0].y + node.children[0].height); - - // return the smallest padding in each axis - return { - left, - right, - top, - bottom, - }; - } else if (node.layoutMode === "VERTICAL") { - // top padding is first element's y value - const top = node.children[0].y; - - // bottom padding is node height - last position + last height - const last = node.children[node.children.length - 1]; - const bottom = node.height - (last.y + last.height); - - // the closest value to the left border - const left = Math.min(...node.children.map((d) => d.x)); - - // similar to [bottom] calculation, but using height and getting the minimum - const right = Math.min( - ...node.children.map((d) => node.width - (d.width + d.x)) - ); - - // return the smallest padding in each axis - return { - left, - right, - top, - bottom, - }; - } else { - // node.layoutMode === "HORIZONTAL" - - // left padding is first element's y value - const left = node.children[0].x; - - // right padding is node width - last position + last width - const last = node.children[node.children.length - 1]; - const right = node.width - (last.x + last.width); - - // the closest value to the top border - const top = Math.min(...node.children.map((d) => d.y)); - - // similar to [right] calculation, but using height and getting the minimum - const bottom = Math.min( - ...node.children.map((d) => node.height - (d.height + d.y)) - ); - - // return the smallest padding in each axis - return { - left, - right, - top, - bottom, - }; - } -}; - -/** - * Detect if children stretch or inherit. - */ -const layoutAlignInChild = (node: AltSceneNode, parentNode: AltFrameNode) => { - const sameWidth = - node.width - 2 > - parentNode.width - parentNode.paddingLeft - parentNode.paddingRight; - - const sameHeight = - node.height - 2 > - parentNode.height - parentNode.paddingTop - parentNode.paddingBottom; - - if (parentNode.layoutMode === "VERTICAL") { - node.layoutAlign = sameWidth ? "STRETCH" : "INHERIT"; - } else { - node.layoutAlign = sameHeight ? "STRETCH" : "INHERIT"; - } - // with custom AutoLayout, this is never going to be 1. - node.layoutGrow = 0; -}; - -const primaryAxisDirection = ( - node: AltSceneNode, - parentNode: AltFrameNode -): { primary: "MIN" | "CENTER" | "MAX"; counter: "MIN" | "CENTER" | "MAX" } => { - // parentNode.layoutMode can't be NONE. - const nodeCenteredPosX = node.x + node.width / 2; - const parentCenteredPosX = parentNode.width / 2; - - const centerXPosition = nodeCenteredPosX - parentCenteredPosX; - - const nodeCenteredPosY = node.y + node.height / 2; - const parentCenteredPosY = parentNode.height / 2; - - const centerYPosition = nodeCenteredPosY - parentCenteredPosY; - - if (parentNode.layoutMode === "VERTICAL") { - return { - primary: getPaddingDirection(centerYPosition), - counter: getPaddingDirection(centerXPosition), - }; - } else { - return { - primary: getPaddingDirection(centerXPosition), - counter: getPaddingDirection(centerYPosition), - }; - } -}; - -const getPaddingDirection = (position: number): "MIN" | "CENTER" | "MAX" => { - // allow a small threshold - if (position < -4) { - return "MIN"; - } else if (position > 4) { - return "MAX"; - } else { - return "CENTER"; - } -}; diff --git a/src/code.ts b/src/code.ts deleted file mode 100644 index 6780b184..00000000 --- a/src/code.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { retrieveTailwindText } from "./tailwind/retrieveUI/retrieveTexts"; -import { - retrieveGenericLinearGradients, - retrieveGenericSolidUIColors, -} from "./common/retrieveUI/retrieveColors"; -import { htmlMain } from "./html/htmlMain"; -import { swiftuiMain } from "./swiftui/swiftuiMain"; -import { tailwindMain } from "./tailwind/tailwindMain"; -import { flutterMain } from "./flutter/flutterMain"; -import { convertIntoAltNodes } from "./altNodes/altConversion"; - -let parentId: string; -let isJsx = false; -let layerName = false, - material = true; - - let mode: "flutter" | "swiftui" | "html" | "tailwind"; - -figma.showUI(__html__, { width: 450, height: 550 }); - -const run = () => { - // ignore when nothing was selected - if (figma.currentPage.selection.length === 0) { - figma.ui.postMessage({ - type: "empty", - }); - return; - } - - // check [ignoreStackParent] description - if (figma.currentPage.selection.length > 0) { - parentId = figma.currentPage.selection[0].parent?.id ?? ""; - } - - let result = ""; - - const convertedSelection = convertIntoAltNodes( - figma.currentPage.selection, - null - ); - - // @ts-expect-error - if (mode === "flutter") { - result = flutterMain(convertedSelection, parentId, material); - } else if (mode === "tailwind") { - result = tailwindMain(convertedSelection, parentId, isJsx, layerName); - } else if (mode === "swiftui") { - result = swiftuiMain(convertedSelection, parentId); - } else if (mode === "html") { - result = htmlMain(convertedSelection, parentId, isJsx, layerName); - } - - console.log(result); - - figma.ui.postMessage({ - type: "result", - data: result, - }); - - if ( - mode === "tailwind" || - mode === "flutter" || - mode === "html" || - mode === "swiftui" - ) { - figma.ui.postMessage({ - type: "colors", - data: retrieveGenericSolidUIColors(convertedSelection, mode), - }); - - figma.ui.postMessage({ - type: "gradients", - data: retrieveGenericLinearGradients(convertedSelection, mode), - }); - } - if (mode === "tailwind") { - figma.ui.postMessage({ - type: "text", - data: retrieveTailwindText(convertedSelection), - }); - } -}; - -figma.on("selectionchange", () => { - run(); -}); - -// efficient? No. Works? Yes. -// todo pass data instead of relying in types -figma.ui.onmessage = (msg) => { - if ( - msg.type === "tailwind" || - msg.type === "flutter" || - msg.type === "swiftui" || - msg.type === "html" - ) { - mode = msg.type; - run(); - } else if (msg.type === "jsx" && msg.data !== isJsx) { - isJsx = msg.data; - run(); - } else if (msg.type === "layerName" && msg.data !== layerName) { - layerName = msg.data; - run(); - } else if (msg.type === "material" && msg.data !== material) { - material = msg.data; - run(); - } -}; diff --git a/src/common/commonPadding.ts b/src/common/commonPadding.ts deleted file mode 100644 index 2d40fc58..00000000 --- a/src/common/commonPadding.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { AltFrameMixin, AltDefaultShapeMixin } from "../altNodes/altMixins"; - -type paddingType = { - horizontal: number; - left: number; - right: number; - vertical: number; - top: number; - bottom: number; -}; - -/** - * Add padding if necessary. - * Padding is currently only valid for auto layout. - * Padding can have values even when AutoLayout is off - */ -export const commonPadding = ( - node: AltFrameMixin | AltDefaultShapeMixin -): { all: number } | paddingType | null => { - if ("layoutMode" in node && node.layoutMode !== "NONE") { - // round the numbers to avoid 5 being different than 5.00001 - // fix it if undefined (in tests) - node.paddingLeft = Math.round(node.paddingLeft ?? 0); - node.paddingRight = Math.round(node.paddingRight ?? 0); - node.paddingTop = Math.round(node.paddingTop ?? 0); - node.paddingBottom = Math.round(node.paddingBottom ?? 0); - - const arr: paddingType = { - horizontal: 0, - vertical: 0, - left: 0, - right: 0, - top: 0, - bottom: 0, - }; - - if ( - node.paddingLeft > 0 && - node.paddingLeft === node.paddingRight && - node.paddingLeft === node.paddingBottom && - node.paddingTop === node.paddingBottom - ) { - return { all: node.paddingLeft }; - } else if (node.paddingLeft > 0 && node.paddingLeft === node.paddingRight) { - // horizontal padding + vertical + individual paddings - arr.horizontal = node.paddingLeft; - - if (node.paddingTop > 0 && node.paddingTop === node.paddingBottom) { - arr.vertical = node.paddingTop; - } else { - if (node.paddingTop > 0) { - arr.top = node.paddingTop; - } - if (node.paddingBottom > 0) { - arr.bottom = node.paddingBottom; - } - } - } else if (node.paddingTop > 0 && node.paddingTop === node.paddingBottom) { - // vertical padding + individual paddings - arr.vertical = node.paddingBottom; - - if (node.paddingLeft > 0) { - arr.left = node.paddingLeft; - } - if (node.paddingRight > 0) { - arr.right = node.paddingRight; - } - } else { - // individual paddings - if (node.paddingLeft > 0) { - arr.left = node.paddingLeft; - } - if (node.paddingRight > 0) { - arr.right = node.paddingRight; - } - if (node.paddingTop > 0) { - arr.top = node.paddingTop; - } - if (node.paddingBottom > 0) { - arr.bottom = node.paddingBottom; - } - } - - return arr; - } - - return null; -}; diff --git a/src/common/commonPosition.ts b/src/common/commonPosition.ts deleted file mode 100644 index ad00af2f..00000000 --- a/src/common/commonPosition.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { AltSceneNode } from "../altNodes/altMixins"; -import { parentCoordinates } from "./parentCoordinates"; - -type position = - | "" - | "Absolute" - | "TopStart" - | "TopCenter" - | "TopEnd" - | "CenterStart" - | "Center" - | "CenterEnd" - | "BottomStart" - | "BottomCenter" - | "BottomEnd"; - -export const commonPosition = (node: AltSceneNode): position => { - // if node is same size as height, position is not necessary - - // detect if Frame's width is same as Child when Frame has Padding. - // warning: this may return true even when false, if size is same, but position is different. However, it would be an unexpected layout. - let hPadding = 0; - let vPadding = 0; - if (node.parent && "layoutMode" in node.parent) { - hPadding = (node.parent.paddingLeft ?? 0) + (node.parent.paddingRight ?? 0); - vPadding = (node.parent.paddingTop ?? 0) + (node.parent.paddingBottom ?? 0); - } - - if ( - !node.parent || - (node.width === node.parent.width - hPadding && - node.height === node.parent.height - vPadding) - ) { - return ""; - } - - // position is absolute, parent is relative - // return "absolute inset-0 m-auto "; - - const [parentX, parentY] = parentCoordinates(node.parent); - - // if view is too small, anything will be detected; this is necessary to reduce the tolerance. - let threshold = 8; - if (node.width < 16 || node.height < 16) { - threshold = 1; - } - - // < 4 is a threshold. If === is used, there can be rounding errors (28.002 !== 28) - const centerX = - Math.abs(2 * (node.x - parentX) + node.width - node.parent.width) < - threshold; - const centerY = - Math.abs(2 * (node.y - parentY) + node.height - node.parent.height) < - threshold; - - const minX = node.x - parentX < threshold; - const minY = node.y - parentY < threshold; - - const maxX = node.parent.width - (node.x - parentX + node.width) < threshold; - const maxY = - node.parent.height - (node.y - parentY + node.height) < threshold; - - // this needs to be on top, because Tailwind is incompatible with Center, so this will give preference. - if (minX && minY) { - // x left, y top - return "TopStart"; - } else if (minX && maxY) { - // x left, y bottom - return "BottomStart"; - } else if (maxX && minY) { - // x right, y top - return "TopEnd"; - } else if (maxX && maxY) { - // x right, y bottom - return "BottomEnd"; - } - - if (centerX && centerY) { - return "Center"; - } - - if (centerX) { - if (minY) { - // x center, y top - return "TopCenter"; - } - if (maxY) { - // x center, y bottom - return "BottomCenter"; - } - } else if (centerY) { - if (minX) { - // x left, y center - return "CenterStart"; - } - if (maxX) { - // x right, y center - return "CenterEnd"; - } - } - - return "Absolute"; -}; diff --git a/src/common/commonTextHeightSpacing.ts b/src/common/commonTextHeightSpacing.ts deleted file mode 100644 index 098e264a..00000000 --- a/src/common/commonTextHeightSpacing.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AltTextNode } from "../altNodes/altMixins"; - -export const commonLineHeight = (node: AltTextNode): number => { - if ( - node.lineHeight !== figma.mixed && - node.lineHeight.unit !== "AUTO" && - Math.round(node.lineHeight.value) !== 0 - ) { - if (node.lineHeight.unit === "PIXELS") { - return node.lineHeight.value; - } else if (node.fontSize !== figma.mixed) { - // based on tests, using Inter font with varied sizes and weights, this works. - // example: 24 * 20 / 100 = 4.8px, which is correct visually. - return (node.fontSize * node.lineHeight.value) / 100; - } - } - - return 0; -}; - -export const commonLetterSpacing = (node: AltTextNode): number => { - if ( - node.letterSpacing !== figma.mixed && - Math.round(node.letterSpacing.value) !== 0 - ) { - if (node.letterSpacing.unit === "PIXELS") { - return node.letterSpacing.value; - } else if (node.fontSize !== figma.mixed) { - // read [commonLineHeight] comment to understand what is going on here. - return (node.fontSize * node.letterSpacing.value) / 100; - } - } - - return 0; -}; diff --git a/src/common/indentString.ts b/src/common/indentString.ts deleted file mode 100644 index 3e323c8f..00000000 --- a/src/common/indentString.ts +++ /dev/null @@ -1,10 +0,0 @@ -// From https://github.com/sindresorhus/indent-string -export const indentString = (str: string, indentLevel: number = 1): string => { - // const options = { - // includeEmptyLines: false, - // }; - - // const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; - const regex = /^(?!\s*$)/gm; - return str.replace(regex, " ".repeat(indentLevel * 4)); -}; diff --git a/src/common/nodeWidthHeight.ts b/src/common/nodeWidthHeight.ts deleted file mode 100644 index 6d9c6a5c..00000000 --- a/src/common/nodeWidthHeight.ts +++ /dev/null @@ -1,367 +0,0 @@ -import { AltSceneNode } from "../altNodes/altMixins"; - -export const magicMargin = 32; - -type SizeResult = { - readonly width: responsive | number | null; - readonly height: responsive | number | null; -}; - -// Update for latest Figma APIs. The old one is still being used for Tailwind. -export const nodeWidthHeight = ( - node: AltSceneNode, - allowRelative: boolean -): SizeResult => { - let nodeWidth: number | null = node.width; - let nodeHeight: number | null = node.height; - - if (node.type === "FRAME") { - switch (node.layoutMode) { - case "HORIZONTAL": - nodeWidth = node.primaryAxisSizingMode === "AUTO" ? null : node.width; - break; - case "VERTICAL": - nodeHeight = node.primaryAxisSizingMode === "AUTO" ? null : node.height; - break; - case "NONE": - break; - } - } - - if (node.parent && node.parent.type === "FRAME") { - switch (node.parent.layoutMode) { - case "HORIZONTAL": - return { - width: node.layoutGrow === 1 ? "full" : nodeWidth, - height: node.layoutAlign === "STRETCH" ? "full" : nodeHeight, - }; - case "VERTICAL": - return { - width: node.layoutAlign === "STRETCH" ? "full" : nodeWidth, - height: node.layoutGrow === 1 ? "full" : nodeHeight, - }; - case "NONE": - break; - } - } - - return { - width: nodeWidth, - height: nodeHeight, - }; -}; - -export const nodeWidthHeightTailwind = ( - node: AltSceneNode, - allowRelative: boolean -): SizeResult => { - /// WIDTH AND HEIGHT - - // if parent is a page, width can't get past w-64, therefore let it be free - // if (node.parent?.type === "PAGE" && node.width > 256) { - // return ""; - // } - - if (node.layoutAlign === "STRETCH" && node.layoutGrow === 1) { - return { - width: "full", - height: "full", - }; - } - - const [nodeWidth, nodeHeight] = getNodeSizeWithStrokes(node); - - let propWidth: responsive | number | null = nodeWidth; - let propHeight: responsive | number | null = nodeHeight; - - if (node.parent && "layoutMode" in node.parent) { - // Stretch means the opposite direction - if (node.layoutAlign === "STRETCH") { - switch (node.parent.layoutMode) { - case "HORIZONTAL": - propHeight = "full"; - break; - case "VERTICAL": - propWidth = "full"; - break; - case "NONE": - break; - } - } - - // Grow means the same direction - if (node.layoutGrow === 1) { - if (node.parent.layoutMode === "HORIZONTAL") { - propWidth = "full"; - } else { - propHeight = "full"; - } - } - } - - // avoid relative width when parent is relative (therefore, child is probably absolute, which doesn't work nice) - // ignore for root layer - // todo should this be kept this way? The issue is w-full which doesn't work well with absolute position. - if (allowRelative && node.parent?.isRelative !== true) { - // don't calculate again if it was already calculated - if (propWidth !== "full") { - const rW = calculateResponsiveWH(node, nodeWidth, "x"); - if (rW) { - propWidth = rW; - } - } - - if (propHeight !== "full") { - const rH = calculateResponsiveWH(node, nodeHeight, "y"); - if (rH && node.parent) { - propHeight = rH; - } - } - } - - // when any child has a relative width and parent is HORIZONTAL, - // parent must have a defined width, which wouldn't otherwise. - // todo check if the performance impact of this is worth it. - // const hasRelativeChildW = - // allowRelative && - // "children" in node && - // node.children.find((d) => - // calculateResponsiveWH(d, getNodeSizeWithStrokes(d)[0], "x") - // ) !== undefined; - - // when the child has the same size as the parent, don't set the size of the parent (twice) - if ("children" in node && node.children && node.children.length === 1) { - const child = node.children[0]; - - // detect if Frame's width is same as Child when Frame has Padding. - let hPadding = 0; - let vPadding = 0; - if ("layoutMode" in node) { - hPadding = node.paddingLeft + node.paddingRight; - vPadding = node.paddingTop + node.paddingBottom; - } - - // set them independently, in case w is equal but h isn't - if (child.width === nodeWidth - hPadding) { - // propWidth = null; - } - if (child.height === nodeHeight - vPadding) { - // propHeight = null; - } - } - - if ("layoutMode" in node) { - if ( - (node.layoutMode === "HORIZONTAL" && - node.counterAxisSizingMode === "AUTO") || - (node.layoutMode === "VERTICAL" && node.primaryAxisSizingMode === "AUTO") - ) { - propHeight = null; - } - - if ( - (node.layoutMode === "VERTICAL" && - node.counterAxisSizingMode === "AUTO") || - (node.layoutMode === "HORIZONTAL" && - node.primaryAxisSizingMode === "AUTO") - ) { - propWidth = null; - } - } - - // On Tailwind, do not let the size be larger than 384. - if (allowRelative) { - if ( - (node.type !== "RECTANGLE" && nodeHeight > 384) || - childLargerThanMaxSize(node, "y") - ) { - propHeight = null; - } else if ( - (node.type !== "RECTANGLE" && nodeWidth > 384) || - childLargerThanMaxSize(node, "x") - ) { - propWidth = null; - } - } - - if ("layoutMode" in node && node.layoutMode !== "NONE") { - // there is an edge case: frame with no children, layoutMode !== NONE and counterAxis = AUTO, but: - // in [altConversions] it is already solved: Frame without children becomes a Rectangle. - switch (node.layoutMode) { - case "HORIZONTAL": - return { - width: node.primaryAxisSizingMode === "FIXED" ? propWidth : null, - height: node.counterAxisSizingMode === "FIXED" ? propHeight : null, - }; - case "VERTICAL": - return { - width: node.counterAxisSizingMode === "FIXED" ? propWidth : null, - height: node.primaryAxisSizingMode === "FIXED" ? propHeight : null, - }; - } - } else { - return { - width: propWidth, - height: propHeight, - }; - } -}; - -// makes the view size bigger when there is a stroke -const getNodeSizeWithStrokes = (node: AltSceneNode): Array => { - let nodeHeight = node.height; - let nodeWidth = node.width; - - // tailwind doesn't support OUTSIDE or CENTER, only INSIDE. - // Therefore, to give the same feeling, the height and width will be slighly increased. - // node.strokes.lenght is necessary because [strokeWeight] can exist even without strokes. - if ("strokes" in node && node.strokes && node.strokes.length) { - if (node.strokeAlign === "OUTSIDE") { - nodeHeight += node.strokeWeight * 2; - nodeWidth += node.strokeWeight * 2; - } else if (node.strokeAlign === "CENTER") { - nodeHeight += node.strokeWeight; - nodeWidth += node.strokeWeight; - } - } - - if ("children" in node) { - // if any children has an OUTSIDE or CENTER stroke and, with that stroke, - // the child gets a size bigger than parent, adjust parent to be larger - node.children.forEach((d) => { - if ("strokeWeight" in d && d.strokes?.length > 0) { - if (d.strokeAlign === "OUTSIDE") { - if (nodeWidth < d.width + d.strokeWeight * 2) { - nodeWidth += d.strokeWeight * 2; - } - if (nodeHeight < d.height + d.strokeWeight * 2) { - nodeHeight += d.strokeWeight * 2; - } - } else if (d.strokeAlign === "CENTER") { - if (nodeWidth < d.width + d.strokeWeight) { - nodeWidth += d.strokeWeight; - } - if (nodeHeight < d.height + d.strokeWeight) { - nodeHeight += d.strokeWeight; - } - } - } - }); - } - - return [nodeWidth, nodeHeight]; -}; - -const childLargerThanMaxSize = (node: AltSceneNode, axis: "x" | "y") => { - if ("children" in node && node.children.length > 0) { - const widthHeight: "width" | "height" = axis === "x" ? "width" : "height"; - const lastChild = node.children[node.children.length - 1]; - - const maxLen = - lastChild[axis] + lastChild[widthHeight] - node.children[0][axis]; - return maxLen > 384; - } - return false; -}; - -type responsive = - | "" - | "full" - | "1/2" - | "1/3" - | "2/3" - | "1/4" - | "3/4" - | "1/5" - | "1/6" - | "5/6"; - -const calculateResponsiveWH = ( - node: AltSceneNode, - nodeWidthHeightNumber: number, - axis: "x" | "y" -): responsive => { - let returnValue: responsive = ""; - - if (nodeWidthHeightNumber > 384 || childLargerThanMaxSize(node, axis)) { - returnValue = "full"; - } - - if (!node.parent) { - return returnValue; - } - - let parentWidthHeight; - if ("layoutMode" in node.parent && node.parent.layoutMode !== "NONE") { - if (axis === "x") { - // subtract padding from the layout width, so it can be full when compared with parent. - parentWidthHeight = - node.parent.width - node.parent.paddingLeft - node.parent.paddingRight; - } else { - // subtract padding from the layout height, so it can be full when compared with parent. - parentWidthHeight = - node.parent.height - node.parent.paddingTop - node.parent.paddingBottom; - } - } else { - parentWidthHeight = axis === "x" ? node.parent.width : node.parent.height; - } - - // 0.01 of tolerance is enough for 5% of diff, i.e.: 804 / 400 - const dividedWidth = nodeWidthHeightNumber / parentWidthHeight; - - const calculateResp = (div: number, str: responsive) => { - if (Math.abs(dividedWidth - div) < 0.01) { - returnValue = str; - return true; - } - return false; - }; - - // they will try to set the value, and if false keep calculating - const checkList: Array<[number, responsive]> = [ - [1, "full"], - [1 / 2, "1/2"], - [1 / 3, "1/3"], - [2 / 3, "2/3"], - [1 / 4, "1/4"], - [3 / 4, "3/4"], - [1 / 5, "1/5"], - [1 / 6, "1/6"], - [5 / 6, "5/6"], - ]; - - // exit the for when result is found. - let resultFound = false; - for (let i = 0; i < checkList.length && !resultFound; i++) { - const [div, resp] = checkList[i]; - resultFound = calculateResp(div, resp); - } - - // todo this was commented because it is almost never used. Should it be uncommented? - // if (!resultFound && isWidthFull(node, nodeWidth, parentWidth)) { - // propWidth = "full"; - // } - - return returnValue; -}; - -// set the width to max if the view is near the corner -// export const isWidthFull = ( -// node: AltSceneNode, -// nodeWidth: number, -// parentWidth: number -// ): boolean => { -// // check if initial and final positions are within a magic number (currently 32) -// // this will only be reached when parent is FRAME, so node.parent.x is always 0. -// const betweenValueMargins = -// node.x <= magicMargin && parentWidth - (node.x + nodeWidth) <= magicMargin; - -// // check if total width is at least 80% of the parent. This number is also a magic number and has worked fine so far. -// const betweenPercentMargins = nodeWidth / parentWidth >= 0.8; - -// if (betweenValueMargins && betweenPercentMargins) { -// return true; -// } - -// return false; -// }; diff --git a/src/common/numToAutoFixed.ts b/src/common/numToAutoFixed.ts deleted file mode 100644 index d7de51d6..00000000 --- a/src/common/numToAutoFixed.ts +++ /dev/null @@ -1,4 +0,0 @@ -// this is necessary to avoid a height of 4.999999523162842. -export const numToAutoFixed = (num: number): string => { - return num.toFixed(2).replace(/\.00$/, ""); -}; diff --git a/src/common/parentCoordinates.ts b/src/common/parentCoordinates.ts deleted file mode 100644 index a3df82c5..00000000 --- a/src/common/parentCoordinates.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AltSceneNode } from "./../altNodes/altMixins"; - -/** - * In Figma, Groups have absolute position while Frames have relative. - * This is a helper to retrieve the node.parent.x without worries. - * Usually, after this is called, node.x - parentX is done to solve that scenario. - * - * Input is expected to be node.parent. - */ -export const parentCoordinates = (node: AltSceneNode): [number, number] => { - const parentX = "layoutMode" in node ? 0 : node.x; - const parentY = "layoutMode" in node ? 0 : node.y; - - return [parentX, parentY]; -}; diff --git a/src/common/parseJSX.ts b/src/common/parseJSX.ts deleted file mode 100644 index da679abb..00000000 --- a/src/common/parseJSX.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { numToAutoFixed } from "./numToAutoFixed"; - -export const formatWithJSX = ( - property: string, - isJsx: boolean, - value: number | string -): string => { - // convert font-size to fontSize. - const jsx_property = property - .split("-") - .map((d, i) => (i > 0 ? d.charAt(0).toUpperCase() + d.slice(1) : d)) - .join(""); - - if (typeof value === "number") { - if (isJsx) { - return `${jsx_property}: ${numToAutoFixed(value)}, `; - } else { - return `${property}: ${numToAutoFixed(value)}px; `; - } - } else if (isJsx) { - return `${jsx_property}: '${value}', `; - } else { - return `${property}: ${value}; `; - } -}; diff --git a/src/common/retrieveUI/commonUI.ts b/src/common/retrieveUI/commonUI.ts deleted file mode 100644 index 6fe1ae4e..00000000 --- a/src/common/retrieveUI/commonUI.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; - -export type exportFramework = "flutter" | "swiftui" | "html" | "tailwind"; - -// from https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o -export const calculateContrastRatio = (color1: RGB, color2: RGB): number => { - const color1luminance = luminance(color1); - const color2luminance = luminance(color2); - - const contrast = - color1luminance > color2luminance - ? (color2luminance + 0.05) / (color1luminance + 0.05) - : (color1luminance + 0.05) / (color2luminance + 0.05); - - return 1 / contrast; -}; - -function luminance(color: RGB) { - const a = [color.r * 255, color.g * 255, color.b * 255].map((v) => { - v /= 255; - return v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055)**2.4; - }); - return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722; -} - -export const deepFlatten = (arr: Array): Array => { - let result: Array = []; - - arr.forEach((d) => { - if ("children" in d) { - result.push(d); - result = result.concat(deepFlatten(d.children)); - } else { - result.push(d); - } - }); - - return result; -}; diff --git a/src/common/retrieveUI/retrieveColors.ts b/src/common/retrieveUI/retrieveColors.ts deleted file mode 100644 index 29b1db5e..00000000 --- a/src/common/retrieveUI/retrieveColors.ts +++ /dev/null @@ -1,223 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { rgbTo6hex } from "../../common/color"; -import { notEmpty } from "../../altNodes/altConversion"; -import { - swiftuiColor, - swiftuiGradient, -} from "./../../swiftui/builderImpl/swiftuiColor"; -import { - tailwindColors, - tailwindGradient, - tailwindNearestColor, - tailwindSolidColor, -} from "./../../tailwind/builderImpl/tailwindColor"; -import { - flutterColor, - flutterGradient, -} from "./../../flutter/builderImpl/flutterColor"; -import { htmlColor, htmlGradient } from "./../../html/builderImpl/htmlColor"; -import { - calculateContrastRatio, - deepFlatten, - exportFramework, -} from "./commonUI"; - -// For Tailwind, show the name and don't show the contrast. -type exportSolidColor = { - hex: string; - colorName: string; - exported: string; - contrastWhite: number; - contrastBlack: number; -}; - -export const retrieveGenericSolidUIColors = ( - sceneNode: Array, - framework: exportFramework -): Array => { - const selectedChildren = deepFlatten(sceneNode); - - const colorStr: Array = []; - - // collect all fills and strokes SOLID colors - selectedChildren.forEach((d) => { - if ("fills" in d) { - const fills = convertSolidColor(d.fills, framework, d.type); - if (fills) { - colorStr.push(...fills); - } - } - if ("strokes" in d) { - const strokes = convertSolidColor(d.strokes, framework, d.type); - if (strokes) { - colorStr.push(...strokes); - } - } - }); - - // retrieve only unique colors - // from https://stackoverflow.com/a/18923480/4418073 - const unique: Record = {}; - const distinct: Array = []; - colorStr.forEach((x) => { - if (!unique[x.hex]) { - distinct.push(x); - unique[x.hex] = true; - } - }); - - return distinct.sort((a, b) => a.hex.localeCompare(b.hex)); -}; - -const convertSolidColor = ( - fills: ReadonlyArray | PluginAPI["mixed"], - framework: exportFramework, - nodeType: string -): Array | null => { - // shortcut to be used for calculateContrastRatio. - const black = { - r: 0, - g: 0, - b: 0, - }; - - const white = { - r: 1, - g: 1, - b: 1, - }; - - if (fills && fills !== figma.mixed && fills.length > 0) { - return fills - .map((fill) => { - if (fill.type === "SOLID") { - let exported = ""; - const opacity = fill.opacity ?? 1.0; - - if (framework === "flutter") { - exported = flutterColor(fill.color, opacity); - - return { - hex: rgbTo6hex(fill.color), - colorName: "", - exported, - contrastBlack: calculateContrastRatio(fill.color, black), - contrastWhite: calculateContrastRatio(fill.color, white), - }; - } else if (framework === "html") { - exported = htmlColor(fill.color, opacity); - } else if (framework === "tailwind") { - const kind = nodeType === "TEXT" ? "text" : "bg"; - exported = tailwindSolidColor(fill, kind); - - const hex = rgbTo6hex(fill.color); - const hexNearestColor = tailwindNearestColor(hex); - - // special case since each color has a name. - return { - hex, - colorName: tailwindColors[hexNearestColor], - exported, - contrastBlack: 0, - contrastWhite: 0, - }; - } else if (framework === "swiftui") { - exported = swiftuiColor(fill.color, opacity); - } - - return { - hex: rgbTo6hex(fill.color), - colorName: "", - exported, - contrastBlack: 0, - contrastWhite: 0, - }; - } - }) - .filter(notEmpty); - } - - return null; -}; - -type exportLinearGradient = { - css: string; - exported: string; -}; - -export const retrieveGenericLinearGradients = ( - sceneNode: Array, - framework: exportFramework -): Array => { - const selectedChildren = deepFlatten(sceneNode); - - const colorStr: Array = []; - - // collect all Linear Gradient colors from fills and strokes - selectedChildren.forEach((d) => { - if ("fills" in d) { - const fills = convertGradient(d.fills, framework); - if (fills) { - colorStr.push(...fills); - } - } - if ("strokes" in d) { - const strokes = convertGradient(d.strokes, framework); - if (strokes) { - colorStr.push(...strokes); - } - } - }); - - // retrieve only unique colors - // from https://stackoverflow.com/a/18923480/4418073 - const unique: Record = {}; - const distinct: Array = []; - colorStr.forEach((x) => { - if (!unique[x.css]) { - distinct.push(x); - unique[x.css] = true; - } - }); - - return distinct; -}; - -const convertGradient = ( - fills: ReadonlyArray | PluginAPI["mixed"], - framework: exportFramework -): Array | null => { - // kind can be text, bg, border... - // [when testing] fills can be undefined - - if (fills && fills !== figma.mixed && fills.length > 0) { - return fills - .map((fill) => { - if (fill.type === "GRADIENT_LINEAR") { - let exported = ""; - switch (framework) { - case "flutter": - exported = flutterGradient(fill); - break; - case "html": - exported = htmlGradient(fill); - break; - case "tailwind": - exported = tailwindGradient(fill); - break; - case "swiftui": - exported = swiftuiGradient(fill); - break; - } - - return { - css: htmlGradient(fill), - exported, - }; - } - }) - .filter(notEmpty); - } - - return null; -}; diff --git a/src/common/retrieveUI/retrieveTexts.ts b/src/common/retrieveUI/retrieveTexts.ts deleted file mode 100644 index 930bc8d7..00000000 --- a/src/common/retrieveUI/retrieveTexts.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { retrieveTopFill } from "../retrieveFill"; -import { swiftuiMain } from "./../../swiftui/swiftuiMain"; -import { tailwindMain } from "./../../tailwind/tailwindMain"; -import { htmlBuilder, htmlMain } from "./../../html/htmlMain"; -import { flutterMain } from "./../../flutter/flutterMain"; -import { calculateContrastRatio, deepFlatten } from "./commonUI"; - -type exportFramework = "flutter" | "swiftui" | "html" | "tailwind"; - -export const retrieveGenericUIText = ( - sceneNode: Array, - framework: exportFramework -): Array => { - // convert to AltNode and then flatten it. Conversion is necessary because of [tailwindText] - const selectedText = deepFlatten(sceneNode); - - const textStr: Array = []; - - selectedText.forEach((node) => { - if (node.type === "TEXT") { - let code = ""; - if (framework === "flutter") { - code = flutterMain([node]); - } else if (framework === "html") { - code = htmlMain([node]); - } else if (framework === "tailwind") { - code = tailwindMain([node]); - } else if (framework === "swiftui") { - code = swiftuiMain([node]); - } - - let style; - if (framework === "tailwind") { - const [builder] = htmlBuilder(node, false); - style = builder.build(); - } else { - const [builder] = htmlBuilder(node, false, true); - style = builder.build(); - } - - const black = { - r: 0, - g: 0, - b: 0, - }; - - let contrastBlack = 21; - - const fill = retrieveTopFill(node.fills); - - if (fill?.type === "SOLID") { - contrastBlack = calculateContrastRatio(fill.color, black); - } - - textStr.push({ - name: node.name, - style, - code, - contrastBlack, - }); - } - }); - - // retrieve only unique texts (attr + name) - // from https://stackoverflow.com/a/18923480/4418073 - const unique: Record = {}; - const distinct: Array = []; - textStr.forEach((x) => { - if (!unique[x.code + x.name]) { - distinct.push(x); - unique[x.code + x.name] = true; - } - }); - - return distinct; -}; - -type namedText = { - name: string; - code: string; - style: string; - contrastBlack: number; -}; diff --git a/src/flutter/builderImpl/flutterBlend.ts b/src/flutter/builderImpl/flutterBlend.ts deleted file mode 100644 index d0205517..00000000 --- a/src/flutter/builderImpl/flutterBlend.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { AltBlendMixin , AltLayoutMixin, AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { indentString } from "./../../common/indentString"; - -/** - * https://api.flutter.dev/flutter/widgets/Opacity-class.html - */ -export const flutterOpacity = (node: AltBlendMixin, child: string): string => { - if (node.opacity !== undefined && node.opacity !== 1 && child !== "") { - const prop = `\nopacity: ${numToAutoFixed(node.opacity)},\nchild: ${child}`; - - return `Opacity(${indentString(prop)}\n),`; - } - return child; -}; - -/** - * https://api.flutter.dev/flutter/widgets/Visibility-class.html - */ -export const flutterVisibility = ( - node: AltSceneNode, - child: string -): string => { - // [when testing] node.visible can be undefined - - if (node.visible !== undefined && !node.visible && child !== "") { - const prop = `\nvisible: ${node.visible},\nchild: ${child}`; - - return `Visibility(${indentString(prop)}\n),`; - } - return child; -}; - -/** - * https://api.flutter.dev/flutter/widgets/Transform-class.html - * that's how you convert angles to clockwise radians: angle * -pi/180 - * using 3.14159 as Pi for enough precision and to avoid importing math lib. - */ -export const flutterRotation = ( - node: AltLayoutMixin, - child: string -): string => { - if ( - node.rotation !== undefined && - child !== "" && - Math.round(node.rotation) !== 0 - ) { - const prop = `\nangle: ${numToAutoFixed( - node.rotation * (-3.14159 / 180) - )},\nchild: ${child}`; - - return `Transform.rotate(${indentString(prop)}\n),`; - } - return child; -}; diff --git a/src/flutter/builderImpl/flutterBorder.ts b/src/flutter/builderImpl/flutterBorder.ts deleted file mode 100644 index c3e283fc..00000000 --- a/src/flutter/builderImpl/flutterBorder.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { AltEllipseNode, AltFrameNode , AltSceneNode, AltRectangleNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { flutterColorFromFills } from "./flutterColor"; -import { indentString } from "./../../common/indentString"; - -// generate the border, when it exists -export const flutterBorder = (node: AltSceneNode): string => { - if (node.type === "GROUP" || !node.strokes || node.strokes.length === 0) { - return ""; - } - - // retrieve the stroke color, when existent (returns "" otherwise) - const propStrokeColor = flutterColorFromFills(node.strokes); - - // only add strokeWidth when there is a strokeColor (returns "" otherwise) - const propStrokeWidth = `width: ${numToAutoFixed(node.strokeWeight)}, `; - - // generate the border, when it should exist - return propStrokeColor && node.strokeWeight - ? `\nborder: Border.all(${propStrokeColor} ${propStrokeWidth}),` - : ""; -}; - -export const flutterShape = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode -): string => { - const strokeColor = flutterColorFromFills(node.strokes); - const side = - strokeColor && node.strokeWeight > 0 - ? `\nside: BorderSide(width: ${node.strokeWeight}, ${strokeColor} ),` - : ""; - - if (node.type === "ELLIPSE") { - return `\nshape: CircleBorder(${indentString(side)}${side ? "\n" : ""}),`; - } - - const properties = side + flutterBorderRadius(node); - return `\nshape: RoundedRectangleBorder(${indentString(properties)}\n),`; -}; - -// retrieve the borderRadius, when existent (returns "" for EllipseNode) -export const flutterBorderRadius = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode -): string => { - if (node.type === "ELLIPSE") return ""; - - if ( - node.cornerRadius === 0 || - (node.cornerRadius === undefined && node.topLeftRadius === undefined) - ) { - return ""; - } - - return node.cornerRadius !== figma.mixed - ? `\nborderRadius: BorderRadius.circular(${numToAutoFixed( - node.cornerRadius - )}),` - : `\nborderRadius: BorderRadius.only(topLeft: Radius.circular(${numToAutoFixed( - node.topLeftRadius - )}), topRight: Radius.circular(${numToAutoFixed( - node.topRightRadius - )}), bottomLeft: Radius.circular(${numToAutoFixed( - node.bottomLeftRadius - )}), bottomRight: Radius.circular(${numToAutoFixed( - node.bottomRightRadius - )}), ),`; -}; diff --git a/src/flutter/builderImpl/flutterColor.ts b/src/flutter/builderImpl/flutterColor.ts deleted file mode 100644 index aa9c3809..00000000 --- a/src/flutter/builderImpl/flutterColor.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { rgbTo8hex, gradientAngle } from "../../common/color"; -import { retrieveTopFill } from "../../common/retrieveFill"; -import { nearestValue } from "../../tailwind/conversionTables"; - -/** - * Retrieve the SOLID color for Flutter when existent, otherwise "" - */ -export const flutterColorFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - const fill = retrieveTopFill(fills); - - if (fill?.type === "SOLID") { - // todo maybe ignore text color when it is black? - const opacity = fill.opacity ?? 1.0; - return `color: ${flutterColor(fill.color, opacity)},`; - } - - return ""; -}; - -export const flutterBoxDecorationColor = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - const fill = retrieveTopFill(fills); - - if (fill?.type === "SOLID") { - const opacity = fill.opacity ?? 1.0; - return `\ncolor: ${flutterColor(fill.color, opacity)},`; - } else if (fill?.type === "GRADIENT_LINEAR") { - return `\ngradient: ${flutterGradient(fill)},`; - } - - return ""; -}; - -export const flutterGradient = (fill: GradientPaint): string => { - const direction = gradientDirection(gradientAngle(fill)); - - const colors = fill.gradientStops - .map((d) => { - return flutterColor(d.color, d.color.a); - }) - .join(", "); - - return `LinearGradient(${direction}, colors: [${colors}], )`; -}; - -const gradientDirection = (angle: number): string => { - switch (nearestValue(angle, [-180, -135, -90, -45, 0, 45, 90, 135, 180])) { - case 0: - return "begin: Alignment.centerLeft, end: Alignment.centerRight"; - case 45: - return "begin: Alignment.topLeft, end: Alignment.bottomRight"; - case 90: - return "begin: Alignment.topCenter, end: Alignment.bottomCenter"; - case 135: - return "begin: Alignment.topRight, end: Alignment.bottomLeft"; - case -45: - return "begin: Alignment.bottomLeft, end: Alignment.topRight"; - case -90: - return "begin: Alignment.bottomCenter, end: Alignment.topCenter"; - case -135: - return "begin: Alignment.bottomRight, end: Alignment.topLeft"; - default: - // 180 and -180 - return "begin: Alignment.centerRight, end: Alignment.centerLeft"; - } -}; - -export const flutterColor = (color: RGB, opacity: number): string => { - // todo use Colors.black.opacity() - if (color.r + color.g + color.b === 0 && opacity === 1) { - return "Colors.black"; - } - - if (color.r + color.g + color.b === 3 && opacity === 1) { - return "Colors.white"; - } - - return `Color(0x${rgbTo8hex(color, opacity)})`; -}; diff --git a/src/flutter/builderImpl/flutterPadding.ts b/src/flutter/builderImpl/flutterPadding.ts deleted file mode 100644 index 409c899f..00000000 --- a/src/flutter/builderImpl/flutterPadding.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { commonPadding } from "../../common/commonPadding"; - -// Add padding if necessary! -// This must happen before Stack or after the Positioned, but not before. -export const flutterPadding = (node: AltSceneNode): string => { - if (!("layoutMode" in node)) { - return ""; - } - - const padding = commonPadding(node); - if (!padding) { - return ""; - } - - if ("all" in padding) { - return `\npadding: const EdgeInsets.all(${numToAutoFixed(padding.all)}),`; - } - - // horizontal and vertical, as the default AutoLayout - if ( - padding.horizontal + padding.vertical !== 0 && - padding.top + padding.bottom + padding.left + padding.right === 0 - ) { - const propHorizontalPadding = - padding.horizontal > 0 - ? `horizontal: ${numToAutoFixed(padding.horizontal)}, ` - : ""; - - const propVerticalPadding = - padding.vertical > 0 - ? `vertical: ${numToAutoFixed(padding.vertical)}, ` - : ""; - - return `\npadding: const EdgeInsets.symmetric(${propHorizontalPadding}${propVerticalPadding}),`; - } - - let comp = ""; - - // if left and right exists, verify if they are the same after [pxToLayoutSize] conversion. - if (padding.left) { - comp += `left: ${numToAutoFixed(padding.left)}, `; - } - if (padding.right) { - comp += `right: ${numToAutoFixed(padding.right)}, `; - } - if (padding.top) { - comp += `top: ${numToAutoFixed(padding.top)}, `; - } - if (padding.bottom) { - comp += `bottom: ${numToAutoFixed(padding.bottom)}, `; - } - - if (comp !== "") { - return `\npadding: const EdgeInsets.only(${comp}),`; - } - - return ""; -}; diff --git a/src/flutter/builderImpl/flutterPosition.ts b/src/flutter/builderImpl/flutterPosition.ts deleted file mode 100644 index a42cb0be..00000000 --- a/src/flutter/builderImpl/flutterPosition.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { commonPosition } from "../../common/commonPosition"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { parentCoordinates } from "../../common/parentCoordinates"; -import { indentString } from "./../../common/indentString"; - -export const flutterPosition = ( - node: AltSceneNode, - child: string, - parentId: string = "" -): string => { - // avoid adding Positioned() when parent is not a Stack(), which can happen at the beggining - if (!node.parent || parentId === node.parent.id || child === "") { - return child; - } - - // check if view is in a stack. Group and Frames must have more than 1 element - if (node.parent.isRelative === true) { - const pos = retrieveAbsolutePos(node, child); - if (pos !== "Absolute") { - return pos; - } else { - // this is necessary because Group have absolute position, while Frame is relative. - // output is always going to be relative to the parent. - const [parentX, parentY] = parentCoordinates(node.parent); - - const diffX = numToAutoFixed(node.x - parentX); - const diffY = numToAutoFixed(node.y - parentY); - - const properties = `\nleft: ${diffX},\ntop: ${diffY},\nchild: ${child}`; - return `Positioned(${indentString(properties)}\n),`; - } - } - - return child; -}; - -const retrieveAbsolutePos = (node: AltSceneNode, child: string): string => { - const positionedAlign = (align: string) => { - const alignProp = `\nalignment: Alignment.${align},\nchild: ${child}`; - const positionedProp = `\nchild: Align(${indentString(alignProp)}\n),`; - return `Positioned.fill(${indentString(positionedProp)}\n),`; - }; - - switch (commonPosition(node)) { - case "": - return child; - case "Absolute": - return "Absolute"; - case "TopStart": - return positionedAlign("topLeft"); - case "TopCenter": - return positionedAlign("topCenter"); - case "TopEnd": - return positionedAlign("topRight"); - case "CenterStart": - return positionedAlign("centerLeft"); - case "Center": - return positionedAlign("center"); - case "CenterEnd": - return positionedAlign("centerRight"); - case "BottomStart": - return positionedAlign("bottomLeft"); - case "BottomCenter": - return positionedAlign("bottomCenter"); - case "BottomEnd": - return positionedAlign("bottomRight"); - } -}; diff --git a/src/flutter/builderImpl/flutterShadow.ts b/src/flutter/builderImpl/flutterShadow.ts deleted file mode 100644 index 1bfc1537..00000000 --- a/src/flutter/builderImpl/flutterShadow.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { rgbTo8hex } from "../../common/color"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { indentString } from "./../../common/indentString"; - -export const flutterBoxShadow = (node: AltSceneNode): string => { - let propBoxShadow = ""; - if (node.effects?.length > 0) { - const dropShadow: Array = node.effects.filter( - (d): d is DropShadowEffect => - d.type === "DROP_SHADOW" && d.visible - ); - - if (dropShadow.length > 0) { - let boxShadow = ""; - - dropShadow.forEach((d: DropShadowEffect) => { - const color = `\ncolor: Color(0x${rgbTo8hex(d.color, d.color.a)}),`; - const radius = `\nblurRadius: ${numToAutoFixed(d.radius)},`; - const offset = `\noffset: Offset(${numToAutoFixed( - d.offset.x - )}, ${numToAutoFixed(d.offset.y)}),`; - - const property = color + radius + offset; - - boxShadow += `\nBoxShadow(${indentString(property)}\n),`; - }); - - propBoxShadow = `\nboxShadow: [${indentString(boxShadow)}\n],`; - } - // TODO inner shadow, layer blur - } - return propBoxShadow; -}; - -export const flutterElevationAndShadowColor = ( - node: AltSceneNode -): [string, string] => { - let elevation = ""; - let shadowColor = ""; - - if (node.effects.length > 0) { - const dropShadow: Array = node.effects.filter( - (d): d is DropShadowEffect => - d.type === "DROP_SHADOW" && d.visible - ); - - if (dropShadow.length > 0 && dropShadow[0].type === "DROP_SHADOW") { - shadowColor = `\ncolor: Color(0x${rgbTo8hex( - dropShadow[0].color, - dropShadow[0].color.a - )}), `; - elevation = `\nelevation: ${numToAutoFixed(dropShadow[0].radius)}, `; - } - } - - return [elevation, shadowColor]; -}; diff --git a/src/flutter/builderImpl/flutterSize.ts b/src/flutter/builderImpl/flutterSize.ts deleted file mode 100644 index 5fb1b0b0..00000000 --- a/src/flutter/builderImpl/flutterSize.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { nodeWidthHeight } from "../../common/nodeWidthHeight"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; - -// Used in tests. -export const flutterSizeWH = (node: AltSceneNode): string => { - const fSize = flutterSize(node); - const size = fSize.width + fSize.height; - return size; -}; - -export const flutterSize = ( - node: AltSceneNode -): { width: string; height: string; isExpanded: boolean } => { - const size = nodeWidthHeight(node, false); - - let isExpanded: boolean = false; - - // this cast will always be true, since nodeWidthHeight was called with false to relative. - let propWidth = ""; - if (typeof size.width === "number") { - propWidth = `\nwidth: ${numToAutoFixed(size.width)},`; - } else if (size.width === "full") { - // When parent is a Row, child must be Expanded. - if ( - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "HORIZONTAL" - ) { - isExpanded = true; - } else { - propWidth = `\nwidth: double.infinity,`; - } - } - - let propHeight = ""; - if (typeof size.height === "number") { - propHeight = `\nheight: ${numToAutoFixed(size.height)},`; - } else if (size.height === "full") { - // When parent is a Column, child must be Expanded. - if ( - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "VERTICAL" - ) { - isExpanded = true; - } else { - propHeight = `\nheight: double.infinity,`; - } - } - - return { width: propWidth, height: propHeight, isExpanded }; -}; diff --git a/src/flutter/flutterContainer.ts b/src/flutter/flutterContainer.ts deleted file mode 100644 index 6b243761..00000000 --- a/src/flutter/flutterContainer.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { - AltRectangleNode, - AltEllipseNode, - AltFrameNode, - AltGroupNode } from "../altNodes/altMixins"; -import { indentString } from "./../common/indentString"; -import { - flutterBorderRadius, - flutterBorder, -} from "./builderImpl/flutterBorder"; -import { flutterSize } from "./builderImpl/flutterSize"; -import { flutterPadding } from "./builderImpl/flutterPadding"; -import { flutterBoxShadow } from "./builderImpl/flutterShadow"; -import { flutterBoxDecorationColor } from "./builderImpl/flutterColor"; - -// properties named propSomething always take care of "," -// sometimes a property might not exist, so it doesn't add "," -export const flutterContainer = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode | AltGroupNode, - child: string -): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - if (node.width <= 0 || node.height <= 0) { - return child; - } - - // ignore for Groups - const propBoxDecoration = node.type === "GROUP" ? "" : getBoxDecoration(node); - - const fSize = flutterSize(node); - const size = fSize.width + fSize.height; - const isExpanded = fSize.isExpanded; - - // todo Image & multiple fills - - /// if child is empty, propChild is empty - const propChild = child ? `\nchild: ${child}` : ""; - - // [propPadding] will be "padding: const EdgeInsets.symmetric(...)" or "" - let propPadding = ""; - if (node.type === "FRAME") { - propPadding = flutterPadding(node); - } - - let result: string; - if (size || propBoxDecoration) { - // Container is a container if [propWidthHeight] and [propBoxDecoration] are set. - const properties = `${size}${propBoxDecoration}${propPadding}${propChild}`; - - result = `Container(${indentString(properties)}\n),`; - } else if (propPadding) { - // if there is just a padding, add Padding - const properties = `${propPadding}${propChild}`; - - result = `Padding(${indentString(properties)}\n),`; - } else { - result = child; - } - - // Add Expanded() when parent is a Row/Column and width is full. - if (isExpanded) { - const properties = `\nchild: ${result}`; - result = `Expanded(${indentString(properties)}\n),`; - } - - return result; -}; - -const getBoxDecoration = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode -): string => { - const propBackgroundColor = flutterBoxDecorationColor(node.fills); - const propBorder = flutterBorder(node); - const propBoxShadow = flutterBoxShadow(node); - const propBorderRadius = flutterBorderRadius(node); - - // modify the circle's shape when type is ellipse - const propShape = node.type === "ELLIPSE" ? "\nshape: BoxShape.circle," : ""; - - // generate the decoration, or just the backgroundColor when color is SOLID. - if ( - propBorder || - propShape || - propBorder || - propBorderRadius || - propBackgroundColor.startsWith("g") - ) { - const properties = - propBorderRadius + - propShape + - propBorder + - propBoxShadow + - propBackgroundColor; - - return `\ndecoration: BoxDecoration(${indentString(properties)}\n),`; - } else { - return propBackgroundColor; - } -}; diff --git a/src/flutter/flutterDefaultBuilder.ts b/src/flutter/flutterDefaultBuilder.ts deleted file mode 100644 index ef7ab89c..00000000 --- a/src/flutter/flutterDefaultBuilder.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - AltSceneNode, - AltRectangleNode, - AltEllipseNode, - AltFrameNode, - AltGroupNode } from "../altNodes/altMixins"; -import { retrieveTopFill } from "./../common/retrieveFill"; -import { flutterPosition } from "./builderImpl/flutterPosition"; -import { - flutterVisibility, - flutterOpacity, - flutterRotation, -} from "./builderImpl/flutterBlend"; - -import { flutterContainer } from "./flutterContainer"; -import { flutterMaterial } from "./flutterMaterial"; - -export class FlutterDefaultBuilder { - child: string; - - constructor(optChild: string) { - this.child = optChild; - } - - createContainer( - node: AltRectangleNode | AltEllipseNode | AltFrameNode | AltGroupNode, - material: boolean - ): this { - const fill = node.type === "GROUP" ? null : retrieveTopFill(node.fills); - // fill.visible can be true or undefined (on tests) - if ( - node.type !== "GROUP" && - material && - fill && - fill.visible !== false && - fill.type === "SOLID" - ) { - this.child = flutterMaterial(node, this.child); - } else { - this.child = flutterContainer(node, this.child); - } - return this; - } - - blendAttr(node: AltSceneNode): this { - this.child = flutterVisibility(node, this.child); - this.child = flutterRotation(node, this.child); - this.child = flutterOpacity(node, this.child); - - return this; - } - - position(node: AltSceneNode, parentId: string): this { - this.child = flutterPosition(node, this.child, parentId); - return this; - } -} diff --git a/src/flutter/flutterMain.ts b/src/flutter/flutterMain.ts deleted file mode 100644 index 09349ec3..00000000 --- a/src/flutter/flutterMain.ts +++ /dev/null @@ -1,216 +0,0 @@ -import { - AltEllipseNode, - AltFrameNode, - AltRectangleNode, - AltGroupNode, - AltTextNode, - AltSceneNode, -} from "../altNodes/altMixins"; -import { numToAutoFixed } from "../common/numToAutoFixed"; -import { retrieveTopFill } from "../common/retrieveFill"; -import { FlutterDefaultBuilder } from "./flutterDefaultBuilder"; -import { FlutterTextBuilder } from "./flutterTextBuilder"; -import { indentString } from "./../common/indentString"; - -let parentId = ""; -let material = true; - -export const flutterMain = ( - sceneNode: ReadonlyArray, - parentIdSrc: string = "", - isMaterial: boolean = false -): string => { - parentId = parentIdSrc; - material = isMaterial; - - let result = flutterWidgetGenerator(sceneNode); - - // remove the last ',' - result = result.slice(0, -1); - - return result; -}; - -// todo lint idea: replace BorderRadius.only(topleft: 8, topRight: 8) with BorderRadius.horizontal(8) -const flutterWidgetGenerator = ( - sceneNode: ReadonlyArray -): string => { - let comp = ""; - - // filter non visible nodes. This is necessary at this step because conversion already happened. - const visibleSceneNode = sceneNode.filter((d) => d.visible); - const sceneLen = visibleSceneNode.length; - - visibleSceneNode.forEach((node, index) => { - if (node.type === "RECTANGLE" || node.type === "ELLIPSE") { - comp += flutterContainer(node, ""); - } - // else if (node.type === "VECTOR") { - // comp = flutterVector(node); - // } - else if (node.type === "GROUP") { - comp += flutterGroup(node); - } else if (node.type === "FRAME") { - comp += flutterFrame(node); - } else if (node.type === "TEXT") { - comp += flutterText(node); - } - - if (index < sceneLen - 1) { - // if the parent is an AutoLayout, and itemSpacing is set, add a SizedBox between items. - // on else, comp += "" - const spacing = addSpacingIfNeeded(node); - if (spacing) { - // comp += "\n"; - comp += spacing; - } - - // don't add a newline at last element. - comp += "\n"; - } - }); - - return comp; -}; - -const flutterGroup = (node: AltGroupNode): string => { - const properties = `\nchildren:[${flutterWidgetGenerator(node.children)}],`; - - return flutterContainer(node, `Stack(${indentString(properties)}\n),`); -}; - -const flutterContainer = ( - node: AltFrameNode | AltGroupNode | AltRectangleNode | AltEllipseNode, - child: string -): string => { - let propChild = ""; - - let image = ""; - if ("fills" in node && retrieveTopFill(node.fills)?.type === "IMAGE") { - // const url = `https://via.placeholder.com/${node.width}x${node.height}`; - // image = `Image.network("${url}"),`; - - // Flutter Web currently can't render network images :( - image = `FlutterLogo(size: ${Math.min(node.width, node.height)}),`; - } - - if (child.length > 0 && image.length > 0) { - const prop1 = `\nPositioned.fill(\n${indentString(`child: ${child}`)}\n),`; - const prop2 = `\nPositioned.fill(\n${indentString(`child: ${image}`)}\n),`; - - const propStack = `\nchildren: [${indentString(prop1 + prop2)}\n],`; - - propChild = `Stack(${indentString(propStack)}\n),`; - } else if (child.length > 0) { - propChild = child; - } else if (image.length > 0) { - propChild = image; - } - - const builder = new FlutterDefaultBuilder(propChild); - - builder - .createContainer(node, material) - .blendAttr(node) - .position(node, parentId); - - return builder.child; -}; - -const flutterText = (node: AltTextNode): string => { - const builder = new FlutterTextBuilder(); - - builder - .createText(node) - .blendAttr(node) - .textAutoSize(node) - .position(node, parentId); - - return builder.child; -}; - -const flutterFrame = (node: AltFrameNode): string => { - const children = flutterWidgetGenerator(node.children); - - // Ignoring when Frame has a single child was removed because Expanded only works in Row/Column and not in Container, so additional logic would be required elsewhere. - if (node.layoutMode !== "NONE") { - const rowColumn = makeRowColumn(node, children); - return flutterContainer(node, rowColumn); - } else { - // node.layoutMode === "NONE" && node.children.length > 1 - // children needs to be absolute - - const properties = `\nchildren:[\n${indentString(children, 1)}\n],`; - - return flutterContainer(node, `Stack(${indentString(properties)}\n),`); - } -}; - -const makeRowColumn = (node: AltFrameNode, children: string): string => { - // ROW or COLUMN - const rowOrColumn = node.layoutMode === "HORIZONTAL" ? "Row" : "Column"; - - let crossAlignType; - switch (node.counterAxisAlignItems) { - case "MIN": - crossAlignType = "start"; - break; - case "CENTER": - crossAlignType = "center"; - break; - case "MAX": - crossAlignType = "end"; - break; - } - const crossAxisAlignment = `\ncrossAxisAlignment: CrossAxisAlignment.${crossAlignType},`; - - let mainAlignType = ""; - switch (node.primaryAxisAlignItems) { - case "MIN": - mainAlignType = "start"; - break; - case "CENTER": - mainAlignType = "center"; - break; - case "MAX": - mainAlignType = "end"; - break; - case "SPACE_BETWEEN": - mainAlignType = "spaceBetween"; - break; - } - const mainAxisAlignment = `\nmainAxisAlignment: MainAxisAlignment.${mainAlignType},`; - - let mainAxisSize = ""; - if (node.layoutGrow === 1) { - mainAxisSize = "\nmainAxisSize: MainAxisSize.max,"; - } else { - mainAxisSize = "\nmainAxisSize: MainAxisSize.min,"; - } - - const properties = `${ - mainAxisSize + mainAxisAlignment + crossAxisAlignment - }\nchildren:[\n${indentString(children, 1)}\n],`; - - return `${rowOrColumn}(${indentString(properties, 1)}\n),`; -}; - -// TODO Vector support in Flutter is complicated. Currently, AltConversion converts it in a Rectangle. - -const addSpacingIfNeeded = (node: AltSceneNode): string => { - if (node.parent?.type === "FRAME" && node.parent.layoutMode !== "NONE") { - // check if itemSpacing is set and if it isn't the last value. - // Don't add the SizedBox at last value. In Figma, itemSpacing CAN be negative; here it can't. - if (node.parent.itemSpacing > 0) { - if (node.parent.layoutMode === "HORIZONTAL") { - return `\nSizedBox(width: ${numToAutoFixed(node.parent.itemSpacing)}),`; - } else { - // node.parent.layoutMode === "VERTICAL" - return `\nSizedBox(height: ${numToAutoFixed( - node.parent.itemSpacing - )}),`; - } - } - } - return ""; -}; diff --git a/src/flutter/flutterMaterial.ts b/src/flutter/flutterMaterial.ts deleted file mode 100644 index 522cc23e..00000000 --- a/src/flutter/flutterMaterial.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { AltSceneNode , - AltRectangleNode, - AltEllipseNode, - AltFrameNode, -} from "../altNodes/altMixins"; -import { indentString } from "../common/indentString"; -import { flutterElevationAndShadowColor } from "./builderImpl/flutterShadow"; -import { flutterSize } from "./builderImpl/flutterSize"; -import { flutterPadding } from "./builderImpl/flutterPadding"; -import { flutterShape, flutterBorderRadius } from "./builderImpl/flutterBorder"; -import { flutterColorFromFills } from "./builderImpl/flutterColor"; - -// https://api.flutter.dev/flutter/material/Material-class.html -export const flutterMaterial = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode, - child: string -): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - if (node.width <= 0 || node.height <= 0) { - return child; - } - - const color = materialColor(node); - const shape = materialShape(node); - const clip = getClipping(node); - const [elevation, shadowColor] = flutterElevationAndShadowColor(node); - const padChild = child ? `\nchild: ${getPadding(node, child)}` : ""; - - const materialAttr = - color + elevation + shadowColor + shape + clip + padChild; - - let materialResult = `Material(${indentString(materialAttr)}\n),`; - - const fSize = flutterSize(node); - const size = fSize.width + fSize.height; - const isExpanded = fSize.isExpanded; - - if (size) { - const properties = `${size}\nchild: ${materialResult}`; - materialResult = `SizedBox(${indentString(properties)}\n),`; - } - - if (isExpanded) { - const properties = `\nchild: ${materialResult}`; - materialResult = `Expanded(${indentString(properties)}\n),`; - } - - return materialResult; -}; - -const materialColor = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode -): string => { - const color = flutterColorFromFills(node.fills); - if (!color) { - return "\ncolor: Colors.transparent,"; - } - return `\n${ color}`; -}; - -const materialShape = ( - node: AltRectangleNode | AltEllipseNode | AltFrameNode -): string => { - if (node.type === "ELLIPSE" || node.strokes?.length > 0) { - return flutterShape(node); - } else { - return flutterBorderRadius(node); - } -}; - -const getClipping = (node: AltSceneNode): string => { - let clip = false; - if (node.type === "FRAME" && node.cornerRadius && node.cornerRadius !== 0) { - clip = node.clipsContent; - } - return clip ? "\nclipBehavior: Clip.antiAlias," : ""; -}; - -const getPadding = ( - node: AltFrameNode | AltEllipseNode | AltRectangleNode, - child: string -): string => { - const padding = flutterPadding(node); - if (padding) { - const properties = `${padding}\nchild: ${child}`; - - return `Padding(${indentString(properties)}\n),`; - } - - return child; -}; diff --git a/src/flutter/flutterTextBuilder.ts b/src/flutter/flutterTextBuilder.ts deleted file mode 100644 index 43a60407..00000000 --- a/src/flutter/flutterTextBuilder.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { AltTextNode } from "../altNodes/altMixins"; -import { numToAutoFixed } from "../common/numToAutoFixed"; -import { convertFontWeight } from "../common/convertFontWeight"; -import { indentString } from "./../common/indentString"; -import { commonLetterSpacing } from "./../common/commonTextHeightSpacing"; -import { FlutterDefaultBuilder } from "./flutterDefaultBuilder"; -import { flutterColorFromFills } from "./builderImpl/flutterColor"; -import { flutterSize } from "./builderImpl/flutterSize"; - -export class FlutterTextBuilder extends FlutterDefaultBuilder { - constructor(optChild: string = "") { - super(optChild); - } - - reset(): void { - this.child = ""; - } - - createText(node: AltTextNode): this { - this.child = makeTextComponent(node); - return this; - } - - textAutoSize(node: AltTextNode): this { - this.child = wrapTextAutoResize(node, this.child); - return this; - } -} - -export const makeTextComponent = (node: AltTextNode): string => { - // only undefined in testing - let alignHorizontal = - node.textAlignHorizontal?.toString()?.toLowerCase() ?? "left"; - alignHorizontal = - alignHorizontal === "justified" ? "justify" : alignHorizontal; - - // todo if layoutAlign !== MIN, Text will be wrapped by Align - // if alignHorizontal is LEFT, don't do anything because that is native - const textAlign = - alignHorizontal !== "left" - ? `\ntextAlign: TextAlign.${alignHorizontal},` - : ""; - - let text = node.characters; - if (node.textCase === "LOWER") { - text = text.toLowerCase(); - } else if (node.textCase === "UPPER") { - text = text.toUpperCase(); - } - // else if (node.textCase === "TITLE") { - // TODO this - // } - - const textStyle = getTextStyle(node); - - const style = textStyle - ? `\nstyle: TextStyle(${indentString(textStyle)}\n),` - : ""; - - const splittedChars = text.split("\n"); - const charsWithLineBreak = - splittedChars.length > 1 ? splittedChars.join("\\n") : text; - - const properties = `\n"${charsWithLineBreak}",${textAlign}${style}`; - - return `Text(${indentString(properties)}\n),`; -}; - -export const getTextStyle = (node: AltTextNode): string => { - // example: text-md - let styleBuilder = ""; - - const color = flutterColorFromFills(node.fills); - if (color) { - styleBuilder += `\n${color}`; - } - - if (node.fontSize !== figma.mixed) { - styleBuilder += `\nfontSize: ${numToAutoFixed(node.fontSize)},`; - } - - if (node.textDecoration === "UNDERLINE") { - styleBuilder += "\ndecoration: TextDecoration.underline,"; - } - - if (node.fontName !== figma.mixed) { - const lowercaseStyle = node.fontName.style.toLowerCase(); - - if (lowercaseStyle.match("italic")) { - styleBuilder += "\nfontStyle: FontStyle.italic,"; - } - - // ignore the font-style when regular (default) - if (!lowercaseStyle.match("regular")) { - const value = node.fontName.style - .replace("italic", "") - .replace(" ", "") - .toLowerCase(); - - const weight = convertFontWeight(value); - - if (weight) { - styleBuilder += `\nfontFamily: "${node.fontName.family}",`; - styleBuilder += `\nfontWeight: FontWeight.w${weight},`; - } - } - } - - // todo lineSpacing - const letterSpacing = commonLetterSpacing(node); - if (letterSpacing > 0) { - styleBuilder += `\nletterSpacing: ${numToAutoFixed(letterSpacing)},`; - } - - return styleBuilder; -}; - -export const wrapTextAutoResize = ( - node: AltTextNode, - child: string -): string => { - const fSize = flutterSize(node); - const width = fSize.width; - const height = fSize.height; - const isExpanded = fSize.isExpanded; - let result = ""; - - if (node.textAutoResize === "NONE") { - // = instead of += because we want to replace it - - const properties = `${width}${height}\nchild: ${child}`; - - result = `SizedBox(${indentString(properties)}\n),`; - } else if (node.textAutoResize === "HEIGHT") { - // if HEIGHT is set, it means HEIGHT will be calculated automatically, but width won't - // = instead of += because we want to replace it - - const properties = `${width}\nchild: ${child}`; - - result = `SizedBox(${indentString(properties)}\n),`; - } - - if (isExpanded) { - const properties = `\nchild: ${result}`; - - return `Expanded(${indentString(properties)}\n),`; - } else if (result.length > 0) { - return result; - } - - return child; -}; diff --git a/src/html/builderImpl/htmlBlend.ts b/src/html/builderImpl/htmlBlend.ts deleted file mode 100644 index 4d485473..00000000 --- a/src/html/builderImpl/htmlBlend.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { AltBlendMixin , AltLayoutMixin, AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { formatWithJSX } from "../../common/parseJSX"; - -/** - * https://tailwindcss.com/docs/opacity/ - * default is [0, 25, 50, 75, 100], but '100' will be ignored: - * if opacity was changed, let it be visible. Therefore, 98% => 75 - * node.opacity is between [0, 1]; output will be [0, 100] - */ -export const htmlOpacity = (node: AltBlendMixin, isJsx: boolean): string => { - // [when testing] node.opacity can be undefined - if (node.opacity !== undefined && node.opacity !== 1) { - // formatWithJSX is not called here because opacity unit doesn't end in px. - if (isJsx) { - return `opacity: ${numToAutoFixed(node.opacity)}, `; - } else { - return `opacity: ${numToAutoFixed(node.opacity)}; `; - } - } - return ""; -}; - -/** - * https://tailwindcss.com/docs/visibility/ - * example: invisible - */ -export const htmlVisibility = (node: AltSceneNode, isJsx: boolean): string => { - // [when testing] node.visible can be undefined - - // When something is invisible in Figma, it isn't gone. Groups can make use of it. - // Therefore, instead of changing the visibility (which causes bugs in nested divs), - // this plugin is going to ignore color and stroke - if (node.visible !== undefined && !node.visible) { - return formatWithJSX("visibility", isJsx, "hidden"); - } - return ""; -}; - -/** - * https://tailwindcss.com/docs/rotate/ - * default is [-180, -90, -45, 0, 45, 90, 180], but '0' will be ignored: - * if rotation was changed, let it be perceived. Therefore, 1 => 45 - */ -export const htmlRotation = (node: AltLayoutMixin, isJsx: boolean): string => { - // that's how you convert angles to clockwise radians: angle * -pi/180 - // using 3.14159 as Pi for enough precision and to avoid importing math lib. - if (node.rotation !== undefined && Math.round(node.rotation) !== 0) { - return formatWithJSX( - "transform", - isJsx, - `rotate(${numToAutoFixed(node.rotation)}deg)` - ); - } - return ""; -}; diff --git a/src/html/builderImpl/htmlBorderRadius.ts b/src/html/builderImpl/htmlBorderRadius.ts deleted file mode 100644 index ecc0421e..00000000 --- a/src/html/builderImpl/htmlBorderRadius.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { formatWithJSX } from "../../common/parseJSX"; - -/** - * https://tailwindcss.com/docs/border-radius/ - * example: rounded-sm - * example: rounded-tr-lg - */ -export const htmlBorderRadius = ( - node: AltSceneNode, - isJsx: boolean -): string => { - if (node.type === "ELLIPSE") { - return formatWithJSX("border-radius", isJsx, 9999); - } else if ( - (!("cornerRadius" in node) && !("topLeftRadius" in node)) || - ("cornerRadius" in node && - node.cornerRadius === figma.mixed && - node.topLeftRadius === undefined) || - ("cornerRadius" in node && node.cornerRadius === 0) - ) { - // the second condition is used on tests. On Figma, topLeftRadius is never undefined. - // ignore when 0, undefined or non existent - return ""; - } - - if (!("cornerRadius" in node)) { - return ""; - } - - let comp = ""; - - if (node.cornerRadius !== figma.mixed) { - comp += formatWithJSX("border-radius", isJsx, node.cornerRadius); - } else { - // todo optimize for tr/tl/br/bl instead of t/r/l/b - if (node.topLeftRadius !== 0) { - comp += formatWithJSX( - "border-top-left-radius", - isJsx, - node.topLeftRadius - ); - } - if (node.topRightRadius !== 0) { - comp += formatWithJSX( - "border-top-right-radius", - isJsx, - node.topRightRadius - ); - } - if (node.bottomLeftRadius !== 0) { - comp += formatWithJSX( - "border-bottom-left-radius", - isJsx, - node.bottomLeftRadius - ); - } - if (node.bottomRightRadius !== 0) { - comp += formatWithJSX( - "border-bottom-right-radius", - isJsx, - node.bottomRightRadius - ); - } - } - - return comp; -}; diff --git a/src/html/builderImpl/htmlColor.ts b/src/html/builderImpl/htmlColor.ts deleted file mode 100644 index 214e7298..00000000 --- a/src/html/builderImpl/htmlColor.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { gradientAngle } from "../../common/color"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { retrieveTopFill } from "../../common/retrieveFill"; - -// retrieve the SOLID color on HTML -export const htmlColorFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - // kind can be text, bg, border... - // [when testing] fills can be undefined - - const fill = retrieveTopFill(fills); - if (fill?.type === "SOLID") { - // if fill isn't visible, it shouldn't be painted. - return htmlColor(fill.color, fill.opacity); - } - - return ""; -}; - -export const htmlColor = (color: RGB, alpha: number = 1): string => { - const r = numToAutoFixed(color.r * 255); - const g = numToAutoFixed(color.g * 255); - const b = numToAutoFixed(color.b * 255); - const a = numToAutoFixed(alpha ?? 1); - - if (color.r === 1 && color.g === 1 && color.b === 1 && alpha === 1) { - return "white"; - } - - if (color.r === 0 && color.g === 0 && color.b === 0 && alpha === 1) { - return "black"; - } - - return `rgba(${r}, ${g}, ${b}, ${a})`; -}; - -export const htmlGradientFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - const fill = retrieveTopFill(fills); - if (fill?.type === "GRADIENT_LINEAR") { - return htmlGradient(fill); - } - return ""; -}; - -// This was separated from htmlGradient because it is going to be used in the plugin UI and it wants all gradients, not only the top one. -export const htmlGradient = (fill: GradientPaint): string => { - // add 90 to be correct in HTML. - const angle = (gradientAngle(fill) + 90).toFixed(0); - - const mappedFill = fill.gradientStops - .map((d) => { - // only add position to fractional - const position = - d.position > 0 && d.position < 1 - ? ` ${ (100 * d.position).toFixed(0) }%` - : ""; - - return `${htmlColor(d.color, d.color.a)}${position}`; - }) - .join(", "); - - return `linear-gradient(${angle}deg, ${mappedFill})`; -}; diff --git a/src/html/builderImpl/htmlPadding.ts b/src/html/builderImpl/htmlPadding.ts deleted file mode 100644 index 17a3537a..00000000 --- a/src/html/builderImpl/htmlPadding.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { AltFrameMixin, AltDefaultShapeMixin } from "../../altNodes/altMixins"; -import { commonPadding } from "../../common/commonPadding"; -import { formatWithJSX } from "./../../common/parseJSX"; - -/** - * https://tailwindcss.com/docs/margin/ - * example: px-2 py-8 - */ -export const htmlPadding = ( - node: AltFrameMixin | AltDefaultShapeMixin, - isJsx: boolean -): string => { - const padding = commonPadding(node); - if (padding === null) { - return ""; - } - - if ("all" in padding) { - return formatWithJSX("padding", isJsx, padding.all); - } - - let comp = ""; - - // horizontal and vertical, as the default AutoLayout - if (padding.horizontal) { - comp += formatWithJSX("padding-left", isJsx, padding.horizontal); - comp += formatWithJSX("padding-right", isJsx, padding.horizontal); - } - if (padding.vertical) { - comp += formatWithJSX("padding-top", isJsx, padding.vertical); - comp += formatWithJSX("padding-bottom", isJsx, padding.vertical); - } - if (padding.top) { - comp += formatWithJSX("padding-top", isJsx, padding.top); - } - if (padding.bottom) { - comp += formatWithJSX("padding-bottom", isJsx, padding.bottom); - } - if (padding.left) { - comp += formatWithJSX("padding-left", isJsx, padding.left); - } - if (padding.right) { - comp += formatWithJSX("padding-right", isJsx, padding.right); - } - - // todo use REM - - return comp; -}; diff --git a/src/html/builderImpl/htmlPosition.ts b/src/html/builderImpl/htmlPosition.ts deleted file mode 100644 index bdf0c021..00000000 --- a/src/html/builderImpl/htmlPosition.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; - -export const htmlPosition = ( - node: AltSceneNode, - parentId: string = "" -): string => { - // don't add position to the first (highest) node in the tree - if (!node.parent || parentId === node.parent.id) { - return ""; - } - - // Group - if (node.parent.isRelative === true) { - // position is absolute, needs to be relative - return "absoluteManualLayout"; - } - - return ""; -}; diff --git a/src/html/builderImpl/htmlShadow.ts b/src/html/builderImpl/htmlShadow.ts deleted file mode 100644 index 18cbcb19..00000000 --- a/src/html/builderImpl/htmlShadow.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AltBlendMixin } from "../../altNodes/altMixins"; -import { htmlColor } from "./htmlColor"; - -/** - * https://tailwindcss.com/docs/box-shadow/ - * example: shadow - */ -export const htmlShadow = (node: AltBlendMixin): string => { - // [when testing] node.effects can be undefined - if (node.effects && node.effects.length > 0) { - const dropShadow = node.effects.filter( - (d): d is ShadowEffect => - (d.type === "DROP_SHADOW" || d.type === "INNER_SHADOW") && - d.visible - ); - // simple shadow from tailwind - if (dropShadow.length > 0) { - const shadow = dropShadow[0]; - const x = shadow.offset.x; - const y = shadow.offset.y; - const color = htmlColor(shadow.color, shadow.color.a); - const blur = shadow.radius; - const spread = shadow.spread ? `${shadow.spread}px ` : ""; - const inner = shadow.type === "INNER_SHADOW" ? " inset" : ""; - - return `${x}px ${y}px ${blur}px ${spread}${color}${inner}`; - } - } - return ""; -}; diff --git a/src/html/builderImpl/htmlSize.ts b/src/html/builderImpl/htmlSize.ts deleted file mode 100644 index 39e15d9c..00000000 --- a/src/html/builderImpl/htmlSize.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { nodeWidthHeight } from "../../common/nodeWidthHeight"; -import { formatWithJSX } from "./../../common/parseJSX"; - -export const htmlSize = (node: AltSceneNode, isJSX: boolean): string => { - return htmlSizePartial(node, isJSX).join(""); -}; - -export const htmlSizePartial = ( - node: AltSceneNode, - isJsx: boolean -): [string, string] => { - const size = nodeWidthHeight(node, false); - - let w = ""; - if (typeof size.width === "number") { - w += formatWithJSX("width", isJsx, size.width); - } else if (size.width === "full") { - if ( - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "HORIZONTAL" - ) { - w += formatWithJSX("flex", isJsx, "1 1 0%"); - } else { - w += formatWithJSX("width", isJsx, "100%"); - } - } - - let h = ""; - if (typeof size.height === "number") { - h += formatWithJSX("height", isJsx, size.height); - } else if (typeof size.height === "string") { - if ( - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "VERTICAL" - ) { - h += formatWithJSX("flex", isJsx, "1 1 0%"); - } else { - h += formatWithJSX("height", isJsx, "100%"); - } - } - - return [w, h]; -}; diff --git a/src/html/builderImpl/htmlTextSize.ts b/src/html/builderImpl/htmlTextSize.ts deleted file mode 100644 index 4a523c1e..00000000 --- a/src/html/builderImpl/htmlTextSize.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AltTextNode } from "../../altNodes/altMixins"; -import { htmlSizePartial } from "./htmlSize"; - -export const htmlTextSize = (node: AltTextNode, isJsx: boolean): string => { - const [width, height] = htmlSizePartial(node, isJsx); - - let comp = ""; - if (node.textAutoResize !== "WIDTH_AND_HEIGHT") { - comp += width; - } - - if (node.textAutoResize === "NONE") { - comp += height; - } - - return comp; -}; diff --git a/src/html/htmlDefaultBuilder.ts b/src/html/htmlDefaultBuilder.ts deleted file mode 100644 index ec231863..00000000 --- a/src/html/htmlDefaultBuilder.ts +++ /dev/null @@ -1,216 +0,0 @@ -import { - AltSceneNode, - AltGeometryMixin, - AltBlendMixin, - AltFrameMixin, - AltDefaultShapeMixin, -} from "../altNodes/altMixins"; -import { formatWithJSX } from "../common/parseJSX"; -import { parentCoordinates } from "../common/parentCoordinates"; -import { htmlShadow } from "./builderImpl/htmlShadow"; -import { - htmlVisibility, - htmlRotation, - htmlOpacity, -} from "./builderImpl/htmlBlend"; -import { htmlPosition } from "./builderImpl/htmlPosition"; -import { - htmlColorFromFills, - htmlGradientFromFills, -} from "./builderImpl/htmlColor"; -import { htmlPadding } from "./builderImpl/htmlPadding"; -import { htmlSize, htmlSizePartial } from "./builderImpl/htmlSize"; -import { htmlBorderRadius } from "./builderImpl/htmlBorderRadius"; - -export class HtmlDefaultBuilder { - style: string; - isJSX: boolean; - visible: boolean; - name: string = ""; - hasFixedSize = false; - - constructor(node: AltSceneNode, showLayerName: boolean, optIsJSX: boolean) { - this.isJSX = optIsJSX; - this.style = ""; - this.visible = node.visible; - - if (showLayerName) { - this.name = node.name.replace(" ", ""); - } - } - - blend(node: AltSceneNode): this { - this.style += htmlVisibility(node, this.isJSX); - this.style += htmlRotation(node, this.isJSX); - this.style += htmlOpacity(node, this.isJSX); - - return this; - } - - border(node: AltGeometryMixin & AltSceneNode): this { - // add border-radius: 10, for example. - this.style += htmlBorderRadius(node, this.isJSX); - - // add border: 10px solid, for example. - if (node.strokes && node.strokes.length > 0 && node.strokeWeight > 0) { - const fill = this.retrieveFill(node.strokes); - const weight = node.strokeWeight; - - if (node.dashPattern.length > 0) { - this.style += formatWithJSX("border-style", this.isJSX, "dotted"); - } else { - this.style += formatWithJSX("border-style", this.isJSX, "solid"); - } - - this.style += formatWithJSX("border-width", this.isJSX, weight); - this.style += formatWithJSX("border-style", this.isJSX, "solid"); - - if (fill.kind === "gradient") { - // Gradient requires these. - this.style += formatWithJSX("border-image-slice", this.isJSX, 1); - this.style += formatWithJSX( - "border-image-source", - this.isJSX, - fill.prop - ); - } else { - this.style += formatWithJSX("border-color", this.isJSX, fill.prop); - } - } - - return this; - } - - position( - node: AltSceneNode, - parentId: string, - isRelative: boolean = false - ): this { - const position = htmlPosition(node, parentId); - - if (position === "absoluteManualLayout" && node.parent) { - // tailwind can't deal with absolute layouts. - - const [parentX, parentY] = parentCoordinates(node.parent); - - const left = node.x - parentX; - const top = node.y - parentY; - - this.style += formatWithJSX("left", this.isJSX, left); - this.style += formatWithJSX("top", this.isJSX, top); - - if (!isRelative) { - this.style += formatWithJSX("position", this.isJSX, "absolute"); - } - } else { - this.style += position; - } - - return this; - } - - customColor( - paintArray: ReadonlyArray | PluginAPI["mixed"], - property: "text" | "background-color" - ): this { - const fill = this.retrieveFill(paintArray); - if (fill.kind === "solid") { - // When text, solid must be outputted as 'color'. - const prop = property === "text" ? "color" : property; - - this.style += formatWithJSX(prop, this.isJSX, fill.prop); - } else if (fill.kind === "gradient") { - if (property === "background-color") { - this.style += formatWithJSX("background-image", this.isJSX, fill.prop); - } else if (property === "text") { - this.style += formatWithJSX("background", this.isJSX, fill.prop); - - this.style += formatWithJSX( - "-webkit-background-clip", - this.isJSX, - "text" - ); - - this.style += formatWithJSX( - "-webkit-text-fill-color", - this.isJSX, - "transparent" - ); - } - } - - return this; - } - - retrieveFill = ( - paintArray: ReadonlyArray | PluginAPI["mixed"] - ): { prop: string; kind: "solid" | "gradient" | "none" } => { - // visible is true or undefinied (tests) - if (this.visible) { - const gradient = htmlGradientFromFills(paintArray); - if (gradient) { - return { prop: gradient, kind: "gradient" }; - } else { - const color = htmlColorFromFills(paintArray); - if (color) { - return { prop: color, kind: "solid" }; - } - } - } - return { prop: "", kind: "none" }; - }; - - shadow(node: AltBlendMixin): this { - const shadow = htmlShadow(node); - if (shadow) { - this.style += formatWithJSX("box-shadow", this.isJSX, htmlShadow(node)); - } - return this; - } - - // must be called before Position, because of the hasFixedSize attribute. - widthHeight(node: AltSceneNode): this { - // if current element is relative (therefore, children are absolute) - // or current element is one of the absoltue children and has a width or height > w/h-64 - if ("isRelative" in node && node.isRelative === true) { - this.style += htmlSize(node, this.isJSX); - } else { - const partial = htmlSizePartial(node, this.isJSX); - this.hasFixedSize = partial[0] !== "" && partial[1] !== ""; - - this.style += partial.join(""); - } - return this; - } - - autoLayoutPadding(node: AltFrameMixin | AltDefaultShapeMixin): this { - this.style += htmlPadding(node, this.isJSX); - return this; - } - - removeTrailingSpace(): this { - if (this.style.length > 0 && this.style.endsWith(" ")) { - this.style = this.style.slice(0, -1); - } - return this; - } - - build(additionalStyle: string = ""): string { - this.style += additionalStyle; - this.removeTrailingSpace(); - - if (this.style) { - if (this.isJSX) { - this.style = ` style={{${this.style}}}`; - } else { - this.style = ` style="${this.style}"`; - } - } - if (this.name.length > 0) { - const classOrClassName = this.isJSX ? "className" : "class"; - return ` ${classOrClassName}="${this.name}"${this.style}`; - } else { - return this.style; - } - } -} diff --git a/src/html/htmlMain.ts b/src/html/htmlMain.ts deleted file mode 100644 index 6974cbcc..00000000 --- a/src/html/htmlMain.ts +++ /dev/null @@ -1,340 +0,0 @@ -import { - AltFrameNode, - AltSceneNode, - AltRectangleNode, - AltEllipseNode, - AltTextNode, - AltGroupNode, -} from "../altNodes/altMixins"; -import { formatWithJSX } from "../common/parseJSX"; -import { indentString } from "../common/indentString"; -import { retrieveTopFill } from "./../common/retrieveFill"; -import { HtmlTextBuilder } from "./htmlTextBuilder"; -import { HtmlDefaultBuilder } from "./htmlDefaultBuilder"; - -let parentId = ""; - -let showLayerName = false; - -const selfClosingTags = ["img"]; - -export const htmlMain = ( - sceneNode: Array, - parentIdSrc: string = "", - isJsx: boolean = false, - layerName: boolean = false -): string => { - parentId = parentIdSrc; - showLayerName = layerName; - - let result = htmlWidgetGenerator(sceneNode, isJsx); - - // remove the initial \n that is made in Container. - if (result.length > 0 && result.startsWith("\n")) { - result = result.slice(1, result.length); - } - - return result; -}; - -// todo lint idea: replace BorderRadius.only(topleft: 8, topRight: 8) with BorderRadius.horizontal(8) -const htmlWidgetGenerator = ( - sceneNode: ReadonlyArray, - isJsx: boolean -): string => { - let comp = ""; - - // filter non visible nodes. This is necessary at this step because conversion already happened. - const visibleSceneNode = sceneNode.filter((d) => d.visible); - - const sceneLen = visibleSceneNode.length; - - visibleSceneNode.forEach((node, index) => { - if (node.type === "RECTANGLE" || node.type === "ELLIPSE") { - comp += htmlContainer(node, "", "", isJsx); - } else if (node.type === "GROUP") { - comp += htmlGroup(node, isJsx); - } else if (node.type === "FRAME") { - comp += htmlFrame(node, isJsx); - } else if (node.type === "TEXT") { - comp += htmlText(node, false, isJsx); - } - - comp += addSpacingIfNeeded(node, index, sceneLen, isJsx); - - // todo support Line - }); - - return comp; -}; - -const htmlGroup = (node: AltGroupNode, isJsx: boolean = false): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - // also ignore if there are no children inside, which makes no sense - if (node.width <= 0 || node.height <= 0 || node.children.length === 0) { - return ""; - } - - // const vectorIfExists = tailwindVector(node, isJsx); - // if (vectorIfExists) return vectorIfExists; - - // this needs to be called after CustomNode because widthHeight depends on it - const builder = new HtmlDefaultBuilder(node, showLayerName, isJsx) - .blend(node) - .widthHeight(node) - .position(node, parentId); - - if (builder.style) { - const attr = builder.build(formatWithJSX("position", isJsx, "relative")); - - const generator = htmlWidgetGenerator(node.children, isJsx); - - return `\n${indentString(generator)}\n`; - } - - return htmlWidgetGenerator(node.children, isJsx); -}; - -// this was split from htmlText to help the UI part, where the style is needed (without

). -export const htmlBuilder = ( - node: AltTextNode, - isJsx: boolean, - isUI: boolean = false -): [HtmlTextBuilder, string] => { - const builderResult = new HtmlTextBuilder(node, showLayerName, isJsx) - .blend(node) - .textAutoSize(node) - .position(node, parentId) - // todo fontFamily (via node.fontName !== figma.mixed ? `fontFamily: ${node.fontName.family}`) - // todo font smoothing - .fontSize(node, isUI) - .fontStyle(node) - .letterSpacing(node) - .lineHeight(node) - .textDecoration(node) - // todo text lists (
  • ) - .textAlign(node) - .customColor(node.fills, "text") - .textTransform(node); - - const splittedChars = node.characters.split("\n"); - const charsWithLineBreak = - splittedChars.length > 1 - ? node.characters.split("\n").join("
    ") - : node.characters; - - return [builderResult, charsWithLineBreak]; -}; - -const htmlText = ( - node: AltTextNode, - isInput: boolean = false, - isJsx: boolean -): string | [string, string] => { - // follow the website order, to make it easier - const [builder, charsWithLineBreak] = htmlBuilder(node, isJsx); - - if (isInput) { - return [builder.style, charsWithLineBreak]; - } else { - return `\n${charsWithLineBreak}

    `; - } -}; - -const htmlFrame = (node: AltFrameNode, isJsx: boolean = false): string => { - // const vectorIfExists = tailwindVector(node, isJsx); - // if (vectorIfExists) return vectorIfExists; - - if ( - node.children.length === 1 && - node.children[0].type === "TEXT" && - node?.name?.toLowerCase().match("input") - ) { - const isInput = true; - const [attr, char] = htmlText(node.children[0], isInput, isJsx); - return htmlContainer(node, ` placeholder="${char}"`, attr, isJsx, isInput); - } - - const childrenStr = htmlWidgetGenerator(node.children, isJsx); - - if (node.layoutMode !== "NONE") { - const rowColumn = rowColumnProps(node, isJsx); - return htmlContainer(node, childrenStr, rowColumn, isJsx); - } else { - // node.layoutMode === "NONE" && node.children.length > 1 - // children needs to be absolute - return htmlContainer( - node, - childrenStr, - formatWithJSX("position", isJsx, "relative"), - isJsx, - false, - false - ); - } -}; - -// properties named propSomething always take care of "," -// sometimes a property might not exist, so it doesn't add "," -export const htmlContainer = ( - node: AltFrameNode | AltRectangleNode | AltEllipseNode, - children: string, - additionalStyle: string = "", - isJsx: boolean, - isInput: boolean = false, - isRelative: boolean = false -): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - if (node.width <= 0 || node.height <= 0) { - return children; - } - - const builder = new HtmlDefaultBuilder(node, showLayerName, isJsx) - .blend(node) - .widthHeight(node) - .autoLayoutPadding(node) - .position(node, parentId, isRelative) - .customColor(node.fills, "background-color") - // TODO image and gradient support (tailwind does not support gradients) - .shadow(node) - .border(node); - - if (isInput) { - return `\n`; - } - - if (builder.style || additionalStyle) { - const build = builder.build(additionalStyle); - - let tag = "div"; - let src = ""; - console.log("with ", node.name, "fill", retrieveTopFill(node.fills)); - if (retrieveTopFill(node.fills)?.type === "IMAGE") { - tag = "img"; - src = ` src="https://via.placeholder.com/${node.width}x${node.height}"`; - } - - if (children) { - return `\n<${tag}${build}${src}>${indentString(children)}\n`; - } else if (selfClosingTags.includes(tag) || isJsx) { - return `\n<${tag}${build}${src} />`; - } else { - return `\n<${tag}${build}${src}>`; - } - } - - return children; -}; - -export const rowColumnProps = (node: AltFrameNode, isJsx: boolean): string => { - // ROW or COLUMN - - // ignore current node when it has only one child and it has the same size - if ( - node.children.length === 1 && - node.children[0].width === node.width && - node.children[0].height === node.height - ) { - return ""; - } - - // [optimization] - // flex, by default, has flex-row. Therefore, it can be omitted. - const rowOrColumn = - node.layoutMode === "HORIZONTAL" - ? formatWithJSX("flex-direction", isJsx, "row") - : formatWithJSX("flex-direction", isJsx, "column"); - - // special case when there is only one children; need to position correctly in Flex. - // let justify = "justify-center"; - // if (node.children.length === 1) { - // const nodeCenteredPosX = node.children[0].x + node.children[0].width / 2; - // const parentCenteredPosX = node.width / 2; - - // const marginX = nodeCenteredPosX - parentCenteredPosX; - - // // allow a small threshold - // if (marginX < -4) { - // justify = "justify-start"; - // } else if (marginX > 4) { - // justify = "justify-end"; - // } - // } - let primaryAlign: string; - - switch (node.primaryAxisAlignItems) { - case "MIN": - primaryAlign = "flex-start"; - break; - case "CENTER": - primaryAlign = "center"; - break; - case "MAX": - primaryAlign = "flex-end"; - break; - case "SPACE_BETWEEN": - primaryAlign = "space-between"; - break; - } - - primaryAlign = formatWithJSX("justify-content", isJsx, primaryAlign); - - // [optimization] - // when all children are STRETCH and layout is Vertical, align won't matter. Otherwise, center it. - let counterAlign: string = ""; - switch (node.counterAxisAlignItems) { - case "MIN": - counterAlign = "flex-start"; - break; - case "CENTER": - counterAlign = "center"; - break; - case "MAX": - counterAlign = "flex-end"; - break; - } - counterAlign = formatWithJSX("align-items", isJsx, counterAlign); - - // if parent is a Frame with AutoLayout set to Vertical, the current node should expand - let flex = - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === node.layoutMode - ? "flex" - : "inline-flex"; - - flex = formatWithJSX("display", isJsx, flex); - - return `${flex}${rowOrColumn}${counterAlign}${primaryAlign}`; -}; - -const addSpacingIfNeeded = ( - node: AltSceneNode, - index: number, - len: number, - isJsx: boolean -): string => { - // Ignore this when SPACE_BETWEEN is set. - if ( - node.parent?.type === "FRAME" && - node.parent.layoutMode !== "NONE" && - node.parent.primaryAxisAlignItems !== "SPACE_BETWEEN" - ) { - // check if itemSpacing is set and if it isn't the last value. - // Don't add at the last value. In Figma, itemSpacing CAN be negative; here it can't. - if (node.parent.itemSpacing > 0 && index < len - 1) { - const wh = node.parent.layoutMode === "HORIZONTAL" ? "width" : "height"; - - // don't show the layer name in these separators. - const style = new HtmlDefaultBuilder(node, false, isJsx).build( - formatWithJSX(wh, isJsx, node.parent.itemSpacing) - ); - return isJsx ? `\n` : `\n`; - } - } - return ""; -}; diff --git a/src/html/htmlTextBuilder.ts b/src/html/htmlTextBuilder.ts deleted file mode 100644 index 7f90de3f..00000000 --- a/src/html/htmlTextBuilder.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { AltTextNode } from "../altNodes/altMixins"; -import { commonLetterSpacing } from "../common/commonTextHeightSpacing"; -import { formatWithJSX } from "../common/parseJSX"; -import { convertFontWeight } from "../common/convertFontWeight"; -import { HtmlDefaultBuilder } from "./htmlDefaultBuilder"; -import { htmlTextSize as htmlTextSizeBox } from "./builderImpl/htmlTextSize"; -import { numToAutoFixed } from "./../common/numToAutoFixed"; - -export class HtmlTextBuilder extends HtmlDefaultBuilder { - // constructor(node: AltTextNode, showLayerName: boolean, optIsJSX: boolean) { - // super(node, showLayerName, optIsJSX); - // } - - // must be called before Position method - textAutoSize(node: AltTextNode): this { - if (node.textAutoResize === "NONE") { - // going to be used for position - this.hasFixedSize = true; - } - - this.style += htmlTextSizeBox(node, this.isJSX); - return this; - } - - // todo fontFamily - // fontFamily(node: AltTextNode): this { - // return this; - // } - - /** - * https://tailwindcss.com/docs/font-size/ - * example: text-md - */ - fontSize(node: AltTextNode, isUI: boolean = false): this { - // example: text-md - if (node.fontSize !== figma.mixed) { - // special limit when used in UI. - const value = isUI ? Math.min(node.fontSize, 24) : node.fontSize; - - this.style += formatWithJSX("font-size", this.isJSX, value); - } - - return this; - } - - /** - * https://tailwindcss.com/docs/font-style/ - * example: font-extrabold - * example: italic - */ - fontStyle(node: AltTextNode): this { - if (node.fontName !== figma.mixed) { - const lowercaseStyle = node.fontName.style.toLowerCase(); - - if (lowercaseStyle.match("italic")) { - this.style += formatWithJSX("font-style", this.isJSX, "italic"); - } - - if (lowercaseStyle.match("regular")) { - // ignore the font-style when regular (default) - return this; - } - - const value = node.fontName.style - .replace("italic", "") - .replace(" ", "") - .toLowerCase(); - - const weight = convertFontWeight(value); - - if (weight !== null && weight !== "400") { - this.style += formatWithJSX("font-weight", this.isJSX, weight); - } - } - return this; - } - - /** - * https://tailwindcss.com/docs/letter-spacing/ - * example: tracking-widest - */ - letterSpacing(node: AltTextNode): this { - const letterSpacing = commonLetterSpacing(node); - if (letterSpacing > 0) { - this.style += formatWithJSX("letter-spacing", this.isJSX, letterSpacing); - } - - return this; - } - - /** - * Since Figma is built on top of HTML + CSS, lineHeight properties are easy to map. - */ - lineHeight(node: AltTextNode): this { - if (node.lineHeight !== figma.mixed) { - switch (node.lineHeight.unit) { - case "AUTO": - this.style += formatWithJSX("line-height", this.isJSX, "100%"); - break; - case "PERCENT": - this.style += formatWithJSX( - "line-height", - this.isJSX, - `${numToAutoFixed(node.lineHeight.value)}%` - ); - break; - case "PIXELS": - this.style += formatWithJSX( - "line-height", - this.isJSX, - node.lineHeight.value - ); - break; - } - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-align/ - * example: text-justify - */ - textAlign(node: AltTextNode): this { - // if alignHorizontal is LEFT, don't do anything because that is native - - // only undefined in testing - if (node.textAlignHorizontal && node.textAlignHorizontal !== "LEFT") { - // todo when node.textAutoResize === "WIDTH_AND_HEIGHT" and there is no \n in the text, this can be ignored. - switch (node.textAlignHorizontal) { - case "CENTER": - this.style += formatWithJSX("text-align", this.isJSX, "center"); - break; - case "RIGHT": - this.style += formatWithJSX("text-align", this.isJSX, "right"); - break; - case "JUSTIFIED": - this.style += formatWithJSX("text-align", this.isJSX, "justify"); - break; - } - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-transform/ - * example: uppercase - */ - textTransform(node: AltTextNode): this { - if (node.textCase === "LOWER") { - this.style += formatWithJSX("text-transform", this.isJSX, "lowercase"); - } else if (node.textCase === "TITLE") { - this.style += formatWithJSX("text-transform", this.isJSX, "capitalize"); - } else if (node.textCase === "UPPER") { - this.style += formatWithJSX("text-transform", this.isJSX, "uppercase"); - } else if (node.textCase === "ORIGINAL") { - // default, ignore - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-decoration/ - * example: underline - */ - textDecoration(node: AltTextNode): this { - if (node.textDecoration === "UNDERLINE") { - this.style += formatWithJSX("text-decoration", this.isJSX, "underline"); - } else if (node.textDecoration === "STRIKETHROUGH") { - this.style += formatWithJSX( - "text-decoration", - this.isJSX, - "line-through" - ); - } - - return this; - } -} diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 09b8cda1..00000000 --- a/src/main.js +++ /dev/null @@ -1,7 +0,0 @@ -import App from "./ui/Main"; - -const app = new App({ - target: document.body, -}); - -export default app; diff --git a/src/swiftui/builderImpl/swiftuiBlend.ts b/src/swiftui/builderImpl/swiftuiBlend.ts deleted file mode 100644 index fac9f195..00000000 --- a/src/swiftui/builderImpl/swiftuiBlend.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { AltBlendMixin , AltLayoutMixin, AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; - -/** - * https://developer.apple.com/documentation/swiftui/view/opacity(_:) - */ -export const swiftuiOpacity = (node: AltBlendMixin): string => { - if (node.opacity !== undefined && node.opacity !== 1) { - return `\n.opacity(${numToAutoFixed(node.opacity)})`; - } - return ""; -}; - -/** - * https://developer.apple.com/documentation/swiftui/view/hidden() - */ -export const swiftuiVisibility = (node: AltSceneNode): string => { - // [when testing] node.visible can be undefined - if (node.visible !== undefined && !node.visible) { - return `\n.hidden()`; - } - return ""; -}; - -/** - * https://developer.apple.com/documentation/swiftui/modifiedcontent/rotationeffect(_:anchor:) - */ -export const swiftuiRotation = (node: AltLayoutMixin): string => { - if (node.rotation !== undefined && Math.round(node.rotation) !== 0) { - return `.rotationEffect(.degrees(${numToAutoFixed(node.rotation)}))`; - } - return ""; -}; - -/** - * https://developer.apple.com/documentation/swiftui/blendmode - */ -export const swiftuiBlendMode = (node: AltSceneNode): string => { - const fromBlendEnum = blendModeEnum(node); - if (fromBlendEnum) { - return `\n.blendMode(${fromBlendEnum})`; - } - - return ""; -}; - -const blendModeEnum = (node: AltSceneNode): string => { - switch (node.blendMode) { - case "COLOR": - return ".color"; - case "COLOR_BURN": - return ".colorBurn"; - case "COLOR_DODGE": - return ".colorDodge"; - case "DIFFERENCE": - return ".difference"; - case "EXCLUSION": - return ".exclusion"; - case "HARD_LIGHT": - return ".hardLight"; - case "HUE": - return ".hue"; - case "LIGHTEN": - return ".lighten"; - case "LUMINOSITY": - return ".luminosity"; - case "MULTIPLY": - return ".multiply"; - case "OVERLAY": - return ".overlay"; - case "SATURATION": - return ".saturation"; - case "SCREEN": - return ".screen"; - case "SOFT_LIGHT": - return ".softLight"; - default: - // PASS_THROUGH, NORMAL, LINEAR_DODGE - return ""; - } -}; diff --git a/src/swiftui/builderImpl/swiftuiBorder.ts b/src/swiftui/builderImpl/swiftuiBorder.ts deleted file mode 100644 index c16533fd..00000000 --- a/src/swiftui/builderImpl/swiftuiBorder.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { retrieveTopFill } from "./../../common/retrieveFill"; -import { swiftuiColorFromFills } from "./swiftuiColor"; - -/** - * Generate border or an overlay with stroke. - * In Flutter and Tailwind, setting the border sets for both fill and stroke. Not in SwiftUI. - * This method, therefore, only serves for the stroke/border and not for roundness of the layer behind. - * Also, it only works when there is a fill. When there isn't, [swiftuiShapeStroke] should be used. - * - * @param node with hopefully a fill object in [node.strokes]. - * @returns a string with overlay, when there node has a corner radius, or just border. If no color is found in node.strokes, return "". - */ -export const swiftuiBorder = (node: AltSceneNode): string => { - if (node.type === "GROUP" || !node.strokes || node.strokes.length === 0) { - return ""; - } - - const propStrokeColor = swiftuiColorFromFills(node.strokes); - const lW = numToAutoFixed(node.strokeWeight); - const fill = retrieveTopFill(node.fills); - - if (propStrokeColor && node.strokeWeight) { - const roundRect = swiftuiRoundedRectangle(node); - if (roundRect) { - return `\n.overlay(${roundRect}.stroke(${propStrokeColor}, lineWidth: ${lW}))`; - } else if (node.type === "RECTANGLE" && !fill) { - // this scenario was taken care already by [swiftuiShapeStroke] - return ""; - } - - if (node.type === "ELLIPSE" && fill) { - // add overlay, to not loose the current fill - return `\n.overlay(Ellipse().stroke(${propStrokeColor}, lineWidth: ${lW}))`; - } else if (node.type === "ELLIPSE" && !fill) { - // this scenario was taken care already by [swiftuiShapeStroke] - return ""; - } - - // border can be put before or after frame() - return `\n.border(${propStrokeColor}, width: ${lW})`; - } - - return ""; -}; - -// .stroke() must be called near the shape declaration, but .overlay() must be called after frame(). -// Stroke and Border were split. This method deals with stroke, and the other one with overlay. -export const swiftuiShapeStroke = (node: AltSceneNode): string => { - if (node.type === "GROUP" || !node.strokes || node.strokes.length === 0) { - return ""; - } - - const propStrokeColor = swiftuiColorFromFills(node.strokes); - const lW = numToAutoFixed(node.strokeWeight); - - if (propStrokeColor && node.strokeWeight) { - const fill = retrieveTopFill(node.fills); - - // only add stroke when there isn't a fill set. - if (node.type === "ELLIPSE" && !fill) { - return `\n.stroke(${propStrokeColor}, lineWidth: ${lW})`; - } - - const roundRect = swiftuiRoundedRectangle(node); - if (!roundRect && node.type === "RECTANGLE" && !fill) { - return `\n.stroke(${propStrokeColor}, lineWidth: ${lW})`; - } - } - - return ""; -}; - -/** - * Produce a Rectangle with border radius. - * The reason this was extracted into its own method is for reusability in [swiftuiBorder], - * where a RoundedRectangle is needed again to be part of the overlay. - * - * @param node with cornerRadius and topLeftRadius properties. - * @returns a string with RoundedRectangle, if node has a corner larger than zero; else "". - */ -export const swiftuiCornerRadius = (node: AltSceneNode): string => { - if ( - "cornerRadius" in node && - node.cornerRadius !== figma.mixed && - node.cornerRadius > 0 - ) { - return numToAutoFixed(node.cornerRadius); - } else { - if (!("topLeftRadius" in node)) { - return ""; - } - - // SwiftUI doesn't support individual corner radius, so get the largest one - const maxBorder = Math.max( - node.topLeftRadius, - node.topRightRadius, - node.bottomLeftRadius, - node.bottomRightRadius - ); - - if (maxBorder > 0) { - return numToAutoFixed(maxBorder); - } - } - - return ""; -}; - -/** - * Produce a Rectangle with border radius. - * The reason this was extracted into its own method is for reusability in [swiftuiBorder], - * where a RoundedRectangle is needed again to be part of the overlay. - * - * @param node with cornerRadius and topLeftRadius properties. - * @returns a string with RoundedRectangle, if node has a corner larger than zero; else "". - */ -export const swiftuiRoundedRectangle = (node: AltSceneNode): string => { - const corner = swiftuiCornerRadius(node); - if (corner) { - return `RoundedRectangle(cornerRadius: ${corner})`; - } - - return ""; -}; diff --git a/src/swiftui/builderImpl/swiftuiColor.ts b/src/swiftui/builderImpl/swiftuiColor.ts deleted file mode 100644 index 1f64b09c..00000000 --- a/src/swiftui/builderImpl/swiftuiColor.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { retrieveTopFill } from "../../common/retrieveFill"; -import { gradientAngle } from "../../common/color"; -import { nearestValue } from "./../../tailwind/conversionTables"; -import { numToAutoFixed } from "./../../common/numToAutoFixed"; - -/** - * Retrieve the SOLID color for SwiftUI when existent, otherwise "" - */ -export const swiftuiColorFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - const fill = retrieveTopFill(fills); - - if (fill?.type === "SOLID") { - // todo maybe ignore text color when it is black? - - // opacity should only be null on set, not on get. But better be prevented. - const opacity = fill.opacity ?? 1.0; - return swiftuiColor(fill.color, opacity); - } else if (fill?.type === "GRADIENT_LINEAR") { - return swiftuiGradient(fill); - } else if (fill?.type === "IMAGE") { - // placeholder for the image. Apparently SwiftUI doesn't support Image.network(...). - return swiftuiColor( - { - r: 0.5, - g: 0.23, - b: 0.27, - }, - 0.5 - ); - } - - return ""; -}; - -export const swiftuiGradient = (fill: GradientPaint): string => { - const direction = gradientDirection(gradientAngle(fill)); - - const colors = fill.gradientStops - .map((d) => { - return swiftuiColor(d.color, d.color.a); - }) - .join(", "); - - return `LinearGradient(gradient: Gradient(colors: [${colors}]), ${direction})`; -}; - -const gradientDirection = (angle: number): string => { - switch (nearestValue(angle, [-180, -135, -90, -45, 0, 45, 90, 135, 180])) { - case 0: - return "startPoint: .leading, endPoint: .trailing"; - case 45: - return "startPoint: .topLeading, endPoint: .bottomTrailing"; - case 90: - return "startPoint: .top, endPoint: .bottom"; - case 135: - return "startPoint: .topTrailing, endPoint: .bottomLeading"; - case -45: - return "startPoint: .bottomLeading, endPoint: .topTrailing"; - case -90: - return "startPoint: .bottom, endPoint: .top"; - case -135: - return "startPoint: .bottomTrailing, endPoint: .topLeading"; - default: - // 180 and -180 - return "startPoint: .trailing, endPoint: .leading"; - } -}; - -export const swiftuiColor = (color: RGB, opacity: number): string => { - // Using Color.black.opacity() is not reccomended, as per: - // https://stackoverflow.com/a/56824114/4418073 - // Therefore, only use Color.black/white when opacity is 1. - if (color.r + color.g + color.b === 0 && opacity === 1) { - return "Color.black"; - } - - if (color.r + color.g + color.b === 3 && opacity === 1) { - return "Color.white"; - } - - const r = `red: ${ numToAutoFixed(color.r)}`; - const g = `green: ${ numToAutoFixed(color.g)}`; - const b = `blue: ${ numToAutoFixed(color.b)}`; - - const opacityAttr = - opacity !== 1.0 ? `, opacity: ${numToAutoFixed(opacity)}` : ""; - - return `Color(${r}, ${g}, ${b}${opacityAttr})`; -}; diff --git a/src/swiftui/builderImpl/swiftuiEffects.ts b/src/swiftui/builderImpl/swiftuiEffects.ts deleted file mode 100644 index 390f10da..00000000 --- a/src/swiftui/builderImpl/swiftuiEffects.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; - -export const swiftuiShadow = (node: AltSceneNode): string => { - if (!node.effects || node.effects.length === 0) { - return ""; - } - - const dropShadow: Array = node.effects.filter( - (d): d is DropShadowEffect => d.type === "DROP_SHADOW" && d.visible - ); - - if (dropShadow.length === 0) { - return ""; - } - - // retrieve first shadow. - const shadow = dropShadow[0]; - let comp = ""; - - const color = shadow.color; - // set color when not black with 0.25 of opacity, which is the Figma default. Round the alpha now to avoid rounding issues. - const a = numToAutoFixed(color.a); - if (color.r + color.g + color.b === 0 && a !== "0.25") { - const r = numToAutoFixed(color.r); - const g = numToAutoFixed(color.g); - const b = numToAutoFixed(color.b); - comp += `color: Color(red: ${r}, green: ${g}, blue: ${b}, opacity: ${a}), `; - } - - comp += `radius: ${numToAutoFixed(shadow.radius)}`; - - if (shadow.offset.x !== shadow.offset.y) { - const x = - shadow.offset.x > 0 ? `x: ${numToAutoFixed(shadow.offset.x)}` : ""; - const y = - shadow.offset.y > 0 ? `y: ${numToAutoFixed(shadow.offset.y)}` : ""; - - // add initial comma since this is an optional paramater and radius must come first. - comp += ", "; - if (x && y) { - comp += `${x}, ${y}`; - } else { - // no comma in the middle, since only one of them will be valid - comp += `${x}${y}`; - } - } - - return `\n.shadow(${comp})`; -}; - -export const swiftuiBlur = (node: AltSceneNode): string => { - if (!node.effects || node.effects.length === 0) { - return ""; - } - - const layerBlur: Array = node.effects.filter( - (d): d is BlurEffect => d.type === "LAYER_BLUR" && d.visible - ); - - if (layerBlur.length === 0) { - return ""; - } - - // retrieve first blur. - const blur = layerBlur[0].radius; - return `\n.blur(radius: ${numToAutoFixed(blur)})`; -}; diff --git a/src/swiftui/builderImpl/swiftuiPadding.ts b/src/swiftui/builderImpl/swiftuiPadding.ts deleted file mode 100644 index ea83a8c7..00000000 --- a/src/swiftui/builderImpl/swiftuiPadding.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { commonPadding } from "../../common/commonPadding"; - -// Add padding if necessary! -// This must happen before Stack or after the Positioned, but not before. -export const swiftuiPadding = (node: AltSceneNode): string => { - if (!("layoutMode" in node)) { - return ""; - } - - const padding = commonPadding(node); - if (!padding) { - return ""; - } - - if ("all" in padding) { - return `\n.padding(${numToAutoFixed(padding.all)})`; - } - - let comp = ""; - - // horizontal and vertical, as the default AutoLayout - if (padding.horizontal) { - comp += `\n.padding(.horizontal, ${numToAutoFixed(padding.horizontal)})`; - } - if (padding.vertical) { - comp += `\n.padding(.vertical, ${numToAutoFixed(padding.vertical)})`; - } - - // if left and right exists, verify if they are the same after [pxToLayoutSize] conversion. - if (padding.left) { - comp += `\n.padding(.leading, ${numToAutoFixed(padding.left)})`; - } - if (padding.right) { - comp += `\n.padding(.trailing, ${numToAutoFixed(padding.right)})`; - } - if (padding.top) { - comp += `\n.padding(.top, ${numToAutoFixed(padding.top)})`; - } - if (padding.bottom) { - comp += `\n.padding(.bottom, ${numToAutoFixed(padding.bottom)})`; - } - - return comp; -}; diff --git a/src/swiftui/builderImpl/swiftuiPosition.ts b/src/swiftui/builderImpl/swiftuiPosition.ts deleted file mode 100644 index d94b9713..00000000 --- a/src/swiftui/builderImpl/swiftuiPosition.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; -import { parentCoordinates } from "../../common/parentCoordinates"; - -export const swiftuiPosition = ( - node: AltSceneNode, - parentId: string = "" -): string => { - // avoid adding Positioned() when parent is not a Stack(), which can happen at the beggining - if (!node.parent || parentId === node.parent.id) { - return ""; - } - - // check if view is in a stack. Group and Frames must have more than 1 element - if (node.parent.isRelative === true) { - const [parentX, parentY] = parentCoordinates(node.parent); - - const parentCenterX = parentX + node.parent.width / 2; - const parentCenterY = parentY + node.parent.height / 2; - - const pointX = node.x - parentX + node.width / 2; - const pointY = node.y - parentY + node.height / 2; - - // verify if items are centered, with a small threshold. - // use abs because they can be negative. - if ( - Math.abs(parentCenterX - pointX) < 2 && - Math.abs(parentCenterY - pointY) < 2 - ) { - return ""; - } else { - const x = numToAutoFixed(pointX - parentCenterX); - const y = numToAutoFixed(pointY - parentCenterY); - return `\n.offset(x: ${x}, y: ${y})`; - } - } - - return ""; -}; diff --git a/src/swiftui/builderImpl/swiftuiSize.ts b/src/swiftui/builderImpl/swiftuiSize.ts deleted file mode 100644 index f62016a5..00000000 --- a/src/swiftui/builderImpl/swiftuiSize.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { nodeWidthHeight } from "../../common/nodeWidthHeight"; -import { numToAutoFixed } from "../../common/numToAutoFixed"; - -export const swiftuiSize = (node: AltSceneNode): [string, string] => { - const size = nodeWidthHeight(node, false); - - // if width is set as maxWidth, height must also be set as maxHeight (not height) - const shouldExtend = size.height === "full" || size.width === "full"; - - // this cast will always be true, since nodeWidthHeight was called with false to relative. - let propWidth = ""; - if (typeof size.width === "number") { - const w = numToAutoFixed(size.width); - - if (shouldExtend) { - propWidth = `maxWidth: ${w}`; - } else { - propWidth = `width: ${w}`; - } - } else if (size.width === "full") { - propWidth = `maxWidth: .infinity`; - } - - let propHeight = ""; - if (typeof size.height === "number") { - const h = numToAutoFixed(size.height); - - if (shouldExtend) { - propHeight = `maxHeight: ${h}`; - } else { - propHeight = `height: ${h}`; - } - } else if (size.height === "full") { - propHeight = `maxHeight: .infinity`; - } - - return [propWidth, propHeight]; -}; diff --git a/src/swiftui/builderImpl/swiftuiTextWeight.ts b/src/swiftui/builderImpl/swiftuiTextWeight.ts deleted file mode 100644 index 8b242d3a..00000000 --- a/src/swiftui/builderImpl/swiftuiTextWeight.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { AltTextNode } from "../../altNodes/altMixins"; - -/** - * Large (Default) - * https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/typography/ - */ -export const swiftuiFontMatcher = (node: AltTextNode): string => { - if (node.fontSize === figma.mixed) { - return ""; - } - - if (node.fontSize <= 11) { - return ".caption2"; - } else if (node.fontSize <= 12) { - return ".caption"; - } else if (node.fontSize <= 13) { - return ".footnote"; - } else if (node.fontSize <= 15) { - return ".subheadline"; - } else if (node.fontSize <= 16) { - return ".callout"; - } else if (node.fontSize <= 17) { - return ".body"; - } else if (node.fontSize <= 20) { - return ".title3"; - } else if (node.fontSize <= 22) { - return ".title2"; - } else if (node.fontSize <= 28) { - return ".title"; - } else { - return ".largeTitle"; - } -}; - -/** - * nine weights — from Ultralight to Black - * https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/typography/ - */ -export const swiftuiWeightMatcher = ( - weight: "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" -): string => { - // yes, "ultraLight" and "semibold" are correct. - switch (weight) { - case "100": - return ".ultraLight"; - case "200": - return ".thin"; - case "300": - return ".light"; - case "400": - return ".regular"; - case "500": - return ".medium"; - case "600": - return ".semibold"; - case "700": - return ".bold"; - case "800": - return ".heavy"; - case "900": - return ".black"; - } -}; diff --git a/src/swiftui/swiftuiDefaultBuilder.ts b/src/swiftui/swiftuiDefaultBuilder.ts deleted file mode 100644 index 5d892ae3..00000000 --- a/src/swiftui/swiftuiDefaultBuilder.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { AltSceneNode } from "../altNodes/altMixins"; -import { swiftuiBlur, swiftuiShadow } from "./builderImpl/swiftuiEffects"; -import { - swiftuiBorder, - swiftuiCornerRadius, - swiftuiShapeStroke, -} from "./builderImpl/swiftuiBorder"; -import { swiftuiColorFromFills } from "./builderImpl/swiftuiColor"; -import { swiftuiPadding } from "./builderImpl/swiftuiPadding"; -import { swiftuiSize } from "./builderImpl/swiftuiSize"; - -import { swiftuiPosition } from "./builderImpl/swiftuiPosition"; -import { - swiftuiVisibility, - swiftuiOpacity, - swiftuiRotation, - swiftuiBlendMode, -} from "./builderImpl/swiftuiBlend"; - -export class SwiftuiDefaultBuilder { - modifiers: string = ""; - - blend(node: AltSceneNode): this { - this.modifiers += swiftuiVisibility(node); - this.modifiers += swiftuiRotation(node); - this.modifiers += swiftuiOpacity(node); - this.modifiers += swiftuiBlendMode(node); - - return this; - } - - position(node: AltSceneNode, parentId: string): this { - this.modifiers += swiftuiPosition(node, parentId); - return this; - } - - shapeBorder(node: AltSceneNode): this { - this.modifiers += swiftuiShapeStroke(node); - return this; - } - - layerBorder(node: AltSceneNode): this { - this.modifiers += swiftuiBorder(node); - return this; - } - - shapeBackground(node: AltSceneNode): this { - if (node.type !== "ELLIPSE" && node.type !== "RECTANGLE") { - return this; - } - - const fillColor = swiftuiColorFromFills(node.fills); - if (fillColor) { - this.modifiers += `\n.fill(${fillColor})`; - } - - return this; - } - - layerBackground(node: AltSceneNode): this { - if (node.type !== "FRAME") { - return this; - } - - const fillColor = swiftuiColorFromFills(node.fills); - if (fillColor) { - this.modifiers += `\n.background(${fillColor})`; - } - - // add corner to the background. It needs to come after the Background, and since we already in the if, let's add it here. - const corner = swiftuiCornerRadius(node); - - // it seems this is necessary even in RoundedRectangle - if (corner) { - this.modifiers += `\n.cornerRadius(${corner})`; - } - - return this; - } - - effects(node: AltSceneNode): this { - if (node.type === "GROUP") { - return this; - } - - this.modifiers += swiftuiBlur(node); - this.modifiers += swiftuiShadow(node); - - return this; - } - - widthHeight(node: AltSceneNode): this { - const [propWidth, propHeight] = swiftuiSize(node); - - if (propWidth || propHeight) { - // add comma if propWidth and propHeight both exists - const comma = propWidth && propHeight ? ", " : ""; - - this.modifiers += `\n.frame(${propWidth}${comma}${propHeight})`; - } - - return this; - } - - autoLayoutPadding(node: AltSceneNode): this { - this.modifiers += swiftuiPadding(node); - return this; - } - - build(): string { - return this.modifiers; - } -} diff --git a/src/swiftui/swiftuiMain.ts b/src/swiftui/swiftuiMain.ts deleted file mode 100644 index 0affc523..00000000 --- a/src/swiftui/swiftuiMain.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { AltFrameNode, AltGroupNode, AltTextNode , AltSceneNode } from "../altNodes/altMixins"; -import { indentString } from "../common/indentString"; -import { numToAutoFixed } from "./../common/numToAutoFixed"; -import { SwiftuiTextBuilder } from "./swiftuiTextBuilder"; -import { SwiftuiDefaultBuilder } from "./swiftuiDefaultBuilder"; -import { swiftuiRoundedRectangle } from "./builderImpl/swiftuiBorder"; - -let parentId = ""; - -export const swiftuiMain = ( - sceneNode: Array, - parentIdSrc: string = "" -): string => { - parentId = parentIdSrc; - - let result = swiftuiWidgetGenerator(sceneNode, 0); - - // remove the initial \n that is made in Container. - if (result.length > 0 && result.startsWith("\n")) { - result = result.slice(1, result.length); - } - - return result; -}; - -const swiftuiWidgetGenerator = ( - sceneNode: ReadonlyArray, - indentLevel: number -): string => { - let comp = ""; - - // filter non visible nodes. This is necessary at this step because conversion already happened. - const visibleSceneNode = sceneNode.filter((d) => d.visible); - const sceneLen = visibleSceneNode.length; - - visibleSceneNode.forEach((node, index) => { - if (node.type === "RECTANGLE" || node.type === "ELLIPSE") { - comp += swiftuiContainer(node, indentLevel); - } else if (node.type === "GROUP") { - comp += swiftuiGroup(node, indentLevel); - } else if (node.type === "FRAME") { - comp += swiftuiFrame(node, indentLevel); - } else if (node.type === "TEXT") { - comp += swiftuiText(node, indentLevel); - } - - // don't add a newline at last element. - if (index < sceneLen - 1) { - comp += "\n"; - } - }); - - return comp; -}; - -// properties named propSomething always take care of "," -// sometimes a property might not exist, so it doesn't add "," -export const swiftuiContainer = ( - node: AltSceneNode, - indentLevel: number, - children: string = "" -): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - if (node.width <= 0 || node.height <= 0) { - return children; - } - - const modifiers = new SwiftuiDefaultBuilder() - .shapeBackground(node) - .shapeBorder(node) - .blend(node) - .autoLayoutPadding(node) - .position(node, parentId) - .widthHeight(node) - .layerBackground(node) - .layerBorder(node) - .effects(node) - .build(); - - let kind = ""; - if (node.type === "RECTANGLE" || (!children && node.type === "FRAME")) { - // return a different kind of Rectangle when cornerRadius exists - const roundedRect = swiftuiRoundedRectangle(node); - if (roundedRect) { - kind = roundedRect; - } else { - kind = "Rectangle()"; - } - } else if (node.type === "ELLIPSE") { - kind = "Ellipse()"; - } else { - kind = children; - } - - // only add the newline when result is not empty - const result = (children !== kind ? "\n" : "") + kind + modifiers; - return indentString(result, indentLevel); -}; - -const swiftuiGroup = (node: AltGroupNode, indentLevel: number): string => { - return swiftuiContainer( - node, - indentLevel, - `\nZStack {${widgetGeneratorWithLimits(node, indentLevel)}\n}` - ); -}; - -const swiftuiText = (node: AltTextNode, indentLevel: number): string => { - const builder = new SwiftuiTextBuilder(); - - let text = node.characters; - if (node.textCase === "LOWER") { - text = text.toLowerCase(); - } else if (node.textCase === "UPPER") { - text = text.toUpperCase(); - } - - const splittedChars = text.split("\n"); - const charsWithLineBreak = - splittedChars.length > 1 ? splittedChars.join("\\n") : text; - - const modifier = builder - .textDecoration(node) - .textStyle(node) - .textAutoSize(node) - .letterSpacing(node) - .lineHeight(node) - .blend(node) - .layerBackground(node) - .position(node, parentId) - .build(); - - const result = `\nText("${charsWithLineBreak}")${modifier}`; - return indentString(result, indentLevel); -}; - -const swiftuiFrame = (node: AltFrameNode, indentLevel: number): string => { - // when there is a single children, indent should be zero; [swiftuiContainer] will already assign it. - const updatedIndentLevel = node.children.length === 1 ? 0 : indentLevel + 1; - - const children = widgetGeneratorWithLimits(node, updatedIndentLevel); - - // if there is only one child, there is no need for a HStack of VStack. - if (node.children.length === 1) { - return swiftuiContainer(node, indentLevel, children); - // return swiftuiContainer(node, rowColumn); - } else if (node.layoutMode !== "NONE") { - const rowColumn = wrapInDirectionalStack(node, children); - return swiftuiContainer(node, indentLevel, rowColumn); - } else { - // node.layoutMode === "NONE" && node.children.length > 1 - // children needs to be absolute - return swiftuiContainer(node, indentLevel, `\nZStack {${children}\n}`); - } -}; - -const wrapInDirectionalStack = ( - node: AltFrameNode, - children: string -): string => { - const rowOrColumn = node.layoutMode === "HORIZONTAL" ? "HStack" : "VStack"; - - // retrieve the align based on the most frequent position of children - // SwiftUI doesn't allow the children to be set individually. And there are different align properties for HStack and VStack. - let layoutAlign = ""; - const mostFreq = node.counterAxisAlignItems; - if (node.layoutMode === "VERTICAL") { - if (mostFreq === "MIN") { - layoutAlign = "alignment: .leading"; - } else if (mostFreq === "MAX") { - layoutAlign = "alignment: .trailing"; - } - } else if (mostFreq === "MIN") { - layoutAlign = "alignment: .top"; - } else if (mostFreq === "MAX") { - layoutAlign = "alignment: .bottom"; - } - - // only add comma and a space if layoutAlign has a value - const comma = layoutAlign ? ", " : ""; - // default spacing for SwiftUI is 16. - const spacing = - Math.round(node.itemSpacing) !== 16 - ? `${comma}spacing: ${numToAutoFixed(node.itemSpacing)}` - : ""; - - return `\n${rowOrColumn}(${layoutAlign}${spacing}) {${children}\n}`; -}; - -// https://stackoverflow.com/a/20762713 -export const mostFrequent = (arr: Array): string | undefined => { - return arr - .sort( - (a, b) => - arr.filter((v) => v === a).length - arr.filter((v) => v === b).length - ) - .pop(); -}; - -// todo should the plugin manually Group items? Ideally, it would detect the similarities and allow a ForEach. -const widgetGeneratorWithLimits = ( - node: AltFrameNode | AltGroupNode, - indentLevel: number -) => { - if (node.children.length < 10) { - // standard way - return swiftuiWidgetGenerator(node.children, indentLevel); - } - - const chunk = 10; - let strBuilder = ""; - const slicedChildren = node.children.slice(0, 100); - - // I believe no one should have more than 100 items in a single nesting level. If you do, please email me. - if (node.children.length > 100) { - strBuilder += `\n// SwiftUI has a 10 item limit in Stacks. By grouping them, it can grow even more. -// It seems, however, that you have more than 100 items at the same level. Wow! -// This is not yet supported; Limiting to the first 100 items...`; - } - - // split node.children in arrays of 10, so that it can be Grouped. I feel so guilty of allowing this. - for (let i = 0, j = slicedChildren.length; i < j; i += chunk) { - const chunkChildren = slicedChildren.slice(i, i + chunk); - const strChildren = swiftuiWidgetGenerator(chunkChildren, indentLevel); - strBuilder += `\nGroup {${strChildren}\n}`; - } - - return strBuilder; -}; diff --git a/src/swiftui/swiftuiTextBuilder.ts b/src/swiftui/swiftuiTextBuilder.ts deleted file mode 100644 index 5e8bbcad..00000000 --- a/src/swiftui/swiftuiTextBuilder.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { AltTextNode } from "../altNodes/altMixins"; -import { numToAutoFixed } from "../common/numToAutoFixed"; -import { commonLetterSpacing , commonLineHeight } from "../common/commonTextHeightSpacing"; -import { convertFontWeight } from "../common/convertFontWeight"; -import { SwiftuiDefaultBuilder } from "./swiftuiDefaultBuilder"; -import { - swiftuiFontMatcher, - swiftuiWeightMatcher, -} from "./builderImpl/swiftuiTextWeight"; -import { swiftuiSize } from "./builderImpl/swiftuiSize"; - -export class SwiftuiTextBuilder extends SwiftuiDefaultBuilder { - reset(): void { - this.modifiers = ""; - } - - textAutoSize(node: AltTextNode): this { - this.modifiers += this.wrapTextAutoResize(node); - return this; - } - - textDecoration(node: AltTextNode): this { - // https://developer.apple.com/documentation/swiftui/text/underline(_:color:) - if (node.textDecoration === "UNDERLINE") { - this.modifiers += "\n.underline()"; - } - - // https://developer.apple.com/documentation/swiftui/text/strikethrough(_:color:) - if (node.textDecoration === "STRIKETHROUGH") { - this.modifiers += "\n.strikethrough()"; - } - - // https://developer.apple.com/documentation/swiftui/text/italic() - if ( - node.fontName !== figma.mixed && - node.fontName.style.toLowerCase().match("italic") - ) { - this.modifiers += "\n.italic()"; - } - - return this; - } - - textStyle = (node: AltTextNode): this => { - // for some reason this must be set before the multilineTextAlignment - if (node.fontName !== figma.mixed) { - const fontWeight = convertFontWeight(node.fontName.style); - if (fontWeight && fontWeight !== "400") { - const weight = swiftuiWeightMatcher(fontWeight); - this.modifiers += `\n.fontWeight(${weight})`; - } - } - - // https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/typography/ - const retrievedFont = swiftuiFontMatcher(node); - if (retrievedFont) { - this.modifiers += `\n.font(${retrievedFont})`; - } - - // todo might be a good idea to calculate the width based on the font size and check if view is really multi-line - if (node.textAutoResize !== "WIDTH_AND_HEIGHT") { - // it can be confusing, but multilineTextAlignment is always set to left by default. - if (node.textAlignHorizontal === "CENTER") { - this.modifiers += `\n.multilineTextAlignment(.center)`; - } else if (node.textAlignHorizontal === "RIGHT") { - this.modifiers += `\n.multilineTextAlignment(.trailing)`; - } - } - - return this; - }; - - letterSpacing = (node: AltTextNode): this => { - const letterSpacing = commonLetterSpacing(node); - if (letterSpacing > 0) { - this.modifiers += `\n.tracking(${numToAutoFixed(letterSpacing)})`; - } - - return this; - }; - - // the difference between kerning and tracking is that tracking spaces everything, kerning keeps lignatures, - // Figma spaces everything, so we are going to use tracking. - lineHeight = (node: AltTextNode): this => { - const letterHeight = commonLineHeight(node); - - if (letterHeight > 0) { - this.modifiers += `\n.lineSpacing(${numToAutoFixed(letterHeight)})`; - } - - return this; - }; - - wrapTextAutoResize = (node: AltTextNode): string => { - const [propWidth, propHeight] = swiftuiSize(node); - - let comp = ""; - if (node.textAutoResize !== "WIDTH_AND_HEIGHT") { - comp += propWidth; - } - - if (node.textAutoResize === "NONE") { - // if it is NONE, it isn't WIDTH_AND_HEIGHT, which means the comma must be added. - comp += ", "; - comp += propHeight; - } - - if (comp.length > 0) { - const align = this.textAlignment(node); - - return `\n.frame(${comp}${align})`; - } - - return ""; - }; - - // SwiftUI has two alignments for Text, when it is a single line and when it is multiline. This one is for single line. - textAlignment = (node: AltTextNode): string => { - let hAlign = ""; - if (node.textAlignHorizontal === "LEFT") { - hAlign = "leading"; - } else if (node.textAlignHorizontal === "RIGHT") { - hAlign = "trailing"; - } - - let vAlign = ""; - if (node.textAlignVertical === "TOP") { - vAlign = "top"; - } else if (node.textAlignVertical === "BOTTOM") { - vAlign = "bottom"; - } - - if (hAlign && !vAlign) { - // result should be leading or trailing - return `, alignment: .${hAlign}`; - } else if (!hAlign && vAlign) { - // result should be top or bottom - return `, alignment: .${vAlign}`; - } else if (hAlign && vAlign) { - // make the first char from hAlign uppercase - const hAlignUpper = hAlign.charAt(0).toUpperCase() + hAlign.slice(1); - // result should be topLeading, topTrailing, bottomLeading or bottomTrailing - return `, alignment: .${vAlign}${hAlignUpper}`; - } - - // when they are centered - return ""; - }; -} diff --git a/src/tailwind/builderImpl/tailwindBlend.ts b/src/tailwind/builderImpl/tailwindBlend.ts deleted file mode 100644 index ab5656e6..00000000 --- a/src/tailwind/builderImpl/tailwindBlend.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { AltBlendMixin , AltLayoutMixin, AltSceneNode } from "../../altNodes/altMixins"; -import { nearestOpacity, nearestValue } from "../conversionTables"; - -/** - * https://tailwindcss.com/docs/opacity/ - * default is [0, 25, 50, 75, 100], but '100' will be ignored: - * if opacity was changed, let it be visible. Therefore, 98% => 75 - * node.opacity is between [0, 1]; output will be [0, 100] - */ -export const tailwindOpacity = (node: AltBlendMixin): string => { - // [when testing] node.opacity can be undefined - if (node.opacity !== undefined && node.opacity !== 1) { - return `opacity-${nearestOpacity(node.opacity)} `; - } - return ""; -}; - -/** - * https://tailwindcss.com/docs/visibility/ - * example: invisible - */ -export const tailwindVisibility = (node: AltSceneNode): string => { - // [when testing] node.visible can be undefined - - // When something is invisible in Figma, it isn't gone. Groups can make use of it. - // Therefore, instead of changing the visibility (which causes bugs in nested divs), - // this plugin is going to ignore color and stroke - if (node.visible !== undefined && !node.visible) { - return "invisible "; - } - return ""; -}; - -/** - * https://tailwindcss.com/docs/rotate/ - * default is [-180, -90, -45, 0, 45, 90, 180], but '0' will be ignored: - * if rotation was changed, let it be perceived. Therefore, 1 => 45 - */ -export const tailwindRotation = (node: AltLayoutMixin): string => { - // that's how you convert angles to clockwise radians: angle * -pi/180 - // using 3.14159 as Pi for enough precision and to avoid importing math lib. - if (node.rotation !== undefined && Math.round(node.rotation) !== 0) { - const allowedValues = [ - -180, -90, -45, -12, -6, -3, -2, -1, 1, 2, 3, 6, 12, 45, 90, 180, - ]; - let nearest = nearestValue(node.rotation, allowedValues); - let minusIfNegative = ""; - if (nearest < 0) { - minusIfNegative = "-"; - nearest = -nearest; - } - - return `transform ${minusIfNegative}rotate-${nearest} `; - } - return ""; -}; diff --git a/src/tailwind/builderImpl/tailwindBorder.ts b/src/tailwind/builderImpl/tailwindBorder.ts deleted file mode 100644 index 42d29038..00000000 --- a/src/tailwind/builderImpl/tailwindBorder.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { AltSceneNode, AltGeometryMixin } from "../../altNodes/altMixins"; -import { nearestValue, pxToBorderRadius } from "../conversionTables"; - -/** - * https://tailwindcss.com/docs/border-width/ - * example: border-2 - */ -export const tailwindBorderWidth = (node: AltGeometryMixin): string => { - // [node.strokeWeight] can have a value even when there are no strokes - // [when testing] node.effects can be undefined - if (node.strokes && node.strokes.length > 0 && node.strokeWeight > 0) { - const allowedValues = [1, 2, 4, 8]; - const nearest = nearestValue(node.strokeWeight, allowedValues); - if (nearest === 1) { - // special case - return "border "; - } else { - return `border-${nearest} `; - } - } - return ""; -}; - -/** - * https://tailwindcss.com/docs/border-radius/ - * example: rounded-sm - * example: rounded-tr-lg - */ -export const tailwindBorderRadius = (node: AltSceneNode): string => { - if (node.type === "ELLIPSE") { - return "rounded-full "; - } else if ( - (!("cornerRadius" in node) && !("topLeftRadius" in node)) || - ("cornerRadius" in node && - node.cornerRadius === figma.mixed && - node.topLeftRadius === undefined) || - ("cornerRadius" in node && node.cornerRadius === 0) - ) { - // the second condition is used on tests. On Figma, topLeftRadius is never undefined. - // ignore when 0, undefined or non existent - return ""; - } - - let comp = ""; - - if (!("cornerRadius" in node)) { - return ""; - } - - if (node.cornerRadius !== figma.mixed) { - if (node.cornerRadius >= node.height / 2) { - // special case. If height is 90 and cornerRadius is 45, it is full. - comp += "rounded-full "; - } else { - comp += `rounded${pxToBorderRadius(node.cornerRadius)} `; - } - } else { - // todo optimize for tr/tl/br/bl instead of t/r/l/b - if (node.topLeftRadius !== 0) { - comp += `rounded-tl${pxToBorderRadius(node.topLeftRadius)} `; - } - if (node.topRightRadius !== 0) { - comp += `rounded-tr${pxToBorderRadius(node.topRightRadius)} `; - } - if (node.bottomLeftRadius !== 0) { - comp += `rounded-bl${pxToBorderRadius(node.bottomLeftRadius)} `; - } - if (node.bottomRightRadius !== 0) { - comp += `rounded-br${pxToBorderRadius(node.bottomRightRadius)} `; - } - } - - return comp; -}; diff --git a/src/tailwind/builderImpl/tailwindColor.ts b/src/tailwind/builderImpl/tailwindColor.ts deleted file mode 100644 index 97ed8b49..00000000 --- a/src/tailwind/builderImpl/tailwindColor.ts +++ /dev/null @@ -1,446 +0,0 @@ -import { nearestColorFrom } from "../../nearest-color/nearestColor"; -import { retrieveTopFill } from "../../common/retrieveFill"; -import { gradientAngle } from "../../common/color"; -import { nearestOpacity, nearestValue } from "./../conversionTables"; - -// retrieve the SOLID color for tailwind -export const tailwindColorFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"], - kind: string -): string => { - // kind can be text, bg, border... - // [when testing] fills can be undefined - - const fill = retrieveTopFill(fills); - if (fill?.type === "SOLID") { - // don't set text color when color is black (default) and opacity is 100% - return tailwindSolidColor(fill, kind); - } - - return ""; -}; - -export const tailwindSolidColor = (fill: SolidPaint, kind: string): string => { - // don't set text color when color is black (default) and opacity is 100% - if ( - kind === "text" && - fill.color.r === 0.0 && - fill.color.g === 0.0 && - fill.color.b === 0.0 && - fill.opacity === 1.0 - ) { - return ""; - } - - const opacity = fill.opacity ?? 1.0; - - // example: text-opacity-50 - // ignore the 100. If opacity was changed, let it be visible. - const opacityProp = - opacity !== 1.0 ? `${kind}-opacity-${nearestOpacity(opacity)} ` : ""; - - // example: text-red-500 - const colorProp = `${kind}-${getTailwindFromFigmaRGB(fill.color)} `; - - // if fill isn't visible, it shouldn't be painted. - return `${colorProp}${opacityProp}`; -}; - -/** - * https://tailwindcss.com/docs/box-shadow/ - * example: shadow - */ -export const tailwindGradientFromFills = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string => { - // [when testing] node.effects can be undefined - - const fill = retrieveTopFill(fills); - - if (fill?.type === "GRADIENT_LINEAR") { - return tailwindGradient(fill); - } - - return ""; -}; - -export const tailwindGradient = (fill: GradientPaint): string => { - const direction = gradientDirection(gradientAngle(fill)); - - if (fill.gradientStops.length === 1) { - const fromColor = getTailwindFromFigmaRGB(fill.gradientStops[0].color); - - return `${direction} from-${fromColor} `; - } else if (fill.gradientStops.length === 2) { - const fromColor = getTailwindFromFigmaRGB(fill.gradientStops[0].color); - const toColor = getTailwindFromFigmaRGB(fill.gradientStops[1].color); - - return `${direction} from-${fromColor} to-${toColor} `; - } else { - const fromColor = getTailwindFromFigmaRGB(fill.gradientStops[0].color); - - // middle (second color) - const viaColor = getTailwindFromFigmaRGB(fill.gradientStops[1].color); - - // last - const toColor = getTailwindFromFigmaRGB( - fill.gradientStops[fill.gradientStops.length - 1].color - ); - - return `${direction} from-${fromColor} via-${viaColor} to-${toColor} `; - } -}; - -const gradientDirection = (angle: number): string => { - switch (nearestValue(angle, [-180, -135, -90, -45, 0, 45, 90, 135, 180])) { - case 0: - return "bg-gradient-to-r"; - case 45: - return "bg-gradient-to-br"; - case 90: - return "bg-gradient-to-b"; - case 135: - return "bg-gradient-to-bl"; - case -45: - return "bg-gradient-to-tr"; - case -90: - return "bg-gradient-to-t"; - case -135: - return "bg-gradient-to-tl"; - default: - // 180 and -180 - return "bg-gradient-to-l"; - } -}; - -// AutoGenerated for Tailwind 2 via [convert_tailwind_colors.js] -export const tailwindColorsFull: Record = { - "#000000": "black", - "#ffffff": "white", - - "#fff1f2": "rose-50", - "#ffe4e6": "rose-100", - "#fecdd3": "rose-200", - "#fda4af": "rose-300", - "#fb7185": "rose-400", - "#f43f5e": "rose-500", - "#e11d48": "rose-600", - "#be123c": "rose-700", - "#9f1239": "rose-800", - "#881337": "rose-900", - "#fdf2f8": "pink-50", - "#fce7f3": "pink-100", - "#fbcfe8": "pink-200", - "#f9a8d4": "pink-300", - "#f472b6": "pink-400", - "#ec4899": "pink-500", - "#db2777": "pink-600", - "#be185d": "pink-700", - "#9d174d": "pink-800", - "#831843": "pink-900", - "#fdf4ff": "fuchsia-50", - "#fae8ff": "fuchsia-100", - "#f5d0fe": "fuchsia-200", - "#f0abfc": "fuchsia-300", - "#e879f9": "fuchsia-400", - "#d946ef": "fuchsia-500", - "#c026d3": "fuchsia-600", - "#a21caf": "fuchsia-700", - "#86198f": "fuchsia-800", - "#701a75": "fuchsia-900", - "#faf5ff": "purple-50", - "#f3e8ff": "purple-100", - "#e9d5ff": "purple-200", - "#d8b4fe": "purple-300", - "#c084fc": "purple-400", - "#a855f7": "purple-500", - "#9333ea": "purple-600", - "#7e22ce": "purple-700", - "#6b21a8": "purple-800", - "#581c87": "purple-900", - "#f5f3ff": "violet-50", - "#ede9fe": "violet-100", - "#ddd6fe": "violet-200", - "#c4b5fd": "violet-300", - "#a78bfa": "violet-400", - "#8b5cf6": "violet-500", - "#7c3aed": "violet-600", - "#6d28d9": "violet-700", - "#5b21b6": "violet-800", - "#4c1d95": "violet-900", - "#eef2ff": "indigo-50", - "#e0e7ff": "indigo-100", - "#c7d2fe": "indigo-200", - "#a5b4fc": "indigo-300", - "#818cf8": "indigo-400", - "#6366f1": "indigo-500", - "#4f46e5": "indigo-600", - "#4338ca": "indigo-700", - "#3730a3": "indigo-800", - "#312e81": "indigo-900", - "#eff6ff": "blue-50", - "#dbeafe": "blue-100", - "#bfdbfe": "blue-200", - "#93c5fd": "blue-300", - "#60a5fa": "blue-400", - "#3b82f6": "blue-500", - "#2563eb": "blue-600", - "#1d4ed8": "blue-700", - "#1e40af": "blue-800", - "#1e3a8a": "blue-900", - "#f0f9ff": "lightBlue-50", - "#e0f2fe": "lightBlue-100", - "#bae6fd": "lightBlue-200", - "#7dd3fc": "lightBlue-300", - "#38bdf8": "lightBlue-400", - "#0ea5e9": "lightBlue-500", - "#0284c7": "lightBlue-600", - "#0369a1": "lightBlue-700", - "#075985": "lightBlue-800", - "#0c4a6e": "lightBlue-900", - "#ecfeff": "cyan-50", - "#cffafe": "cyan-100", - "#a5f3fc": "cyan-200", - "#67e8f9": "cyan-300", - "#22d3ee": "cyan-400", - "#06b6d4": "cyan-500", - "#0891b2": "cyan-600", - "#0e7490": "cyan-700", - "#155e75": "cyan-800", - "#164e63": "cyan-900", - "#f0fdfa": "teal-50", - "#ccfbf1": "teal-100", - "#99f6e4": "teal-200", - "#5eead4": "teal-300", - "#2dd4bf": "teal-400", - "#14b8a6": "teal-500", - "#0d9488": "teal-600", - "#0f766e": "teal-700", - "#115e59": "teal-800", - "#134e4a": "teal-900", - "#ecfdf5": "emerald-50", - "#d1fae5": "emerald-100", - "#a7f3d0": "emerald-200", - "#6ee7b7": "emerald-300", - "#34d399": "emerald-400", - "#10b981": "emerald-500", - "#059669": "emerald-600", - "#047857": "emerald-700", - "#065f46": "emerald-800", - "#064e3b": "emerald-900", - "#f0fdf4": "green-50", - "#dcfce7": "green-100", - "#bbf7d0": "green-200", - "#86efac": "green-300", - "#4ade80": "green-400", - "#22c55e": "green-500", - "#16a34a": "green-600", - "#15803d": "green-700", - "#166534": "green-800", - "#14532d": "green-900", - "#f7fee7": "lime-50", - "#ecfccb": "lime-100", - "#d9f99d": "lime-200", - "#bef264": "lime-300", - "#a3e635": "lime-400", - "#84cc16": "lime-500", - "#65a30d": "lime-600", - "#4d7c0f": "lime-700", - "#3f6212": "lime-800", - "#365314": "lime-900", - "#fefce8": "yellow-50", - "#fef9c3": "yellow-100", - "#fef08a": "yellow-200", - "#fde047": "yellow-300", - "#facc15": "yellow-400", - "#eab308": "yellow-500", - "#ca8a04": "yellow-600", - "#a16207": "yellow-700", - "#854d0e": "yellow-800", - "#713f12": "yellow-900", - "#fffbeb": "amber-50", - "#fef3c7": "amber-100", - "#fde68a": "amber-200", - "#fcd34d": "amber-300", - "#fbbf24": "amber-400", - "#f59e0b": "amber-500", - "#d97706": "amber-600", - "#b45309": "amber-700", - "#92400e": "amber-800", - "#78350f": "amber-900", - "#fff7ed": "orange-50", - "#ffedd5": "orange-100", - "#fed7aa": "orange-200", - "#fdba74": "orange-300", - "#fb923c": "orange-400", - "#f97316": "orange-500", - "#ea580c": "orange-600", - "#c2410c": "orange-700", - "#9a3412": "orange-800", - "#7c2d12": "orange-900", - "#fef2f2": "red-50", - "#fee2e2": "red-100", - "#fecaca": "red-200", - "#fca5a5": "red-300", - "#f87171": "red-400", - "#ef4444": "red-500", - "#dc2626": "red-600", - "#b91c1c": "red-700", - "#991b1b": "red-800", - "#7f1d1d": "red-900", - "#fafaf9": "warmGray-50", - "#f5f5f4": "warmGray-100", - "#e7e5e4": "warmGray-200", - "#d6d3d1": "warmGray-300", - "#a8a29e": "warmGray-400", - "#78716c": "warmGray-500", - "#57534e": "warmGray-600", - "#44403c": "warmGray-700", - "#292524": "warmGray-800", - "#1c1917": "warmGray-900", - "#fafafa": "gray-50", - "#f5f5f5": "trueGray-100", - "#e5e5e5": "trueGray-200", - "#d4d4d4": "trueGray-300", - "#a3a3a3": "trueGray-400", - "#737373": "trueGray-500", - "#525252": "trueGray-600", - "#404040": "trueGray-700", - "#262626": "trueGray-800", - "#171717": "trueGray-900", - "#f4f4f5": "gray-100", - "#e4e4e7": "gray-200", - "#d4d4d8": "gray-300", - "#a1a1aa": "gray-400", - "#71717a": "gray-500", - "#52525b": "gray-600", - "#3f3f46": "gray-700", - "#27272a": "gray-800", - "#18181b": "gray-900", - "#f9fafb": "coolGray-50", - "#f3f4f6": "coolGray-100", - "#e5e7eb": "coolGray-200", - "#d1d5db": "coolGray-300", - "#9ca3af": "coolGray-400", - "#6b7280": "coolGray-500", - "#4b5563": "coolGray-600", - "#374151": "coolGray-700", - "#1f2937": "coolGray-800", - "#111827": "coolGray-900", - "#f8fafc": "blueGray-50", - "#f1f5f9": "blueGray-100", - "#e2e8f0": "blueGray-200", - "#cbd5e1": "blueGray-300", - "#94a3b8": "blueGray-400", - "#64748b": "blueGray-500", - "#475569": "blueGray-600", - "#334155": "blueGray-700", - "#1e293b": "blueGray-800", - "#0f172a": "blueGray-900", -}; - -// Basic Tailwind Colors -export const tailwindColors: Record = { - "#000000": "black", - "#ffffff": "white", - - "#fdf2f8": "pink-50", - "#fce7f3": "pink-100", - "#fbcfe8": "pink-200", - "#f9a8d4": "pink-300", - "#f472b6": "pink-400", - "#ec4899": "pink-500", - "#db2777": "pink-600", - "#be185d": "pink-700", - "#9d174d": "pink-800", - "#831843": "pink-900", - "#f5f3ff": "purple-50", - "#ede9fe": "purple-100", - "#ddd6fe": "purple-200", - "#c4b5fd": "purple-300", - "#a78bfa": "purple-400", - "#8b5cf6": "purple-500", - "#7c3aed": "purple-600", - "#6d28d9": "purple-700", - "#5b21b6": "purple-800", - "#4c1d95": "purple-900", - "#eef2ff": "indigo-50", - "#e0e7ff": "indigo-100", - "#c7d2fe": "indigo-200", - "#a5b4fc": "indigo-300", - "#818cf8": "indigo-400", - "#6366f1": "indigo-500", - "#4f46e5": "indigo-600", - "#4338ca": "indigo-700", - "#3730a3": "indigo-800", - "#312e81": "indigo-900", - "#eff6ff": "blue-50", - "#dbeafe": "blue-100", - "#bfdbfe": "blue-200", - "#93c5fd": "blue-300", - "#60a5fa": "blue-400", - "#3b82f6": "blue-500", - "#2563eb": "blue-600", - "#1d4ed8": "blue-700", - "#1e40af": "blue-800", - "#1e3a8a": "blue-900", - "#ecfdf5": "green-50", - "#d1fae5": "green-100", - "#a7f3d0": "green-200", - "#6ee7b7": "green-300", - "#34d399": "green-400", - "#10b981": "green-500", - "#059669": "green-600", - "#047857": "green-700", - "#065f46": "green-800", - "#064e3b": "green-900", - "#fffbeb": "yellow-50", - "#fef3c7": "yellow-100", - "#fde68a": "yellow-200", - "#fcd34d": "yellow-300", - "#fbbf24": "yellow-400", - "#f59e0b": "yellow-500", - "#d97706": "yellow-600", - "#b45309": "yellow-700", - "#92400e": "yellow-800", - "#78350f": "yellow-900", - "#fef2f2": "red-50", - "#fee2e2": "red-100", - "#fecaca": "red-200", - "#fca5a5": "red-300", - "#f87171": "red-400", - "#ef4444": "red-500", - "#dc2626": "red-600", - "#b91c1c": "red-700", - "#991b1b": "red-800", - "#7f1d1d": "red-900", - "#f9fafb": "gray-50", - "#f3f4f6": "gray-100", - "#e5e7eb": "gray-200", - "#d1d5db": "gray-300", - "#9ca3af": "gray-400", - "#6b7280": "gray-500", - "#4b5563": "gray-600", - "#374151": "gray-700", - "#1f2937": "gray-800", - "#111827": "gray-900", -}; - -export const tailwindNearestColor = nearestColorFrom( - Object.keys(tailwindColors) -); - -// figma uses r,g,b in [0, 1], while nearestColor uses it in [0, 255] -export const getTailwindFromFigmaRGB = (color: RGB): string => { - const colorMultiplied = { - r: color.r * 255, - g: color.g * 255, - b: color.b * 255, - }; - - return tailwindColors[tailwindNearestColor(colorMultiplied)]; -}; - -export const getTailwindColor = (color: string | RGB): string => { - return tailwindColors[tailwindNearestColor(color)]; -}; diff --git a/src/tailwind/builderImpl/tailwindPadding.ts b/src/tailwind/builderImpl/tailwindPadding.ts deleted file mode 100644 index 3ef3ec45..00000000 --- a/src/tailwind/builderImpl/tailwindPadding.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { AltFrameMixin, AltDefaultShapeMixin } from "../../altNodes/altMixins"; -import { pxToLayoutSize } from "../conversionTables"; -import { commonPadding } from "../../common/commonPadding"; - -/** - * https://tailwindcss.com/docs/margin/ - * example: px-2 py-8 - */ -export const tailwindPadding = ( - node: AltFrameMixin | AltDefaultShapeMixin -): string => { - const padding = commonPadding(node); - if (!padding) { - return ""; - } - - if ("all" in padding) { - return `p-${pxToLayoutSize(padding.all)} `; - } - - let comp = ""; - - // horizontal and vertical, as the default AutoLayout - if (padding.horizontal) { - comp += `px-${pxToLayoutSize(padding.horizontal)} `; - } - if (padding.vertical) { - comp += `py-${pxToLayoutSize(padding.vertical)} `; - } - - // if left and right exists, verify if they are the same after [pxToLayoutSize] conversion. - if (padding.left && padding.right) { - const left = pxToLayoutSize(padding.left); - const right = pxToLayoutSize(padding.right); - - if (left === right) { - comp += `px-${left} `; - } else { - comp += `pl-${left} pr-${right} `; - } - } else if (padding.left) { - comp += `pl-${pxToLayoutSize(padding.left)} `; - } else if (padding.right) { - comp += `pr-${pxToLayoutSize(padding.right)} `; - } - - // if top and bottom exists, verify if they are the same after [pxToLayoutSize] conversion. - if (padding.top && padding.bottom) { - const top = pxToLayoutSize(padding.top); - const bottom = pxToLayoutSize(padding.bottom); - - if (top === bottom) { - comp += `py-${top} `; - } else { - comp += `pt-${top} pb-${bottom} `; - } - } else if (padding.top) { - comp += `pt-${pxToLayoutSize(padding.top)} `; - } else if (padding.bottom) { - comp += `pb-${pxToLayoutSize(padding.bottom)} `; - } - - return comp; -}; diff --git a/src/tailwind/builderImpl/tailwindPosition.ts b/src/tailwind/builderImpl/tailwindPosition.ts deleted file mode 100644 index e330ad09..00000000 --- a/src/tailwind/builderImpl/tailwindPosition.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { commonPosition } from "../../common/commonPosition"; - -export const tailwindPosition = ( - node: AltSceneNode, - parentId: string = "", - hasFixedSize: boolean = false -): string => { - // don't add position to the first (highest) node in the tree - if (!node.parent || parentId === node.parent.id) { - return ""; - } - - // Group - if (node.parent.isRelative === true) { - // position is absolute, needs to be relative - return retrieveAbsolutePos(node, hasFixedSize); - } - - return ""; -}; - -const retrieveAbsolutePos = ( - node: AltSceneNode, - hasFixedSize: boolean -): string => { - // everything related to Center requires a defined width and height. Therefore, we use hasFixedSize. - switch (commonPosition(node)) { - case "": - return ""; - case "Absolute": - return "absoluteManualLayout"; - case "TopCenter": - if (hasFixedSize) { - return "absolute inset-x-0 top-0 mx-auto "; - } - return "absoluteManualLayout"; - case "CenterStart": - if (hasFixedSize) { - return "absolute inset-y-0 left-0 my-auto "; - } - return "absoluteManualLayout"; - case "Center": - if (hasFixedSize) { - return "absolute m-auto inset-0 "; - } - return "absoluteManualLayout"; - case "CenterEnd": - if (hasFixedSize) { - return "absolute inset-y-0 right-0 my-auto "; - } - return "absoluteManualLayout"; - case "BottomCenter": - if (hasFixedSize) { - return "absolute inset-x-0 bottom-0 mx-auto "; - } - return "absoluteManualLayout"; - case "TopStart": - return "absolute left-0 top-0 "; - case "TopEnd": - return "absolute right-0 top-0 "; - case "BottomStart": - return "absolute left-0 bottom-0 "; - case "BottomEnd": - return "absolute right-0 bottom-0 "; - } -}; diff --git a/src/tailwind/builderImpl/tailwindShadow.ts b/src/tailwind/builderImpl/tailwindShadow.ts deleted file mode 100644 index fcdf1895..00000000 --- a/src/tailwind/builderImpl/tailwindShadow.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AltBlendMixin } from "../../altNodes/altMixins"; - -/** - * https://tailwindcss.com/docs/box-shadow/ - * example: shadow - */ -export const tailwindShadow = (node: AltBlendMixin): string => { - // [when testing] node.effects can be undefined - if (node.effects && node.effects.length > 0) { - const dropShadow = node.effects.filter( - (d) => d.type === "DROP_SHADOW" && d.visible - ); - let boxShadow = ""; - // simple shadow from tailwind - if (dropShadow.length > 0) { - boxShadow = "shadow "; - } - - const innerShadow = - node.effects.filter((d) => d.type === "INNER_SHADOW").length > 0 - ? "shadow-inner " - : ""; - - return boxShadow + innerShadow; - - // todo customize the shadow - // TODO layer blur, shadow-outline - } - return ""; -}; diff --git a/src/tailwind/builderImpl/tailwindSize.ts b/src/tailwind/builderImpl/tailwindSize.ts deleted file mode 100644 index ff26abd3..00000000 --- a/src/tailwind/builderImpl/tailwindSize.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { AltSceneNode } from "../../altNodes/altMixins"; -import { pxToLayoutSize } from "../conversionTables"; -import { nodeWidthHeightTailwind } from "../../common/nodeWidthHeight"; -import { formatWithJSX } from "../../common/parseJSX"; - -export const tailwindSize = (node: AltSceneNode): string => { - return tailwindSizePartial(node).join(""); -}; - -export const tailwindSizePartial = (node: AltSceneNode): [string, string] => { - const size = nodeWidthHeightTailwind(node, true); - - let w = ""; - if (typeof size.width === "number") { - w += `w-${pxToLayoutSize(size.width)} `; - } else if (typeof size.width === "string") { - if ( - size.width === "full" && - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "HORIZONTAL" - ) { - w += `flex-1 `; - } else { - w += `w-${size.width} `; - } - } - - let h = ""; - // console.log("sizeResults is ", sizeResult, node); - - if (typeof size.height === "number") { - h = `h-${pxToLayoutSize(size.height)} `; - } else if (typeof size.height === "string") { - if ( - size.height === "full" && - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === "VERTICAL" - ) { - h += `flex-1 `; - } else { - h += `h-${size.height} `; - } - } - - return [w, h]; -}; - -/** - * https://www.w3schools.com/css/css_dimension.asp - */ -export const htmlSizeForTailwind = ( - node: AltSceneNode, - isJSX: boolean -): string => { - return htmlSizePartialForTailwind(node, isJSX).join(""); -}; - -export const htmlSizePartialForTailwind = ( - node: AltSceneNode, - isJSX: boolean -): [string, string] => { - return [ - formatWithJSX("width", isJSX, node.width), - formatWithJSX("height", isJSX, node.height), - ]; -}; diff --git a/src/tailwind/conversionTables.ts b/src/tailwind/conversionTables.ts deleted file mode 100644 index 998cc146..00000000 --- a/src/tailwind/conversionTables.ts +++ /dev/null @@ -1,132 +0,0 @@ -export const nearestValue = (goal: number, array: Array): number => { - return array.reduce((prev, curr) => { - return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev; - }); -}; - -/** - * convert pixel values to Tailwind attributes. - * by default, Tailwind uses rem, while Figma uses px. - * Therefore, a conversion is necessary. Rem = Pixel / 16.abs - * Then, find in the corresponding table the closest value. - */ -const pixelToTailwindValue = ( - value: number, - conversionMap: Record -) => { - return conversionMap[ - nearestValue( - value / 16, - Object.keys(conversionMap).map((d) => +d) - ) - ]; -}; - -const mapLetterSpacing: Record = { - "-0.05": "tighter", - "-0.025": "tight", - // 0: "normal", - 0.025: "wide", - 0.05: "wider", - 0.1: "widest", -}; - -const mapLineHeight: Record = { - 0.75: "3", - 1: "none", - 1.25: "tight", - 1.375: "snug", - 1.5: "normal", - 1.625: "relaxed", - 2: "loose", - 1.75: "7", - 2.25: "9", - 2.5: "10", -}; - -const mapFontSize: Record = { - 0.75: "xs", - 0.875: "sm", - 1: "base", - 1.125: "lg", - 1.25: "xl", - 1.5: "2xl", - 1.875: "3xl", - 2.25: "4xl", - 3: "5xl", - 3.75: "6xl", - 4.5: "7xl", - 6: "8xl", - 8: "9xl", -}; - -const mapBorderRadius: Record = { - // 0: "none", - 0.125: "-sm", - 0.25: "", - 0.375: "-md", - 0.5: "-lg", - 0.75: "-xl", - 1.0: "-2xl", - 1.5: "-3xl", - 10: "-full", -}; - -const mapWidthHeightSize: Record = { - // 0: "0", - 0.125: "0.5", - 0.25: "1", - 0.375: "1.5", - 0.5: "2", - 0.625: "2.5", - 0.75: "3", - 0.875: "3.5", - 1: "4", - 1.25: "5", - 1.5: "6", - 1.75: "7", - 2: "8", - 2.25: "9", - 2.5: "10", - 2.75: "11", - 3: "12", - 3.5: "14", - 4: "16", - 5: "20", - 6: "24", - 7: "28", - 8: "32", - 9: "36", - 10: "40", - 11: "44", - 12: "48", - 13: "52", - 14: "56", - 15: "60", - 16: "64", - 18: "72", - 20: "80", - 24: "96", -}; - -export const opacityValues = [ - 0, 5, 10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 95, -]; - -export const nearestOpacity = (nodeOpacity: number): number => - nearestValue(nodeOpacity * 100, opacityValues); - -export const pxToLetterSpacing = (value: number): string => - pixelToTailwindValue(value, mapLetterSpacing); - -export const pxToLineHeight = (value: number): string => - pixelToTailwindValue(value, mapLineHeight); - -export const pxToFontSize = (value: number): string => - pixelToTailwindValue(value, mapFontSize); - -export const pxToBorderRadius = (value: number): string => - pixelToTailwindValue(value, mapBorderRadius); - -export const pxToLayoutSize = (value: number): string => - pixelToTailwindValue(value, mapWidthHeightSize); diff --git a/src/tailwind/retrieveUI/retrieveTexts.ts b/src/tailwind/retrieveUI/retrieveTexts.ts deleted file mode 100644 index 9c65f7b8..00000000 --- a/src/tailwind/retrieveUI/retrieveTexts.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { AltSceneNode, AltTextNode } from "../../altNodes/altMixins"; -import { tailwindNearestColor } from "../builderImpl/tailwindColor"; -import { TailwindTextBuilder } from "../tailwindTextBuilder"; -import { rgbTo6hex } from "../../common/color"; -import { retrieveTopFill } from "../../common/retrieveFill"; -import { convertFontWeight } from "../../common/convertFontWeight"; - -export const retrieveTailwindText = ( - sceneNode: Array -): Array => { - // convert to AltNode and then flatten it. Conversion is necessary because of [tailwindText] - const selectedText = deepFlatten(sceneNode); - - const textStr: Array = []; - - selectedText.forEach((node) => { - if (node.type === "TEXT") { - const attr = new TailwindTextBuilder(node, false, false) - .blend(node) - .position(node, node.parent?.id ?? "") - .textAutoSize(node) - .fontSize(node) - .fontStyle(node) - .letterSpacing(node) - .lineHeight(node) - .textDecoration(node) - .textAlign(node) - .customColor(node.fills, "text") - .textTransform(node) - .removeTrailingSpace(); - - const splittedChars = node.characters.split("\n"); - const charsWithLineBreak = - splittedChars.length > 1 - ? node.characters.split("\n").join("
    ") - : node.characters; - - const black = { - r: 0, - g: 0, - b: 0, - }; - - let contrastBlack = 21; - - const fill = retrieveTopFill(node.fills); - - if (fill?.type === "SOLID") { - contrastBlack = calculateContrastRatio(fill.color, black); - } - - textStr.push({ - name: node.name, - attr: attr.attributes, - full: `

    ${charsWithLineBreak}

    `, - style: style(node), - contrastBlack, - }); - } - }); - - // retrieve only unique texts (attr + name) - // from https://stackoverflow.com/a/18923480/4418073 - const unique: Record = {}; - const distinct: Array = []; - textStr.forEach((x) => { - if (!unique[x.attr + x.name]) { - distinct.push(x); - unique[x.attr + x.name] = true; - } - }); - - return distinct; -}; - -type namedText = { - name: string; - attr: string; - full: string; - style: string; - contrastBlack: number; -}; - -const style = (node: AltTextNode): string => { - let comp = ""; - - if (node.fontName !== figma.mixed) { - const lowercaseStyle = node.fontName.style.toLowerCase(); - - if (lowercaseStyle.match("italic")) { - comp += "font-style: italic; "; - } - - const value = node.fontName.style - .replace("italic", "") - .replace(" ", "") - .toLowerCase(); - - const weight = convertFontWeight(value); - if (weight) { - comp += `font-weight: ${weight}; `; - } - } - - if (node.fontSize !== figma.mixed) { - comp += `font-size: ${Math.min(node.fontSize, 24)}; `; - } - - const color = convertColor(node.fills); - if (color) { - comp += `color: ${color}; `; - } - - return comp; -}; - -function deepFlatten(arr: Array): Array { - let result: Array = []; - - arr.forEach((d) => { - if ("children" in d) { - result = result.concat(deepFlatten([...d.children])); - } else if (d.type === "TEXT") { - result.push(d); - } - }); - - return result; -} - -const convertColor = ( - fills: ReadonlyArray | PluginAPI["mixed"] -): string | undefined => { - // kind can be text, bg, border... - // [when testing] fills can be undefined - - const fill = retrieveTopFill(fills); - - if (fill?.type === "SOLID") { - return tailwindNearestColor(rgbTo6hex(fill.color)); - } - - return undefined; -}; - -// from https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o -function calculateContrastRatio(color1: RGB, color2: RGB) { - const color1luminance = luminance(color1); - const color2luminance = luminance(color2); - - const contrast = - color1luminance > color2luminance - ? (color2luminance + 0.05) / (color1luminance + 0.05) - : (color1luminance + 0.05) / (color2luminance + 0.05); - - return 1 / contrast; -} - -function luminance(color: RGB) { - const a = [color.r * 255, color.g * 255, color.b * 255].map((v) => { - v /= 255; - return v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055)**2.4; - }); - return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722; -} diff --git a/src/tailwind/tailwindDefaultBuilder.ts b/src/tailwind/tailwindDefaultBuilder.ts deleted file mode 100644 index 27d1c2da..00000000 --- a/src/tailwind/tailwindDefaultBuilder.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { - AltSceneNode, - AltGeometryMixin, - AltBlendMixin, - AltFrameMixin, - AltDefaultShapeMixin, -} from "../altNodes/altMixins"; -import { formatWithJSX } from "../common/parseJSX"; -import { parentCoordinates } from "../common/parentCoordinates"; -import { tailwindShadow } from "./builderImpl/tailwindShadow"; -import { - tailwindVisibility, - tailwindRotation, - tailwindOpacity, -} from "./builderImpl/tailwindBlend"; -import { - tailwindBorderWidth, - tailwindBorderRadius, -} from "./builderImpl/tailwindBorder"; -import { tailwindPosition } from "./builderImpl/tailwindPosition"; -import { - tailwindColorFromFills, - tailwindGradientFromFills, -} from "./builderImpl/tailwindColor"; -import { - htmlSizeForTailwind, - htmlSizePartialForTailwind, - tailwindSizePartial, -} from "./builderImpl/tailwindSize"; -import { tailwindPadding } from "./builderImpl/tailwindPadding"; - -export class TailwindDefaultBuilder { - attributes: string = ""; - style: string; - styleSeparator: string = ""; - isJSX: boolean; - visible: boolean; - name: string = ""; - hasFixedSize = false; - - constructor(node: AltSceneNode, showLayerName: boolean, optIsJSX: boolean) { - this.isJSX = optIsJSX; - this.styleSeparator = this.isJSX ? "," : ";"; - this.style = ""; - this.visible = node.visible; - - if (showLayerName) { - this.name = `${node.name.replace(" ", "") } `; - } - } - - blend(node: AltSceneNode): this { - this.attributes += tailwindVisibility(node); - this.attributes += tailwindRotation(node); - this.attributes += tailwindOpacity(node); - - return this; - } - - border(node: AltGeometryMixin & AltSceneNode): this { - this.attributes += tailwindBorderWidth(node); - this.attributes += tailwindBorderRadius(node); - this.customColor(node.strokes, "border"); - - return this; - } - - position( - node: AltSceneNode, - parentId: string, - isRelative: boolean = false - ): this { - const position = tailwindPosition(node, parentId, this.hasFixedSize); - - if (position === "absoluteManualLayout" && node.parent) { - // tailwind can't deal with absolute layouts. - - const [parentX, parentY] = parentCoordinates(node.parent); - - const left = node.x - parentX; - const top = node.y - parentY; - - this.style += formatWithJSX("left", this.isJSX, left); - this.style += formatWithJSX("top", this.isJSX, top); - - if (!isRelative) { - this.attributes += "absolute "; - } - } else { - this.attributes += position; - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-color/ - * example: text-blue-500 - * example: text-opacity-25 - * example: bg-blue-500 - */ - customColor( - paint: ReadonlyArray | PluginAPI["mixed"], - kind: string - ): this { - // visible is true or undefinied (tests) - if (this.visible) { - let gradient = ""; - if (kind === "bg") { - gradient = tailwindGradientFromFills(paint); - } - if (gradient) { - this.attributes += gradient; - } else { - this.attributes += tailwindColorFromFills(paint, kind); - } - } - return this; - } - - /** - * https://tailwindcss.com/docs/box-shadow/ - * example: shadow - */ - shadow(node: AltBlendMixin): this { - this.attributes += tailwindShadow(node); - return this; - } - - // must be called before Position, because of the hasFixedSize attribute. - widthHeight(node: AltSceneNode): this { - // if current element is relative (therefore, children are absolute) - // or current element is one of the absoltue children and has a width or height > w/h-64 - - if ("isRelative" in node && node.isRelative === true) { - this.style += htmlSizeForTailwind(node, this.isJSX); - } else if ( - node.parent?.isRelative === true || - node.width > 384 || - node.height > 384 - ) { - // to avoid mixing html and tailwind sizing too much, only use html sizing when absolutely necessary. - // therefore, if only one attribute is larger than 256, only use the html size in there. - const [tailwindWidth, tailwindHeight] = tailwindSizePartial(node); - const [htmlWidth, htmlHeight] = htmlSizePartialForTailwind( - node, - this.isJSX - ); - - // when textAutoResize is NONE or WIDTH_AND_HEIGHT, it has a defined width. - if (node.type !== "TEXT" || node.textAutoResize !== "WIDTH_AND_HEIGHT") { - if (node.width > 384) { - this.style += htmlWidth; - } else { - this.attributes += tailwindWidth; - } - - this.hasFixedSize = htmlWidth !== ""; - } - - // when textAutoResize is NONE has a defined height. - if (node.type !== "TEXT" || node.textAutoResize === "NONE") { - if (node.width > 384) { - this.style += htmlHeight; - } else { - this.attributes += tailwindHeight; - } - - this.hasFixedSize = htmlHeight !== ""; - } - } else { - const partial = tailwindSizePartial(node); - - // Width - if (node.type !== "TEXT" || node.textAutoResize !== "WIDTH_AND_HEIGHT") { - this.attributes += partial[0]; - } - - // Height - if (node.type !== "TEXT" || node.textAutoResize === "NONE") { - this.attributes += partial[1]; - } - - this.hasFixedSize = partial[0] !== "" && partial[1] !== ""; - } - return this; - } - - autoLayoutPadding(node: AltFrameMixin | AltDefaultShapeMixin): this { - this.attributes += tailwindPadding(node); - return this; - } - - removeTrailingSpace(): this { - if (this.attributes.length > 0 && this.attributes.endsWith(" ")) { - this.attributes = this.attributes.slice(0, -1); - } - - if (this.style.length > 0 && this.style.endsWith(" ")) { - this.style = this.style.slice(0, -1); - } - return this; - } - - build(additionalAttr: string = ""): string { - this.attributes = this.name + additionalAttr + this.attributes; - this.removeTrailingSpace(); - - if (this.style) { - if (this.isJSX) { - this.style = ` style={{${this.style}}}`; - } else { - this.style = ` style="${this.style}"`; - } - } - if (!this.attributes && !this.style) { - return ""; - } - const classOrClassName = this.isJSX ? "className" : "class"; - return ` ${classOrClassName}="${this.attributes}"${this.style}`; - } - - reset(): void { - this.attributes = ""; - } -} diff --git a/src/tailwind/tailwindMain.ts b/src/tailwind/tailwindMain.ts deleted file mode 100644 index cbe487d7..00000000 --- a/src/tailwind/tailwindMain.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { - AltFrameNode, - AltSceneNode, - AltRectangleNode, - AltEllipseNode, - AltTextNode, - AltGroupNode, -} from "../altNodes/altMixins"; -import { retrieveTopFill } from "../common/retrieveFill"; -import { indentString } from "./../common/indentString"; -import { pxToLayoutSize } from "./conversionTables"; -import { tailwindVector } from "./vector"; -import { TailwindTextBuilder } from "./tailwindTextBuilder"; -import { TailwindDefaultBuilder } from "./tailwindDefaultBuilder"; - -let parentId = ""; -let showLayerName = false; - -const selfClosingTags = ["img"]; - -export const tailwindMain = ( - sceneNode: Array, - parentIdSrc: string = "", - isJsx: boolean = false, - layerName: boolean = false -): string => { - parentId = parentIdSrc; - showLayerName = layerName; - - let result = tailwindWidgetGenerator(sceneNode, isJsx); - - // remove the initial \n that is made in Container. - if (result.length > 0 && result.startsWith("\n")) { - result = result.slice(1, result.length); - } - - return result; -}; - -// todo lint idea: replace BorderRadius.only(topleft: 8, topRight: 8) with BorderRadius.horizontal(8) -const tailwindWidgetGenerator = ( - sceneNode: ReadonlyArray, - isJsx: boolean -): string => { - let comp = ""; - - // filter non visible nodes. This is necessary at this step because conversion already happened. - const visibleSceneNode = sceneNode.filter((d) => d.visible); - - visibleSceneNode.forEach((node) => { - if (node.type === "RECTANGLE" || node.type === "ELLIPSE") { - comp += tailwindContainer( - node, - "", - "", - { isRelative: false, isInput: false }, - isJsx - ); - } else if (node.type === "GROUP") { - comp += tailwindGroup(node, isJsx); - } else if (node.type === "FRAME") { - comp += tailwindFrame(node, isJsx); - } else if (node.type === "TEXT") { - comp += tailwindText(node, false, isJsx); - } - - // todo support Line - }); - - return comp; -}; - -const tailwindGroup = (node: AltGroupNode, isJsx: boolean = false): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - // also ignore if there are no children inside, which makes no sense - if (node.width <= 0 || node.height <= 0 || node.children.length === 0) { - return ""; - } - - const vectorIfExists = tailwindVector(node, showLayerName, parentId, isJsx); - if (vectorIfExists) return vectorIfExists; - - // this needs to be called after CustomNode because widthHeight depends on it - const builder = new TailwindDefaultBuilder(node, showLayerName, isJsx) - .blend(node) - .widthHeight(node) - .position(node, parentId); - - if (builder.attributes || builder.style) { - const attr = builder.build("relative "); - - const generator = tailwindWidgetGenerator(node.children, isJsx); - - return `\n${indentString(generator)}\n`; - } - - return tailwindWidgetGenerator(node.children, isJsx); -}; - -const tailwindText = ( - node: AltTextNode, - isInput: boolean, - isJsx: boolean -): string | [string, string] => { - // follow the website order, to make it easier - - const builderResult = new TailwindTextBuilder(node, showLayerName, isJsx) - .blend(node) - .textAutoSize(node) - .position(node, parentId) - // todo fontFamily (via node.fontName !== figma.mixed ? `fontFamily: ${node.fontName.family}`) - // todo font smoothing - .fontSize(node) - .fontStyle(node) - .letterSpacing(node) - .lineHeight(node) - .textDecoration(node) - // todo text lists (
  • ) - .textAlign(node) - .customColor(node.fills, "text") - .textTransform(node); - - const splittedChars = node.characters.split("\n"); - const charsWithLineBreak = - splittedChars.length > 1 - ? node.characters.split("\n").join("
    ") - : node.characters; - - if (isInput) { - return [builderResult.attributes, charsWithLineBreak]; - } else { - return `\n${charsWithLineBreak}

    `; - } -}; - -const tailwindFrame = (node: AltFrameNode, isJsx: boolean): string => { - // const vectorIfExists = tailwindVector(node, isJsx); - // if (vectorIfExists) return vectorIfExists; - - if ( - node.children.length === 1 && - node.children[0].type === "TEXT" && - node?.name?.toLowerCase().match("input") - ) { - const [attr, char] = tailwindText(node.children[0], true, isJsx); - return tailwindContainer( - node, - ` placeholder="${char}"`, - attr, - { isRelative: false, isInput: true }, - isJsx - ); - } - - const childrenStr = tailwindWidgetGenerator(node.children, isJsx); - - if (node.layoutMode !== "NONE") { - const rowColumn = rowColumnProps(node); - return tailwindContainer( - node, - childrenStr, - rowColumn, - { isRelative: false, isInput: false }, - isJsx - ); - } else { - // node.layoutMode === "NONE" && node.children.length > 1 - // children needs to be absolute - return tailwindContainer( - node, - childrenStr, - "relative ", - { isRelative: true, isInput: false }, - isJsx - ); - } -}; - -// properties named propSomething always take care of "," -// sometimes a property might not exist, so it doesn't add "," -export const tailwindContainer = ( - node: AltFrameNode | AltRectangleNode | AltEllipseNode, - children: string, - additionalAttr: string, - attr: { - isRelative: boolean; - isInput: boolean; - }, - isJsx: boolean -): string => { - // ignore the view when size is zero or less - // while technically it shouldn't get less than 0, due to rounding errors, - // it can get to values like: -0.000004196293048153166 - if (node.width <= 0 || node.height <= 0) { - return children; - } - - const builder = new TailwindDefaultBuilder(node, showLayerName, isJsx) - .blend(node) - .widthHeight(node) - .autoLayoutPadding(node) - .position(node, parentId, attr.isRelative) - .customColor(node.fills, "bg") - // TODO image and gradient support (tailwind does not support gradients) - .shadow(node) - .border(node); - - if (attr.isInput) { - // children before the > is not a typo. - return `\n`; - } - - if (builder.attributes || additionalAttr) { - const build = builder.build(additionalAttr); - - // image fill and no children -- let's emit an - let tag = "div"; - let src = ""; - if (retrieveTopFill(node.fills)?.type === "IMAGE") { - tag = "img"; - src = ` src="https://via.placeholder.com/${node.width}x${node.height}"`; - } - - if (children) { - return `\n<${tag}${build}${src}>${indentString(children)}\n`; - } else if (selfClosingTags.includes(tag) || isJsx) { - return `\n<${tag}${build}${src} />`; - } else { - return `\n<${tag}${build}${src}>`; - } - } - - return children; -}; - -export const rowColumnProps = (node: AltFrameNode): string => { - // ROW or COLUMN - - // ignore current node when it has only one child and it has the same size - if ( - node.children.length === 1 && - node.children[0].width === node.width && - node.children[0].height === node.height - ) { - return ""; - } - - // [optimization] - // flex, by default, has flex-row. Therefore, it can be omitted. - const rowOrColumn = node.layoutMode === "HORIZONTAL" ? "" : "flex-col "; - - // https://tailwindcss.com/docs/space/ - // space between items - const spacing = node.itemSpacing > 0 ? pxToLayoutSize(node.itemSpacing) : 0; - const spaceDirection = node.layoutMode === "HORIZONTAL" ? "x" : "y"; - - // space is visually ignored when there is only one child or spacing is zero - const space = - node.children.length > 1 && spacing > 0 - ? `space-${spaceDirection}-${spacing} ` - : ""; - - // special case when there is only one children; need to position correctly in Flex. - // let justify = "justify-center"; - // if (node.children.length === 1) { - // const nodeCenteredPosX = node.children[0].x + node.children[0].width / 2; - // const parentCenteredPosX = node.width / 2; - - // const marginX = nodeCenteredPosX - parentCenteredPosX; - - // // allow a small threshold - // if (marginX < -4) { - // justify = "justify-start"; - // } else if (marginX > 4) { - // justify = "justify-end"; - // } - // } - let primaryAlign: string; - - switch (node.primaryAxisAlignItems) { - case "MIN": - primaryAlign = "justify-start "; - break; - case "CENTER": - primaryAlign = "justify-center "; - break; - case "MAX": - primaryAlign = "justify-end "; - break; - case "SPACE_BETWEEN": - primaryAlign = "justify-between "; - break; - } - - // [optimization] - // when all children are STRETCH and layout is Vertical, align won't matter. Otherwise, center it. - let counterAlign: string = ""; - switch (node.counterAxisAlignItems) { - case "MIN": - counterAlign = "items-start "; - break; - case "CENTER": - counterAlign = "items-center "; - break; - case "MAX": - counterAlign = "items-end "; - break; - } - - // const layoutAlign = - // node.layoutMode === "VERTICAL" && - // node.children.every((d) => d.layoutAlign === "STRETCH") - // ? "" - // : `items-center ${justify} `; - - // if parent is a Frame with AutoLayout set to Vertical, the current node should expand - const flex = - node.parent && - "layoutMode" in node.parent && - node.parent.layoutMode === node.layoutMode - ? "flex " - : "inline-flex "; - - return `${flex}${rowOrColumn}${space}${counterAlign}${primaryAlign}`; -}; diff --git a/src/tailwind/tailwindTextBuilder.ts b/src/tailwind/tailwindTextBuilder.ts deleted file mode 100644 index 9757f585..00000000 --- a/src/tailwind/tailwindTextBuilder.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { AltTextNode } from "../altNodes/altMixins"; -import { - commonLetterSpacing, - commonLineHeight, -} from "../common/commonTextHeightSpacing"; -import { - pxToLetterSpacing, - pxToLineHeight, - pxToFontSize, -} from "./conversionTables"; -import { TailwindDefaultBuilder } from "./tailwindDefaultBuilder"; - -export class TailwindTextBuilder extends TailwindDefaultBuilder { - // constructor(node: AltTextNode, showLayerName: boolean, optIsJSX: boolean) { - // super(node, showLayerName, optIsJSX); - // } - - // must be called before Position method - textAutoSize(node: AltTextNode): this { - if (node.textAutoResize === "NONE") { - // going to be used for position - this.hasFixedSize = true; - } - - this.widthHeight(node); - - return this; - } - - // todo fontFamily - // fontFamily(node: AltTextNode): this { - // return this; - // } - - /** - * https://tailwindcss.com/docs/font-size/ - * example: text-md - */ - fontSize(node: AltTextNode): this { - // example: text-md - if (node.fontSize !== figma.mixed) { - const value = pxToFontSize(node.fontSize); - this.attributes += `text-${value} `; - } - - return this; - } - - /** - * https://tailwindcss.com/docs/font-style/ - * example: font-extrabold - * example: italic - */ - fontStyle(node: AltTextNode): this { - if (node.fontName !== figma.mixed) { - const lowercaseStyle = node.fontName.style.toLowerCase(); - - if (lowercaseStyle.match("italic")) { - this.attributes += "italic "; - } - - if (lowercaseStyle.match("regular")) { - // ignore the font-style when regular (default) - return this; - } - - const value = node.fontName.style - .replace("italic", "") - .replace(" ", "") - .toLowerCase(); - - this.attributes += `font-${value} `; - } - return this; - } - - /** - * https://tailwindcss.com/docs/letter-spacing/ - * example: tracking-widest - */ - letterSpacing(node: AltTextNode): this { - const letterSpacing = commonLetterSpacing(node); - if (letterSpacing > 0) { - const value = pxToLetterSpacing(letterSpacing); - this.attributes += `tracking-${value} `; - } - - return this; - } - - /** - * https://tailwindcss.com/docs/line-height/ - * example: leading-3 - */ - lineHeight(node: AltTextNode): this { - const lineHeight = commonLineHeight(node); - if (lineHeight > 0) { - const value = pxToLineHeight(lineHeight); - this.attributes += `leading-${value} `; - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-align/ - * example: text-justify - */ - textAlign(node: AltTextNode): this { - // if alignHorizontal is LEFT, don't do anything because that is native - - // only undefined in testing - if (node.textAlignHorizontal && node.textAlignHorizontal !== "LEFT") { - // todo when node.textAutoResize === "WIDTH_AND_HEIGHT" and there is no \n in the text, this can be ignored. - switch (node.textAlignHorizontal) { - case "CENTER": - this.attributes += `text-center `; - break; - case "RIGHT": - this.attributes += `text-right `; - break; - case "JUSTIFIED": - this.attributes += `text-justify `; - break; - default: - break; - } - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-transform/ - * example: uppercase - */ - textTransform(node: AltTextNode): this { - if (node.textCase === "LOWER") { - this.attributes += "lowercase "; - } else if (node.textCase === "TITLE") { - this.attributes += "capitalize "; - } else if (node.textCase === "UPPER") { - this.attributes += "uppercase "; - } else if (node.textCase === "ORIGINAL") { - // default, ignore - } - - return this; - } - - /** - * https://tailwindcss.com/docs/text-decoration/ - * example: underline - */ - textDecoration(node: AltTextNode): this { - if (node.textDecoration === "UNDERLINE") { - this.attributes += "underline "; - } else if (node.textDecoration === "STRIKETHROUGH") { - this.attributes += "line-through "; - } - - return this; - } - - reset(): void { - this.attributes = ""; - } -} diff --git a/src/tailwind/vector.ts b/src/tailwind/vector.ts deleted file mode 100644 index fbf82a8e..00000000 --- a/src/tailwind/vector.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { AltFrameNode, AltGroupNode } from "../altNodes/altMixins"; -// import { TailwindDefaultBuilder } from "./tailwindDefaultBuilder"; - -export const tailwindVector = ( - node: AltFrameNode | AltGroupNode, - showLayerName: boolean, - parentId: string, - isJsx: boolean -): string => { - // TODO VECTOR - return ""; -}; - -// import { -// AltFrameMixin, -// AltFrameNode, -// AltGroupNode, -// } from "./../common/AltMixins"; -// import { rgbTo6hex } from "./colors"; - -// // todo improve this, positioning is wrong -// // todo support for ungroup vectors. This was reused because 80% of people are going -// export const tailwindVector = ( -// group: AltFrameNode | AltGroupNode, -// isJsx: Boolean -// ) => { -// // to use Vectors in groups (like icons) - -// // if every children is a VECTOR, no children have a child -// if ( -// group.children.length === 0 || -// !group.children.every((d) => d.type === "VECTOR") -// ) { -// return ""; -// } - -// const node = group.children[0] as VectorNode; - -// const strokeOpacity = vectorOpacity(node.strokes); -// const strokeOpacityAttr = -// strokeOpacity < 1 -// ? `${isJsx ? "strokeOpacity" : "stroke-opacity"}=${ -// isJsx ? `{${strokeOpacity}}` : `"${strokeOpacity}"` -// }\n` -// : ""; - -// const strokeWidthAttr = `${isJsx ? "strokeWidth" : "stroke-width"}=${ -// isJsx ? `{${node.strokeWeight}}` : `"${node.strokeWeight}"` -// }\n`; - -// const strokeLineCapAttr = -// node.strokeCap === "ROUND" -// ? `${isJsx ? "strokeLinecap" : "stroke-linecap"}="round"\n` -// : ""; - -// const strokeLineJoinAttr = -// node.strokeJoin !== "MITER" -// ? `${ -// isJsx ? "strokeLinejoin" : "stroke-linejoin" -// }="${node.strokeJoin.toString().toLowerCase()}"\n` -// : ""; - -// const strokeAttr = -// node.strokes.length > 0 ? `stroke="#${vectorColor(node.strokes)}"\n` : ""; - -// const sizeAttr = isJsx -// ? `height={${node.height}} width={${node.width}}` -// : `height="${node.height}" width="${node.width}"`; - -// // reduce everything into a single string -// const paths = group.children.reduce( -// (acc, n) => -// acc + -// (n as VectorNode).vectorPaths.reduce((acc, d) => { -// const fillRuleAttr = -// d.windingRule !== "NONE" -// ? `${isJsx ? "fillRule" : "fill-rule"}="${d.windingRule}"\n` -// : ""; - -// return ( -// acc + -// `\n` -// ); -// }, ""), -// "" -// ); - -// return ` -// ${paths} -// `; - -// // return `
    `; -// // return ` -// // -// // `; -// }; - -// const vectorColor = ( -// fills: ReadonlyArray | PluginAPI["mixed"] -// ): string => { -// // kind can be text, bg, border... -// if (fills !== figma.mixed && fills.length > 0) { -// let fill = fills[0]; -// if (fill.type === "SOLID") { -// const hex = rgbTo6hex(fill.color); -// return fill.visible ? `${hex}` : ""; -// } -// } - -// return ""; -// }; - -// const vectorOpacity = ( -// fills: ReadonlyArray | PluginAPI["mixed"] -// ): number => { -// // kind can be text, bg, border... -// if (fills !== figma.mixed && fills.length > 0) { -// let fill = fills[0]; -// if (fill.opacity !== undefined) { -// return fill.opacity; -// } -// } - -// return 1; -// }; diff --git a/src/template.html b/src/template.html deleted file mode 100644 index c448a38d..00000000 --- a/src/template.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/ui/FlutterItemColor.svelte b/src/ui/FlutterItemColor.svelte deleted file mode 100644 index 5c3720c9..00000000 --- a/src/ui/FlutterItemColor.svelte +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/src/ui/GenericGradientSection.svelte b/src/ui/GenericGradientSection.svelte deleted file mode 100644 index ca2929e8..00000000 --- a/src/ui/GenericGradientSection.svelte +++ /dev/null @@ -1,55 +0,0 @@ - - -{#if gradientsObservable.length > 0} -
    -
    -
    -
    -

    Gradients

    -
    -
    - - {#each gradientsObservable as item} -
    -
    - {/each} -
    -
    -{/if} diff --git a/src/ui/GenericSolidColorSection.svelte b/src/ui/GenericSolidColorSection.svelte deleted file mode 100644 index 1e18589d..00000000 --- a/src/ui/GenericSolidColorSection.svelte +++ /dev/null @@ -1,66 +0,0 @@ - - -{#if colorsObservable.length > 0} -
    -
    -
    -
    -

    Colors

    -
    -
    - - {#each colorsObservable as item} - {#if type === 'html' || type === 'swiftui'} -
    - -
    - {/if} - {#if type === 'tailwind'} -
    - -
    - {/if} - {#if type === 'flutter'} -
    - -
    - {/if} - {/each} -
    -
    -{/if} diff --git a/src/ui/Main.svelte b/src/ui/Main.svelte deleted file mode 100644 index a34fa544..00000000 --- a/src/ui/Main.svelte +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - Tailwind 2 - Flutter - SwiftUI - HTML - About - - - - - - - - - - - - - - - - - - - - - - - - -{#if visible} -
    -
    -
    -

    Copied!

    -
    -
    -
    -{/if} diff --git a/src/ui/ScreenAbout.svelte b/src/ui/ScreenAbout.svelte deleted file mode 100644 index ed7afd01..00000000 --- a/src/ui/ScreenAbout.svelte +++ /dev/null @@ -1,205 +0,0 @@ -
    -

    Responsive Layout

    -
    -
    -
    -
    -

    BAD

    -
    -
    -

    BAD

    -
    -
    -

    BAD

    -
    -
    -
    - -
    -
    -
    -

    GOOD

    -
    -
    -

    GOOD

    -
    -
    -
    -

    GOOD

    -
    -
    -
    -
    - -

    - The plugin works - perfectly - when layers are vertically or horizontally aligned, even if AutoLayout is - off. When the layout is more complex, you can manually group layers to make - them aligned. -

    - -
    - -
    -

    Info

    -
    - -

    - I have tried to think what would make sense for most people. Still, bugs can - and will happen; ideas will appear. Your mission, should you choose to - accept, is to share them with me. -

    - -
    -
    -

    Figma to Code

    -
    -

    - Designed and developed by Bernardo Ferrari. -

    - diff --git a/src/ui/ScreenFlutter.svelte b/src/ui/ScreenFlutter.svelte deleted file mode 100644 index 4b9ddf48..00000000 --- a/src/ui/ScreenFlutter.svelte +++ /dev/null @@ -1,224 +0,0 @@ - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - -

    - Flutter is Google’s UI toolkit for building applications for - - mobile, web, and desktop from a single codebase. - - You can test your creations by pasting them here: -

    -
    - - - -
    - - {#if emptySelection} -
    -

    Nothing is selected

    -

    Try selecting a layer, any layer

    -
    - {:else} -
    -
    -

    - Code -

    - -
    - - - -
    - -
    -
    -
    - - - -
    - - - {/if} - -
    diff --git a/src/ui/ScreenHtml.svelte b/src/ui/ScreenHtml.svelte deleted file mode 100644 index b6092343..00000000 --- a/src/ui/ScreenHtml.svelte +++ /dev/null @@ -1,160 +0,0 @@ - - -
    -
    - -
    - - - - - - - -

    - HTML is the most basic building block of the Web. It defines the - - meaning and structure - - of web content. You can test your creations by pasting them here: -

    -
    - -
    -
    - -
    - - {#if emptySelection} -
    -

    Nothing is selected

    -

    Try selecting a layer, any layer

    -
    - {:else} -
    -
    -

    - Code -

    - -
    - - - -
    - - - - - -
    -
    - -
    - - - -
    - - - {/if} -
    diff --git a/src/ui/ScreenSwiftUI.svelte b/src/ui/ScreenSwiftUI.svelte deleted file mode 100644 index d2a429e1..00000000 --- a/src/ui/ScreenSwiftUI.svelte +++ /dev/null @@ -1,215 +0,0 @@ - - -
    -
    - -
    - - - - - -

    - SwiftUI an innovative, exceptionally simple way to build user interfaces - - across all Apple platforms with the power of Swift. - - You can test your creations in Xcode or - - Swift Playgrounds - - (iPad and Mac). -

    -
    -

    - Tip: - - how to indent the code. - -

    - -
    - -
    - -
    - - {#if emptySelection} -
    -

    Nothing is selected

    -

    Try selecting a layer, any layer

    -
    - {:else} -
    -
    -

    - Code -

    - -
    - - - -
    - -
    - - - -
    - - - {/if} -
    diff --git a/src/ui/ScreenTailwind.svelte b/src/ui/ScreenTailwind.svelte deleted file mode 100644 index 375b59ab..00000000 --- a/src/ui/ScreenTailwind.svelte +++ /dev/null @@ -1,295 +0,0 @@ - - -
    -
    -
    - - Tailwind CSS - - - - - - - - - -

    - Tailwind is a utility-addasadads CSS framework for - - rapidly building custom designs and responsive pages. - - You can test your creations by pasting them here: -

    -
    - -
    -
    - -
    - {#if emptySelection} -
    -

    Nothing is selected

    -

    Try selecting a layer, any layer

    -
    - {:else} -
    -
    -

    - Code -

    - -
    - - - -
    - - - -
    -
    -
    - - {#if textObservable.length > 0} -
    -
    -
    -
    -

    Texts

    -
    -
    - {#each textObservable as item} -
    - -
    - {/each} -
    -
    - {/if} -
    - - - -
    - - - {/if} -
    diff --git a/src/ui/Switch.svelte b/src/ui/Switch.svelte deleted file mode 100644 index 1a606088..00000000 --- a/src/ui/Switch.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - - -