From 0d1e3112d8354da36ee51455ef8267f7d81cacd0 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 08:40:17 +0200 Subject: [PATCH 001/430] Initial commit --- .github/workflows/release.yml | 28 + .gitignore | 6 + .prettierignore | 1 + .prettierrc | 1 + .storybook/local-preset.js | 15 + .storybook/main.ts | 18 + .storybook/preview-head.html | 3 + .storybook/preview.ts | 18 + LICENSE | 21 + README.md | 128 + manager.js | 1 + preview.js | 1 + scripts/eject-typescript.mjs | 55 + scripts/prepublish-checks.mjs | 56 + scripts/welcome.js | 180 + src/Panel.tsx | 36 + src/Tab.tsx | 15 + src/Tool.tsx | 38 + src/components/List.tsx | 95 + src/components/PanelContent.tsx | 76 + src/components/TabContent.tsx | 47 + src/constants.ts | 11 + src/index.ts | 2 + src/manager.ts | 40 + src/preview.ts | 28 + src/stories/Button.stories.ts | 53 + src/stories/Button.tsx | 48 + src/stories/Header.stories.ts | 24 + src/stories/Header.tsx | 56 + src/stories/Introduction.mdx | 211 + src/stories/Page.stories.ts | 29 + src/stories/Page.tsx | 73 + src/stories/assets/code-brackets.svg | 1 + src/stories/assets/colors.svg | 1 + src/stories/assets/comments.svg | 1 + src/stories/assets/direction.svg | 1 + src/stories/assets/flow.svg | 1 + src/stories/assets/plugin.svg | 1 + src/stories/assets/repo.svg | 1 + src/stories/assets/stackalt.svg | 1 + src/stories/button.css | 30 + src/stories/header.css | 32 + src/stories/page.css | 69 + src/withGlobals.ts | 61 + src/withRoundTrip.ts | 51 + tsconfig.json | 18 + tsup.config.ts | 18 + vite.config.ts | 7 + yarn.lock | 8024 ++++++++++++++++++++++++++ 49 files changed, 9732 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .storybook/local-preset.js create mode 100644 .storybook/main.ts create mode 100644 .storybook/preview-head.html create mode 100644 .storybook/preview.ts create mode 100644 LICENSE create mode 100644 README.md create mode 100644 manager.js create mode 100644 preview.js create mode 100644 scripts/eject-typescript.mjs create mode 100644 scripts/prepublish-checks.mjs create mode 100644 scripts/welcome.js create mode 100644 src/Panel.tsx create mode 100644 src/Tab.tsx create mode 100644 src/Tool.tsx create mode 100644 src/components/List.tsx create mode 100644 src/components/PanelContent.tsx create mode 100644 src/components/TabContent.tsx create mode 100644 src/constants.ts create mode 100644 src/index.ts create mode 100644 src/manager.ts create mode 100644 src/preview.ts create mode 100644 src/stories/Button.stories.ts create mode 100644 src/stories/Button.tsx create mode 100644 src/stories/Header.stories.ts create mode 100644 src/stories/Header.tsx create mode 100644 src/stories/Introduction.mdx create mode 100644 src/stories/Page.stories.ts create mode 100644 src/stories/Page.tsx create mode 100644 src/stories/assets/code-brackets.svg create mode 100644 src/stories/assets/colors.svg create mode 100644 src/stories/assets/comments.svg create mode 100644 src/stories/assets/direction.svg create mode 100644 src/stories/assets/flow.svg create mode 100644 src/stories/assets/plugin.svg create mode 100644 src/stories/assets/repo.svg create mode 100644 src/stories/assets/stackalt.svg create mode 100644 src/stories/button.css create mode 100644 src/stories/header.css create mode 100644 src/stories/page.css create mode 100644 src/withGlobals.ts create mode 100644 src/withRoundTrip.ts create mode 100644 tsconfig.json create mode 100644 tsup.config.ts create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000000..b36a543f4678 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,28 @@ +name: Release + +on: [push] + +jobs: + release: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')" + steps: + - uses: actions/checkout@v2 + + - name: Prepare repository + run: git fetch --unshallow --tags + + - name: Use Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + + - name: Install dependencies + run: yarn install --ignore-scripts + + - name: Create Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + yarn release diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..a951d51dcdd5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +dist/ +node_modules/ +storybook-static/ +build-storybook.log +.DS_Store +.env \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000000..1521c8b7652b --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +dist diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/.storybook/local-preset.js b/.storybook/local-preset.js new file mode 100644 index 000000000000..8c62fbf11a13 --- /dev/null +++ b/.storybook/local-preset.js @@ -0,0 +1,15 @@ +/** + * to load the built addon in this test Storybook + */ +function previewAnnotations(entry = []) { + return [...entry, require.resolve("../dist/preview.mjs")]; +} + +function managerEntries(entry = []) { + return [...entry, require.resolve("../dist/manager.mjs")]; +} + +module.exports = { + managerEntries, + previewAnnotations, +}; diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 000000000000..c318a632a9cc --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,18 @@ +import type { StorybookConfig } from "@storybook/react-vite"; +const config: StorybookConfig = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"], + addons: [ + "@storybook/addon-links", + "@storybook/addon-essentials", + "@storybook/addon-interactions", + "./local-preset.js", + ], + framework: { + name: "@storybook/react-vite", + options: {}, + }, + docs: { + autodocs: "tag", + }, +}; +export default config; diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 000000000000..05da1e9dfbfe --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 000000000000..b2d527fc18d0 --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,18 @@ +import type { Preview } from "@storybook/react"; + +const preview: Preview = { + parameters: { + backgrounds: { + default: "light", + }, + actions: { argTypesRegex: "^on[A-Z].*" }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; + +export default preview; diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..5544b96bfb30 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Storybook contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 000000000000..3d7717be9740 --- /dev/null +++ b/README.md @@ -0,0 +1,128 @@ + + +# Storybook Addon Kit ([demo](https://main--601ada52c3d4040021afdc30.chromatic.com)) + +Simplify the creation of Storybook addons + +- πŸ“ Live-editing in development +- βš›οΈ React/JSX support +- πŸ“¦ Transpiling and bundling with [tsup](https://tsup.egoist.dev/) +- 🏷 Plugin metadata +- 🚒 Release management with [Auto](https://github.com/intuit/auto) +- 🧺 Boilerplate and sample code +- πŸ›„ ESM support +- πŸ›‚ TypeScript by default with option to eject to JS + +### Migrating from Storybook 6.x to 7 + +Note, if you're looking to upgrade your addon from Storybook 6.x to 7, please refer to the [migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#70-addon-authors-changes). The major changes are: + +- `register.js` was removed +- No more default export from `@storybook/addons` +- `@storybook/api` has been split into `@storybook/preview-api` and `@storybook/manager-api` + +Skip this section if you're bootstrapping a new addon. + +## Getting Started + +Click the **Use this template** button to get started. + +![](https://user-images.githubusercontent.com/321738/125058439-8d9ef880-e0aa-11eb-9211-e6d7be812959.gif) + +Clone your repository and install dependencies. + +```sh +yarn +``` + + + +### Development scripts + +- `yarn start` runs babel in watch mode and starts Storybook +- `yarn build` build and package your addon code + +### Switch from TypeScript to JavaScript + +Don't want to use TypeScript? We offer a handy eject command: `yarn eject-ts` + +This will convert all code to JS. It is a destructive process, so we recommended running this before you start writing any code. + +## What's included? + +![Demo](https://user-images.githubusercontent.com/42671/107857205-e7044380-6dfa-11eb-8718-ad02e3ba1a3f.gif) + +The addon code lives in `src`. It demonstrates all core addon related concepts. The three [UI paradigms](https://storybook.js.org/docs/react/addons/addon-types#ui-based-addons) + +- `src/Tool.tsx` +- `src/Panel.tsx` +- `src/Tab.tsx` + +Which, along with the addon itself, are registered in `src/manager.ts`. + +Managing State and interacting with a story: + +- `src/withGlobals.ts` & `src/Tool.tsx` demonstrates how to use `useGlobals` to manage global state and modify the contents of a Story. +- `src/withRoundTrip.ts` & `src/Panel.tsx` demonstrates two-way communication using channels. +- `src/Tab.tsx` demonstrates how to use `useParameter` to access the current story's parameters. + +Your addon might use one or more of these patterns. Feel free to delete unused code. Update `src/manager.ts` and `src/preview.ts` accordingly. + +Lastly, configure you addon name in `src/constants.ts`. + +### Metadata + +Storybook addons are listed in the [catalog](https://storybook.js.org/addons) and distributed via npm. The catalog is populated by querying npm's registry for Storybook-specific metadata in `package.json`. This project has been configured with sample data. Learn more about available options in the [Addon metadata docs](https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata). + +## Release Management + +### Setup + +This project is configured to use [auto](https://github.com/intuit/auto) for release management. It generates a changelog and pushes it to both GitHub and npm. Therefore, you need to configure access to both: + +- [`NPM_TOKEN`](https://docs.npmjs.com/creating-and-viewing-access-tokens#creating-access-tokens) Create a token with both _Read and Publish_ permissions. +- [`GH_TOKEN`](https://github.com/settings/tokens) Create a token with the `repo` scope. + +Then open your `package.json` and edit the following fields: + +- `name` +- `author` +- `repository` + +#### Local + +To use `auto` locally create a `.env` file at the root of your project and add your tokens to it: + +```bash +GH_TOKEN= +NPM_TOKEN= +``` + +Lastly, **create labels on GitHub**. You’ll use these labels in the future when making changes to the package. + +```bash +npx auto create-labels +``` + +If you check on GitHub, you’ll now see a set of labels that `auto` would like you to use. Use these to tag future pull requests. + +#### GitHub Actions + +This template comes with GitHub actions already set up to publish your addon anytime someone pushes to your repository. + +Go to `Settings > Secrets`, click `New repository secret`, and add your `NPM_TOKEN`. + +### Creating a release + +To create a release locally you can run the following command, otherwise the GitHub action will make the release for you. + +```sh +yarn release +``` + +That will: + +- Build and package the addon code +- Bump the version +- Push a release to GitHub and npm +- Push a changelog to GitHub diff --git a/manager.js b/manager.js new file mode 100644 index 000000000000..08e6f5e164a7 --- /dev/null +++ b/manager.js @@ -0,0 +1 @@ +export * from "./dist/manager"; diff --git a/preview.js b/preview.js new file mode 100644 index 000000000000..0efc7f62e8bc --- /dev/null +++ b/preview.js @@ -0,0 +1 @@ +export * from "./dist/preview"; diff --git a/scripts/eject-typescript.mjs b/scripts/eject-typescript.mjs new file mode 100644 index 000000000000..fc7dbc416ab5 --- /dev/null +++ b/scripts/eject-typescript.mjs @@ -0,0 +1,55 @@ +#!/usr/bin/env zx + +// Copy TS files and delete src +await $`cp -r ./src ./srcTS`; +await $`rm -rf ./src`; +await $`mkdir ./src`; + +// Install Babel and TS preset +console.log(chalk.green` + +πŸ”ƒ Installing dependencies... + +`); +await $`yarn add -D @babel/cli @babel/preset-typescript --ignore-scripts`; + +// Convert TS code to JS +await $`babel --no-babelrc --presets @babel/preset-typescript ./srcTS -d ./src --extensions \".js,.jsx,.ts,.tsx\" --ignore "./srcTS/typings.d.ts"`; + +// Format the newly created .js files +console.log(chalk.green` + +πŸ’… Format the newly created .js files... + +`); +await $`prettier --write ./src`; + +// Add in minimal files required for the TS build setup +console.log(chalk.green` + +βž• Add minimal files required for the TS build setup + +`); +await $`prettier --write ./src`; +await $`touch ./src/dummy.ts`; +await $`printf "export {};" >> ./src/dummy.ts`; + +await $`touch ./src/typings.d.ts`; +await $`printf 'declare module "global";' >> ./src/typings.d.ts`; + +// Clean up +await $`rm -rf ./srcTS`; +console.log(chalk.green` + +🧹 Clean up... + +`); +await $`yarn remove @babel/cli @babel/preset-typescript --ignore-scripts`; + +console.log( + chalk.green.bold` +TypeScript Ejection complete!`, + chalk.green` +Addon code converted with JS. The TypeScript build setup is still available in case you want to adopt TypeScript in the future. +` +); diff --git a/scripts/prepublish-checks.mjs b/scripts/prepublish-checks.mjs new file mode 100644 index 000000000000..c53f3c06086e --- /dev/null +++ b/scripts/prepublish-checks.mjs @@ -0,0 +1,56 @@ +#!/usr/bin/env zx + +const packageJson = require("../package.json"); +const boxen = require("boxen"); +const dedent = require("dedent"); + +const name = packageJson.name; +const displayName = packageJson.storybook.displayName; + +let exitCode = 0; +$.verbose = false; + +/** + * Check that meta data has been updated + */ +if (name.includes("addon-kit") || displayName.includes("Addon Kit")) { + console.error( + boxen( + dedent` + ${chalk.red.bold("Missing metadata")} + + ${chalk.red(dedent`Your package name and/or displayName includes default values from the Addon Kit. + The addon gallery filters out all such addons. + + Please configure appropriate metadata before publishing your addon. For more info, see: + https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata`)}`, + { padding: 1, borderColor: "red" } + ) + ); + + exitCode = 1; +} + +/** + * Check that README has been updated + */ +const readmeTestStrings = + "# Storybook Addon Kit|Click the \\*\\*Use this template\\*\\* button to get started.|https://user-images.githubusercontent.com/42671/106809879-35b32000-663a-11eb-9cdc-89f178b5273f.gif"; + +if ((await $`cat README.md | grep -E ${readmeTestStrings}`.exitCode) == 0) { + console.error( + boxen( + dedent` + ${chalk.red.bold("README not updated")} + + ${chalk.red(dedent`You are using the default README.md file that comes with the addon kit. + Please update it to provide info on what your addon does and how to use it.`)} + `, + { padding: 1, borderColor: "red" } + ) + ); + + exitCode = 1; +} + +process.exit(exitCode); diff --git a/scripts/welcome.js b/scripts/welcome.js new file mode 100644 index 000000000000..a035165f4e5c --- /dev/null +++ b/scripts/welcome.js @@ -0,0 +1,180 @@ +/* eslint-disable eslint-comments/disable-enable-pair */ +/* eslint-disable no-console */ +const prompts = require("prompts"); +const dedent = require("ts-dedent").default; +const path = require("path"); +const fs = require("fs"); +const { execSync } = require("child_process"); + +// CLI questions +const questions = [ + { + type: "text", + name: "authorName", + initial: "", + message: "What is the package author name?*", + validate: (name) => (name === "" ? "Name can't be empty" : true), + }, + { + type: "text", + name: "authorEmail", + initial: "", + message: "What is the package author email?", + }, + { + type: "text", + name: "packageName", + message: "What is the addon package name (eg: storybook-addon-something)?*", + validate: (name) => (name === "" ? "Package name can't be empty" : true), + }, + { + type: "text", + name: "displayName", + message: + "What is the addon display name (this will be used in the addon catalog)?*", + validate: (name) => + name === "" + ? "Display name can't be empty. For more info, see: https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata" + : true, + }, + { + type: "text", + name: "addonDescription", + initial: "", + message: "Write a short description of the addon*", + validate: (name) => (name === "" ? "Description can't be empty" : true), + }, + { + type: "text", + name: "repoUrl", + message: "Git repo URL for your addon package (https://github.com/...)*", + validate: (url) => (url === "" ? "URL can't be empty" : true), + }, + { + type: "text", + name: "addonIcon", + initial: + "https://user-images.githubusercontent.com/321738/63501763-88dbf600-c4cc-11e9-96cd-94adadc2fd72.png", + message: "URL of your addon icon", + }, + { + type: "list", + name: "keywords", + initial: "storybook-addons", + message: "Enter addon keywords (comma separated)", + separator: ",", + format: (keywords) => + keywords + .concat(["storybook-addons"]) + .map((k) => `"${k}"`) + .join(", "), + }, + { + type: "list", + name: "supportedFrameworks", + initial: + "react, vue, angular, web-components, ember, html, svelte, preact, react-native", + message: "List of frameworks you support (comma separated)?", + separator: ",", + format: (frameworks) => frameworks.map((k) => `"${k}"`).join(", "), + }, +]; + +const REPLACE_TEMPLATES = { + packageName: "storybook-addon-kit", + addonDescription: "everything you need to build a Storybook addon", + packageAuthor: "package-author", + repoUrl: "https://github.com/storybookjs/storybook-addon-kit", + keywords: `"storybook-addons"`, + displayName: "Addon Kit", + supportedFrameworks: `"supported-frameworks"`, +}; + +const bold = (message) => `\u001b[1m${message}\u001b[22m`; +const magenta = (message) => `\u001b[35m${message}\u001b[39m`; +const blue = (message) => `\u001b[34m${message}\u001b[39m`; + +const main = async () => { + console.log( + bold( + magenta( + dedent` + Welcome to Storybook addon-kit! + Please answer the following questions while we prepare this project for you:\n + ` + ) + ) + ); + + const { + authorName, + authorEmail, + packageName, + addonDescription, + repoUrl, + displayName, + keywords, + supportedFrameworks, + } = await prompts(questions); + + if (!authorName || !packageName) { + console.log( + `\nProcess canceled by the user. Feel free to run ${bold( + "yarn postinstall" + )} to execute the installation steps again!` + ); + process.exit(0); + } + + const authorField = authorName + (authorEmail ? ` <${authorEmail}>` : ""); + + const packageJson = path.resolve(__dirname, `../package.json`); + + console.log(`\nπŸ‘· Updating package.json...`); + let packageJsonContents = fs.readFileSync(packageJson, "utf-8"); + + packageJsonContents = packageJsonContents + .replace(REPLACE_TEMPLATES.packageName, packageName) + .replace(REPLACE_TEMPLATES.addonDescription, addonDescription) + .replace(REPLACE_TEMPLATES.packageAuthor, authorField) + .replace(REPLACE_TEMPLATES.keywords, keywords) + .replace(REPLACE_TEMPLATES.repoUrl, repoUrl) + .replace(REPLACE_TEMPLATES.displayName, displayName) + .replace(REPLACE_TEMPLATES.supportedFrameworks, supportedFrameworks) + .replace(/\s*"postinstall".*node.*scripts\/welcome.js.*",/, ''); + + fs.writeFileSync(packageJson, packageJsonContents); + + console.log("πŸ“ Updating the README..."); + const readme = path.resolve(__dirname, `../README.md`); + let readmeContents = fs.readFileSync(readme, "utf-8"); + + const regex = /<\!-- README START -->([\s\S]*)<\!-- README END -->/g; + + readmeContents = readmeContents.replace( + regex, + dedent` + # Storybook Addon ${displayName} + ${addonDescription} + ` + ); + + fs.writeFileSync(readme, readmeContents); + + console.log(`πŸ“¦ Creating a commit...`); + execSync('git add . && git commit -m "project setup" --no-verify'); + + console.log( + dedent`\n + πŸš€ All done! Run \`yarn start\` to get started. + + Thanks for using this template, ${authorName.split(" ")[0]}! ❀️ + + Feel free to open issues in case there are bugs/feature requests at: + + ${bold(blue("https://github.com/storybookjs/addon-kit"))}\n + ` + ); +}; + +main().catch((e) => console.log(`Something went wrong: ${e}`)); diff --git a/src/Panel.tsx b/src/Panel.tsx new file mode 100644 index 000000000000..76c7bcde67fb --- /dev/null +++ b/src/Panel.tsx @@ -0,0 +1,36 @@ +import React from "react"; +import { useAddonState, useChannel } from "@storybook/manager-api"; +import { AddonPanel } from "@storybook/components"; +import { ADDON_ID, EVENTS } from "./constants"; +import { PanelContent } from "./components/PanelContent"; + +interface PanelProps { + active: boolean; +} + +export const Panel: React.FC = (props) => { + // https://storybook.js.org/docs/react/addons/addons-api#useaddonstate + const [results, setState] = useAddonState(ADDON_ID, { + danger: [], + warning: [], + }); + + // https://storybook.js.org/docs/react/addons/addons-api#usechannel + const emit = useChannel({ + [EVENTS.RESULT]: (newResults) => setState(newResults), + }); + + return ( + + { + emit(EVENTS.REQUEST); + }} + clearData={() => { + emit(EVENTS.CLEAR); + }} + /> + + ); +}; diff --git a/src/Tab.tsx b/src/Tab.tsx new file mode 100644 index 000000000000..49c7e27a5f65 --- /dev/null +++ b/src/Tab.tsx @@ -0,0 +1,15 @@ +import React from "react"; +import { useParameter } from "@storybook/manager-api"; +import { PARAM_KEY } from "./constants"; +import { TabContent } from "./components/TabContent"; + +interface TabProps { + active: boolean; +} + +export const Tab: React.FC = ({ active }) => { + // https://storybook.js.org/docs/react/addons/addons-api#useparameter + const paramData = useParameter(PARAM_KEY, ""); + + return active ? : null; +}; diff --git a/src/Tool.tsx b/src/Tool.tsx new file mode 100644 index 000000000000..4385d57e3d53 --- /dev/null +++ b/src/Tool.tsx @@ -0,0 +1,38 @@ +import React, { memo, useCallback, useEffect } from "react"; +import { useGlobals, useStorybookApi } from "@storybook/manager-api"; +import { Icons, IconButton } from "@storybook/components"; +import { ADDON_ID, PARAM_KEY, TOOL_ID } from "./constants"; + +export const Tool = memo(function MyAddonSelector() { + const [globals, updateGlobals] = useGlobals(); + const api = useStorybookApi(); + + const isActive = [true, "true"].includes(globals[PARAM_KEY]); + + const toggleMyTool = useCallback(() => { + updateGlobals({ + [PARAM_KEY]: !isActive, + }); + }, [isActive]); + + useEffect(() => { + api.setAddonShortcut(ADDON_ID, { + label: "Toggle Measure [O]", + defaultShortcut: ["O"], + actionName: "outline", + showInMenu: false, + action: toggleMyTool, + }); + }, [toggleMyTool, api]); + + return ( + + + + ); +}); diff --git a/src/components/List.tsx b/src/components/List.tsx new file mode 100644 index 000000000000..d3d6cfa81243 --- /dev/null +++ b/src/components/List.tsx @@ -0,0 +1,95 @@ +import React, { Fragment, useState } from "react"; +import { styled, themes, convert } from "@storybook/theming"; +import { Icons, IconsProps } from "@storybook/components"; + +const ListWrapper = styled.ul({ + listStyle: "none", + fontSize: 14, + padding: 0, + margin: 0, +}); + +const Wrapper = styled.div({ + display: "flex", + width: "100%", + borderBottom: `1px solid ${convert(themes.normal).appBorderColor}`, + "&:hover": { + background: convert(themes.normal).background.hoverable, + }, +}); + +const Icon = styled(Icons)({ + height: 10, + width: 10, + minWidth: 10, + color: convert(themes.normal).color.mediumdark, + marginRight: 10, + transition: "transform 0.1s ease-in-out", + alignSelf: "center", + display: "inline-flex", +}); + +const HeaderBar = styled.div({ + padding: convert(themes.normal).layoutMargin, + paddingLeft: convert(themes.normal).layoutMargin - 3, + background: "none", + color: "inherit", + textAlign: "left", + cursor: "pointer", + borderLeft: "3px solid transparent", + width: "100%", + + "&:focus": { + outline: "0 none", + borderLeft: `3px solid ${convert(themes.normal).color.secondary}`, + }, +}); + +const Description = styled.div({ + padding: convert(themes.normal).layoutMargin, + marginBottom: convert(themes.normal).layoutMargin, + fontStyle: "italic", +}); + +type Item = { + title: string; + description: string; +}; + +interface ListItemProps { + item: Item; +} + +export const ListItem: React.FC = ({ item }) => { + const [open, onToggle] = useState(false); + + return ( + + + onToggle(!open)} role="button"> + + {item.title} + + + {open ? {item.description} : null} + + ); +}; + +interface ListProps { + items: Item[]; +} + +export const List: React.FC = ({ items }) => ( + + {items.map((item, idx) => ( + + ))} + +); diff --git a/src/components/PanelContent.tsx b/src/components/PanelContent.tsx new file mode 100644 index 000000000000..bf3db52bb804 --- /dev/null +++ b/src/components/PanelContent.tsx @@ -0,0 +1,76 @@ +import React, { Fragment } from "react"; +import { styled, themes, convert } from "@storybook/theming"; +import { TabsState, Placeholder, Button } from "@storybook/components"; +import { List } from "./List"; + +export const RequestDataButton = styled(Button)({ + marginTop: "1rem", +}); + +type Results = { + danger: any[]; + warning: any[]; +}; + +interface PanelContentProps { + results: Results; + fetchData: () => void; + clearData: () => void; +} + +/** + * Checkout https://github.com/storybookjs/storybook/blob/next/code/addons/jest/src/components/Panel.tsx + * for a real world example + */ +export const PanelContent: React.FC = ({ + results, + fetchData, + clearData, +}) => ( + +
+ + + Addons can gather details about how a story is rendered. This is panel + uses a tab pattern. Click the button below to fetch data for the other + two tabs. + + + + Request data + + + + Clear data + + + +
+
+ +
+
+ +
+
+); diff --git a/src/components/TabContent.tsx b/src/components/TabContent.tsx new file mode 100644 index 000000000000..346856328432 --- /dev/null +++ b/src/components/TabContent.tsx @@ -0,0 +1,47 @@ +import React from "react"; +import { styled } from "@storybook/theming"; +import { H1, Link, Code } from "@storybook/components"; + +const TabWrapper = styled.div(({ theme }) => ({ + background: theme.background.content, + padding: "4rem 20px", + minHeight: "100vh", + boxSizing: "border-box", +})); + +const TabInner = styled.div({ + maxWidth: 768, + marginLeft: "auto", + marginRight: "auto", +}); + +interface TabContentProps { + code: string; +} + +export const TabContent: React.FC = ({ code }) => ( + + +

My Addon

+

+ Your addon can create a custom tab in Storybook. For example, the + official{" "} + + @storybook/addon-docs + {" "} + uses this pattern. +

+

+ You have full control over what content is being rendered here. You can + use components from{" "} + + @storybook/components + {" "} + to match the look and feel of Storybook, for example the{" "} + <Code /> component below. Or build a completely + custom UI. +

+ {code} +
+
+); diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 000000000000..d7ef8e45875a --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,11 @@ +export const ADDON_ID = "storybook/my-addon"; +export const TOOL_ID = `${ADDON_ID}/tool`; +export const PANEL_ID = `${ADDON_ID}/panel`; +export const TAB_ID = `${ADDON_ID}/tab`; +export const PARAM_KEY = `myAddonParameter`; + +export const EVENTS = { + RESULT: `${ADDON_ID}/result`, + REQUEST: `${ADDON_ID}/request`, + CLEAR: `${ADDON_ID}/clear`, +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 000000000000..dafa948eda6c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,2 @@ +// make it work with --isolatedModules +export default {}; diff --git a/src/manager.ts b/src/manager.ts new file mode 100644 index 000000000000..ef665d775377 --- /dev/null +++ b/src/manager.ts @@ -0,0 +1,40 @@ +import { addons, types } from "@storybook/manager-api"; +import { ADDON_ID, TOOL_ID, PANEL_ID, TAB_ID } from "./constants"; +import { Tool } from "./Tool"; +import { Panel } from "./Panel"; +import { Tab } from "./Tab"; + +/** + * Note: if you want to use JSX in this file, rename it to `manager.tsx` + * and update the entry prop in tsup.config.ts to use "src/manager.tsx", + */ + +// Register the addon +addons.register(ADDON_ID, () => { + // Register the tool + addons.add(TOOL_ID, { + type: types.TOOL, + title: "My addon", + match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), + render: Tool, + }); + + // Register the panel + addons.add(PANEL_ID, { + type: types.PANEL, + title: "My addon", + match: ({ viewMode }) => viewMode === "story", + render: Panel, + }); + + // Register the tab + addons.add(TAB_ID, { + type: types.TAB, + title: "My addon", + //πŸ‘‡ Checks the current route for the story + route: ({ storyId }) => `/myaddon/${storyId}`, + //πŸ‘‡ Shows the Tab UI element in myaddon view mode + match: ({ viewMode }) => viewMode === "myaddon", + render: Tab, + }); +}); diff --git a/src/preview.ts b/src/preview.ts new file mode 100644 index 000000000000..6e4b884a08a4 --- /dev/null +++ b/src/preview.ts @@ -0,0 +1,28 @@ +/** + * A decorator is a way to wrap a story in extra β€œrendering” functionality. Many addons define decorators + * in order to augment stories: + * - with extra rendering + * - gather details about how a story is rendered + * + * When writing stories, decorators are typically used to wrap stories with extra markup or context mocking. + * + * https://storybook.js.org/docs/react/writing-stories/decorators + */ +import type { Renderer, ProjectAnnotations } from "@storybook/types"; +import { PARAM_KEY } from "./constants"; +import { withGlobals } from "./withGlobals"; +import { withRoundTrip } from "./withRoundTrip"; + +/** + * Note: if you want to use JSX in this file, rename it to `preview.tsx` + * and update the entry prop in tsup.config.ts to use "src/preview.tsx", + */ + +const preview: ProjectAnnotations = { + decorators: [withGlobals, withRoundTrip], + globals: { + [PARAM_KEY]: false, + }, +}; + +export default preview; diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts new file mode 100644 index 000000000000..04d90ebba309 --- /dev/null +++ b/src/stories/Button.stories.ts @@ -0,0 +1,53 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import { Button } from "./Button"; + +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export +const meta: Meta = { + title: "Example/Button", + component: Button, + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes + argTypes: { + backgroundColor: { control: "color" }, + }, + tags: ["autodocs"], + parameters: { + myAddonParameter: ` + + a.id} /> + +`, + }, +}; + +export default meta; +type Story = StoryObj; + +// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args +export const Primary: Story = { + // More on args: https://storybook.js.org/docs/react/writing-stories/args + args: { + primary: true, + label: "Button", + }, +}; + +export const Secondary: Story = { + args: { + label: "Button", + }, +}; + +export const Large: Story = { + args: { + size: "large", + label: "Button", + }, +}; + +export const Small: Story = { + args: { + size: "small", + label: "Button", + }, +}; diff --git a/src/stories/Button.tsx b/src/stories/Button.tsx new file mode 100644 index 000000000000..c33be6ec52c4 --- /dev/null +++ b/src/stories/Button.tsx @@ -0,0 +1,48 @@ +import React from 'react'; +import './button.css'; + +interface ButtonProps { + /** + * Is this the principal call to action on the page? + */ + primary?: boolean; + /** + * What background color to use + */ + backgroundColor?: string; + /** + * How large should the button be? + */ + size?: 'small' | 'medium' | 'large'; + /** + * Button contents + */ + label: string; + /** + * Optional click handler + */ + onClick?: () => void; +} + +/** + * Primary UI component for user interaction + */ +export const Button = ({ + primary = false, + size = 'medium', + backgroundColor, + label, + ...props +}: ButtonProps) => { + const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary'; + return ( + + ); +}; diff --git a/src/stories/Header.stories.ts b/src/stories/Header.stories.ts new file mode 100644 index 000000000000..b1091d53a99b --- /dev/null +++ b/src/stories/Header.stories.ts @@ -0,0 +1,24 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { Header } from "./Header"; + +const meta: Meta = { + title: "Example/Header", + component: Header, + parameters: { + // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout + layout: "fullscreen", + }, +}; + +export default meta; +type Story = StoryObj; + +export const LoggedIn: Story = { + args: { + user: { + name: "Jane Doe", + }, + }, +}; + +export const LoggedOut: Story = {}; diff --git a/src/stories/Header.tsx b/src/stories/Header.tsx new file mode 100644 index 000000000000..dc3f3c19c31a --- /dev/null +++ b/src/stories/Header.tsx @@ -0,0 +1,56 @@ +import React from 'react'; + +import { Button } from './Button'; +import './header.css'; + +type User = { + name: string; +}; + +interface HeaderProps { + user?: User; + onLogin: () => void; + onLogout: () => void; + onCreateAccount: () => void; +} + +export const Header = ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => ( +
+
+
+ + + + + + + +

Acme

+
+
+ {user ? ( + <> + + Welcome, {user.name}! + +
+
+
+); diff --git a/src/stories/Introduction.mdx b/src/stories/Introduction.mdx new file mode 100644 index 000000000000..a314fa7f4a8f --- /dev/null +++ b/src/stories/Introduction.mdx @@ -0,0 +1,211 @@ +import { Meta } from '@storybook/blocks'; +import Code from './assets/code-brackets.svg'; +import Colors from './assets/colors.svg'; +import Comments from './assets/comments.svg'; +import Direction from './assets/direction.svg'; +import Flow from './assets/flow.svg'; +import Plugin from './assets/plugin.svg'; +import Repo from './assets/repo.svg'; +import StackAlt from './assets/stackalt.svg'; + + + + + +# Welcome to Storybook + +Storybook helps you build UI components in isolation from your app's business logic, data, and context. +That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA. + +Browse example stories now by navigating to them in the sidebar. +View their code in the `stories` directory to learn how they work. +We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages. + +
Configure
+ + + +
Learn
+ + + +
+ TipEdit the Markdown in{' '} + stories/Introduction.stories.mdx +
diff --git a/src/stories/Page.stories.ts b/src/stories/Page.stories.ts new file mode 100644 index 000000000000..52c4cb406233 --- /dev/null +++ b/src/stories/Page.stories.ts @@ -0,0 +1,29 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { within, userEvent } from '@storybook/testing-library'; + +import { Page } from './Page'; + +const meta: Meta = { + title: 'Example/Page', + component: Page, + parameters: { + // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout + layout: 'fullscreen', + }, +}; + +export default meta; +type Story = StoryObj; + +export const LoggedOut: Story = {}; + +// More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing +export const LoggedIn: Story = { + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const loginButton = await canvas.getByRole('button', { + name: /Log in/i, + }); + await userEvent.click(loginButton); + }, +}; diff --git a/src/stories/Page.tsx b/src/stories/Page.tsx new file mode 100644 index 000000000000..885f2b41f1ee --- /dev/null +++ b/src/stories/Page.tsx @@ -0,0 +1,73 @@ +import React from 'react'; + +import { Header } from './Header'; +import './page.css'; + +type User = { + name: string; +}; + +export const Page: React.FC = () => { + const [user, setUser] = React.useState(); + + return ( +
+
setUser({ name: 'Jane Doe' })} + onLogout={() => setUser(undefined)} + onCreateAccount={() => setUser({ name: 'Jane Doe' })} + /> + +
+

Pages in Storybook

+

+ We recommend building UIs with a{' '} + + component-driven + {' '} + process starting with atomic components and ending with pages. +

+

+ Render pages with mock data. This makes it easy to build and review page states without + needing to navigate to them in your app. Here are some handy patterns for managing page + data in Storybook: +

+
    +
  • + Use a higher-level connected component. Storybook helps you compose such data from the + "args" of child component stories +
  • +
  • + Assemble data in the page component from your services. You can mock these services out + using Storybook. +
  • +
+

+ Get a guided tutorial on component-driven development at{' '} + + Storybook tutorials + + . Read more in the{' '} + + docs + + . +

+
+ Tip Adjust the width of the canvas with the{' '} + + + + + + Viewports addon in the toolbar +
+
+
+ ); +}; diff --git a/src/stories/assets/code-brackets.svg b/src/stories/assets/code-brackets.svg new file mode 100644 index 000000000000..73de94776001 --- /dev/null +++ b/src/stories/assets/code-brackets.svg @@ -0,0 +1 @@ +illustration/code-brackets \ No newline at end of file diff --git a/src/stories/assets/colors.svg b/src/stories/assets/colors.svg new file mode 100644 index 000000000000..17d58d516e14 --- /dev/null +++ b/src/stories/assets/colors.svg @@ -0,0 +1 @@ +illustration/colors \ No newline at end of file diff --git a/src/stories/assets/comments.svg b/src/stories/assets/comments.svg new file mode 100644 index 000000000000..6493a139f523 --- /dev/null +++ b/src/stories/assets/comments.svg @@ -0,0 +1 @@ +illustration/comments \ No newline at end of file diff --git a/src/stories/assets/direction.svg b/src/stories/assets/direction.svg new file mode 100644 index 000000000000..65676ac27229 --- /dev/null +++ b/src/stories/assets/direction.svg @@ -0,0 +1 @@ +illustration/direction \ No newline at end of file diff --git a/src/stories/assets/flow.svg b/src/stories/assets/flow.svg new file mode 100644 index 000000000000..8ac27db403c2 --- /dev/null +++ b/src/stories/assets/flow.svg @@ -0,0 +1 @@ +illustration/flow \ No newline at end of file diff --git a/src/stories/assets/plugin.svg b/src/stories/assets/plugin.svg new file mode 100644 index 000000000000..29e5c690c0a2 --- /dev/null +++ b/src/stories/assets/plugin.svg @@ -0,0 +1 @@ +illustration/plugin \ No newline at end of file diff --git a/src/stories/assets/repo.svg b/src/stories/assets/repo.svg new file mode 100644 index 000000000000..f386ee902c1f --- /dev/null +++ b/src/stories/assets/repo.svg @@ -0,0 +1 @@ +illustration/repo \ No newline at end of file diff --git a/src/stories/assets/stackalt.svg b/src/stories/assets/stackalt.svg new file mode 100644 index 000000000000..9b7ad2743506 --- /dev/null +++ b/src/stories/assets/stackalt.svg @@ -0,0 +1 @@ +illustration/stackalt \ No newline at end of file diff --git a/src/stories/button.css b/src/stories/button.css new file mode 100644 index 000000000000..dc91dc76370b --- /dev/null +++ b/src/stories/button.css @@ -0,0 +1,30 @@ +.storybook-button { + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 700; + border: 0; + border-radius: 3em; + cursor: pointer; + display: inline-block; + line-height: 1; +} +.storybook-button--primary { + color: white; + background-color: #1ea7fd; +} +.storybook-button--secondary { + color: #333; + background-color: transparent; + box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; +} +.storybook-button--small { + font-size: 12px; + padding: 10px 16px; +} +.storybook-button--medium { + font-size: 14px; + padding: 11px 20px; +} +.storybook-button--large { + font-size: 16px; + padding: 12px 24px; +} diff --git a/src/stories/header.css b/src/stories/header.css new file mode 100644 index 000000000000..44c549da27ce --- /dev/null +++ b/src/stories/header.css @@ -0,0 +1,32 @@ +.wrapper { + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 15px 20px; + display: flex; + align-items: center; + justify-content: space-between; +} + +svg { + display: inline-block; + vertical-align: top; +} + +h1 { + font-weight: 700; + font-size: 20px; + line-height: 1; + margin: 6px 0 6px 10px; + display: inline-block; + vertical-align: top; +} + +button + button { + margin-left: 10px; +} + +.welcome { + color: #333; + font-size: 14px; + margin-right: 10px; +} diff --git a/src/stories/page.css b/src/stories/page.css new file mode 100644 index 000000000000..fb64fe462943 --- /dev/null +++ b/src/stories/page.css @@ -0,0 +1,69 @@ +section { + font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + padding: 48px 20px; + margin: 0 auto; + max-width: 600px; + color: #333; +} + +section h2 { + font-weight: 700; + font-size: 32px; + line-height: 1; + margin: 0 0 4px; + display: inline-block; + vertical-align: top; +} + +section p { + margin: 1em 0; +} + +section a { + text-decoration: none; + color: #1ea7fd; +} + +section ul { + padding-left: 30px; + margin: 1em 0; +} + +section li { + margin-bottom: 8px; +} + +section .tip { + display: inline-block; + border-radius: 1em; + font-size: 11px; + line-height: 12px; + font-weight: 700; + background: #e7fdd8; + color: #66bf3c; + padding: 4px 12px; + margin-right: 10px; + vertical-align: top; +} + +section .tip-wrapper { + font-size: 13px; + line-height: 20px; + margin-top: 40px; + margin-bottom: 40px; +} + +section .tip-wrapper svg { + display: inline-block; + height: 12px; + width: 12px; + margin-right: 4px; + vertical-align: top; + margin-top: 3px; +} + +section .tip-wrapper svg path { + fill: #1ea7fd; +} diff --git a/src/withGlobals.ts b/src/withGlobals.ts new file mode 100644 index 000000000000..5e64a6ab6998 --- /dev/null +++ b/src/withGlobals.ts @@ -0,0 +1,61 @@ +import type { + Renderer, + PartialStoryFn as StoryFunction, + StoryContext, +} from "@storybook/types"; +import { useEffect, useGlobals } from "@storybook/preview-api"; +import { PARAM_KEY } from "./constants"; + +export const withGlobals = ( + StoryFn: StoryFunction, + context: StoryContext +) => { + const [globals] = useGlobals(); + const myAddon = globals[PARAM_KEY]; + // Is the addon being used in the docs panel + const isInDocs = context.viewMode === "docs"; + const { theme } = context.globals; + + useEffect(() => { + // Execute your side effect here + // For example, to manipulate the contents of the preview + const selector = isInDocs + ? `#anchor--${context.id} .sb-story` + : "#storybook-root"; + + displayToolState(selector, { + myAddon, + isInDocs, + theme, + }); + }, [myAddon, theme]); + + return StoryFn(); +}; + +function displayToolState(selector: string, state: any) { + const rootElements = document.querySelectorAll(selector); + + rootElements.forEach((rootElement) => { + let preElement = rootElement.querySelector( + `${selector} pre` + ); + + if (!preElement) { + preElement = document.createElement("pre"); + preElement.style.setProperty("margin-top", "2rem"); + preElement.style.setProperty("padding", "1rem"); + preElement.style.setProperty("background-color", "#eee"); + preElement.style.setProperty("border-radius", "3px"); + preElement.style.setProperty("max-width", "600px"); + preElement.style.setProperty("overflow", "scroll"); + rootElement.appendChild(preElement); + } + + preElement.innerText = `This snippet is injected by the withGlobals decorator. +It updates as the user interacts with the ⚑ or Theme tools in the toolbar above. + +${JSON.stringify(state, null, 2)} +`; + }); +} diff --git a/src/withRoundTrip.ts b/src/withRoundTrip.ts new file mode 100644 index 000000000000..33bd59b87b00 --- /dev/null +++ b/src/withRoundTrip.ts @@ -0,0 +1,51 @@ +import { useChannel } from "@storybook/preview-api"; +import type { + Renderer, + PartialStoryFn as StoryFunction, +} from "@storybook/types"; +import { STORY_CHANGED } from "@storybook/core-events"; +import { EVENTS } from "./constants"; + +export const withRoundTrip = (storyFn: StoryFunction) => { + const emit = useChannel({ + [EVENTS.REQUEST]: () => { + emit(EVENTS.RESULT, { + danger: [ + { + title: "Panels are the most common type of addon in the ecosystem", + description: + "For example the official @storybook/actions and @storybook/a11y use this pattern", + }, + { + title: + "You can specify a custom title for your addon panel and have full control over what content it renders", + description: + "@storybook/components offers components to help you addons with the look and feel of Storybook itself", + }, + ], + warning: [ + { + title: + 'This tabbed UI pattern is a popular option to display "test" reports.', + description: + "It's used by @storybook/addon-jest and @storybook/addon-a11y. @storybook/components offers this and other components to help you quickly build an addon", + }, + ], + }); + }, + [STORY_CHANGED]: () => { + emit(EVENTS.RESULT, { + danger: [], + warning: [], + }); + }, + [EVENTS.CLEAR]: () => { + emit(EVENTS.RESULT, { + danger: [], + warning: [], + }); + }, + }); + + return storyFn(); +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000000..ece12d3a1fd5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "esModuleInterop": true, + "experimentalDecorators": true, + "incremental": false, + "isolatedModules": true, + "jsx": "react", + "lib": ["es2020", "dom"], + "module": "commonjs", + "noImplicitAny": true, + "rootDir": "./src", + "skipLibCheck": true, + "target": "ES2020" + }, + "include": ["src/**/*"] +} diff --git a/tsup.config.ts b/tsup.config.ts new file mode 100644 index 000000000000..541ae16d794c --- /dev/null +++ b/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "tsup"; + +export default defineConfig((options) => ({ + entry: ["src/index.ts", "src/preview.ts", "src/manager.ts"], + splitting: false, + minify: !options.watch, + format: ["cjs", "esm"], + dts: { + resolve: true, + }, + treeshake: true, + sourcemap: true, + clean: true, + platform: "browser", + esbuildOptions(options) { + options.conditions = ["module"]; + }, +})); diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000000..9cc50ead1c0a --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000000..3550bc217f8e --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8024 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@auto-it/bot-list@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.43.0.tgz#1a054a5ba0de3d68657a2f453de2ceffb3ea0ccc" + integrity sha512-rQshCAEjtRhF8oFL9VNxBm6nWibd+YVSnMfxPhg6v4Mbs0xBIoF3Nzu7aTEjOkSl9+YIaRWnVV70bALAFgI0MQ== + +"@auto-it/core@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.43.0.tgz#05bb8f9544273ab4b3ce4b6cff12115ec644031c" + integrity sha512-aAhEodT0y2gS1ueKl2iCMc5VDK9jZMnuspGDaR8SBKcsP7o8R6hxKtxGc2cAAoNOPewcBpe72Yy8768FLoUhAQ== + dependencies: + "@auto-it/bot-list" "10.43.0" + "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" + "@octokit/core" "^3.5.1" + "@octokit/plugin-enterprise-compatibility" "1.3.0" + "@octokit/plugin-retry" "^3.0.9" + "@octokit/plugin-throttling" "^3.6.2" + "@octokit/rest" "^18.12.0" + await-to-js "^3.0.0" + chalk "^4.0.0" + cosmiconfig "7.0.0" + deepmerge "^4.0.0" + dotenv "^8.0.0" + endent "^2.1.0" + enquirer "^2.3.4" + env-ci "^5.0.1" + fast-glob "^3.1.1" + fp-ts "^2.5.3" + fromentries "^1.2.0" + gitlog "^4.0.3" + https-proxy-agent "^5.0.0" + import-cwd "^3.0.0" + import-from "^3.0.0" + io-ts "^2.1.2" + lodash.chunk "^4.2.0" + log-symbols "^4.0.0" + node-fetch "2.6.7" + parse-author "^2.0.0" + parse-github-url "1.0.2" + pretty-ms "^7.0.0" + requireg "^0.2.2" + semver "^7.0.0" + signale "^1.4.0" + tapable "^2.2.0" + terminal-link "^2.1.1" + tinycolor2 "^1.4.1" + ts-node "^10.9.1" + tslib "2.1.0" + type-fest "^0.21.1" + typescript-memoize "^1.0.0-alpha.3" + url-join "^4.0.0" + +"@auto-it/npm@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.43.0.tgz#049a6402937c94623d3d2832f669d108fc4e3db4" + integrity sha512-XR3HA8HwUHFaZHQjFeUBDtymjIKEv4m2W1/uaix6MSgPs3Np/hmV7e6R/TGdA8XXFU1oSlkQEuu0CI9/rK4qKA== + dependencies: + "@auto-it/core" "10.43.0" + "@auto-it/package-json-utils" "10.43.0" + await-to-js "^3.0.0" + endent "^2.1.0" + env-ci "^5.0.1" + fp-ts "^2.5.3" + get-monorepo-packages "^1.1.0" + io-ts "^2.1.2" + registry-url "^5.1.0" + semver "^7.0.0" + tslib "2.1.0" + typescript-memoize "^1.0.0-alpha.3" + url-join "^4.0.0" + user-home "^2.0.0" + +"@auto-it/package-json-utils@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.43.0.tgz#dc8e0b2290d52109f35c0d152142ee54f00272b9" + integrity sha512-93NwxSNnocpsiJiXZOX/DE1R9j+NOXCXzRAgnXpeRFdOBviMi8AxCQBoyW66IYjLAEnwKwFXN8Xk76zejkPlgw== + dependencies: + parse-author "^2.0.0" + parse-github-url "1.0.2" + +"@auto-it/released@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.43.0.tgz#3192a11126da283cbec741bba61faa6e1861ea4b" + integrity sha512-pwUG0uUX1Zeoinj7BB2/af7aRLU3mgbBqpHyCip5VJyYjRnGvoZKRpYbSl+zY7MnT9LVbKy9zPWezjyM5j0Ong== + dependencies: + "@auto-it/bot-list" "10.43.0" + "@auto-it/core" "10.43.0" + deepmerge "^4.0.0" + fp-ts "^2.5.3" + io-ts "^2.1.2" + tslib "2.1.0" + +"@auto-it/version-file@10.43.0": + version "10.43.0" + resolved "https://registry.yarnpkg.com/@auto-it/version-file/-/version-file-10.43.0.tgz#adac9f9d9df9e507c892a56fec439afa506d1db1" + integrity sha512-PikUfE89C8yzb9EKylMBWyizQ+0PfXTkDahyu5kqefokxETnEKcV/6qDS5GvAVCchprN1ibvNwEq7tkeBRtSfA== + dependencies: + "@auto-it/core" "10.43.0" + fp-ts "^2.5.3" + io-ts "^2.1.2" + semver "^7.0.0" + tslib "1.10.0" + +"@aw-web-design/x-default-browser@1.4.88": + version "1.4.88" + resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.88.tgz#33d869cb2a537cd6d2a8369d4dc8ea4988d4be89" + integrity sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA== + dependencies: + default-browser-id "3.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" + integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.12", "@babel/core@^7.20.2", "@babel/core@^7.7.5", "@babel/core@~7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" + integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.0" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.0" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.0" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/generator@^7.12.11", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@~7.21.1": + version "7.21.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" + integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== + dependencies: + "@babel/types" "^7.21.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" + integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2", "@babel/parser@~7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" + integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.20.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" + integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" + integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== + dependencies: + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-self@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" + integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-react-jsx-source@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-react-jsx@^7.19.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" + integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.21.0" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz#f0956a153679e3b377ae5b7f0143427151e4c848" + integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.20.2", "@babel/preset-env@~7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + +"@babel/preset-flow@^7.13.13": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.13.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" + integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-typescript" "^7.21.0" + +"@babel/register@^7.13.16": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.21.0.tgz#c97bf56c2472e063774f31d344c592ebdcefa132" + integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.8.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@~7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" + integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@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.2" + "@babel/types" "^7.21.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@~7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" + integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@base2/pretty-print-object@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@discoveryjs/json-ext@^0.5.3": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + +"@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d" + integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== + dependencies: + lodash.get "^4" + make-error "^1" + ts-node "^9" + tslib "^2" + +"@esbuild/android-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" + integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== + +"@esbuild/android-arm64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.11.tgz#52c3e6cabc19c5e4c1c0c01cb58f0442338e1c14" + integrity sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg== + +"@esbuild/android-arm64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz#4624cea3c8941c91f9e9c1228f550d23f1cef037" + integrity sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg== + +"@esbuild/android-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" + integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== + +"@esbuild/android-arm@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.11.tgz#f3fc768235aecbeb840d0049fdf13cd28592105f" + integrity sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw== + +"@esbuild/android-arm@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.14.tgz#74fae60fcab34c3f0e15cb56473a6091ba2b53a6" + integrity sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g== + +"@esbuild/android-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" + integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== + +"@esbuild/android-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.11.tgz#443ed47771a7e917e4282469ba350d117473550c" + integrity sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ== + +"@esbuild/android-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.14.tgz#f002fbc08d5e939d8314bd23bcfb1e95d029491f" + integrity sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng== + +"@esbuild/darwin-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" + integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== + +"@esbuild/darwin-arm64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.11.tgz#0e8c78d94d5759a48521dbfd83189d2ed3499a16" + integrity sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw== + +"@esbuild/darwin-arm64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz#b8dcd79a1dd19564950b4ca51d62999011e2e168" + integrity sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw== + +"@esbuild/darwin-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" + integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== + +"@esbuild/darwin-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.11.tgz#2405cfdf70eb961c7cf973463ca7263dc2004c88" + integrity sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw== + +"@esbuild/darwin-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz#4b49f195d9473625efc3c773fc757018f2c0d979" + integrity sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g== + +"@esbuild/freebsd-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" + integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== + +"@esbuild/freebsd-arm64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.11.tgz#d5138e873e15f87bd4564c024dfa00ef37e623fd" + integrity sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q== + +"@esbuild/freebsd-arm64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz#480923fd38f644c6342c55e916cc7c231a85eeb7" + integrity sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A== + +"@esbuild/freebsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" + integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== + +"@esbuild/freebsd-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.11.tgz#e850b58b8fabf8e9ef0e125af3c25229ad2d6c38" + integrity sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g== + +"@esbuild/freebsd-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz#a6b6b01954ad8562461cb8a5e40e8a860af69cbe" + integrity sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw== + +"@esbuild/linux-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" + integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== + +"@esbuild/linux-arm64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.11.tgz#2bfb93d0809ec2357c12ebb27736b750c9ae0aa5" + integrity sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg== + +"@esbuild/linux-arm64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz#1fe2f39f78183b59f75a4ad9c48d079916d92418" + integrity sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g== + +"@esbuild/linux-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" + integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== + +"@esbuild/linux-arm@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.11.tgz#e56fb3b76828317a704f4a167c5bd790fe5314e7" + integrity sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg== + +"@esbuild/linux-arm@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz#18d594a49b64e4a3a05022c005cb384a58056a2a" + integrity sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg== + +"@esbuild/linux-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" + integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== + +"@esbuild/linux-ia32@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.11.tgz#59fa1c49b271793d14eb5effc757e8c0d0cb2cab" + integrity sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA== + +"@esbuild/linux-ia32@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz#f7f0182a9cfc0159e0922ed66c805c9c6ef1b654" + integrity sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ== + +"@esbuild/linux-loong64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" + integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== + +"@esbuild/linux-loong64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.11.tgz#89575bc189099c03a36daa54f3f481780c7fd502" + integrity sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g== + +"@esbuild/linux-loong64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz#5f5305fdffe2d71dd9a97aa77d0c99c99409066f" + integrity sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ== + +"@esbuild/linux-mips64el@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" + integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== + +"@esbuild/linux-mips64el@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.11.tgz#0e18ca039dc7e4645efd8edc1b10952933eb6b1b" + integrity sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw== + +"@esbuild/linux-mips64el@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz#a602e85c51b2f71d2aedfe7f4143b2f92f97f3f5" + integrity sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg== + +"@esbuild/linux-ppc64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" + integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== + +"@esbuild/linux-ppc64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.11.tgz#2d152cb3a253afb8c100a165ad132dc96f36cb11" + integrity sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA== + +"@esbuild/linux-ppc64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz#32d918d782105cbd9345dbfba14ee018b9c7afdf" + integrity sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ== + +"@esbuild/linux-riscv64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" + integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== + +"@esbuild/linux-riscv64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.11.tgz#c6ac494a81221d53d65b33e665c7df1747952d3c" + integrity sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA== + +"@esbuild/linux-riscv64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz#38612e7b6c037dff7022c33f49ca17f85c5dec58" + integrity sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw== + +"@esbuild/linux-s390x@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" + integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== + +"@esbuild/linux-s390x@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.11.tgz#4bad33894bc7415cea4be8fa90fe456226a424ad" + integrity sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ== + +"@esbuild/linux-s390x@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz#4397dff354f899e72fd035d72af59a700c465ccb" + integrity sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww== + +"@esbuild/linux-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" + integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== + +"@esbuild/linux-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.11.tgz#903fda743459f530a16a6c6ee8d2c0f6c1a12fc7" + integrity sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw== + +"@esbuild/linux-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz#6c5cb99891b6c3e0c08369da3ef465e8038ad9c2" + integrity sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw== + +"@esbuild/netbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" + integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== + +"@esbuild/netbsd-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.11.tgz#b589239fe7d9b16ee03c5e191f3f5b640f1518a1" + integrity sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag== + +"@esbuild/netbsd-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz#5fa5255a64e9bf3947c1b3bef5e458b50b211994" + integrity sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ== + +"@esbuild/openbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" + integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== + +"@esbuild/openbsd-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.11.tgz#b355019754116bef39ec688f8fd2fe6471b9779b" + integrity sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w== + +"@esbuild/openbsd-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz#74d14c79dcb6faf446878cc64284aa4e02f5ca6f" + integrity sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g== + +"@esbuild/sunos-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" + integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== + +"@esbuild/sunos-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.11.tgz#2ea47fb592e68406e5025a7696dc714fc6a115dc" + integrity sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg== + +"@esbuild/sunos-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz#5c7d1c7203781d86c2a9b2ff77bd2f8036d24cfa" + integrity sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA== + +"@esbuild/win32-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" + integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== + +"@esbuild/win32-arm64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.11.tgz#47e6fdab17c4c52e6e0d606dd9cb843b29826325" + integrity sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ== + +"@esbuild/win32-arm64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz#dc36ed84f1390e73b6019ccf0566c80045e5ca3d" + integrity sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ== + +"@esbuild/win32-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" + integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== + +"@esbuild/win32-ia32@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.11.tgz#a97273aa3164c8d8f501899f55cc75a4a79599a3" + integrity sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw== + +"@esbuild/win32-ia32@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz#0802a107afa9193c13e35de15a94fe347c588767" + integrity sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w== + +"@esbuild/win32-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" + integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== + +"@esbuild/win32-x64@0.17.11": + version "0.17.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.11.tgz#9be796d93ae27b636da32d960899a4912bca27a1" + integrity sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ== + +"@esbuild/win32-x64@0.17.14": + version "0.17.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz#e81fb49de05fed91bf74251c9ca0343f4fc77d31" + integrity sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA== + +"@fal-works/esbuild-plugin-global-externals@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" + integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/transform@^29.3.1": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" + integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.5.0" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.5.0" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@joshwooding/vite-plugin-react-docgen-typescript@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.2.1.tgz#930f6f0382520e4ba349eea1b152f9ae49364516" + integrity sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ== + dependencies: + glob "^7.2.0" + glob-promise "^4.2.0" + magic-string "^0.27.0" + react-docgen-typescript "^2.2.2" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@juggle/resize-observer@^3.3.1": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" + integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== + +"@mdx-js/react@^2.1.5": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3" + integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g== + dependencies: + "@types/mdx" "^2.0.0" + "@types/react" ">=16" + +"@ndelangen/get-tarball@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.7.tgz#87c7aef2df4ff4fbdbab6ac9ed32cee142c4b1a3" + integrity sha512-NqGfTZIZpRFef1GoVaShSSRwDC3vde3ThtTeqFdcYd6ipKqnfEVhjK2hUeHjCQUcptyZr2TONqcloFXM+5QBrQ== + dependencies: + gunzip-maybe "^1.4.2" + pump "^3.0.0" + tar-fs "^2.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@octokit/auth-token@^2.4.4": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + dependencies: + "@octokit/types" "^6.0.3" + +"@octokit/core@^3.5.1": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" + integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== + dependencies: + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.6.3" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.0.3" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.12" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + dependencies: + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^4.5.8": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + dependencies: + "@octokit/request" "^5.6.0" + "@octokit/types" "^6.0.3" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + +"@octokit/plugin-enterprise-compatibility@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz#034f035cc1789b0f0d616e71e41f50f73804e89e" + integrity sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ== + dependencies: + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.0.3" + +"@octokit/plugin-paginate-rest@^2.16.8": + version "2.21.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" + integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== + dependencies: + "@octokit/types" "^6.40.0" + +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@^5.12.0": + version "5.16.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" + integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== + dependencies: + "@octokit/types" "^6.39.0" + deprecation "^2.3.1" + +"@octokit/plugin-retry@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz#ae625cca1e42b0253049102acd71c1d5134788fe" + integrity sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ== + dependencies: + "@octokit/types" "^6.0.3" + bottleneck "^2.15.3" + +"@octokit/plugin-throttling@^3.6.2": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz#a35cd05de22b2ef13fde45390d983ff8365b9a9e" + integrity sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow== + dependencies: + "@octokit/types" "^6.0.1" + bottleneck "^2.15.3" + +"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + dependencies: + "@octokit/types" "^6.0.3" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.16.1" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/rest@^18.12.0": + version "18.12.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== + dependencies: + "@octokit/core" "^3.5.1" + "@octokit/plugin-paginate-rest" "^2.16.8" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" + +"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + +"@rollup/pluginutils@^4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@storybook/addon-actions@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.0.tgz#a9e42089686f46ea4af210032bd8a392497ce28a" + integrity sha512-IRqLHAgc9I1a4OXkSOIIUc4NtEH5Uh3DzOMVJD+Gxt3vSJ4aINRGVN9MTOi+pfyv945BENKfXhpKo55oX19MLQ== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + dequal "^2.0.2" + lodash "^4.17.21" + polished "^4.2.2" + prop-types "^15.7.2" + react-inspector "^6.0.0" + telejson "^7.0.3" + ts-dedent "^2.0.0" + uuid-browser "^3.1.0" + +"@storybook/addon-backgrounds@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0.tgz#4f2344a08f49f9742e48dfa1d7a7dfde7829ed47" + integrity sha512-6/HY25DlYrNHlDBbQcEkK/8zXyE/qFPMc6UkWegxdWx67ZLsgVB/djYcNSBMpBKzTgsxWYNRsGealgUo3S110A== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + memoizerific "^1.11.3" + ts-dedent "^2.0.0" + +"@storybook/addon-controls@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.0.0.tgz#42d088a1a56a0f94afcba4ee4e4f72be093b2400" + integrity sha512-qowL2plF/EbCRpys2tP6HhJ2qZf3piOkvdMFHkO1xmMd2jZ5dZFnfJ0Qgzj7aBUyXknyzQF+rYh0AVdEDd0eHg== + dependencies: + "@storybook/blocks" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + lodash "^4.17.21" + ts-dedent "^2.0.0" + +"@storybook/addon-docs@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.0.0.tgz#062b7c42042460157a51e5b1000d2225658a4455" + integrity sha512-tC7tTttU4oO4QYeVkLGDtUzJbNOSRoLv+C5xy7GIL9cEQN2P7kvviJuPErbBEBvY4Slsl89Amg0b1pHK/D3jFQ== + dependencies: + "@babel/core" "^7.20.2" + "@babel/plugin-transform-react-jsx" "^7.19.0" + "@jest/transform" "^29.3.1" + "@mdx-js/react" "^2.1.5" + "@storybook/blocks" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/csf-plugin" "7.0.0" + "@storybook/csf-tools" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/mdx2-csf" next + "@storybook/node-logger" "7.0.0" + "@storybook/postinstall" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/react-dom-shim" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + fs-extra "^11.1.0" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-essentials@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.0.tgz#04ad2f81c8eba3c664320ad6d8cb02e10bd3093e" + integrity sha512-eKX/9BPqAnzY2XhnjX7T6iu2SGKCSwCQrbxZt5j+8K9QwcskpiQB7XAwZKTnKr7DVALDaYEeGsTFQKfNzaQW0Q== + dependencies: + "@storybook/addon-actions" "7.0.0" + "@storybook/addon-backgrounds" "7.0.0" + "@storybook/addon-controls" "7.0.0" + "@storybook/addon-docs" "7.0.0" + "@storybook/addon-highlight" "7.0.0" + "@storybook/addon-measure" "7.0.0" + "@storybook/addon-outline" "7.0.0" + "@storybook/addon-toolbars" "7.0.0" + "@storybook/addon-viewport" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@storybook/preview-api" "7.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-highlight@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.0.0.tgz#89845f0aaccaf9ea12439e0b5496c83f3d0b7ce9" + integrity sha512-lBrsf/NKGPwQU5oXpEevgYiCKPHw7dugjRAkFd62NWX3/bLGNRIBgqj3odx9f86nRBrzUHGvXs7r5NzoC5arNQ== + dependencies: + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0" + +"@storybook/addon-interactions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.0.tgz#78e2ec1fa2a8bd992dfa9485d6ef36a15a4391cb" + integrity sha512-sRCGNB+GaqujsBG3a+ljk0uVb8SRPFkLUUGJMUZb0R6OsF/uHf4W8SUHZrvN1OWJZjZ3TWLGA9k8Kt5AGeXj7A== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "7.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + jest-mock "^27.0.6" + polished "^4.2.2" + ts-dedent "^2.2.0" + +"@storybook/addon-links@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.0.tgz#11ef7e13031d2f0fba32caae83feef1ae3dbd48f" + integrity sha512-2sIu/G6Apsufexq+ZTrKW85UCMYVnz7l+BDk0eNOyMQ7cGkrCk1Wq9ax07eCYnQpd6xScoIe0BEzxCHa7oFKDw== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/router" "7.0.0" + "@storybook/types" "7.0.0" + prop-types "^15.7.2" + ts-dedent "^2.0.0" + +"@storybook/addon-measure@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.0.0.tgz#3e3e3fadbc7fe31a732d484dca9c2f1b4c15938e" + integrity sha512-h7crWGxiAxtzJsmbGi+C6jVVY+Lp64pHQl3rdeUwFbdnTXxG/rYlPpu4fW6lmCPyLhQauXcoxqbtkPd7T7HFMw== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/types" "7.0.0" + +"@storybook/addon-outline@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.0.0.tgz#e8f85beae6aed31cf1a3fb48187aaaa30c5fbf8a" + integrity sha512-OtbQHCxgbGU+QV5tshLYt/iqJUXfqExHC0WufEWVBeeEebtPZ6Z3oAGr9RKkN5KMtcngex4fVrEnsRGiZHnAvQ== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/types" "7.0.0" + ts-dedent "^2.0.0" + +"@storybook/addon-toolbars@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.0.tgz#f1e26b20f6d452214df94301082318a7e5d202e1" + integrity sha512-RfjZbXTRt5wC7BWdXfuhxh2SuQTjr6wHl+N3UlAmZkP0YL4BZufKS/ukFOY4Niu18/3lryLoUpRkDOEaYjWsRA== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + +"@storybook/addon-viewport@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.0.0.tgz#11c80fb61cf5e28e574aeec05b5350c66371f783" + integrity sha512-NcFFJmhtGZEaS8VH3UgxZHyPb7wiBZ1VU4JIOihFjGvnIN4uY/2LQV/a+xOKBorgR4fpb5zZvbZa6t3LB+3WsA== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + memoizerific "^1.11.3" + prop-types "^15.7.2" + +"@storybook/blocks@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.0.tgz#a6844f1ea8b5c89e5496ca7e2ae7981dadb7807b" + integrity sha512-12jSgVNu//LQz0rpXRdoxhU/sS01fxcXuYBGdzk6ycuV0gWrAScjG/GPzh6zNSsfXg4vgtA3sk37tehX6Te6yA== + dependencies: + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/components" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/csf" next + "@storybook/docs-tools" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + "@types/lodash" "^4.14.167" + color-convert "^2.0.1" + dequal "^2.0.2" + lodash "^4.17.21" + markdown-to-jsx "^7.1.8" + memoizerific "^1.11.3" + polished "^4.2.2" + react-colorful "^5.1.2" + telejson "^7.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/builder-manager@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.0.0.tgz#e53a58c26bf3f29c09c86d2640032e38f439c150" + integrity sha512-JEEsLJXLoYf2XCFVuXcaMdXXmHBxD7oTmmF9f1zASuGRfWUmVVIoWG179kV3Pzkh1OYd7QjHSw313kI5kWo+Bw== + dependencies: + "@fal-works/esbuild-plugin-global-externals" "^2.1.2" + "@storybook/core-common" "7.0.0" + "@storybook/manager" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@types/ejs" "^3.1.1" + "@types/find-cache-dir" "^3.2.1" + "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" + browser-assert "^1.2.1" + ejs "^3.1.8" + esbuild "^0.17.0" + esbuild-plugin-alias "^0.2.1" + express "^4.17.3" + find-cache-dir "^3.0.0" + fs-extra "^11.1.0" + process "^0.11.10" + util "^0.12.4" + +"@storybook/builder-vite@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-7.0.0.tgz#efbba39e349a39e52c2b60ac71d9942a9af99737" + integrity sha512-MXbgmvskciJaS9Um9OVQ9uks11saWlw601gpuvr/jIORm+5+TzFe2uhuqWKLaHTXSxMO2vsG7/ssLTJIP4q/jA== + dependencies: + "@storybook/channel-postmessage" "7.0.0" + "@storybook/channel-websocket" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/csf-plugin" "7.0.0" + "@storybook/mdx2-csf" next + "@storybook/node-logger" "7.0.0" + "@storybook/preview" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/types" "7.0.0" + browser-assert "^1.2.1" + es-module-lexer "^0.9.3" + express "^4.17.3" + fs-extra "^11.1.0" + glob "^8.1.0" + glob-promise "^6.0.2" + magic-string "^0.27.0" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + rollup "^2.25.0 || ^3.3.0" + +"@storybook/channel-postmessage@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.0.tgz#15f9218d0e3f19ba12c7f9e8a86c058d5f64f72d" + integrity sha512-Sy3oHL/xDRjUiHnM0ncnkbOE5pK3O72MjOoiLJX4FCI90w03KM4+F/N0eU2cXl6yXHuCyI5eJisEzQxTNsaJiw== + dependencies: + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.0.3" + +"@storybook/channel-postmessage@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.1.tgz#3323dc3d1aa912f1d97a144a3ad870fce33c8e7d" + integrity sha512-lIj0oDecEOSy6ZSNXBgWs0hqnjKudrDxuRyR0gAC5w5lZ8sMaj6er9caqaii61S4HRAcT5312RpA0V1J746hZw== + dependencies: + "@storybook/channels" "7.0.0-rc.1" + "@storybook/client-logger" "7.0.0-rc.1" + "@storybook/core-events" "7.0.0-rc.1" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.0.3" + +"@storybook/channel-websocket@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.0.tgz#46100ad20a591215ebded73dcf85b2d4652cced6" + integrity sha512-KIXxMtJjqaeo5iKB5734+Wx1Dm3/yM08kJXdx0LEFGguHcE3L0WOi04HFMtd9wjldE+VVM8KWxoO9AoRUH60nQ== + dependencies: + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/global" "^5.0.0" + telejson "^7.0.3" + +"@storybook/channels@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0.tgz#f3f047916b01b9ce09c76a0300352cfd8d53815b" + integrity sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ== + +"@storybook/channels@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0-rc.1.tgz#c60f4a9c82e899f1766f3979c97e7b884518e1b1" + integrity sha512-hBER6gliJxsrYEbWlXNljf0/1ybIlYCtaK0Vcgqdw/zmTLG6hEbBpVnxJh56T3mD0Beng8ro9D4EkcLZGQ1LlA== + +"@storybook/cli@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.0.tgz#fd64dd0edeabbad041ce3a9aff078bf04851105e" + integrity sha512-PdGAyKASFgnUED3TmdyrGh5X5sEA5DT7+YIhTmbectRXN+LmgQ3d/RoVN/21VRV8LTNZesJwJSCvhhBCrFkcZw== + dependencies: + "@babel/core" "^7.20.2" + "@babel/preset-env" "^7.20.2" + "@ndelangen/get-tarball" "^3.0.7" + "@storybook/codemod" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/core-server" "7.0.0" + "@storybook/csf-tools" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@storybook/telemetry" "7.0.0" + "@storybook/types" "7.0.0" + "@types/semver" "^7.3.4" + boxen "^5.1.2" + chalk "^4.1.0" + commander "^6.2.1" + cross-spawn "^7.0.3" + detect-indent "^6.1.0" + envinfo "^7.7.3" + execa "^5.0.0" + express "^4.17.3" + find-up "^5.0.0" + fs-extra "^11.1.0" + get-npm-tarball-url "^2.0.3" + get-port "^5.1.1" + giget "^1.0.0" + globby "^11.0.2" + jscodeshift "^0.14.0" + leven "^3.1.0" + prettier "^2.8.0" + prompts "^2.4.0" + puppeteer-core "^2.1.1" + read-pkg-up "^7.0.1" + semver "^7.3.7" + shelljs "^0.8.5" + simple-update-notifier "^1.0.0" + strip-json-comments "^3.0.1" + tempy "^1.0.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/client-logger@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.0.tgz#c5eeba62707654e517e9a0ede0e698c9058f434f" + integrity sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/client-logger@7.0.0-rc.1", "@storybook/client-logger@next": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.0-rc.1.tgz#bcaa95232be02b1952ca092d88d6fcfa322f4692" + integrity sha512-ltdDjd5wwq1xyFmA7Q7PT0Rx4Jrd0u8m0hnjnlou7qjKd7J+tqi8019oC4t5CSWRhl8lDg0QbI11LUM2SmkRMA== + dependencies: + "@storybook/global" "^5.0.0" + +"@storybook/codemod@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.0.tgz#0dcc824ee5ba20542fc3d5c1f944c3d7c993b922" + integrity sha512-RskA0EDTN2ANxcRyucApr5+Qf4zE0VK3xUCbWv4TZjJ57IDfVE3iEpLJ/mNsSES00sAtOeZX4cpcktvb2ajRJw== + dependencies: + "@babel/core" "~7.21.0" + "@babel/preset-env" "~7.20.2" + "@babel/types" "~7.21.2" + "@storybook/csf" next + "@storybook/csf-tools" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@storybook/types" "7.0.0" + cross-spawn "^7.0.3" + globby "^11.0.2" + jscodeshift "^0.14.0" + lodash "^4.17.21" + prettier "^2.8.0" + recast "^0.23.1" + +"@storybook/components@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.0.tgz#020384597ec2d26015dfe3d9fb0522fc122ca263" + integrity sha512-q2JIxTlXMcZceMWnHrpQwRO3E8fk02zKjsSZDYkd9vXxsr91Kg4NTgR7GMHSHN8ZLMQQwwi77Iw+wpWfTVHg6g== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + memoizerific "^1.11.3" + use-resize-observer "^9.1.0" + util-deprecate "^1.0.2" + +"@storybook/core-client@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.0.0.tgz#94e212ad05b2255e49f56f82104ec7701ad8233d" + integrity sha512-TK+VhLEryroXpp+A1BBfyW/0nFMwNtE64tQ6+R3zpd3QScZQsT19GolSIYudTHKhkFxaxEfgbG6R1S+7j75I2g== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/preview-api" "7.0.0" + +"@storybook/core-common@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.0.tgz#59fba04114718eeab88be4b1acf272e368fcaaa5" + integrity sha512-KEGzsmpRj7RPUoAQ+l9MypGHAFRvFq3RtnROuwMdwc5f4Lo0eCtfLRKRK2tTFNIFSMGaebjXBqGawUsoE7awiA== + dependencies: + "@storybook/node-logger" "7.0.0" + "@storybook/types" "7.0.0" + "@types/node" "^16.0.0" + "@types/pretty-hrtime" "^1.0.0" + chalk "^4.1.0" + esbuild "^0.17.0" + esbuild-register "^3.4.0" + file-system-cache "^2.0.0" + find-up "^5.0.0" + fs-extra "^11.1.0" + glob "^8.1.0" + glob-promise "^6.0.2" + handlebars "^4.7.7" + lazy-universal-dotenv "^4.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + ts-dedent "^2.0.0" + +"@storybook/core-events@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0.tgz#5f0bcc07f72d99856411a09a0f07aac17700aaff" + integrity sha512-pxzNmgEI1p90bHyAYABHDDtB2XM5pffq6CqIHboK6aSCux7Cdc16IjOYq6BJIhCKaaI+qQHaFLR4JfaFAsxwQQ== + +"@storybook/core-events@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0-rc.1.tgz#78e9f7bb0cb63fab417845b005ee702565574d1e" + integrity sha512-kp5p7U8H4X+XnJwzm3S9UM1vOREZ/bziQ34882FevPq7HaAQ5JI7p9gQO50JdTbDoe8gtn8cgfzxSkqO6FlY1w== + +"@storybook/core-server@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.0.tgz#56f24ec7f948673d67c1bf1e5dda563fe15f0f43" + integrity sha512-j4R0/vR8zP0jXda/PL0Gs9n6UoOKqb31Dx7QCMo07SJ4TRqnx10BKj8ZxiJuj31/Uxgq3Wk4cCzbeDwkj9Oo4A== + dependencies: + "@aw-web-design/x-default-browser" "1.4.88" + "@discoveryjs/json-ext" "^0.5.3" + "@storybook/builder-manager" "7.0.0" + "@storybook/core-common" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/csf" next + "@storybook/csf-tools" "7.0.0" + "@storybook/docs-mdx" next + "@storybook/global" "^5.0.0" + "@storybook/manager" "7.0.0" + "@storybook/node-logger" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/telemetry" "7.0.0" + "@storybook/types" "7.0.0" + "@types/detect-port" "^1.3.0" + "@types/node" "^16.0.0" + "@types/node-fetch" "^2.5.7" + "@types/pretty-hrtime" "^1.0.0" + "@types/semver" "^7.3.4" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + compression "^1.7.4" + detect-port "^1.3.0" + express "^4.17.3" + fs-extra "^11.1.0" + globby "^11.0.2" + ip "^2.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + open "^8.4.0" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + read-pkg-up "^7.0.1" + semver "^7.3.7" + serve-favicon "^2.5.0" + telejson "^7.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + watchpack "^2.2.0" + ws "^8.2.3" + +"@storybook/csf-plugin@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.0.0.tgz#85f910b031bb35f8a86dfb966e7b7c3a5aec2561" + integrity sha512-8V0C91YDLGer9+1JfONbt56u2U2kazjtzZXrznF6C0pRuzj/28qaoFZ7jegPybX9JOQOnwNbR4eOBUIVxlkBlw== + dependencies: + "@storybook/csf-tools" "7.0.0" + unplugin "^0.10.2" + +"@storybook/csf-tools@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.0.tgz#296094aab9d5f3e984c57979edbfd0da28bf1f64" + integrity sha512-JIslbrcectcZFJJAhaOBRxNLPkBWIugNsdOTVHk3BHIu2tgF8U5No6Y+grYYooVLUhbRKYKCzXo0Hs89pbLtUw== + dependencies: + "@babel/generator" "~7.21.1" + "@babel/parser" "~7.21.2" + "@babel/traverse" "~7.21.2" + "@babel/types" "~7.21.2" + "@storybook/csf" next + "@storybook/types" "7.0.0" + fs-extra "^11.1.0" + recast "^0.23.1" + ts-dedent "^2.0.0" + +"@storybook/csf@next": + version "0.0.2-next.10" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2-next.10.tgz#be71280e08bafae97134770ed9d0e5c75bc02f6c" + integrity sha512-m2PFgBP/xRIF85VrDhvesn9ktaD2pN3VUjvMqkAL/cINp/3qXsCyI81uw7N5VEOkQAbWrY2FcydnvEPDEdE8fA== + dependencies: + type-fest "^2.19.0" + +"@storybook/docs-mdx@next": + version "0.0.1-next.6" + resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.0.1-next.6.tgz#8fa2d0e30e7487101e7e286e593323b1ce750699" + integrity sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ== + +"@storybook/docs-tools@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.0.0.tgz#f9b135fdb1e4f1a69d80db8cff524e349ed503bd" + integrity sha512-4a9xecYhjRAYAzbmheF2nnZst3sWe/tmlOcspky/wGU3BR1Wy3u9b45q+r3wW/Nm9C8XHt0CRmkFwQKGme14iQ== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/core-common" "7.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/types" "7.0.0" + "@types/doctrine" "^0.0.3" + doctrine "^3.0.0" + lodash "^4.17.21" + +"@storybook/global@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" + integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== + +"@storybook/instrumenter@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0.tgz#6e56740fe0703908050f1086f5e7c8b69c996dd3" + integrity sha512-A7jBrV7VM3OxRgall8rpjagy3VC78A/OV1g1aYVVLpAF/+Odj+MeHHF179+fR6JBLnBgukNfsG7/ZHHGs0gL5Q== + dependencies: + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0" + +"@storybook/instrumenter@next": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0-rc.1.tgz#f22ae8d25243375b9e63f1266ae2669614c5c7d7" + integrity sha512-spihMm1Xb+lw1Vac5Uo+06m2jdDEhGGkM/nesXO3ZkYyNatC0IGXgU9NyELI6YCkhEprwK3MIXoo8in97Kjk+w== + dependencies: + "@storybook/channels" "7.0.0-rc.1" + "@storybook/client-logger" "7.0.0-rc.1" + "@storybook/core-events" "7.0.0-rc.1" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0-rc.1" + +"@storybook/manager-api@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.0.tgz#49195b6b9e6f28f6d7f7be08f43adb6892ed1991" + integrity sha512-A4OQXPUvaOT9mp+sXxq5CveIrq1luYDiK9H3k0eUqIgI8nS6+FonaLqouJchUMeYZ3CbHtKLMtkzLJKGfUGjjQ== + dependencies: + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/router" "7.0.0" + "@storybook/theming" "7.0.0" + "@storybook/types" "7.0.0" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + semver "^7.3.7" + store2 "^2.14.2" + telejson "^7.0.3" + ts-dedent "^2.0.0" + +"@storybook/manager@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.0.tgz#84fc1f8e6433b5147ded6834a138620ac68f419f" + integrity sha512-lMSM6PQvSLtq46JVaMq/xuxjOzZuD20DMcJzYnjFL3bkMjmkL2hHyzYjfs4BTI9i9nhPqXF/rZSwFGGG+ok9dw== + +"@storybook/mdx2-csf@next": + version "1.0.0-next.5" + resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.0.0-next.5.tgz#b43b403b3a0b2ebdb3603bf6d20d7319b407e199" + integrity sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ== + +"@storybook/node-logger@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.0.tgz#9d58cfb886a54d4997c7b0231bce78d8e8ab4f47" + integrity sha512-GjmHY9dSEFQ/BRsjhC63DsMr85Wfb/+R73ApJcGyc3sJDSfNil0JVgIsU7ZfCGV1ty0XhtvLd+jd+J1EAHi/dw== + dependencies: + "@types/npmlog" "^4.1.2" + chalk "^4.1.0" + npmlog "^5.0.1" + pretty-hrtime "^1.0.3" + +"@storybook/postinstall@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.0.0.tgz#4ff5da3047fc6ee23244d0b45c1d671aab026f84" + integrity sha512-ynG1uj5OFWw4MHo/XES1Ok7tIQf3eSmKn07QjiOe8AnS2sRAEAIxVM3JdX63qwD6oQaHesiNbc+S2UNYcbBA2g== + +"@storybook/preview-api@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.0.tgz#5b3bcf934bd9b96f4723ae329e28fc5534de7f2a" + integrity sha512-Q0IYYH1gOmx42ClYlQfQPjuERBWM3Ey+3DFsLQaraKXDdgZ9wN7jPNuS7wxuUNylT0oa/3WjxT7qNfiGw8JtBw== + dependencies: + "@storybook/channel-postmessage" "7.0.0" + "@storybook/channels" "7.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/core-events" "7.0.0" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/types" "7.0.0" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/preview-api@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.0-rc.1.tgz#d7db0ab3f262088a8b980cd6d6a4da4dccc19dfb" + integrity sha512-KrXMxCffKsXLsWb8ptXmLcbetZOPLbPpnKU43S1iHnvc5Jp89lrJBpztHZsUnuwGMJ1K5ajdZd+l/kGs75ru6Q== + dependencies: + "@storybook/channel-postmessage" "7.0.0-rc.1" + "@storybook/channels" "7.0.0-rc.1" + "@storybook/client-logger" "7.0.0-rc.1" + "@storybook/core-events" "7.0.0-rc.1" + "@storybook/csf" next + "@storybook/global" "^5.0.0" + "@storybook/types" "7.0.0-rc.1" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + slash "^3.0.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/preview@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.0.tgz#1f29a57f748a356c98ecc28b355216fe32d6d25e" + integrity sha512-6fSR9zt5fzEQE7iP538Txg2xVG5ndyzAYdSZfMB7LKPBWc8har6EgnpbX9OSPeoEf96/VFRGa/OSS7nV32xFHQ== + +"@storybook/react-dom-shim@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.0.tgz#9bb1e57cc60e70bb151879c1c615aca71671270f" + integrity sha512-oMCkYYVbDaNMolnzObYvHuWNLUGC87osJmjjT3l+zugVUETDM/oDrvbAyzDucCJDea2ZCfxQHxYkhY6R+MQxHA== + +"@storybook/react-vite@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-7.0.0.tgz#75684c089b3263e5ab37ca698e79b329c79db563" + integrity sha512-U02/QYQMtlRKelvGeQAx4wYASU339Q2ikgbjV21dHfLp1O5e7t5r/SpPBj9Q1K6t6FRklHo3FwbqKzuSwEG0JQ== + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript" "^0.2.1" + "@rollup/pluginutils" "^4.2.0" + "@storybook/builder-vite" "7.0.0" + "@storybook/react" "7.0.0" + "@vitejs/plugin-react" "^3.0.1" + ast-types "^0.14.2" + magic-string "^0.27.0" + react-docgen "6.0.0-alpha.3" + +"@storybook/react@7.0.0", "@storybook/react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.0.tgz#b409d926eb9c2e5a8f6400bb0c97d03055360cad" + integrity sha512-JvLpm9DsDdVPEfg0I5O7so9PgRJa4eqJH5bZLgdtUXyzLWj6d0woa1uz/BqDHEXk5AveNipmTcqxTOZ0SWw2jw== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/core-client" "7.0.0" + "@storybook/docs-tools" "7.0.0" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.0" + "@storybook/react-dom-shim" "7.0.0" + "@storybook/types" "7.0.0" + "@types/escodegen" "^0.0.6" + "@types/estree" "^0.0.51" + "@types/node" "^16.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + escodegen "^2.0.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^15.0.0" + ts-dedent "^2.0.0" + type-fest "^2.19.0" + util-deprecate "^1.0.2" + +"@storybook/router@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.0.tgz#dc346e1910d77e6de39a401c5b0745e0825fcf7a" + integrity sha512-TVJDDNd4s3No+6MCv5WxDZjb7eQH1CyLR7LifXMkj9pnGp9rUe0pfA4a+5Dze5ID/YPzdbsEiI1ijnuWSanY6Q== + dependencies: + "@storybook/client-logger" "7.0.0" + memoizerific "^1.11.3" + qs "^6.10.0" + +"@storybook/telemetry@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.0.tgz#c6761b955e3aad60addf7f4ed0c9881f89d92af3" + integrity sha512-eU3TTQT+lRl10h0+ncYruoCYx+uvqugRnkuZMD9HYh4eDrST+7/ktvFcVagsf02zERHja5KUFP7n8dadVt1uZg== + dependencies: + "@storybook/client-logger" "7.0.0" + "@storybook/core-common" "7.0.0" + chalk "^4.1.0" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^11.1.0" + isomorphic-unfetch "^3.1.0" + nanoid "^3.3.1" + read-pkg-up "^7.0.1" + +"@storybook/testing-library@^0.0.14-next.1": + version "0.0.14-next.1" + resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.0.14-next.1.tgz#c8e93aea7b2a4caba4f4b60b2195e4de589f8a3c" + integrity sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw== + dependencies: + "@storybook/client-logger" next + "@storybook/instrumenter" next + "@testing-library/dom" "^8.3.0" + "@testing-library/user-event" "^13.2.1" + ts-dedent "^2.2.0" + +"@storybook/theming@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.0.tgz#ddcb42dff76cd4fd03f44302534cc00ab5e4f5ee" + integrity sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A== + dependencies: + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@storybook/client-logger" "7.0.0" + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + +"@storybook/types@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0.tgz#01e0a6bdd94207ea2316dc126dd780438fcb1f2c" + integrity sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw== + dependencies: + "@storybook/channels" "7.0.0" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + file-system-cache "^2.0.0" + +"@storybook/types@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0-rc.1.tgz#83f790a25ea0a077658744ccee2332b3cc6b4888" + integrity sha512-wWFGKzXXD04j52iHTE7mxCz0zkJH0J/wh7pSsYAxUgyQaYHIIqLZUb9PLWVWf1v6RiSSa5k0HXhFWnfBOJeVIQ== + dependencies: + "@storybook/channels" "7.0.0-rc.1" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + file-system-cache "^2.0.0" + +"@testing-library/dom@^8.3.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" + integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/user-event@^13.2.1": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/aria-query@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" + integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + +"@types/babel__core@^7.0.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/command-line-args@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + +"@types/command-line-usage@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064" + integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg== + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/detect-port@^1.3.0": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.2.tgz#8c06a975e472803b931ee73740aeebd0a2eb27ae" + integrity sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g== + +"@types/doctrine@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" + integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== + +"@types/ejs@^3.1.1": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.2.tgz#75d277b030bc11b3be38c807e10071f45ebc78d9" + integrity sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g== + +"@types/escodegen@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" + integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.7.0": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/find-cache-dir@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" + integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== + +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/glob@^8.0.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== + dependencies: + "@types/minimatch" "^5.1.2" + "@types/node" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/lodash@^4.14.167": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + +"@types/mdx@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" + integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== + +"@types/mime-types@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" + integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimatch@*", "@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node-fetch@^2.5.10", "@types/node-fetch@^2.5.7": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*", "@types/node@^18.15.0": + version "18.15.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" + integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== + +"@types/node@^16.0", "@types/node@^16.0.0": + version "16.18.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.14.tgz#5465ce598486a703caddbefe8603f8a2cffa3461" + integrity sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/npmlog@^4.1.2": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" + integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pretty-hrtime@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" + integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/qs@*", "@types/qs@^6.9.5": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react@>=16": + version "18.0.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" + integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^18.0.34": + version "18.0.34" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.34.tgz#e553444a578f023e6e1ac499514688fb80b0a984" + integrity sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/semver@^7.3.4": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + +"@types/serve-static@*": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" + integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== + dependencies: + "@types/yargs-parser" "*" + +"@vitejs/plugin-react@^3.0.1", "@vitejs/plugin-react@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" + integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== + dependencies: + "@babel/core" "^7.20.12" + "@babel/plugin-transform-react-jsx-self" "^7.18.6" + "@babel/plugin-transform-react-jsx-source" "^7.19.6" + magic-string "^0.27.0" + react-refresh "^0.14.0" + +"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": + version "3.0.0-rc.15" + resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" + integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== + dependencies: + tslib "^2.4.0" + +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.4.1, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^5.0.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +author-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" + integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== + +auto@^10.3.0: + version "10.43.0" + resolved "https://registry.yarnpkg.com/auto/-/auto-10.43.0.tgz#11127815fd6f02003cf4e4675279f8a1666824d8" + integrity sha512-dZTGoIhzJa6vP4QBtBc4xPjscs2NyoMTeIht4rBPk0hz6NySev3Wrp1UReCwrl/gYx4cuSyjNfYaG0gJtnfEqQ== + dependencies: + "@auto-it/core" "10.43.0" + "@auto-it/npm" "10.43.0" + "@auto-it/released" "10.43.0" + "@auto-it/version-file" "10.43.0" + await-to-js "^3.0.0" + chalk "^4.0.0" + command-line-application "^0.10.1" + endent "^2.1.0" + module-alias "^2.2.2" + signale "^1.4.0" + terminal-link "^2.1.1" + tslib "2.1.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +await-to-js@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f" + integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + +better-opn@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== + dependencies: + open "^7.0.3" + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bottleneck@^2.15.3: + version "2.19.5" + resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" + integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== + +boxen@^5.0.1, boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== + dependencies: + pako "~0.2.0" + +browserslist@^4.21.3, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bundle-require@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.1.tgz#2cc1ad76428043d15e0e7f30990ee3d5404aa2e3" + integrity sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ== + dependencies: + load-tsconfig "^0.2.3" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +c8@^7.6.0: + version "7.13.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.13.0.tgz#a2a70a851278709df5a9247d62d7f3d4bcb5f2e4" + integrity sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" + +cac@^6.7.12: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001449: + version "1.0.30001464" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" + integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== + +chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.1, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-table3@^0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-application@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/command-line-application/-/command-line-application-0.10.1.tgz#9ee0db7e41fe69f532eef0747e9ae958c0d348ae" + integrity sha512-PWZ4nRkz09MbBRocqEe/Fil3RjTaMNqw0didl1n/i3flDcw/vecVfvsw3r+ZHhGs4BOuW7sk3cEYSdfM3Wv5/Q== + dependencies: + "@types/command-line-args" "^5.0.0" + "@types/command-line-usage" "^5.0.1" + chalk "^2.4.1" + command-line-args "^5.1.1" + command-line-usage "^6.0.0" + meant "^1.0.1" + remove-markdown "^0.3.0" + tslib "1.10.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.0.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-js-compat@^3.25.1: + version "3.29.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.0.tgz#1b8d9eb4191ab112022e7f6364b99b65ea52f528" + integrity sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ== + dependencies: + browserslist "^4.21.5" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +debug@2.6.9, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-extend@^0.6.0, deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + +default-browser-id@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +defu@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" + integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +dequal@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== + dependencies: + execa "^5.1.1" + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dotenv-expand@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + +dotenv@^16.0.0: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + +dotenv@^8.0.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +duplexify@^3.5.0, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.284: + version "1.4.327" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.327.tgz#288b106518cfed0a60f7de8a0480432a9be45477" + integrity sha512-DIk2H4g/3ZhjgiABJjVdQvUdMlSABOsjeCm6gmUzIdKxAuFrGiJ8QXMm3i09grZdDBMC/d8MELMrdwYRC0+YHg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +endent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" + integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.5" + +enquirer@^2.3.4: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +env-ci@^5.0.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.5.0.tgz#43364e3554d261a586dec707bc32be81112b545f" + integrity sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A== + dependencies: + execa "^5.0.0" + fromentries "^1.3.2" + java-properties "^1.0.0" + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-module-lexer@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + +esbuild-plugin-alias@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" + integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== + +esbuild-register@^3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" + integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== + dependencies: + debug "^4.3.4" + +esbuild@^0.16.14: + version "0.16.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" + integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== + optionalDependencies: + "@esbuild/android-arm" "0.16.17" + "@esbuild/android-arm64" "0.16.17" + "@esbuild/android-x64" "0.16.17" + "@esbuild/darwin-arm64" "0.16.17" + "@esbuild/darwin-x64" "0.16.17" + "@esbuild/freebsd-arm64" "0.16.17" + "@esbuild/freebsd-x64" "0.16.17" + "@esbuild/linux-arm" "0.16.17" + "@esbuild/linux-arm64" "0.16.17" + "@esbuild/linux-ia32" "0.16.17" + "@esbuild/linux-loong64" "0.16.17" + "@esbuild/linux-mips64el" "0.16.17" + "@esbuild/linux-ppc64" "0.16.17" + "@esbuild/linux-riscv64" "0.16.17" + "@esbuild/linux-s390x" "0.16.17" + "@esbuild/linux-x64" "0.16.17" + "@esbuild/netbsd-x64" "0.16.17" + "@esbuild/openbsd-x64" "0.16.17" + "@esbuild/sunos-x64" "0.16.17" + "@esbuild/win32-arm64" "0.16.17" + "@esbuild/win32-ia32" "0.16.17" + "@esbuild/win32-x64" "0.16.17" + +esbuild@^0.17.0: + version "0.17.14" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.14.tgz#d61a22de751a3133f3c6c7f9c1c3e231e91a3245" + integrity sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw== + optionalDependencies: + "@esbuild/android-arm" "0.17.14" + "@esbuild/android-arm64" "0.17.14" + "@esbuild/android-x64" "0.17.14" + "@esbuild/darwin-arm64" "0.17.14" + "@esbuild/darwin-x64" "0.17.14" + "@esbuild/freebsd-arm64" "0.17.14" + "@esbuild/freebsd-x64" "0.17.14" + "@esbuild/linux-arm" "0.17.14" + "@esbuild/linux-arm64" "0.17.14" + "@esbuild/linux-ia32" "0.17.14" + "@esbuild/linux-loong64" "0.17.14" + "@esbuild/linux-mips64el" "0.17.14" + "@esbuild/linux-ppc64" "0.17.14" + "@esbuild/linux-riscv64" "0.17.14" + "@esbuild/linux-s390x" "0.17.14" + "@esbuild/linux-x64" "0.17.14" + "@esbuild/netbsd-x64" "0.17.14" + "@esbuild/openbsd-x64" "0.17.14" + "@esbuild/sunos-x64" "0.17.14" + "@esbuild/win32-arm64" "0.17.14" + "@esbuild/win32-ia32" "0.17.14" + "@esbuild/win32-x64" "0.17.14" + +esbuild@^0.17.6: + version "0.17.11" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.11.tgz#9f3122643b21d7e7731e42f18576c10bfa28152b" + integrity sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg== + optionalDependencies: + "@esbuild/android-arm" "0.17.11" + "@esbuild/android-arm64" "0.17.11" + "@esbuild/android-x64" "0.17.11" + "@esbuild/darwin-arm64" "0.17.11" + "@esbuild/darwin-x64" "0.17.11" + "@esbuild/freebsd-arm64" "0.17.11" + "@esbuild/freebsd-x64" "0.17.11" + "@esbuild/linux-arm" "0.17.11" + "@esbuild/linux-arm64" "0.17.11" + "@esbuild/linux-ia32" "0.17.11" + "@esbuild/linux-loong64" "0.17.11" + "@esbuild/linux-mips64el" "0.17.11" + "@esbuild/linux-ppc64" "0.17.11" + "@esbuild/linux-riscv64" "0.17.11" + "@esbuild/linux-s390x" "0.17.11" + "@esbuild/linux-x64" "0.17.11" + "@esbuild/netbsd-x64" "0.17.11" + "@esbuild/openbsd-x64" "0.17.11" + "@esbuild/sunos-x64" "0.17.11" + "@esbuild/win32-arm64" "0.17.11" + "@esbuild/win32-ia32" "0.17.11" + "@esbuild/win32-x64" "0.17.11" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== + dependencies: + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.2.0" + c8 "^7.6.0" + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + +fast-glob@^3.1.1, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +fetch-retry@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.4.tgz#06e8e4533030bf6faa00ffbb9450cb9264c23c12" + integrity sha512-LXcdgpdcVedccGg0AZqg+S8lX/FCdwXD92WNZ5k5qsb0irRhSFsBOpcJt7oevyqT2/C2nEE0zSFNdBEpj3YOSw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-system-cache@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.0.2.tgz#6b51d58c5786302146fa883529e0d7f88896e948" + integrity sha512-lp4BHO4CWqvRyx88Tt3quZic9ZMf4cJyquYq7UI8sH42Bm2ArlBBjKQAalZOo+UfaBassb7X123Lik5qZ/tSAA== + dependencies: + fs-extra "^11.1.0" + ramda "^0.28.0" + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flow-parser@0.*: + version "0.201.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.201.0.tgz#d2005d4dae6fddf60d30f9ae0fb49a13c9c51cfe" + integrity sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@^2.5.3: + version "2.13.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.13.1.tgz#1bf2b24136cca154846af16752dc29e8fa506f2a" + integrity sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fromentries@^1.2.0, fromentries@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-monorepo-packages@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz#3eee88d30b11a5f65955dec6ae331958b2a168e4" + integrity sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ== + dependencies: + globby "^7.1.1" + load-json-file "^4.0.0" + +get-npm-tarball-url@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz#67dff908d699e9e2182530ae6e939a93e5f8dfdb" + integrity sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +giget@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.2.tgz#f99a49cb0ff85479c8c3612cdc7ca27f2066e818" + integrity sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A== + dependencies: + colorette "^2.0.19" + defu "^6.1.2" + https-proxy-agent "^5.0.1" + mri "^1.2.0" + node-fetch-native "^1.0.2" + pathe "^1.1.0" + tar "^6.1.13" + +github-slugger@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== + +gitlog@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gitlog/-/gitlog-4.0.4.tgz#8da6c08748dc290eb6c2fc11e3c505fb73715564" + integrity sha512-jeY2kO7CVyTa6cUM7ZD2ZxIyBkna1xvW2esV/3o8tbhiUneX1UBQCH4D9aMrHgGiohBjyXbuZogyjKXslnY5Yg== + dependencies: + debug "^4.1.1" + tslib "^1.14.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-promise@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + +glob-promise@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.2.tgz#7c7f2a223e3aaa8f7bd7ff5f24d0ab2352724b31" + integrity sha512-Ni2aDyD1ekD6x8/+K4hDriRDbzzfuK4yKpqSymJ4P7IxbtARiOOuU+k40kbHM0sLIlbf1Qh0qdMkAHMZYE6XJQ== + dependencies: + "@types/glob" "^8.0.0" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.1, globby@^11.0.2, globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +gunzip-maybe@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" + integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== + dependencies: + browserify-zlib "^0.1.4" + is-deflate "^1.0.0" + is-gzip "^1.0.0" + peek-stream "^1.1.0" + pumpify "^1.3.3" + through2 "^2.0.3" + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-tags@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +io-ts@^2.1.2: + version "2.2.20" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.20.tgz#be42b75f6668a2c44f706f72ee6e4c906777c7f5" + integrity sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA== + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-arguments@^1.0.4, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-deflate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" + integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-object@5.0.0, is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + 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" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-reports@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +java-properties@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" + integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== + +jest-haste-map@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" + integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== + dependencies: + "@jest/types" "^29.5.0" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.5.0" + jest-worker "^29.5.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-mock@^27.0.6: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + +jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" + integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== + dependencies: + "@types/node" "*" + jest-util "^29.5.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joycon@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lazy-universal-dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" + integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== + dependencies: + app-root-dir "^1.0.2" + dotenv "^16.0.0" + dotenv-expand "^10.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +load-tsconfig@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.3.tgz#08af3e7744943caab0c75f8af7f1703639c3ef1f" + integrity sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.get@^4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + +markdown-to-jsx@^7.1.8: + version "7.1.9" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.9.tgz#1ffae0cda07c189163d273bd57a5b8f8f8745586" + integrity sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA== + +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + +meant@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== + dependencies: + map-or-similar "^1.5.0" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.25, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.4.tgz#7d0d97434b6a19f59c5c3221698b48bbf3b2cd06" + integrity sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.4: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-alias@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" + integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== + +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.1, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nested-error-stacks@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" + integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-dir@^0.1.10, node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch-native@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz#de3651399fda89a1a7c0bf6e7c4e9c239e8d0697" + integrity sha512-KIkvH1jl6b3O7es/0ShyCgWLcfXxlBrLBbP3rOr23WArC66IMcU4DeZEeYEOwnopYhawLTn7/y+YtmASe8DFVQ== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.0.1, object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +objectorarray@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" + integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-author@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" + integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw== + dependencies: + author-regex "^1.0.0" + +parse-github-url@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" + integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.5, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.0.tgz#e2e13f6c62b31a3289af4ba19886c230f295ec03" + integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== + +peek-stream@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" + integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== + dependencies: + buffer-from "^1.0.0" + duplexify "^3.5.0" + through2 "^2.0.3" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-conf@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g== + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +polished@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== + dependencies: + "@babel/runtime" "^7.17.8" + +postcss-load-config@^3.0.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss@^8.4.21: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@^2.3.1, prettier@^2.8.0: + version "2.8.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" + integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== + +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + +pretty-ms@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.4.0, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +puppeteer-core@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-2.1.1.tgz#e9b3fbc1237b4f66e25999832229e9db3e0b90ed" + integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== + dependencies: + "@types/mime-types" "^2.1.0" + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + mime-types "^2.1.25" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.10.0: + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" + integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8, rc@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-colorful@^5.1.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" + integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== + +react-docgen-typescript@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== + +react-docgen@6.0.0-alpha.3: + version "6.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-6.0.0-alpha.3.tgz#4d8a4916b45de4aadb90eb5f3a6f923edf447928" + integrity sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA== + dependencies: + "@babel/core" "^7.7.5" + "@babel/generator" "^7.12.11" + ast-types "^0.14.2" + commander "^2.19.0" + doctrine "^3.0.0" + estree-to-babel "^3.1.0" + neo-async "^2.6.1" + node-dir "^0.1.10" + resolve "^1.17.0" + strip-indent "^3.0.0" + +react-dom@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-element-to-jsx-string@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" + integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== + dependencies: + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "18.1.0" + +react-inspector@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d" + integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg== + +react-is@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +recast@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.1.tgz#ee415a5561d2f99f02318ea8db81ad3a2267a6ff" + integrity sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g== + dependencies: + assert "^2.0.0" + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" + integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +registry-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== + dependencies: + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^4.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" + +remark-slug@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== + dependencies: + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" + +remove-markdown@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98" + integrity sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requireg@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" + integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== + dependencies: + nested-error-stacks "~2.0.1" + rc "~1.2.7" + resolve "~1.7.1" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +"rollup@^2.25.0 || ^3.3.0", rollup@^3.10.0, rollup@^3.2.5: + version "3.19.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.19.1.tgz#2b3a31ac1ff9f3afab2e523fa687fef5b0ee20fc" + integrity sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.0.0, semver@^7.3.7: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" + integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== + dependencies: + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" + integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== + dependencies: + chalk "^2.3.2" + figures "^2.0.0" + pkg-conf "^2.1.0" + +simple-update-notifier@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@^0.5.16, source-map-support@^0.5.17: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +store2@^2.14.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== + +storybook@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.0.0.tgz#ab80e46c01e341a5a557fe7aecc7f8b458b432f1" + integrity sha512-sZamiYhd2lzQ2A+UIlkUlc6/i8TiNCcCUBmpTiN6qlbBPId5Gji1XdDTqgiuaKLTFnLU/1DBTS1a2ndGI1fIKw== + dependencies: + "@storybook/cli" "7.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.padend@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +sucrase@^3.20.3: + version "3.29.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" + integrity sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +synchronous-promise@^2.0.15: + version "2.0.17" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^6.1.13: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +telejson@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.0.4.tgz#2e88c0af9566b4f687622ed490588312b2bec186" + integrity sha512-J4QEuCnYGXAI9KSN7RXK0a0cOW2ONpjc4IQbInGZ6c3stvplLAYyZjTnScrRd8deXVjNCFV1wXcLC7SObDuQYA== + dependencies: + memoizerific "^1.11.3" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempy@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" + integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-dedent@^2.0.0, ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-node@^9: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tslib@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tslib@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2, tslib@^2.0.1, tslib@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tsup@^6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.6.3.tgz#f6f975a8656cfd9b8e115f33b1aa0f0fd4df78e2" + integrity sha512-OLx/jFllYlVeZQ7sCHBuRVEQBBa1tFbouoc/gbYakyipjVQdWy/iQOvmExUA/ewap9iQ7tbJf9pW0PgcEFfJcQ== + dependencies: + bundle-require "^4.0.0" + cac "^6.7.12" + chokidar "^3.5.1" + debug "^4.3.1" + esbuild "^0.17.6" + execa "^5.0.0" + globby "^11.0.3" + joycon "^3.0.1" + postcss-load-config "^3.0.1" + resolve-from "^5.0.0" + rollup "^3.2.5" + source-map "0.8.0-beta.0" + sucrase "^3.20.3" + tree-kill "^1.2.2" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.1, type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript-memoize@^1.0.0-alpha.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.1.tgz#02737495d5df6ebf72c07ba0d002e8f4cf5ccfa0" + integrity sha512-GQ90TcKpIH4XxYTI2F98yEQYZgjNMOGPpOgdjIBhaLaWji5HPWlRnZ4AeA1hfBxtY7bCGDJsqDDHk/KaHOl5bA== + +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + 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" + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unplugin@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.10.2.tgz#0f7089c3666f592cc448d746e39e7f41e9afb01a" + integrity sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA== + dependencies: + acorn "^8.8.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.5" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +url-join@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + +use-resize-observer@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" + integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== + dependencies: + "@juggle/resize-observer" "^3.3.1" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + integrity sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ== + dependencies: + os-homedir "^1.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0, util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0" + integrity sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg== + dependencies: + esbuild "^0.16.14" + postcss "^8.4.21" + resolve "^1.22.1" + rollup "^3.10.0" + optionalDependencies: + fsevents "~2.3.2" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + 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" + is-typed-array "^1.1.10" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^8.2.3: + version "8.12.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" + integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zx@^1.14.1: + version "1.15.2" + resolved "https://registry.yarnpkg.com/zx/-/zx-1.15.2.tgz#8821c30962e97347b62c5b7cbd5c9706ea776211" + integrity sha512-UvltPAK8alQ7YXxOZDWCR3m4LppUmOpB3ZpJvc4NL0YEZDikLhC9jd1pnB4Fze/4OcmF3Xff6kK+6DKeqH1efA== + dependencies: + "@types/node" "^16.0" + "@types/node-fetch" "^2.5.10" + chalk "^4.1.1" + node-fetch "^2.6.1" + which "^2.0.2" From d9bf85ad3dc49304725ba293b7d2596e9efa9bc9 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 08:57:30 +0200 Subject: [PATCH 002/430] project setup --- README.md | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 3d7717be9740..f4cd8f188bc7 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,5 @@ - - -# Storybook Addon Kit ([demo](https://main--601ada52c3d4040021afdc30.chromatic.com)) - -Simplify the creation of Storybook addons - -- πŸ“ Live-editing in development -- βš›οΈ React/JSX support -- πŸ“¦ Transpiling and bundling with [tsup](https://tsup.egoist.dev/) -- 🏷 Plugin metadata -- 🚒 Release management with [Auto](https://github.com/intuit/auto) -- 🧺 Boilerplate and sample code -- πŸ›„ ESM support -- πŸ›‚ TypeScript by default with option to eject to JS - -### Migrating from Storybook 6.x to 7 - -Note, if you're looking to upgrade your addon from Storybook 6.x to 7, please refer to the [migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#70-addon-authors-changes). The major changes are: - -- `register.js` was removed -- No more default export from `@storybook/addons` -- `@storybook/api` has been split into `@storybook/preview-api` and `@storybook/manager-api` - -Skip this section if you're bootstrapping a new addon. - -## Getting Started - -Click the **Use this template** button to get started. - -![](https://user-images.githubusercontent.com/321738/125058439-8d9ef880-e0aa-11eb-9211-e6d7be812959.gif) - -Clone your repository and install dependencies. - -```sh -yarn -``` - - +# Storybook Addon Addon Onboarding +Storybook Addon Onboarding - Introduces a new onboarding experience ### Development scripts From ac32e708c068df7d447809b8b221e8feb0de85cb Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 09:05:32 +0200 Subject: [PATCH 003/430] Init Addon Onboarding --- README.md | 33 +----------- src/Panel.tsx | 36 ------------- src/Tab.tsx | 15 ------ src/Tool.tsx | 38 ------------- src/components/List.tsx | 95 --------------------------------- src/components/PanelContent.tsx | 76 -------------------------- src/components/TabContent.tsx | 47 ---------------- src/constants.ts | 11 ---- src/manager.ts | 41 +------------- src/preview.ts | 20 +------ src/withGlobals.ts | 61 --------------------- src/withRoundTrip.ts | 51 ------------------ 12 files changed, 3 insertions(+), 521 deletions(-) delete mode 100644 src/Panel.tsx delete mode 100644 src/Tab.tsx delete mode 100644 src/Tool.tsx delete mode 100644 src/components/List.tsx delete mode 100644 src/components/PanelContent.tsx delete mode 100644 src/components/TabContent.tsx delete mode 100644 src/constants.ts delete mode 100644 src/withGlobals.ts delete mode 100644 src/withRoundTrip.ts diff --git a/README.md b/README.md index f4cd8f188bc7..d4ac3cbfc6b5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Storybook Addon Addon Onboarding + Storybook Addon Onboarding - Introduces a new onboarding experience ### Development scripts @@ -6,38 +7,6 @@ Storybook Addon Onboarding - Introduces a new onboarding experience - `yarn start` runs babel in watch mode and starts Storybook - `yarn build` build and package your addon code -### Switch from TypeScript to JavaScript - -Don't want to use TypeScript? We offer a handy eject command: `yarn eject-ts` - -This will convert all code to JS. It is a destructive process, so we recommended running this before you start writing any code. - -## What's included? - -![Demo](https://user-images.githubusercontent.com/42671/107857205-e7044380-6dfa-11eb-8718-ad02e3ba1a3f.gif) - -The addon code lives in `src`. It demonstrates all core addon related concepts. The three [UI paradigms](https://storybook.js.org/docs/react/addons/addon-types#ui-based-addons) - -- `src/Tool.tsx` -- `src/Panel.tsx` -- `src/Tab.tsx` - -Which, along with the addon itself, are registered in `src/manager.ts`. - -Managing State and interacting with a story: - -- `src/withGlobals.ts` & `src/Tool.tsx` demonstrates how to use `useGlobals` to manage global state and modify the contents of a Story. -- `src/withRoundTrip.ts` & `src/Panel.tsx` demonstrates two-way communication using channels. -- `src/Tab.tsx` demonstrates how to use `useParameter` to access the current story's parameters. - -Your addon might use one or more of these patterns. Feel free to delete unused code. Update `src/manager.ts` and `src/preview.ts` accordingly. - -Lastly, configure you addon name in `src/constants.ts`. - -### Metadata - -Storybook addons are listed in the [catalog](https://storybook.js.org/addons) and distributed via npm. The catalog is populated by querying npm's registry for Storybook-specific metadata in `package.json`. This project has been configured with sample data. Learn more about available options in the [Addon metadata docs](https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata). - ## Release Management ### Setup diff --git a/src/Panel.tsx b/src/Panel.tsx deleted file mode 100644 index 76c7bcde67fb..000000000000 --- a/src/Panel.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; -import { useAddonState, useChannel } from "@storybook/manager-api"; -import { AddonPanel } from "@storybook/components"; -import { ADDON_ID, EVENTS } from "./constants"; -import { PanelContent } from "./components/PanelContent"; - -interface PanelProps { - active: boolean; -} - -export const Panel: React.FC = (props) => { - // https://storybook.js.org/docs/react/addons/addons-api#useaddonstate - const [results, setState] = useAddonState(ADDON_ID, { - danger: [], - warning: [], - }); - - // https://storybook.js.org/docs/react/addons/addons-api#usechannel - const emit = useChannel({ - [EVENTS.RESULT]: (newResults) => setState(newResults), - }); - - return ( - - { - emit(EVENTS.REQUEST); - }} - clearData={() => { - emit(EVENTS.CLEAR); - }} - /> - - ); -}; diff --git a/src/Tab.tsx b/src/Tab.tsx deleted file mode 100644 index 49c7e27a5f65..000000000000 --- a/src/Tab.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import { useParameter } from "@storybook/manager-api"; -import { PARAM_KEY } from "./constants"; -import { TabContent } from "./components/TabContent"; - -interface TabProps { - active: boolean; -} - -export const Tab: React.FC = ({ active }) => { - // https://storybook.js.org/docs/react/addons/addons-api#useparameter - const paramData = useParameter(PARAM_KEY, ""); - - return active ? : null; -}; diff --git a/src/Tool.tsx b/src/Tool.tsx deleted file mode 100644 index 4385d57e3d53..000000000000 --- a/src/Tool.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { memo, useCallback, useEffect } from "react"; -import { useGlobals, useStorybookApi } from "@storybook/manager-api"; -import { Icons, IconButton } from "@storybook/components"; -import { ADDON_ID, PARAM_KEY, TOOL_ID } from "./constants"; - -export const Tool = memo(function MyAddonSelector() { - const [globals, updateGlobals] = useGlobals(); - const api = useStorybookApi(); - - const isActive = [true, "true"].includes(globals[PARAM_KEY]); - - const toggleMyTool = useCallback(() => { - updateGlobals({ - [PARAM_KEY]: !isActive, - }); - }, [isActive]); - - useEffect(() => { - api.setAddonShortcut(ADDON_ID, { - label: "Toggle Measure [O]", - defaultShortcut: ["O"], - actionName: "outline", - showInMenu: false, - action: toggleMyTool, - }); - }, [toggleMyTool, api]); - - return ( - - - - ); -}); diff --git a/src/components/List.tsx b/src/components/List.tsx deleted file mode 100644 index d3d6cfa81243..000000000000 --- a/src/components/List.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import React, { Fragment, useState } from "react"; -import { styled, themes, convert } from "@storybook/theming"; -import { Icons, IconsProps } from "@storybook/components"; - -const ListWrapper = styled.ul({ - listStyle: "none", - fontSize: 14, - padding: 0, - margin: 0, -}); - -const Wrapper = styled.div({ - display: "flex", - width: "100%", - borderBottom: `1px solid ${convert(themes.normal).appBorderColor}`, - "&:hover": { - background: convert(themes.normal).background.hoverable, - }, -}); - -const Icon = styled(Icons)({ - height: 10, - width: 10, - minWidth: 10, - color: convert(themes.normal).color.mediumdark, - marginRight: 10, - transition: "transform 0.1s ease-in-out", - alignSelf: "center", - display: "inline-flex", -}); - -const HeaderBar = styled.div({ - padding: convert(themes.normal).layoutMargin, - paddingLeft: convert(themes.normal).layoutMargin - 3, - background: "none", - color: "inherit", - textAlign: "left", - cursor: "pointer", - borderLeft: "3px solid transparent", - width: "100%", - - "&:focus": { - outline: "0 none", - borderLeft: `3px solid ${convert(themes.normal).color.secondary}`, - }, -}); - -const Description = styled.div({ - padding: convert(themes.normal).layoutMargin, - marginBottom: convert(themes.normal).layoutMargin, - fontStyle: "italic", -}); - -type Item = { - title: string; - description: string; -}; - -interface ListItemProps { - item: Item; -} - -export const ListItem: React.FC = ({ item }) => { - const [open, onToggle] = useState(false); - - return ( - - - onToggle(!open)} role="button"> - - {item.title} - - - {open ? {item.description} : null} - - ); -}; - -interface ListProps { - items: Item[]; -} - -export const List: React.FC = ({ items }) => ( - - {items.map((item, idx) => ( - - ))} - -); diff --git a/src/components/PanelContent.tsx b/src/components/PanelContent.tsx deleted file mode 100644 index bf3db52bb804..000000000000 --- a/src/components/PanelContent.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { Fragment } from "react"; -import { styled, themes, convert } from "@storybook/theming"; -import { TabsState, Placeholder, Button } from "@storybook/components"; -import { List } from "./List"; - -export const RequestDataButton = styled(Button)({ - marginTop: "1rem", -}); - -type Results = { - danger: any[]; - warning: any[]; -}; - -interface PanelContentProps { - results: Results; - fetchData: () => void; - clearData: () => void; -} - -/** - * Checkout https://github.com/storybookjs/storybook/blob/next/code/addons/jest/src/components/Panel.tsx - * for a real world example - */ -export const PanelContent: React.FC = ({ - results, - fetchData, - clearData, -}) => ( - -
- - - Addons can gather details about how a story is rendered. This is panel - uses a tab pattern. Click the button below to fetch data for the other - two tabs. - - - - Request data - - - - Clear data - - - -
-
- -
-
- -
-
-); diff --git a/src/components/TabContent.tsx b/src/components/TabContent.tsx deleted file mode 100644 index 346856328432..000000000000 --- a/src/components/TabContent.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from "react"; -import { styled } from "@storybook/theming"; -import { H1, Link, Code } from "@storybook/components"; - -const TabWrapper = styled.div(({ theme }) => ({ - background: theme.background.content, - padding: "4rem 20px", - minHeight: "100vh", - boxSizing: "border-box", -})); - -const TabInner = styled.div({ - maxWidth: 768, - marginLeft: "auto", - marginRight: "auto", -}); - -interface TabContentProps { - code: string; -} - -export const TabContent: React.FC = ({ code }) => ( - - -

My Addon

-

- Your addon can create a custom tab in Storybook. For example, the - official{" "} - - @storybook/addon-docs - {" "} - uses this pattern. -

-

- You have full control over what content is being rendered here. You can - use components from{" "} - - @storybook/components - {" "} - to match the look and feel of Storybook, for example the{" "} - <Code /> component below. Or build a completely - custom UI. -

- {code} -
-
-); diff --git a/src/constants.ts b/src/constants.ts deleted file mode 100644 index d7ef8e45875a..000000000000 --- a/src/constants.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const ADDON_ID = "storybook/my-addon"; -export const TOOL_ID = `${ADDON_ID}/tool`; -export const PANEL_ID = `${ADDON_ID}/panel`; -export const TAB_ID = `${ADDON_ID}/tab`; -export const PARAM_KEY = `myAddonParameter`; - -export const EVENTS = { - RESULT: `${ADDON_ID}/result`, - REQUEST: `${ADDON_ID}/request`, - CLEAR: `${ADDON_ID}/clear`, -}; diff --git a/src/manager.ts b/src/manager.ts index ef665d775377..f150e91f10ce 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -1,40 +1 @@ -import { addons, types } from "@storybook/manager-api"; -import { ADDON_ID, TOOL_ID, PANEL_ID, TAB_ID } from "./constants"; -import { Tool } from "./Tool"; -import { Panel } from "./Panel"; -import { Tab } from "./Tab"; - -/** - * Note: if you want to use JSX in this file, rename it to `manager.tsx` - * and update the entry prop in tsup.config.ts to use "src/manager.tsx", - */ - -// Register the addon -addons.register(ADDON_ID, () => { - // Register the tool - addons.add(TOOL_ID, { - type: types.TOOL, - title: "My addon", - match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), - render: Tool, - }); - - // Register the panel - addons.add(PANEL_ID, { - type: types.PANEL, - title: "My addon", - match: ({ viewMode }) => viewMode === "story", - render: Panel, - }); - - // Register the tab - addons.add(TAB_ID, { - type: types.TAB, - title: "My addon", - //πŸ‘‡ Checks the current route for the story - route: ({ storyId }) => `/myaddon/${storyId}`, - //πŸ‘‡ Shows the Tab UI element in myaddon view mode - match: ({ viewMode }) => viewMode === "myaddon", - render: Tab, - }); -}); +console.log("Addon Onboarding"); diff --git a/src/preview.ts b/src/preview.ts index 6e4b884a08a4..f4c7b0c0c671 100644 --- a/src/preview.ts +++ b/src/preview.ts @@ -1,28 +1,10 @@ -/** - * A decorator is a way to wrap a story in extra β€œrendering” functionality. Many addons define decorators - * in order to augment stories: - * - with extra rendering - * - gather details about how a story is rendered - * - * When writing stories, decorators are typically used to wrap stories with extra markup or context mocking. - * - * https://storybook.js.org/docs/react/writing-stories/decorators - */ import type { Renderer, ProjectAnnotations } from "@storybook/types"; -import { PARAM_KEY } from "./constants"; -import { withGlobals } from "./withGlobals"; -import { withRoundTrip } from "./withRoundTrip"; /** * Note: if you want to use JSX in this file, rename it to `preview.tsx` * and update the entry prop in tsup.config.ts to use "src/preview.tsx", */ -const preview: ProjectAnnotations = { - decorators: [withGlobals, withRoundTrip], - globals: { - [PARAM_KEY]: false, - }, -}; +const preview: ProjectAnnotations = {}; export default preview; diff --git a/src/withGlobals.ts b/src/withGlobals.ts deleted file mode 100644 index 5e64a6ab6998..000000000000 --- a/src/withGlobals.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { - Renderer, - PartialStoryFn as StoryFunction, - StoryContext, -} from "@storybook/types"; -import { useEffect, useGlobals } from "@storybook/preview-api"; -import { PARAM_KEY } from "./constants"; - -export const withGlobals = ( - StoryFn: StoryFunction, - context: StoryContext -) => { - const [globals] = useGlobals(); - const myAddon = globals[PARAM_KEY]; - // Is the addon being used in the docs panel - const isInDocs = context.viewMode === "docs"; - const { theme } = context.globals; - - useEffect(() => { - // Execute your side effect here - // For example, to manipulate the contents of the preview - const selector = isInDocs - ? `#anchor--${context.id} .sb-story` - : "#storybook-root"; - - displayToolState(selector, { - myAddon, - isInDocs, - theme, - }); - }, [myAddon, theme]); - - return StoryFn(); -}; - -function displayToolState(selector: string, state: any) { - const rootElements = document.querySelectorAll(selector); - - rootElements.forEach((rootElement) => { - let preElement = rootElement.querySelector( - `${selector} pre` - ); - - if (!preElement) { - preElement = document.createElement("pre"); - preElement.style.setProperty("margin-top", "2rem"); - preElement.style.setProperty("padding", "1rem"); - preElement.style.setProperty("background-color", "#eee"); - preElement.style.setProperty("border-radius", "3px"); - preElement.style.setProperty("max-width", "600px"); - preElement.style.setProperty("overflow", "scroll"); - rootElement.appendChild(preElement); - } - - preElement.innerText = `This snippet is injected by the withGlobals decorator. -It updates as the user interacts with the ⚑ or Theme tools in the toolbar above. - -${JSON.stringify(state, null, 2)} -`; - }); -} diff --git a/src/withRoundTrip.ts b/src/withRoundTrip.ts deleted file mode 100644 index 33bd59b87b00..000000000000 --- a/src/withRoundTrip.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { useChannel } from "@storybook/preview-api"; -import type { - Renderer, - PartialStoryFn as StoryFunction, -} from "@storybook/types"; -import { STORY_CHANGED } from "@storybook/core-events"; -import { EVENTS } from "./constants"; - -export const withRoundTrip = (storyFn: StoryFunction) => { - const emit = useChannel({ - [EVENTS.REQUEST]: () => { - emit(EVENTS.RESULT, { - danger: [ - { - title: "Panels are the most common type of addon in the ecosystem", - description: - "For example the official @storybook/actions and @storybook/a11y use this pattern", - }, - { - title: - "You can specify a custom title for your addon panel and have full control over what content it renders", - description: - "@storybook/components offers components to help you addons with the look and feel of Storybook itself", - }, - ], - warning: [ - { - title: - 'This tabbed UI pattern is a popular option to display "test" reports.', - description: - "It's used by @storybook/addon-jest and @storybook/addon-a11y. @storybook/components offers this and other components to help you quickly build an addon", - }, - ], - }); - }, - [STORY_CHANGED]: () => { - emit(EVENTS.RESULT, { - danger: [], - warning: [], - }); - }, - [EVENTS.CLEAR]: () => { - emit(EVENTS.RESULT, { - danger: [], - warning: [], - }); - }, - }); - - return storyFn(); -}; From 7ef79d436b853cb1947397db20fd37781d950da7 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 11:16:05 +0200 Subject: [PATCH 004/430] Add auto.config.js --- auto.config.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 auto.config.js diff --git a/auto.config.js b/auto.config.js new file mode 100644 index 000000000000..2966d34e09dc --- /dev/null +++ b/auto.config.js @@ -0,0 +1,11 @@ +module.exports = { + baseBranch: "main", + labels: [ + { + name: "documentation", + releaseType: "none", + }, + ], + prereleaseBranches: ["next", "prerelease"], + versionBranches: true, +}; From 99c000ce85b61fc4da87c580275cdee83d4717af Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 11:17:28 +0200 Subject: [PATCH 005/430] Fix manager.ts and add export {} --- src/manager.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/manager.ts b/src/manager.ts index f150e91f10ce..82c0114759e6 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -1 +1,3 @@ console.log("Addon Onboarding"); + +export {}; From bca31f48cdf3cdfbf38d3b8451e9e786f2a35e5c Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 09:18:21 +0000 Subject: [PATCH 006/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000000..d1f9822bf946 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,13 @@ +# v0.0.1 (Tue May 23 2023) + +#### ⚠️ Pushed to `main` + +- Fix manager.ts and add export {} ([@valentinpalkovic](https://github.com/valentinpalkovic)) +- Add auto.config.js ([@valentinpalkovic](https://github.com/valentinpalkovic)) +- Init Addon Onboarding ([@valentinpalkovic](https://github.com/valentinpalkovic)) +- project setup ([@valentinpalkovic](https://github.com/valentinpalkovic)) +- Initial commit ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) From 54808d1233d2ce5c094c4ae6482257829dd814cf Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 14:43:46 +0200 Subject: [PATCH 007/430] Remove unnecessary files --- scripts/eject-typescript.mjs | 55 ----------- scripts/prepublish-checks.mjs | 56 ----------- scripts/welcome.js | 180 ---------------------------------- yarn.lock | 19 +--- 4 files changed, 4 insertions(+), 306 deletions(-) delete mode 100644 scripts/eject-typescript.mjs delete mode 100644 scripts/prepublish-checks.mjs delete mode 100644 scripts/welcome.js diff --git a/scripts/eject-typescript.mjs b/scripts/eject-typescript.mjs deleted file mode 100644 index fc7dbc416ab5..000000000000 --- a/scripts/eject-typescript.mjs +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env zx - -// Copy TS files and delete src -await $`cp -r ./src ./srcTS`; -await $`rm -rf ./src`; -await $`mkdir ./src`; - -// Install Babel and TS preset -console.log(chalk.green` - -πŸ”ƒ Installing dependencies... - -`); -await $`yarn add -D @babel/cli @babel/preset-typescript --ignore-scripts`; - -// Convert TS code to JS -await $`babel --no-babelrc --presets @babel/preset-typescript ./srcTS -d ./src --extensions \".js,.jsx,.ts,.tsx\" --ignore "./srcTS/typings.d.ts"`; - -// Format the newly created .js files -console.log(chalk.green` - -πŸ’… Format the newly created .js files... - -`); -await $`prettier --write ./src`; - -// Add in minimal files required for the TS build setup -console.log(chalk.green` - -βž• Add minimal files required for the TS build setup - -`); -await $`prettier --write ./src`; -await $`touch ./src/dummy.ts`; -await $`printf "export {};" >> ./src/dummy.ts`; - -await $`touch ./src/typings.d.ts`; -await $`printf 'declare module "global";' >> ./src/typings.d.ts`; - -// Clean up -await $`rm -rf ./srcTS`; -console.log(chalk.green` - -🧹 Clean up... - -`); -await $`yarn remove @babel/cli @babel/preset-typescript --ignore-scripts`; - -console.log( - chalk.green.bold` -TypeScript Ejection complete!`, - chalk.green` -Addon code converted with JS. The TypeScript build setup is still available in case you want to adopt TypeScript in the future. -` -); diff --git a/scripts/prepublish-checks.mjs b/scripts/prepublish-checks.mjs deleted file mode 100644 index c53f3c06086e..000000000000 --- a/scripts/prepublish-checks.mjs +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env zx - -const packageJson = require("../package.json"); -const boxen = require("boxen"); -const dedent = require("dedent"); - -const name = packageJson.name; -const displayName = packageJson.storybook.displayName; - -let exitCode = 0; -$.verbose = false; - -/** - * Check that meta data has been updated - */ -if (name.includes("addon-kit") || displayName.includes("Addon Kit")) { - console.error( - boxen( - dedent` - ${chalk.red.bold("Missing metadata")} - - ${chalk.red(dedent`Your package name and/or displayName includes default values from the Addon Kit. - The addon gallery filters out all such addons. - - Please configure appropriate metadata before publishing your addon. For more info, see: - https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata`)}`, - { padding: 1, borderColor: "red" } - ) - ); - - exitCode = 1; -} - -/** - * Check that README has been updated - */ -const readmeTestStrings = - "# Storybook Addon Kit|Click the \\*\\*Use this template\\*\\* button to get started.|https://user-images.githubusercontent.com/42671/106809879-35b32000-663a-11eb-9cdc-89f178b5273f.gif"; - -if ((await $`cat README.md | grep -E ${readmeTestStrings}`.exitCode) == 0) { - console.error( - boxen( - dedent` - ${chalk.red.bold("README not updated")} - - ${chalk.red(dedent`You are using the default README.md file that comes with the addon kit. - Please update it to provide info on what your addon does and how to use it.`)} - `, - { padding: 1, borderColor: "red" } - ) - ); - - exitCode = 1; -} - -process.exit(exitCode); diff --git a/scripts/welcome.js b/scripts/welcome.js deleted file mode 100644 index a035165f4e5c..000000000000 --- a/scripts/welcome.js +++ /dev/null @@ -1,180 +0,0 @@ -/* eslint-disable eslint-comments/disable-enable-pair */ -/* eslint-disable no-console */ -const prompts = require("prompts"); -const dedent = require("ts-dedent").default; -const path = require("path"); -const fs = require("fs"); -const { execSync } = require("child_process"); - -// CLI questions -const questions = [ - { - type: "text", - name: "authorName", - initial: "", - message: "What is the package author name?*", - validate: (name) => (name === "" ? "Name can't be empty" : true), - }, - { - type: "text", - name: "authorEmail", - initial: "", - message: "What is the package author email?", - }, - { - type: "text", - name: "packageName", - message: "What is the addon package name (eg: storybook-addon-something)?*", - validate: (name) => (name === "" ? "Package name can't be empty" : true), - }, - { - type: "text", - name: "displayName", - message: - "What is the addon display name (this will be used in the addon catalog)?*", - validate: (name) => - name === "" - ? "Display name can't be empty. For more info, see: https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata" - : true, - }, - { - type: "text", - name: "addonDescription", - initial: "", - message: "Write a short description of the addon*", - validate: (name) => (name === "" ? "Description can't be empty" : true), - }, - { - type: "text", - name: "repoUrl", - message: "Git repo URL for your addon package (https://github.com/...)*", - validate: (url) => (url === "" ? "URL can't be empty" : true), - }, - { - type: "text", - name: "addonIcon", - initial: - "https://user-images.githubusercontent.com/321738/63501763-88dbf600-c4cc-11e9-96cd-94adadc2fd72.png", - message: "URL of your addon icon", - }, - { - type: "list", - name: "keywords", - initial: "storybook-addons", - message: "Enter addon keywords (comma separated)", - separator: ",", - format: (keywords) => - keywords - .concat(["storybook-addons"]) - .map((k) => `"${k}"`) - .join(", "), - }, - { - type: "list", - name: "supportedFrameworks", - initial: - "react, vue, angular, web-components, ember, html, svelte, preact, react-native", - message: "List of frameworks you support (comma separated)?", - separator: ",", - format: (frameworks) => frameworks.map((k) => `"${k}"`).join(", "), - }, -]; - -const REPLACE_TEMPLATES = { - packageName: "storybook-addon-kit", - addonDescription: "everything you need to build a Storybook addon", - packageAuthor: "package-author", - repoUrl: "https://github.com/storybookjs/storybook-addon-kit", - keywords: `"storybook-addons"`, - displayName: "Addon Kit", - supportedFrameworks: `"supported-frameworks"`, -}; - -const bold = (message) => `\u001b[1m${message}\u001b[22m`; -const magenta = (message) => `\u001b[35m${message}\u001b[39m`; -const blue = (message) => `\u001b[34m${message}\u001b[39m`; - -const main = async () => { - console.log( - bold( - magenta( - dedent` - Welcome to Storybook addon-kit! - Please answer the following questions while we prepare this project for you:\n - ` - ) - ) - ); - - const { - authorName, - authorEmail, - packageName, - addonDescription, - repoUrl, - displayName, - keywords, - supportedFrameworks, - } = await prompts(questions); - - if (!authorName || !packageName) { - console.log( - `\nProcess canceled by the user. Feel free to run ${bold( - "yarn postinstall" - )} to execute the installation steps again!` - ); - process.exit(0); - } - - const authorField = authorName + (authorEmail ? ` <${authorEmail}>` : ""); - - const packageJson = path.resolve(__dirname, `../package.json`); - - console.log(`\nπŸ‘· Updating package.json...`); - let packageJsonContents = fs.readFileSync(packageJson, "utf-8"); - - packageJsonContents = packageJsonContents - .replace(REPLACE_TEMPLATES.packageName, packageName) - .replace(REPLACE_TEMPLATES.addonDescription, addonDescription) - .replace(REPLACE_TEMPLATES.packageAuthor, authorField) - .replace(REPLACE_TEMPLATES.keywords, keywords) - .replace(REPLACE_TEMPLATES.repoUrl, repoUrl) - .replace(REPLACE_TEMPLATES.displayName, displayName) - .replace(REPLACE_TEMPLATES.supportedFrameworks, supportedFrameworks) - .replace(/\s*"postinstall".*node.*scripts\/welcome.js.*",/, ''); - - fs.writeFileSync(packageJson, packageJsonContents); - - console.log("πŸ“ Updating the README..."); - const readme = path.resolve(__dirname, `../README.md`); - let readmeContents = fs.readFileSync(readme, "utf-8"); - - const regex = /<\!-- README START -->([\s\S]*)<\!-- README END -->/g; - - readmeContents = readmeContents.replace( - regex, - dedent` - # Storybook Addon ${displayName} - ${addonDescription} - ` - ); - - fs.writeFileSync(readme, readmeContents); - - console.log(`πŸ“¦ Creating a commit...`); - execSync('git add . && git commit -m "project setup" --no-verify'); - - console.log( - dedent`\n - πŸš€ All done! Run \`yarn start\` to get started. - - Thanks for using this template, ${authorName.split(" ")[0]}! ❀️ - - Feel free to open issues in case there are bugs/feature requests at: - - ${bold(blue("https://github.com/storybookjs/addon-kit"))}\n - ` - ); -}; - -main().catch((e) => console.log(`Something went wrong: ${e}`)); diff --git a/yarn.lock b/yarn.lock index 3550bc217f8e..57190b7b9fba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2795,7 +2795,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node-fetch@^2.5.10", "@types/node-fetch@^2.5.7": +"@types/node-fetch@^2.5.7": version "2.6.2" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== @@ -2808,7 +2808,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== -"@types/node@^16.0", "@types/node@^16.0.0": +"@types/node@^16.0.0": version "16.18.14" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.14.tgz#5465ce598486a703caddbefe8603f8a2cffa3461" integrity sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw== @@ -3467,7 +3467,7 @@ chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -7869,7 +7869,7 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -8011,14 +8011,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zx@^1.14.1: - version "1.15.2" - resolved "https://registry.yarnpkg.com/zx/-/zx-1.15.2.tgz#8821c30962e97347b62c5b7cbd5c9706ea776211" - integrity sha512-UvltPAK8alQ7YXxOZDWCR3m4LppUmOpB3ZpJvc4NL0YEZDikLhC9jd1pnB4Fze/4OcmF3Xff6kK+6DKeqH1efA== - dependencies: - "@types/node" "^16.0" - "@types/node-fetch" "^2.5.10" - chalk "^4.1.1" - node-fetch "^2.6.1" - which "^2.0.2" From bdb1ac6cce8f05775084785709ad0f879bda6be8 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 12:44:53 +0000 Subject: [PATCH 008/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1f9822bf946..8d617f2b380a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.2 (Tue May 23 2023) + +#### πŸ› Bug Fix + +- Remove unnecessary files [#1](https://github.com/storybookjs/addon-onboarding/pull/1) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.1 (Tue May 23 2023) #### ⚠️ Pushed to `main` From fbd0a115b9a445b54ed11402d962e44fa548b34b Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 14:55:38 +0200 Subject: [PATCH 009/430] Setup Chromatic --- .github/workflows/chromatic.yml | 20 + yarn.lock | 709 +++++++++++++++++++++++++++++++- 2 files changed, 707 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/chromatic.yml diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml new file mode 100644 index 000000000000..855bae85e409 --- /dev/null +++ b/.github/workflows/chromatic.yml @@ -0,0 +1,20 @@ +name: "Chromatic" + +on: push + +jobs: + chromatic-deployment: + # Operating System + runs-on: ubuntu-latest + # Job steps + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install dependencies + run: yarn + - name: Publish to Chromatic + uses: chromaui/action@v1 + with: + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} diff --git a/yarn.lock b/yarn.lock index 57190b7b9fba..7148c59a0fa3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,13 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@arcanis/slice-ansi@^1.0.2": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@arcanis/slice-ansi/-/slice-ansi-1.1.1.tgz#0ee328a68996ca45854450033a3d161421dc4f55" + integrity sha512-xguP2WR2Dv0gQ7Ykbdb7BNCnPnIPB94uTi0Z2NvkRBEnhbwjOQ7QyQKJXrVQg4qDpiD9hA5l5cCwy/z2OXgc3w== + dependencies: + grapheme-splitter "^1.0.4" + "@auto-it/bot-list@10.43.0": version "10.43.0" resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.43.0.tgz#1a054a5ba0de3d68657a2f453de2ceffb3ea0ccc" @@ -1133,7 +1140,7 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@discoveryjs/json-ext@^0.5.3": +"@discoveryjs/json-ext@^0.5.3", "@discoveryjs/json-ext@^0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -1794,6 +1801,57 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@snyk/dep-graph@^2.3.0": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@snyk/dep-graph/-/dep-graph-2.6.1.tgz#4d39854498df798fa9948c58e36ffd9a54153e44" + integrity sha512-8N+wgLCUDGbyjDpHSpPICM+elcJ06WKFRl/1nVe6OE9dFBpjC64wtFohQgQDlazPxQC2eOLqImR8QlwNQ6hoDQ== + dependencies: + event-loop-spinner "^2.1.0" + lodash.clone "^4.5.0" + lodash.constant "^3.0.0" + lodash.filter "^4.6.0" + lodash.foreach "^4.5.0" + lodash.isempty "^4.4.0" + lodash.isequal "^4.5.0" + lodash.isfunction "^3.0.9" + lodash.isundefined "^3.0.1" + lodash.map "^4.6.0" + lodash.reduce "^4.6.0" + lodash.size "^4.2.0" + lodash.transform "^4.6.0" + lodash.union "^4.6.0" + lodash.values "^4.3.0" + object-hash "^3.0.0" + packageurl-js "^1.0.0" + semver "^7.0.0" + tslib "^2" + +"@snyk/graphlib@2.1.9-patch.3": + version "2.1.9-patch.3" + resolved "https://registry.yarnpkg.com/@snyk/graphlib/-/graphlib-2.1.9-patch.3.tgz#b8edb2335af1978db7f3cb1f28f5d562960acf23" + integrity sha512-bBY9b9ulfLj0v2Eer0yFYa3syVeIxVKl2EpxSrsVeT4mjA0CltZyHsF0JjoaGXP27nItTdJS5uVsj1NA+3aE+Q== + dependencies: + lodash.clone "^4.5.0" + lodash.constant "^3.0.0" + lodash.filter "^4.6.0" + lodash.foreach "^4.5.0" + lodash.has "^4.5.2" + lodash.isempty "^4.4.0" + lodash.isfunction "^3.0.9" + lodash.isundefined "^3.0.1" + lodash.keys "^4.2.0" + lodash.map "^4.6.0" + lodash.reduce "^4.6.0" + lodash.size "^4.2.0" + lodash.transform "^4.6.0" + lodash.union "^4.6.0" + lodash.values "^4.3.0" + "@storybook/addon-actions@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.0.tgz#a9e42089686f46ea4af210032bd8a392497ce28a" @@ -2575,6 +2633,13 @@ "@types/express" "^4.7.0" file-system-cache "^2.0.0" +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + "@testing-library/dom@^8.3.0": version "8.20.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" @@ -2662,6 +2727,16 @@ "@types/connect" "*" "@types/node" "*" +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/command-line-args@^5.0.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" @@ -2694,6 +2769,11 @@ resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.2.tgz#75d277b030bc11b3be38c807e10071f45ebc78d9" integrity sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g== +"@types/emscripten@^1.39.6": + version "1.39.6" + resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.6.tgz#698b90fe60d44acf93c31064218fbea93fbfd85a" + integrity sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg== + "@types/escodegen@^0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" @@ -2751,6 +2831,11 @@ dependencies: "@types/node" "*" +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" @@ -2770,6 +2855,13 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/lodash@^4.14.167": version "4.14.191" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" @@ -2808,6 +2900,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== +"@types/node@^13.7.0": + version "13.13.52" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.52.tgz#03c13be70b9031baaed79481c0c0cfb0045e53f7" + integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ== + "@types/node@^16.0.0": version "16.18.14" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.14.tgz#5465ce598486a703caddbefe8603f8a2cffa3461" @@ -2866,11 +2963,23 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/semver@^7.1.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + "@types/semver@^7.3.4": version "7.3.13" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" @@ -2884,11 +2993,21 @@ "@types/mime" "*" "@types/node" "*" +"@types/treeify@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/treeify/-/treeify-1.0.0.tgz#f04743cb91fc38254e8585d692bd92503782011c" + integrity sha512-ONpcZAEYlbPx4EtJwfTyCDQJGUpKf4sEcuySdCVjK5Fj/3vHp5HII1fqa1/+qrsLnpYELCQTfVW/awsGJePoIg== + "@types/unist@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +"@types/webpack-env@^1.17.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.0.tgz#ed6ecaa8e5ed5dfe8b2b3d00181702c9925f13fb" + integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -2919,6 +3038,43 @@ magic-string "^0.27.0" react-refresh "^0.14.0" +"@yarnpkg/core@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/core/-/core-2.4.0.tgz#b5d8cc7ee2ddb022816c7afa3f83c3ee3d317c80" + integrity sha512-FYjcPNTfDfMKLFafQPt49EY28jnYC82Z2S7oMwLPUh144BL8v8YXzb4aCnFyi5nFC5h2kcrJfZh7+Pm/qvCqGw== + dependencies: + "@arcanis/slice-ansi" "^1.0.2" + "@types/semver" "^7.1.0" + "@types/treeify" "^1.0.0" + "@yarnpkg/fslib" "^2.4.0" + "@yarnpkg/json-proxy" "^2.1.0" + "@yarnpkg/libzip" "^2.2.1" + "@yarnpkg/parsers" "^2.3.0" + "@yarnpkg/pnp" "^2.3.2" + "@yarnpkg/shell" "^2.4.1" + binjumper "^0.1.4" + camelcase "^5.3.1" + chalk "^3.0.0" + ci-info "^2.0.0" + clipanion "^2.6.2" + cross-spawn "7.0.3" + diff "^4.0.1" + globby "^11.0.1" + got "^11.7.0" + json-file-plus "^3.3.1" + lodash "^4.17.15" + micromatch "^4.0.2" + mkdirp "^0.5.1" + p-limit "^2.2.0" + pluralize "^7.0.0" + pretty-bytes "^5.1.0" + semver "^7.1.2" + stream-to-promise "^2.2.0" + tar-stream "^2.0.1" + treeify "^1.1.0" + tslib "^1.13.0" + tunnel "^0.0.6" + "@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": version "3.0.0-rc.15" resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" @@ -2926,6 +3082,66 @@ dependencies: tslib "^2.4.0" +"@yarnpkg/fslib@^2.4.0", "@yarnpkg/fslib@^2.5.0": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" + integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== + dependencies: + "@yarnpkg/libzip" "^2.3.0" + tslib "^1.13.0" + +"@yarnpkg/json-proxy@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@yarnpkg/json-proxy/-/json-proxy-2.1.1.tgz#47866706061e9bdb15b0d199f6f08dde655bf569" + integrity sha512-meUiCAgCYpXTH1qJfqfz+dX013ohW9p2dKfwIzUYAFutH+lsz1eHPBIk72cuCV84adh9gX6j66ekBKH/bIhCQw== + dependencies: + "@yarnpkg/fslib" "^2.5.0" + tslib "^1.13.0" + +"@yarnpkg/libzip@^2.2.1", "@yarnpkg/libzip@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" + integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== + dependencies: + "@types/emscripten" "^1.39.6" + tslib "^1.13.0" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@^2.3.0": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-2.5.1.tgz#0e7c510977a410747fc6d3727c1a2a189e6cd6eb" + integrity sha512-KtYN6Ez3x753vPF9rETxNTPnPjeaHY11Exlpqb4eTII7WRlnGiZ5rvvQBau4R20Ik5KBv+vS3EJEcHyCunwzzw== + dependencies: + js-yaml "^3.10.0" + tslib "^1.13.0" + +"@yarnpkg/pnp@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@yarnpkg/pnp/-/pnp-2.3.2.tgz#9a052a06bf09c9f0b7c31e0867a7e725cb6401ed" + integrity sha512-JdwHu1WBCISqJEhIwx6Hbpe8MYsYbkGMxoxolkDiAeJ9IGEe08mQcbX1YmUDV1ozSWlm9JZE90nMylcDsXRFpA== + dependencies: + "@types/node" "^13.7.0" + "@yarnpkg/fslib" "^2.4.0" + tslib "^1.13.0" + +"@yarnpkg/shell@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@yarnpkg/shell/-/shell-2.4.1.tgz#abc557f8924987c9c382703e897433a82780265d" + integrity sha512-oNNJkH8ZI5uwu0dMkJf737yMSY1WXn9gp55DqSA5wAOhKvV5DJTXFETxkVgBQhO6Bow9tMGSpvowTMD/oAW/9g== + dependencies: + "@yarnpkg/fslib" "^2.4.0" + "@yarnpkg/parsers" "^2.3.0" + clipanion "^2.6.2" + cross-spawn "7.0.3" + fast-glob "^3.2.2" + micromatch "^4.0.2" + stream-buffers "^3.0.2" + tslib "^1.13.0" + accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -3027,7 +3243,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -any-promise@^1.0.0: +any-promise@^1.0.0, any-promise@^1.1.0, any-promise@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== @@ -3070,6 +3286,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -3117,6 +3338,11 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + assert@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" @@ -3153,7 +3379,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^3.2.3: +async@^3.2.0, async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== @@ -3268,6 +3494,11 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +binjumper@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/binjumper/-/binjumper-0.1.4.tgz#4acc0566832714bd6508af6d666bd9e5e21fc7f8" + integrity sha512-Gdxhj+U295tIM6cO4bJO1jsvSjBVHNpj2o/OwW7pqDEtaqF6KdOxjtbo93jMMKAkP7+u09+bV8DhSqjIv4qR3w== + bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -3430,6 +3661,24 @@ cac@^6.7.12: resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -3467,6 +3716,14 @@ chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -3500,6 +3757,20 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chromatic@^6.17.4: + version "6.17.4" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-6.17.4.tgz#6a946d51c631d871c165fe28fa2b3b0bcdf32e24" + integrity sha512-vnlvsv2lkp8BVtTn1OumJzqkDk2qB3pcGxEDIfZtVboKtzIPjnIlGa+c1fVKQe8NvHDU8R39k8klqgKHIXUVJw== + dependencies: + "@discoveryjs/json-ext" "^0.5.7" + "@types/webpack-env" "^1.17.0" + snyk-nodejs-lockfile-parser "^1.49.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.2.0: version "3.8.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" @@ -3524,6 +3795,11 @@ cli-table3@^0.6.1: optionalDependencies: "@colors/colors" "1.5.0" +clipanion@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-2.6.2.tgz#820e7440812052442455b248f927b187ed732f71" + integrity sha512-0tOHJNMF9+4R3qcbBL+4IxLErpaYSYvzs10aXuECDbZdJOuJHdagJMAqvLdeaUQTI/o2uSCDRpet6ywDiKOAYw== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -3542,6 +3818,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -3737,6 +4020,15 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3748,15 +4040,6 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -3781,6 +4064,13 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: dependencies: ms "2.1.2" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -3832,6 +4122,11 @@ default-browser-id@3.0.0: bplist-parser "^0.2.0" untildify "^4.0.0" +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -4004,6 +4299,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +end-of-stream@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" + integrity sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ== + dependencies: + once "~1.3.0" + endent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" @@ -4281,6 +4583,13 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +event-loop-spinner@^2.0.0, event-loop-spinner@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/event-loop-spinner/-/event-loop-spinner-2.2.0.tgz#5b9bdf1759a5d9600576260ae770446a1a16c9b0" + integrity sha512-KB44sV4Mv7uLIkJHJ5qhiZe5um6th2g57nHQL/uqnPHKP2IswoTRWUteEXTJQL4gW++1zqWUni+H2hGkP51c9w== + dependencies: + tslib "^2.1.0" + execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -4348,7 +4657,7 @@ extract-zip@^1.6.6: mkdirp "^0.5.4" yauzl "^2.10.0" -fast-glob@^3.1.1, fast-glob@^3.2.9: +fast-glob@^3.1.1, fast-glob@^3.2.2, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -4654,6 +4963,13 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -4797,11 +5113,33 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +got@^11.7.0: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + gunzip-maybe@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" @@ -4892,6 +5230,11 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -4903,6 +5246,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" @@ -5074,7 +5425,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -5266,6 +5617,11 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79" + integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg== + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -5406,7 +5762,7 @@ joycon@^3.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -5414,6 +5770,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jscodeshift@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" @@ -5449,6 +5812,22 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-file-plus@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/json-file-plus/-/json-file-plus-3.3.1.tgz#f4363806b82819ff8803d83d539d6a9edd2a5258" + integrity sha512-wo0q1UuiV5NsDPQDup1Km8IwEeqe+olr8tkWxeJq9Bjtcp7DZ0l+yrg28fSC3DEtrE311mhTZ54QGS6oiqnZEA== + dependencies: + is "^3.2.1" + node.extend "^2.0.0" + object.assign "^4.1.0" + promiseback "^2.0.2" + safer-buffer "^2.0.2" + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5473,6 +5852,13 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -5570,22 +5956,122 @@ lodash.chunk@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.constant@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash.constant/-/lodash.constant-3.0.0.tgz#bfe05cce7e515b3128925d6362138420bd624910" + integrity sha512-X5XMrB+SdI1mFa81162NSTo/YNd23SLdLOLzcXTwS4inDZ5YCL8X67UFzZJAH4CqIa6R8cr56CShfA5K5MFiYQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.filter@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + integrity sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ== + +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== + +lodash.foreach@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ== + lodash.get@^4: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== +lodash.has@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g== + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isundefined@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" + integrity sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== + +lodash.keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + integrity sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ== + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.reduce@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + integrity sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw== + +lodash.size@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.size/-/lodash.size-4.2.0.tgz#71fe75ed3eabdb2bcb73a1b0b4f51c392ee27b86" + integrity sha512-wbu3SF1XC5ijqm0piNxw59yCbuUf2kaShumYBLWUrcCvwh6C8odz6SY/wGVzCWTQTFL/1Ygbvqg2eLtspUVVAQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash@^4.17.21: +lodash.topairs@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.topairs/-/lodash.topairs-4.3.0.tgz#3b6deaa37d60fb116713c46c5f17ea190ec48d64" + integrity sha512-qrRMbykBSEGdOgQLJJqVSdPWMD7Q+GJJ5jMRfQYb+LTLsw3tYVIabnCzRqTJb2WTo17PG5gNzXuFaZgYH/9SAQ== + +lodash.transform@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" + integrity sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== + +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5605,6 +6091,11 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5722,7 +6213,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -5757,6 +6248,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -5806,7 +6307,7 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.4: +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -5918,6 +6419,14 @@ node-releases@^2.0.8: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node.extend@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-2.0.2.tgz#b4404525494acc99740f3703c496b7d5182cc6cc" + integrity sha512-pDT4Dchl94/+kkgdwyS2PauDFjZG0Hk0IcHIB+LkW27HLDtdoeMxHTxZh39DYbPP8UflWXWj9JcdDozF+YDOpQ== + dependencies: + has "^1.0.3" + is "^3.2.1" + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5933,6 +6442,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -5970,6 +6484,11 @@ object-assign@^4.0.1, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -5988,7 +6507,7 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4: +object.assign@^4.1.0, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -6022,6 +6541,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + integrity sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w== + dependencies: + wrappy "1" + onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -6063,6 +6589,11 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -6129,6 +6660,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +packageurl-js@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/packageurl-js/-/packageurl-js-1.0.2.tgz#c568a569848c66be8f2b467ac41b0f1427672b00" + integrity sha512-fWC4ZPxo80qlh3xN5FxfIoQD3phVY4+EyzTIqyksjhKNDmaicdpxSvkWwIrYTtv9C1/RcUN6pxaTwGmj2NzS6A== + pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -6306,6 +6842,11 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + polished@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" @@ -6340,6 +6881,11 @@ prettier@^2.3.1, prettier@^2.8.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== +pretty-bytes@^5.1.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -6376,6 +6922,28 @@ progress@^2.0.1: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-deferred@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/promise-deferred/-/promise-deferred-2.0.3.tgz#b99c9588820798501862a593d49cece51d06fd7f" + integrity sha512-n10XaoznCzLfyPFOlEE8iurezHpxrYzyjgq/1eW9Wk1gJwur/N7BdBmjJYJpqMeMcXK4wEbzo2EvZQcqjYcKUQ== + dependencies: + promise "^7.3.1" + +promise@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promiseback@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/promiseback/-/promiseback-2.0.3.tgz#bd468d86930e8cd44bfc3292de9a6fbafb6378e6" + integrity sha512-VZXdCwS0ppVNTIRfNsCvVwJAaP2b+pxQF7lM8DMWfmpNWyTxB6O5YNbzs+8z0ki/KIBHKHk308NTIl4kJUem3w== + dependencies: + is-callable "^1.1.5" + promise-deferred "^2.0.3" + prompts@^2.4.0, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -6471,6 +7039,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + ramda@^0.28.0: version "0.28.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" @@ -6764,6 +7337,11 @@ requireg@^0.2.2: rc "~1.2.7" resolve "~1.7.1" +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -6790,6 +7368,13 @@ resolve@~1.7.1: dependencies: path-parse "^1.0.5" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -6854,7 +7439,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -6883,6 +7468,13 @@ semver@^7.0.0, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.1.2, semver@^7.3.5: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -7028,6 +7620,38 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +snyk-config@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/snyk-config/-/snyk-config-5.1.0.tgz#d725739ede0732a7db13be4e120c90b39e496ab7" + integrity sha512-wqVMxUGqjjHX+MJrz0WHa/pJTDWU17aRv6cnI/6i7cq93J3TkkJZ8sjgvwCgP8cWX5wTHIlRuMV+IAd59K4X/g== + dependencies: + async "^3.2.0" + debug "^4.1.1" + lodash.merge "^4.6.2" + minimist "^1.2.5" + +snyk-nodejs-lockfile-parser@^1.49.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.51.0.tgz#73f1a364e9e921fb35d0239e1b4b156c48a35700" + integrity sha512-uepLn2WELhgAVoYZ7QOt3nFwBVZvJAUfdDyebhb2Wqn5ftTthELzUp5/kCqxOXWoXBSg2KQIjI42U7SRq8gxLg== + dependencies: + "@snyk/dep-graph" "^2.3.0" + "@snyk/graphlib" "2.1.9-patch.3" + "@yarnpkg/core" "^2.4.0" + "@yarnpkg/lockfile" "^1.1.0" + event-loop-spinner "^2.0.0" + js-yaml "^4.1.0" + lodash.clonedeep "^4.5.0" + lodash.flatmap "^4.5.0" + lodash.isempty "^4.4.0" + lodash.topairs "^4.3.0" + micromatch "^4.0.5" + p-map "^4.0.0" + semver "^7.3.5" + snyk-config "^5.0.0" + tslib "^1.9.3" + uuid "^8.3.0" + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -7113,11 +7737,32 @@ storybook@^7.0.0: dependencies: "@storybook/cli" "7.0.0" +stream-buffers@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-3.0.2.tgz#5249005a8d5c2d00b3a32e6e0a6ea209dc4f3521" + integrity sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ== + stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-to-array@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA== + dependencies: + any-promise "^1.1.0" + +stream-to-promise@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-to-promise/-/stream-to-promise-2.2.0.tgz#b1edb2e1c8cb11289d1b503c08d3f2aef51e650f" + integrity sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw== + dependencies: + any-promise "~1.3.0" + end-of-stream "~1.1.0" + stream-to-array "~2.3.0" + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -7287,7 +7932,7 @@ tar-fs@^2.1.1: pump "^3.0.0" tar-stream "^2.1.4" -tar-stream@^2.1.4: +tar-stream@^2.0.1, tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -7423,6 +8068,11 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +treeify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + ts-dedent@^2.0.0, ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" @@ -7474,7 +8124,7 @@ tslib@2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tslib@^1.14.1: +tslib@^1.13.0, tslib@^1.14.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7484,6 +8134,11 @@ tslib@^2, tslib@^2.0.1, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.1.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + tsup@^6.6.3: version "6.6.3" resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.6.3.tgz#f6f975a8656cfd9b8e115f33b1aa0f0fd4df78e2" @@ -7504,6 +8159,11 @@ tsup@^6.6.3: sucrase "^3.20.3" tree-kill "^1.2.2" +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7738,6 +8398,11 @@ uuid-browser@^3.1.0: resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" From b397f611786acb22238ce870f964944af141d989 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 13:15:50 +0000 Subject: [PATCH 010/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d617f2b380a..72511338f3ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.3 (Tue May 23 2023) + +#### πŸ› Bug Fix + +- Setup Chromatic [#2](https://github.com/storybookjs/addon-onboarding/pull/2) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.2 (Tue May 23 2023) #### πŸ› Bug Fix From 9dc8d6d55f335546cf9a5157068321dce2b24be5 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 16:12:53 +0200 Subject: [PATCH 011/430] Cleanup --- .github/workflows/chromatic.yml | 2 ++ yarn.lock | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 855bae85e409..ecc49787ea91 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -14,6 +14,8 @@ jobs: fetch-depth: 0 - name: Install dependencies run: yarn + - name: Build + run: yarn build - name: Publish to Chromatic uses: chromaui/action@v1 with: diff --git a/yarn.lock b/yarn.lock index 7148c59a0fa3..1e7bcd4b6532 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2945,6 +2945,22 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/react-dom@^18.2.4": + version "18.2.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" + integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.6" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" + integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/react@>=16": version "18.0.28" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" From 292928ebef85eb6b3d86566f4f3791e76923a6be Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 14:14:25 +0000 Subject: [PATCH 012/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72511338f3ff..6048f3b007cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.4 (Tue May 23 2023) + +#### ⚠️ Pushed to `main` + +- Cleanup ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.3 (Tue May 23 2023) #### πŸ› Bug Fix From 5ed9ea40f7e5c15f9962110930fce7a6ce4873b5 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 16:26:23 +0200 Subject: [PATCH 013/430] Add clean package.json --- package.json | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 000000000000..c7d5817b1484 --- /dev/null +++ b/package.json @@ -0,0 +1,110 @@ +{ + "name": "@storybook/addon-onboarding", + "version": "0.0.4", + "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", + "keywords": [ + "storybook-addons", + "addon-onboarding" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/storybookjs/addon-onboarding.git" + }, + "author": { + "name": "@storybookjs/core" + }, + "license": "MIT", + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + }, + "./manager": { + "require": "./dist/manager.js", + "import": "./dist/manager.mjs", + "types": "./dist/manager.d.ts" + }, + "./preview": { + "require": "./dist/preview.js", + "import": "./dist/preview.mjs", + "types": "./dist/preview.d.ts" + }, + "./package.json": "./package.json" + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts" + ], + "scripts": { + "clean": "rimraf ./dist", + "prebuild": "yarn clean", + "build": "tsup", + "build:watch": "yarn build --watch", + "test": "echo \"Error: no test specified\" && exit 1", + "start": "run-p build:watch 'storybook --quiet'", + "release": "yarn build && auto shipit", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", + "chromatic": "npx chromatic" + }, + "devDependencies": { + "@storybook/addon-essentials": "^7.0.0", + "@storybook/addon-interactions": "^7.0.0", + "@storybook/addon-links": "^7.0.0", + "@storybook/react": "^7.0.0", + "@storybook/react-vite": "^7.0.0", + "@storybook/testing-library": "^0.0.14-next.1", + "@types/node": "^18.15.0", + "@types/react": "^18.0.34", + "@types/react-dom": "^18.2.4", + "@vitejs/plugin-react": "^3.1.0", + "auto": "^10.3.0", + "boxen": "^5.0.1", + "chromatic": "^6.17.4", + "dedent": "^0.7.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.3.1", + "prompts": "^2.4.2", + "prop-types": "^15.8.1", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "rimraf": "^3.0.2", + "storybook": "^7.0.0", + "tsup": "^6.6.3", + "typescript": "^4.9.5", + "vite": "^4.1.4" + }, + "peerDependencies": { + "@storybook/blocks": "^7.0.0", + "@storybook/components": "^7.0.0", + "@storybook/core-events": "^7.0.0", + "@storybook/manager-api": "^7.0.0", + "@storybook/preview-api": "^7.0.0", + "@storybook/theming": "^7.0.0", + "@storybook/types": "^7.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + }, + "bugs": { + "url": "https://github.com/storybookjs/addon-onboarding/issues" + }, + "readme": "ERROR: No README data found!", + "homepage": "https://github.com/storybookjs/addon-onboarding#readme" +} From a7a3258f479658b30599f112f1eceec6d92f4f1e Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 14:30:21 +0000 Subject: [PATCH 014/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6048f3b007cb..c0b1ac3649dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.5 (Tue May 23 2023) + +#### ⚠️ Pushed to `main` + +- Add clean package.json ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.4 (Tue May 23 2023) #### ⚠️ Pushed to `main` From ba7588ea377121d9af5004ffeb6005a1c170db6e Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 14:30:22 +0000 Subject: [PATCH 015/430] Bump version to: 0.0.5 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c7d5817b1484..0e2c1d37853e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.4", + "version": "0.0.5", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 10f0af7d229e0949904176634eea0ff38ea0b2d2 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 23 May 2023 16:33:49 +0200 Subject: [PATCH 016/430] Add minimum React Application --- src/manager.ts | 3 --- src/manager.tsx | 21 +++++++++++++++++++++ tsup.config.ts | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) delete mode 100644 src/manager.ts create mode 100644 src/manager.tsx diff --git a/src/manager.ts b/src/manager.ts deleted file mode 100644 index 82c0114759e6..000000000000 --- a/src/manager.ts +++ /dev/null @@ -1,3 +0,0 @@ -console.log("Addon Onboarding"); - -export {}; diff --git a/src/manager.tsx b/src/manager.tsx new file mode 100644 index 000000000000..13fcae3c154a --- /dev/null +++ b/src/manager.tsx @@ -0,0 +1,21 @@ +import ReactDOM from "react-dom"; +import React from "react"; + +// Add a new DOM element to document.body, where we will bootstrap our React app +const domNode = document.createElement("div"); + +domNode.id = "addon-onboarding"; +domNode.style.position = "absolute"; +domNode.style.top = "0"; +domNode.style.left = "0"; +domNode.style.width = "0"; +domNode.style.height = "0"; +domNode.style.overflow = "hidden"; +domNode.style.opacity = "0"; +domNode.style.visibility = "hidden"; + +// Append the new DOM element to document.body +document.body.appendChild(domNode); + +// Render the React app +ReactDOM.render(
Hello World
, domNode); \ No newline at end of file diff --git a/tsup.config.ts b/tsup.config.ts index 541ae16d794c..f9e0c3ed3faf 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from "tsup"; export default defineConfig((options) => ({ - entry: ["src/index.ts", "src/preview.ts", "src/manager.ts"], + entry: ["src/index.ts", "src/preview.ts", "src/manager.tsx"], splitting: false, minify: !options.watch, format: ["cjs", "esm"], From a316cc9f0bcd9cebcda21c30196920bbae29a360 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 15:12:15 +0000 Subject: [PATCH 017/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0b1ac3649dd..9b74cff6f3d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.6 (Tue May 23 2023) + +#### πŸ› Bug Fix + +- Add minimum React Application [#3](https://github.com/storybookjs/addon-onboarding/pull/3) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.5 (Tue May 23 2023) #### ⚠️ Pushed to `main` From 50f6507b99b5bb0d2e90bb930eb74c1703881f5e Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 23 May 2023 15:12:17 +0000 Subject: [PATCH 018/430] Bump version to: 0.0.6 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e2c1d37853e..7e0facd1ebda 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.5", + "version": "0.0.6", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From b4984ef4bb39a9becb287a535b127ded3a2e5f9b Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Thu, 25 May 2023 09:45:47 +0200 Subject: [PATCH 019/430] Init Storybook Theme Provider --- .storybook/{preview.ts => preview.tsx} | 9 +++++++++ package.json | 1 + src/App.tsx | 12 ++++++++++++ src/manager.tsx | 3 ++- src/preview.ts | 2 ++ yarn.lock | 17 +++++++++++++++++ 6 files changed, 43 insertions(+), 1 deletion(-) rename .storybook/{preview.ts => preview.tsx} (56%) create mode 100644 src/App.tsx diff --git a/.storybook/preview.ts b/.storybook/preview.tsx similarity index 56% rename from .storybook/preview.ts rename to .storybook/preview.tsx index b2d527fc18d0..0ba900cac403 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.tsx @@ -1,4 +1,6 @@ import type { Preview } from "@storybook/react"; +import { ThemeProvider, ensure, themes } from "@storybook/theming"; +import React from "react"; const preview: Preview = { parameters: { @@ -13,6 +15,13 @@ const preview: Preview = { }, }, }, + decorators: [ + (storyFn) => { + const theme = ensure(themes.light); + + return {storyFn()}; + }, + ], }; export default preview; diff --git a/package.json b/package.json index 7e0facd1ebda..872dd0bc2148 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@storybook/react": "^7.0.0", "@storybook/react-vite": "^7.0.0", "@storybook/testing-library": "^0.0.14-next.1", + "@storybook/theming": "^7.0.17", "@types/node": "^18.15.0", "@types/react": "^18.0.34", "@types/react-dom": "^18.2.4", diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 000000000000..d55af1b45c4f --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,12 @@ +import { ThemeProvider, ensure, themes } from "@storybook/theming"; +import React from "react"; + +const theme = ensure(themes.light); + +export function App() { + return ( + +
Hello World
+
+ ); +} diff --git a/src/manager.tsx b/src/manager.tsx index 13fcae3c154a..a1f9074b4579 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -1,5 +1,6 @@ import ReactDOM from "react-dom"; import React from "react"; +import { App } from "./App"; // Add a new DOM element to document.body, where we will bootstrap our React app const domNode = document.createElement("div"); @@ -18,4 +19,4 @@ domNode.style.visibility = "hidden"; document.body.appendChild(domNode); // Render the React app -ReactDOM.render(
Hello World
, domNode); \ No newline at end of file +ReactDOM.render(, domNode); diff --git a/src/preview.ts b/src/preview.ts index f4c7b0c0c671..5574b5432b10 100644 --- a/src/preview.ts +++ b/src/preview.ts @@ -1,4 +1,6 @@ import type { Renderer, ProjectAnnotations } from "@storybook/types"; +import { ThemeProvider, ensure, themes } from "@storybook/theming"; +import React from "react"; /** * Note: if you want to use JSX in this file, rename it to `preview.tsx` diff --git a/yarn.lock b/yarn.lock index 1e7bcd4b6532..a8c179e370ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2229,6 +2229,13 @@ dependencies: "@storybook/global" "^5.0.0" +"@storybook/client-logger@7.0.17": + version "7.0.17" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.17.tgz#7acd3d0e467d6a69f3fc6fbd5b157a32d475c11d" + integrity sha512-1u313wdESQqN08DLfdB1tNMdsk3JExWU1ZlViCwK8cFPZaWgjts1vLcilWtYJBK28yEO/vS4H+lgwSm+oVQXVA== + dependencies: + "@storybook/global" "^5.0.0" + "@storybook/codemod@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.0.tgz#0dcc824ee5ba20542fc3d5c1f944c3d7c993b922" @@ -2613,6 +2620,16 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" +"@storybook/theming@^7.0.17": + version "7.0.17" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.17.tgz#2bb6154f558b08c21d924cd80cdf0c170e93c6c4" + integrity sha512-I0MrZorCGJ1kQmwhsxAsNy02gXRiUmQKuoLNQwitwx8ridzA+ukkkBIr6M38jwA2URaO53AvlGfD/664ZdM4XA== + dependencies: + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@storybook/client-logger" "7.0.17" + "@storybook/global" "^5.0.0" + memoizerific "^1.11.3" + "@storybook/types@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0.tgz#01e0a6bdd94207ea2316dc126dd780438fcb1f2c" From 2dde35129701a9bef0593695d974626864206e67 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 25 May 2023 12:10:20 +0000 Subject: [PATCH 020/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b74cff6f3d0..b26e02bad551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.7 (Thu May 25 2023) + +#### πŸ› Bug Fix + +- Init Storybook Theme Provider [#6](https://github.com/storybookjs/addon-onboarding/pull/6) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.6 (Tue May 23 2023) #### πŸ› Bug Fix From e8f5080d86725597b8c97779704c274e849ca9f1 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 25 May 2023 12:10:22 +0000 Subject: [PATCH 021/430] Bump version to: 0.0.7 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 872dd0bc2148..92cc3ce51449 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.6", + "version": "0.0.7", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 4770c35f92c80287980b015772614edce59f50d5 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 26 May 2023 13:08:48 +0200 Subject: [PATCH 022/430] Implement bare minimum confetti component --- package.json | 5 +- src/components/confetti/Confetti.stories.tsx | 33 ++++++++++++ src/components/confetti/Confetti.tsx | 56 ++++++++++++++++++++ yarn.lock | 12 +++++ 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/components/confetti/Confetti.stories.tsx create mode 100644 src/components/confetti/Confetti.tsx diff --git a/package.json b/package.json index 92cc3ce51449..823354301cb6 100644 --- a/package.json +++ b/package.json @@ -107,5 +107,8 @@ "url": "https://github.com/storybookjs/addon-onboarding/issues" }, "readme": "ERROR: No README data found!", - "homepage": "https://github.com/storybookjs/addon-onboarding#readme" + "homepage": "https://github.com/storybookjs/addon-onboarding#readme", + "dependencies": { + "react-confetti": "^6.1.0" + } } diff --git a/src/components/confetti/Confetti.stories.tsx b/src/components/confetti/Confetti.stories.tsx new file mode 100644 index 000000000000..ab8eec54ccbc --- /dev/null +++ b/src/components/confetti/Confetti.stories.tsx @@ -0,0 +1,33 @@ +import { Meta, StoryObj } from "@storybook/react"; +import { Confetti } from "./Confetti"; +import React from "react"; + +const meta: Meta = { + component: Confetti, + parameters: { + chromatic: { disableSnapshot: true }, + }, + decorators: [ + (StoryFn) => ( +
+ + +
+ ), + ], +}; + +export default meta; + +type Story = StoryObj; + +export const FullWidth: Story = {}; + +export const Positioned: Story = { + args: { + top: 100, + left: 300, + width: 300, + height: 250, + }, +}; diff --git a/src/components/confetti/Confetti.tsx b/src/components/confetti/Confetti.tsx new file mode 100644 index 000000000000..a58ee483fa5e --- /dev/null +++ b/src/components/confetti/Confetti.tsx @@ -0,0 +1,56 @@ +import ReactConfetti from "react-confetti"; +import React, { useEffect } from "react"; +import { styled } from "@storybook/theming"; +import { createPortal } from "react-dom"; + +interface ConfettiProps + extends Omit, "drawShape"> { + top: number; + left: number; + width: number; + height: number; +} + +const confettiContainer = document.createElement("div"); +confettiContainer.setAttribute("id", "confetti-container"); +confettiContainer.setAttribute( + "style", + "position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;" +); + +const Wrapper = styled.div<{ + width: number; + height: number; + top: number; + left: number; +}>(({ width, height, left, top }) => ({ + width: `${width}px`, + height: `${height}px`, + left: `${left}px`, + top: `${top}px`, + position: "relative", + overflow: "hidden", +})); + +export function Confetti({ + top = 0, + left = 0, + width = window.innerWidth, + height = window.innerHeight, + ...confettiProps +}: ConfettiProps) { + useEffect(() => { + document.body.appendChild(confettiContainer); + + return () => { + document.body.removeChild(confettiContainer); + }; + }, []); + + return createPortal( + + + , + confettiContainer + ); +} diff --git a/yarn.lock b/yarn.lock index a8c179e370ca..2ec2b040b037 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7112,6 +7112,13 @@ react-colorful@^5.1.2: resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== +react-confetti@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-confetti/-/react-confetti-6.1.0.tgz#03dc4340d955acd10b174dbf301f374a06e29ce6" + integrity sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw== + dependencies: + tween-functions "^1.2.0" + react-docgen-typescript@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" @@ -8197,6 +8204,11 @@ tunnel@^0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +tween-functions@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff" + integrity sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" From 679dfa7b115667a8e87e3f4eb84608af1c959c71 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 30 May 2023 08:53:31 +0200 Subject: [PATCH 023/430] Move div creation for confetti container into component --- src/components/confetti/Confetti.tsx | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/confetti/Confetti.tsx b/src/components/confetti/Confetti.tsx index a58ee483fa5e..dc94f8e80022 100644 --- a/src/components/confetti/Confetti.tsx +++ b/src/components/confetti/Confetti.tsx @@ -1,7 +1,8 @@ import ReactConfetti from "react-confetti"; -import React, { useEffect } from "react"; +import React, { useEffect, useRef } from "react"; import { styled } from "@storybook/theming"; import { createPortal } from "react-dom"; +import { useState } from "react"; interface ConfettiProps extends Omit, "drawShape"> { @@ -11,13 +12,6 @@ interface ConfettiProps height: number; } -const confettiContainer = document.createElement("div"); -confettiContainer.setAttribute("id", "confetti-container"); -confettiContainer.setAttribute( - "style", - "position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;" -); - const Wrapper = styled.div<{ width: number; height: number; @@ -39,6 +33,17 @@ export function Confetti({ height = window.innerHeight, ...confettiProps }: ConfettiProps) { + const [confettiContainer] = useState(() => { + const container = document.createElement("div"); + container.setAttribute("id", "confetti-container"); + container.setAttribute( + "style", + "position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;" + ); + + return container; + }); + useEffect(() => { document.body.appendChild(confettiContainer); From 04910c28cbdcdb0328e832d8d768fbe083d7ae96 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 09:39:05 +0000 Subject: [PATCH 024/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b26e02bad551..71bab275c65f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.8 (Tue May 30 2023) + +#### πŸ› Bug Fix + +- Implement bare minimum confetti component [#7](https://github.com/storybookjs/addon-onboarding/pull/7) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.7 (Thu May 25 2023) #### πŸ› Bug Fix From ee9656bd1d760da3bd06457c076900b01ddc9254 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 09:39:06 +0000 Subject: [PATCH 025/430] Bump version to: 0.0.8 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 823354301cb6..bb9e71980a42 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.7", + "version": "0.0.8", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 77671156baf6c44b6018a720502df4d41971a825 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 26 May 2023 17:01:53 +0200 Subject: [PATCH 026/430] Implement bare minimum modal component --- package.json | 3 +- src/components/Modal/Modal.stories.tsx | 34 ++++ src/components/Modal/Modal.styled.tsx | 46 ++++++ src/components/Modal/Modal.tsx | 51 ++++++ yarn.lock | 220 ++++++++++++++++++++++++- 5 files changed, 351 insertions(+), 3 deletions(-) create mode 100644 src/components/Modal/Modal.stories.tsx create mode 100644 src/components/Modal/Modal.styled.tsx create mode 100644 src/components/Modal/Modal.tsx diff --git a/package.json b/package.json index 823354301cb6..f4dd09d3a229 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "readme": "ERROR: No README data found!", "homepage": "https://github.com/storybookjs/addon-onboarding#readme", "dependencies": { - "react-confetti": "^6.1.0" + "react-confetti": "^6.1.0", + "@radix-ui/react-dialog": "^1.0.4" } } diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx new file mode 100644 index 000000000000..6af14c990b32 --- /dev/null +++ b/src/components/Modal/Modal.stories.tsx @@ -0,0 +1,34 @@ +import { Meta, StoryObj } from "@storybook/react"; +import { Modal } from "./Modal"; +import React, { useState } from "react"; +import { userEvent, within } from "@storybook/testing-library"; +const meta: Meta = { + component: Modal, +}; +export default meta; +type Story = StoryObj; +export const Default: Story = { + render: () => { + const [isOpen, setOpen] = useState(false); + return ( + <> + + {({ Title, Description, Close }) => ( + <> + Hello world + Modal Title + Modal Description + setOpen(false)}>Close + + )} + + + + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const button = canvas.getByText("Open modal"); + await userEvent.click(button); + }, +}; diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx new file mode 100644 index 000000000000..e25e1ea91db4 --- /dev/null +++ b/src/components/Modal/Modal.styled.tsx @@ -0,0 +1,46 @@ +import { css, styled } from "@storybook/theming"; +import { + Overlay, + Content, + Title, + Description, + Close, +} from "@radix-ui/react-dialog"; +import React from "react"; + +export const StyledOverlay = styled(Overlay)` + background-color: rgba(0, 0, 0, 0.25); + position: fixed; + inset: 0px; + width: 100%; + height: 100%; +})`; + +export const StyledContent = styled.div<{ width: string }>( + ({ width }) => css` + background-color: white; + border-radius: 6px; + box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: ${width ?? "calc(100% - 40px)"}; + max-width: calc(100% - 40px); + max-height: 85vh; + ` +); + +export const ContentWrapper = React.forwardRef< + HTMLDivElement, + React.ComponentProps & + React.ComponentProps +>(({ width, children, ...contentProps }, ref) => ( + + {children} + +)); + +export const StyledTitle = styled(Title)``; +export const StyledDescription = styled(Description)``; +export const StyledClose = styled(Close)``; diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx new file mode 100644 index 000000000000..e217c32c380d --- /dev/null +++ b/src/components/Modal/Modal.tsx @@ -0,0 +1,51 @@ +import React from "react"; + +import * as Dialog from "@radix-ui/react-dialog"; +import { + ContentWrapper, + StyledClose, + StyledDescription, + StyledOverlay, + StyledTitle, +} from "./Modal.styled"; + +type ContentProps = React.ComponentProps; + +interface ModalProps + extends Omit, "children"> { + width?: string; + children: (props: { + Title: typeof StyledTitle; + Description: typeof StyledDescription; + Close: typeof StyledClose; + }) => React.ReactNode; + onEscapeKeyDown?: ContentProps["onEscapeKeyDown"]; + onInteractOutside?: ContentProps["onInteractOutside"]; +} + +export function Modal({ + children, + width, + onEscapeKeyDown, + onInteractOutside = (ev) => ev.preventDefault(), + ...rootProps +}: ModalProps) { + return ( + + + + + {children({ + Title: StyledTitle, + Description: StyledDescription, + Close: StyledClose, + })} + + + + ); +} diff --git a/yarn.lock b/yarn.lock index 2ec2b040b037..0ff83fff2347 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1084,6 +1084,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.13.10": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -1788,6 +1795,148 @@ dependencies: "@octokit/openapi-types" "^12.11.0" +"@radix-ui/primitive@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" + integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-compose-refs@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" + integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-context@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" + integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-dialog@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.4.tgz#06bce6c16bb93eb36d7a8589e665a20f4c1c52c1" + integrity sha512-hJtRy/jPULGQZceSAP2Re6/4NpKo8im6V8P2hUqZsdFiSL8l35kYsw3qbRI6Ay5mQd2+wlLqje770eq+RJ3yZg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.4" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.3" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-portal" "1.0.3" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.1" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + +"@radix-ui/react-dismissable-layer@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz#883a48f5f938fa679427aa17fcba70c5494c6978" + integrity sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-escape-keydown" "1.0.3" + +"@radix-ui/react-focus-guards@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" + integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-focus-scope@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz#9c2e8d4ed1189a1d419ee61edd5c1828726472f9" + integrity sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-id@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" + integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.1" + +"@radix-ui/react-portal@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.3.tgz#ffb961244c8ed1b46f039e6c215a6c4d9989bda1" + integrity sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + +"@radix-ui/react-presence@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba" + integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + +"@radix-ui/react-primitive@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" + integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.2" + +"@radix-ui/react-slot@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" + integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + +"@radix-ui/react-use-callback-ref@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" + integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-use-controllable-state@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" + integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-use-escape-keydown@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" + integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + +"@radix-ui/react-use-layout-effect@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" + integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@rollup/pluginutils@^4.2.0": version "4.2.1" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" @@ -3324,6 +3473,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" + integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== + dependencies: + tslib "^2.0.0" + aria-query@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -4227,6 +4383,11 @@ detect-indent@^6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + detect-package-manager@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" @@ -4981,6 +5142,11 @@ get-monorepo-packages@^1.1.0: globby "^7.1.1" load-json-file "^4.0.0" +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + get-npm-tarball-url@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz#67dff908d699e9e2182530ae6e939a93e5f8dfdb" @@ -5394,6 +5560,13 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + io-ts@^2.1.2: version "2.2.20" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.20.tgz#be42b75f6668a2c44f706f72ee6e4c906777c7f5" @@ -6117,7 +6290,7 @@ log-symbols@^4.0.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7182,6 +7355,34 @@ react-refresh@^0.14.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== +react-remove-scroll-bar@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" + integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + react@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -8174,7 +8375,7 @@ tslib@^2, tslib@^2.0.1, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^2.1.0: +tslib@^2.0.0, tslib@^2.1.0: version "2.5.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== @@ -8403,6 +8604,13 @@ url-join@^4.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== +use-callback-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" + integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + dependencies: + tslib "^2.0.0" + use-resize-observer@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" @@ -8410,6 +8618,14 @@ use-resize-observer@^9.1.0: dependencies: "@juggle/resize-observer" "^3.3.1" +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" From d26f3986e8757e164da19d244fe0468d81839722 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 30 May 2023 13:57:57 +0200 Subject: [PATCH 027/430] Fix play test --- package.json | 5 +- src/components/Modal/Modal.stories.tsx | 8 +- yarn.lock | 255 ++++++++++++++++++++++++- 3 files changed, 263 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 78a34eacd9d6..77221fc1518c 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "@storybook/addon-essentials": "^7.0.0", "@storybook/addon-interactions": "^7.0.0", "@storybook/addon-links": "^7.0.0", + "@storybook/jest": "^0.1.0", "@storybook/react": "^7.0.0", "@storybook/react-vite": "^7.0.0", "@storybook/testing-library": "^0.0.14-next.1", @@ -109,7 +110,7 @@ "readme": "ERROR: No README data found!", "homepage": "https://github.com/storybookjs/addon-onboarding#readme", "dependencies": { - "react-confetti": "^6.1.0", - "@radix-ui/react-dialog": "^1.0.4" + "@radix-ui/react-dialog": "^1.0.4", + "react-confetti": "^6.1.0" } } diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 6af14c990b32..d61205d32969 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -2,11 +2,16 @@ import { Meta, StoryObj } from "@storybook/react"; import { Modal } from "./Modal"; import React, { useState } from "react"; import { userEvent, within } from "@storybook/testing-library"; +import { expect } from "@storybook/jest"; + const meta: Meta = { component: Modal, }; + export default meta; + type Story = StoryObj; + export const Default: Story = { render: () => { const [isOpen, setOpen] = useState(false); @@ -27,8 +32,9 @@ export const Default: Story = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement); + const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Open modal"); await userEvent.click(button); + await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); }, }; diff --git a/yarn.lock b/yarn.lock index 0ff83fff2347..9ed49bb1ad73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" + integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== + "@ampproject/remapping@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" @@ -133,6 +138,13 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.12.13": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" @@ -1091,6 +1103,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.9.2": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb" + integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -1518,6 +1537,13 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + "@jest/schemas@^29.4.3": version "29.4.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" @@ -2300,6 +2326,18 @@ qs "^6.10.0" telejson "^7.0.3" +"@storybook/channel-postmessage@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.18.tgz#deb843705aec24bd23e717a14678fdb1f7cce8ae" + integrity sha512-rpwBH5ANdPnugS6+7xG9qHSoS+aPSEnBxDKsONWFubfMTTXQuFkf/793rBbxGkoINdqh8kSdKOM2rIty6e9cmQ== + dependencies: + "@storybook/channels" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/core-events" "7.0.18" + "@storybook/global" "^5.0.0" + qs "^6.10.0" + telejson "^7.0.3" + "@storybook/channel-websocket@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.0.tgz#46100ad20a591215ebded73dcf85b2d4652cced6" @@ -2320,6 +2358,11 @@ resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0-rc.1.tgz#c60f4a9c82e899f1766f3979c97e7b884518e1b1" integrity sha512-hBER6gliJxsrYEbWlXNljf0/1ybIlYCtaK0Vcgqdw/zmTLG6hEbBpVnxJh56T3mD0Beng8ro9D4EkcLZGQ1LlA== +"@storybook/channels@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.18.tgz#0b5053ad6237ad7f619f1e17448d588de90ac235" + integrity sha512-rkA7ea0M3+dWS+71iHJdiZ5R2QuIdiVg0CgyLJHDagc1qej7pEVNhMWtppeq+X5Pwp9nkz8ZTQ7aCjTf6th0/A== + "@storybook/cli@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.0.tgz#fd64dd0edeabbad041ce3a9aff078bf04851105e" @@ -2385,6 +2428,13 @@ dependencies: "@storybook/global" "^5.0.0" +"@storybook/client-logger@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.18.tgz#396858b53d0aa9485f173083ea27b7c1c48fa2dd" + integrity sha512-uKgFdVedYoRDZBVrE1IBdWNHDFln1IxWEeI+7ZiNSQwREG9swHpU5Fa8DceclM/oLjJRuzG1jFzv+XZY8894+Q== + dependencies: + "@storybook/global" "^5.0.0" + "@storybook/codemod@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.0.tgz#0dcc824ee5ba20542fc3d5c1f944c3d7c993b922" @@ -2461,6 +2511,11 @@ resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0-rc.1.tgz#78e9f7bb0cb63fab417845b005ee702565574d1e" integrity sha512-kp5p7U8H4X+XnJwzm3S9UM1vOREZ/bziQ34882FevPq7HaAQ5JI7p9gQO50JdTbDoe8gtn8cgfzxSkqO6FlY1w== +"@storybook/core-events@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.18.tgz#429e0b092c645bd283adb4836ac0a945e813f085" + integrity sha512-7gxHBQDezdKOeq/u1LL80Bwjfcwsv7XOS3yWQElcgqp+gLaYB6OwwgtkCB2yV6a6l4nep9IdPWE8G3TxIzn9xw== + "@storybook/core-server@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.0.tgz#56f24ec7f948673d67c1bf1e5dda563fe15f0f43" @@ -2532,6 +2587,13 @@ recast "^0.23.1" ts-dedent "^2.0.0" +"@storybook/csf@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.0.tgz#62315bf9704f3aa4e0d4d909b9033833774ddfbe" + integrity sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ== + dependencies: + type-fest "^2.19.0" + "@storybook/csf@next": version "0.0.2-next.10" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2-next.10.tgz#be71280e08bafae97134770ed9d0e5c75bc02f6c" @@ -2557,6 +2619,13 @@ doctrine "^3.0.0" lodash "^4.17.21" +"@storybook/expect@storybook-jest": + version "27.5.2-0" + resolved "https://registry.yarnpkg.com/@storybook/expect/-/expect-27.5.2-0.tgz#131fc4336106805ccd100809a3c2852d31f1da68" + integrity sha512-cP99mhWN/JeCp7VSIiymvj5tmuMY050iFohvp8Zq+kewKsBSZ6/qpTJAGCCZk6pneTcp4S0Fm5BSqyxzbyJ3gw== + dependencies: + "@types/jest" ">=26.0.0" + "@storybook/global@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" @@ -2573,6 +2642,17 @@ "@storybook/global" "^5.0.0" "@storybook/preview-api" "7.0.0" +"@storybook/instrumenter@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.18.tgz#7ac595948b726e55ebdde4288c12b1bd1b4d3781" + integrity sha512-fyQxeuVC0H+w3oyTuByE95xnAQ+l/WhUBVkHV2X+PWjg9vg9Y9JmrbNWynlvz5HLFlsY3qAWJh+ciVRVSvY5Jw== + dependencies: + "@storybook/channels" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/core-events" "7.0.18" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "7.0.18" + "@storybook/instrumenter@next": version "7.0.0-rc.1" resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0-rc.1.tgz#f22ae8d25243375b9e63f1266ae2669614c5c7d7" @@ -2584,6 +2664,16 @@ "@storybook/global" "^5.0.0" "@storybook/preview-api" "7.0.0-rc.1" +"@storybook/jest@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@storybook/jest/-/jest-0.1.0.tgz#73e51e390b36e93e51e6082f4a5bfbad0097d5e3" + integrity sha512-TmybnEXlv5Fu2/Hq4nRj7alS9mw4CasLR0RDwaAzS+Vpvu1TC4+j9rh+b1BHtmWebbJh0JMT6mgzPqOyJdgtQA== + dependencies: + "@storybook/expect" storybook-jest + "@storybook/instrumenter" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" + "@testing-library/jest-dom" "^5.16.2" + jest-mock "^27.3.0" + "@storybook/manager-api@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.0.tgz#49195b6b9e6f28f6d7f7be08f43adb6892ed1991" @@ -2673,6 +2763,27 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" +"@storybook/preview-api@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.18.tgz#ef012f984a2c0b9395b1b75b4f6e25643912c67d" + integrity sha512-xxtC0gPGMn/DbwvS4ZuJaBwfFNsjUCf0yLYHFrNe6fxncbvcLZ550RuyUwYuIRfsiKrlgfa3QmmCa4JM/JesHQ== + dependencies: + "@storybook/channel-postmessage" "7.0.18" + "@storybook/channels" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/core-events" "7.0.18" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/types" "7.0.18" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + "@storybook/preview@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.0.tgz#1f29a57f748a356c98ecc28b355216fe32d6d25e" @@ -2799,6 +2910,16 @@ "@types/express" "^4.7.0" file-system-cache "^2.0.0" +"@storybook/types@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.18.tgz#9418da288db3a1258996aab17fd49ca4eb810b7a" + integrity sha512-qPop2CbvmX42/BX29YT9jIzW2TlMcMjAE+KCpcKLBiD1oT5DJ1fhMzpe6RW9HkMegkBxjWx54iamN4oHM/pwcQ== + dependencies: + "@storybook/channels" "7.0.18" + "@types/babel__core" "^7.0.0" + "@types/express" "^4.7.0" + file-system-cache "^2.0.0" + "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -2820,6 +2941,21 @@ lz-string "^1.4.4" pretty-format "^27.0.2" +"@testing-library/jest-dom@^5.16.2": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + dependencies: + "@adobe/css-tools" "^4.0.1" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + "@testing-library/user-event@^13.2.1": version "13.5.0" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" @@ -3021,6 +3157,14 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@*", "@types/jest@>=26.0.0": + version "29.5.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" + integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/keyv@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" @@ -3175,6 +3319,18 @@ "@types/mime" "*" "@types/node" "*" +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.6.tgz#4887f6e1af11215428ab02777873bcede98a53b0" + integrity sha512-FkHXCb+ikSoUP4Y4rOslzTdX5sqYwMxfefKh1GmZ8ce1GOkEHntSp6b5cGadmNfp5e4BMEWOMx+WSKd5/MqlDA== + dependencies: + "@types/jest" "*" + "@types/treeify@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/treeify/-/treeify-1.0.0.tgz#f04743cb91fc38254e8585d692bd92503782011c" @@ -4234,6 +4390,11 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + csstype@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" @@ -4403,6 +4564,11 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -4429,7 +4595,7 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.9: +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== @@ -4731,6 +4897,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -4799,6 +4970,17 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +expect@^29.0.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + 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" + express@^4.17.3: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" @@ -5904,6 +6086,21 @@ java-properties@^1.0.0: resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + jest-haste-map@^29.5.0: version "29.5.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" @@ -5923,7 +6120,32 @@ jest-haste-map@^29.5.0: optionalDependencies: fsevents "^2.3.2" -jest-mock@^27.0.6: +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.0.6, jest-mock@^27.3.0: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== @@ -7101,6 +7323,15 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^29.0.0, pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -7350,6 +7581,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-refresh@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" @@ -7475,6 +7711,14 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + reduce-flatten@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" @@ -7954,6 +8198,13 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" From 0c6aa807d63b9731961d4c9b4fdc901e556a8a13 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 30 May 2023 14:27:56 +0200 Subject: [PATCH 028/430] Add decorator to add some dimensions to the Story --- src/components/Modal/Modal.stories.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index d61205d32969..4e468805006e 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -6,6 +6,11 @@ import { expect } from "@storybook/jest"; const meta: Meta = { component: Modal, + decorators: [ + (storyFn) => ( +
{storyFn()}
+ ), + ], }; export default meta; From 31de2e4da31478aa6bb6023def574b1cb6219a0a Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 12:33:36 +0000 Subject: [PATCH 029/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71bab275c65f..051e7b7ff28a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.9 (Tue May 30 2023) + +#### πŸ› Bug Fix + +- Implement bare minimum modal component [#18](https://github.com/storybookjs/addon-onboarding/pull/18) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.8 (Tue May 30 2023) #### πŸ› Bug Fix From ca6a329bc4a4cd79f26dbb6f33e9017a3f07ce67 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 12:33:37 +0000 Subject: [PATCH 030/430] Bump version to: 0.0.9 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 77221fc1518c..ae4bf97f10c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.8", + "version": "0.0.9", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 663bf91e1272cdc2f0bae168e36f6017d67ad823 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 30 May 2023 14:34:44 +0200 Subject: [PATCH 031/430] Rename confetti to confett --- src/components/{confetti => confett}/Confetti.stories.tsx | 0 src/components/{confetti => confett}/Confetti.tsx | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/components/{confetti => confett}/Confetti.stories.tsx (100%) rename src/components/{confetti => confett}/Confetti.tsx (100%) diff --git a/src/components/confetti/Confetti.stories.tsx b/src/components/confett/Confetti.stories.tsx similarity index 100% rename from src/components/confetti/Confetti.stories.tsx rename to src/components/confett/Confetti.stories.tsx diff --git a/src/components/confetti/Confetti.tsx b/src/components/confett/Confetti.tsx similarity index 100% rename from src/components/confetti/Confetti.tsx rename to src/components/confett/Confetti.tsx From 118128a84633526e0d01607cae2bdfa6f3bad8d0 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 30 May 2023 14:35:06 +0200 Subject: [PATCH 032/430] Rename confett to Confetti --- src/components/{confett => Confetti}/Confetti.stories.tsx | 0 src/components/{confett => Confetti}/Confetti.tsx | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/components/{confett => Confetti}/Confetti.stories.tsx (100%) rename src/components/{confett => Confetti}/Confetti.tsx (100%) diff --git a/src/components/confett/Confetti.stories.tsx b/src/components/Confetti/Confetti.stories.tsx similarity index 100% rename from src/components/confett/Confetti.stories.tsx rename to src/components/Confetti/Confetti.stories.tsx diff --git a/src/components/confett/Confetti.tsx b/src/components/Confetti/Confetti.tsx similarity index 100% rename from src/components/confett/Confetti.tsx rename to src/components/Confetti/Confetti.tsx From 78857335adf210b07d86113d6e258675802ad9e3 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 12:36:28 +0000 Subject: [PATCH 033/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 051e7b7ff28a..e8249aa7b5af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# v0.0.10 (Tue May 30 2023) + +#### ⚠️ Pushed to `main` + +- Rename confett to Confetti ([@valentinpalkovic](https://github.com/valentinpalkovic)) +- Rename confetti to confett ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.9 (Tue May 30 2023) #### πŸ› Bug Fix From 2fb80865966207306d49fbf13dfb060ac0f19719 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 30 May 2023 12:36:29 +0000 Subject: [PATCH 034/430] Bump version to: 0.0.10 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ae4bf97f10c8..255a8a297d07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.9", + "version": "0.0.10", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From ac0876b57082a8daad5f9c68c8a4278e8d6c95a8 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 25 May 2023 09:30:24 +0200 Subject: [PATCH 035/430] add guided tour example --- .storybook/preview.tsx | 5 + package.json | 3 +- src/App.tsx | 204 +++++++++++++++++++++++++++++++++- src/manager.tsx | 16 +-- src/stories/Button.stories.ts | 7 -- src/stories/Introduction.mdx | 2 +- yarn.lock | 81 ++++++++++++++ 7 files changed, 297 insertions(+), 21 deletions(-) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 0ba900cac403..06515bb08ff6 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -4,6 +4,11 @@ import React from "react"; const preview: Preview = { parameters: { + options: { + storySort: { + order: ["Example", ["Introduction"]], + }, + }, backgrounds: { default: "light", }, diff --git a/package.json b/package.json index 255a8a297d07..baa43cbc3078 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ "homepage": "https://github.com/storybookjs/addon-onboarding#readme", "dependencies": { "@radix-ui/react-dialog": "^1.0.4", - "react-confetti": "^6.1.0" + "react-confetti": "^6.1.0", + "react-joyride": "^2.5.4" } } diff --git a/src/App.tsx b/src/App.tsx index d55af1b45c4f..f18e76af5875 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,208 @@ import { ThemeProvider, ensure, themes } from "@storybook/theming"; -import React from "react"; const theme = ensure(themes.light); -export function App() { +import React, { useEffect, useState } from "react"; +import Joyride, { Step } from "react-joyride"; +import { + STORY_CHANGED, + STORY_ARGS_UPDATED, + SELECT_STORY, +} from "@storybook/core-events"; + +const TitleBody = ({ + prefix, + title, + body, +}: { + prefix?: React.ReactNode; + title: React.ReactNode; + body: React.ReactNode; +}) => { + return ( +
+ {prefix} + {title} +

{body}

+
+ ); +}; + +let INTERACTIONS_COUNT = 0; +export const App = () => { + const [shouldRun, setShouldRun] = useState(true); + const [channel, setChannel] = useState(); + const [stepIndex, setStepIndex] = useState(); + + useEffect(() => { + // TODO: Only get the channel once Storybook is available + setTimeout(() => { + // @ts-ignore + const channelInstance = window?.__STORYBOOK_ADDONS_MANAGER?.getChannel(); + + setChannel(channelInstance); + channelInstance.emit(SELECT_STORY, { + storyId: "example-button--primary", + }); + + // @ts-ignore + document.querySelector("#tabbutton-addon-controls")?.click(); + }, 2000); + }, []); + + useEffect(() => { + if (channel) { + channel.on(STORY_CHANGED, (storyId: string) => { + if (storyId === 'introduction-configure-your-project--docs') { + setShouldRun(false); + } + }); + + channel.on(STORY_ARGS_UPDATED, () => { + console.log("STORY_ARGS_UPDATED", { INTERACTIONS_COUNT }); + INTERACTIONS_COUNT = INTERACTIONS_COUNT + 1; + if (INTERACTIONS_COUNT === 2) { + setStepIndex(4); + } + }); + } + }, [channel]); + + // Challenges + // Do we need to remove autodocs from button component? + // What if the addon panel is not open/visible? + // What if the addon panel is in a bad placement? + // HMR when testing the onboarding component + // Setting up Storybook to the right state as it can be in different stories, addons, etc. + // Defining proper selectors to the Storybook components (task in the monorepo) + // Deal with Storybook channel updates + // Detect new story (apparently there is no event for that!) + + const steps: Step[] = [ + { + content: ( +
+

Welcome to Storybook

+

+ Storybook helps you develop UI components. Let's learn the basics in + a few simple steps. It shouldn't take more than 3 minutes. Enjoy! +

+
+ ), + locale: { skip: Skip onboarding }, + placement: "center", + target: "body", + styles: { + tooltip: { + maxWidth: '100%', + width: 500, + height: 300 + }, + + } + }, + { + target: ".sto-1qwztpk", + content: ( + + ), + placement: "right", + }, + { + target: "#storybook-preview-iframe", + content: ( + + ), + placement: "bottom", + }, + { + target: "#control-primary", + content: ( + + ), + placement: "right", + spotlightPadding: 5, + spotlightClicks: true, + disableOverlay: true, + styles: { + buttonNext: { + display: "none", + }, + spotlight: { + borderRadius: 200, + }, + }, + }, + { + target: "#control-primary", + content: ( + πŸ™Œ} + title="Great progress!" + body="Now that you know how to control your stories interactively, let's dive deeper into how to create a story." + /> + ), + placement: "right", + disableOverlay: true, + }, + { + target: "#introduction-configure-your-project--docs", + content: ( + + ), + placement: "right", + disableOverlay: true, + styles: { + buttonNext: { + display: "none", + }, + } + }, + ]; + return ( + -
Hello World
+ console.log(data)} + styles={{ + spotlight: { + border: "solid 2px #004c7c", + }, + tooltip: { + maxWidth: 260 + }, + buttonNext: { + backgroundColor: "#029CFD", + width: "100%", + padding: "12px 9px", + margin: 0, + }, + tooltipContent: { + paddingBottom: 0 + }, + options: { + zIndex: 10000, + }, + }} + />
); -} +}; \ No newline at end of file diff --git a/src/manager.tsx b/src/manager.tsx index a1f9074b4579..f3a68e4c7401 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -6,14 +6,14 @@ import { App } from "./App"; const domNode = document.createElement("div"); domNode.id = "addon-onboarding"; -domNode.style.position = "absolute"; -domNode.style.top = "0"; -domNode.style.left = "0"; -domNode.style.width = "0"; -domNode.style.height = "0"; -domNode.style.overflow = "hidden"; -domNode.style.opacity = "0"; -domNode.style.visibility = "hidden"; +// domNode.style.position = "absolute"; +// domNode.style.top = "0"; +// domNode.style.left = "0"; +// domNode.style.width = "0"; +// domNode.style.height = "0"; +// domNode.style.overflow = "hidden"; +// domNode.style.opacity = "0"; +// domNode.style.visibility = "hidden"; // Append the new DOM element to document.body document.body.appendChild(domNode); diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts index 04d90ebba309..ce6991f40082 100644 --- a/src/stories/Button.stories.ts +++ b/src/stories/Button.stories.ts @@ -11,13 +11,6 @@ const meta: Meta = { backgroundColor: { control: "color" }, }, tags: ["autodocs"], - parameters: { - myAddonParameter: ` - - a.id} /> - -`, - }, }; export default meta; diff --git a/src/stories/Introduction.mdx b/src/stories/Introduction.mdx index a314fa7f4a8f..295b0a5c6c31 100644 --- a/src/stories/Introduction.mdx +++ b/src/stories/Introduction.mdx @@ -8,7 +8,7 @@ import Plugin from './assets/plugin.svg'; import Repo from './assets/repo.svg'; import StackAlt from './assets/stackalt.svg'; - + \ No newline at end of file diff --git a/package.json b/package.json index b3177dbe92e9..831a5cf3cbcf 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@storybook/testing-library": "^0.0.14-next.1", "@storybook/theming": "^7.0.17", "@types/node": "^18.15.0", - "@types/react": "^18.0.34", + "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", "@vitejs/plugin-react": "^3.1.0", "auto": "^10.3.0", diff --git a/src/App.tsx b/src/App.tsx index 6869e6e45986..5d83f42a4959 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,8 @@ +import React, { useCallback, useEffect, useState } from "react"; import { ThemeProvider, ensure, themes } from "@storybook/theming"; +import { STORY_CHANGED, CURRENT_STORY_WAS_SET } from "@storybook/core-events"; import { type API } from "@storybook/manager-api"; -const theme = ensure(themes.light); - -import React, { useCallback, useEffect, useState } from "react"; -import { STORY_CHANGED, CURRENT_STORY_WAS_SET } from "@storybook/core-events"; import { GuidedTour } from "./features/GuidedTour/GuidedTour"; import { WelcomeModal } from "./features/WelcomeModal/WelcomeModal"; import { WriteStoriesModal } from "./features/WriteStoriesModal/WriteStoriesModal"; @@ -17,6 +15,8 @@ type Step = | "4:VisitNewStory" | "5:ConfigureYourProject"; +const theme = ensure(themes.light); + export default function App({ api }: { api: API }) { const [enabled, setEnabled] = useState(true); const [showConfetti, setShowConfetti] = useState(false); @@ -33,10 +33,9 @@ export default function App({ api }: { api: API }) { }, [setEnabled]); useEffect(() => { - let stepTimeout: NodeJS.Timeout; - let confettiTimeout: NodeJS.Timeout; + let stepTimeout: number; if (step === "4:VisitNewStory") { - stepTimeout = setTimeout(() => { + stepTimeout = window.setTimeout(() => { setShowConfetti(true); setStep("5:ConfigureYourProject"); }, 2000); @@ -44,7 +43,6 @@ export default function App({ api }: { api: API }) { return () => { clearTimeout(stepTimeout); - clearTimeout(confettiTimeout); }; }, [step]); diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 4e468805006e..e031fe5e148d 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -1,9 +1,10 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { Modal } from "./Modal"; import React, { useState } from "react"; +import { Meta, StoryObj } from "@storybook/react"; import { userEvent, within } from "@storybook/testing-library"; import { expect } from "@storybook/jest"; +import { Modal } from "./Modal"; + const meta: Meta = { component: Modal, decorators: [ diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index 9ec74c406274..126a344d4a0a 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -7,7 +7,6 @@ import { Close, } from "@radix-ui/react-dialog"; import React from "react"; -import { Icons } from "@storybook/components"; export const StyledOverlay = styled(Overlay)` background-color: rgba(0, 0, 0, 0.25); @@ -17,7 +16,6 @@ export const StyledOverlay = styled(Overlay)` height: 100%; })`; -// @ts-ignore FIXME export const StyledContent = styled.div<{ width: string }>( ({ width }) => css` background-color: white; @@ -31,9 +29,8 @@ export const StyledContent = styled.div<{ width: string }>( max-width: calc(100% - 40px); max-height: 85vh; ` -) as any; +); -// @ts-ignore FIXME export const ContentWrapper = React.forwardRef< HTMLDivElement, React.ComponentProps & @@ -57,22 +54,4 @@ export const StyledDescription = styled(Description)` color: #454e54; `; -const StyledIcon = styled(Icons)` - margin-left: 2px; - height: 10px; -` - -const CloseButton = ({ ...props }: any) => { - return ( - - {props.children} - - - ); -}; -export const StyledClose = styled(CloseButton)` - all: unset; - cursor: pointer; - font-size: 13px; - color: #798186; -`; +export const StyledClose = styled(Close)``; diff --git a/src/components/TitleBody/TitleBody.styled.tsx b/src/components/TitleBody/TitleBody.styled.tsx new file mode 100644 index 000000000000..1bb86b600807 --- /dev/null +++ b/src/components/TitleBody/TitleBody.styled.tsx @@ -0,0 +1,19 @@ +import { styled } from "@storybook/theming"; + +export const Wrapper = styled.div` + display: flex; + flex-direction: column; + align-items: flex-start; +`; + +export const Title = styled.strong` + font-size: 13px; +`; + +export const Body = styled.p` + font-size: 13px; + text-align: start; + color: #798186; + margin: 0; + margin-top: 4px; +`; diff --git a/src/components/TitleBody/TitleBody.tsx b/src/components/TitleBody/TitleBody.tsx index 1c9052b46605..1c096c2129b2 100644 --- a/src/components/TitleBody/TitleBody.tsx +++ b/src/components/TitleBody/TitleBody.tsx @@ -1,23 +1,5 @@ import React from "react"; -import { styled } from "@storybook/theming"; - -const Wrapper = styled.div` - display: flex; - flex-direction: column; - align-items: flex-start; -`; - -const Title = styled.strong` - font-size: 13px; -`; - -const Body = styled.p` - font-size: 13px; - text-align: start; - color: #798186; - margin: 0; - margin-top: 4px; -`; +import { Body, Title, Wrapper } from "./TitleBody.styled"; export function TitleBody({ prefix, diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx new file mode 100644 index 000000000000..e8344da3f151 --- /dev/null +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -0,0 +1,80 @@ +import { Icons } from "@storybook/components"; +import { keyframes, styled } from "@storybook/theming"; + +export const rainbowAnimation = keyframes` + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +`; + +export const ModalContentWrapper = styled.div` + background: radial-gradient( + circle at left, + #ffccd2, + #ffdbcb, + #ffe9c5, + #fff8c0, + #f2ffd8, + #d2f8e5, + #b3f0f1, + #a1e6f0, + #9fd8df + ) + left, + radial-gradient( + circle at right, + #ffccd2, + #ffdbcb, + #ffe9c5, + #fff8c0, + #f2ffd8, + #d2f8e5, + #b3f0f1, + #a1e6f0, + #9fd8df + ) + right, + linear-gradient( + 45deg, + #ffccd2, + #ffdbcb, + #ffe9c5, + #fff8c0, + #f2ffd8, + #d2f8e5, + #b3f0f1, + #a1e6f0, + #9fd8df + ); + background-size: 300% 300%; + background-repeat: no-repeat; + animation: ${rainbowAnimation} 10s linear infinite; + border-radius: 5px; + display: flex; + flex-direction: column; + align-items: center; + padding-top: 100px; + padding-bottom: 20px; +`; + +export const StyledIcon = styled(Icons)` + margin-left: 2px; + height: 10px; +`; + +export const SkipButton = styled.button` + all: unset; + margin-top: 90px; + cursor: pointer; + font-size: 13px; + color: #798186; + :focus-visible { + outline: auto; + } +`; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 7654fbbbf890..44f4b302a1c8 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -1,72 +1,13 @@ -import { styled, keyframes } from "@storybook/theming"; -import { Button } from "../../components/Button/Button"; - import React from "react"; + +import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; import { StorybookLogo } from "../../components/Icons/StorybookLogo"; - -const rainbowAnimation = keyframes` - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } -`; - -// @ts-ignore FIXME -export const ModalContentWrapper = styled.div` - background: radial-gradient( - circle at left, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ) - left, - radial-gradient( - circle at right, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ) - right, - linear-gradient( - 45deg, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ); - background-size: 300% 300%; - background-repeat: no-repeat; - animation: ${rainbowAnimation} 10s linear infinite; - border-radius: 5px; - display: flex; - flex-direction: column; - align-items: center; - padding-top: 100px; - padding-bottom: 20px; -` as any; +import { + ModalContentWrapper, + SkipButton, + StyledIcon, +} from "./WelcomeModal.styled"; export const WelcomeModal = ({ onSkip, @@ -89,8 +30,11 @@ export const WelcomeModal = ({ - - Skip tour + + + Skip tour + + )} diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index c940947e9334..af9e89164bfd 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -3,7 +3,7 @@ import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; import { StorybookLogo } from "../../components/Icons/StorybookLogo"; -import { ModalContentWrapper } from "../WelcomeModal/WelcomeModal"; +import { ModalContentWrapper } from "../WelcomeModal/WelcomeModal.styled"; export function WriteStoriesModal({ onFinish }: { onFinish: () => void }) { return ( diff --git a/src/manager.tsx b/src/manager.tsx index 2eec7cf81a7b..b71d44185828 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -4,42 +4,37 @@ import { addons } from "@storybook/manager-api"; const App = lazy(() => import("./App")); -const isDevMode = process.env.NODE_ENV !== "production"; - // The addon is enabled only when: -// 1. In dev mode -// 2. The onboarding query parameter is present -// 3. The example button stories are present -if (isDevMode) { - addons.register("@storybook/addon-onboarding", async (api) => { - const isOnboarding = api.getUrlState().queryParams.onboarding; - - if (!isOnboarding) { - return; - } - - let hasButtonStories = false; - try { - const response = await fetch('./index.json') - const index = await response.json() - hasButtonStories = !!index.entries['example-button--primary'] - } catch (e) { } - - if (hasButtonStories) { - // Add a new DOM element to document.body, where we will bootstrap our React app - const domNode = document.createElement("div"); - - domNode.id = "addon-onboarding"; - // Append the new DOM element to document.body - document.body.appendChild(domNode); - - // Render the React app - ReactDOM.render( - Loading...}> - - , - domNode - ); - } - }); -} +// 1. The onboarding query parameter is present +// 2. The example button stories are present +addons.register("@storybook/addon-onboarding", async (api) => { + const isOnboarding = api.getUrlState().queryParams.onboarding; + + if (!isOnboarding) { + return; + } + + let hasButtonStories = false; + try { + const response = await fetch("./index.json"); + const index = await response.json(); + hasButtonStories = !!index.entries["example-button--primary"]; + } catch (e) {} + + if (hasButtonStories) { + // Add a new DOM element to document.body, where we will bootstrap our React app + const domNode = document.createElement("div"); + + domNode.id = "addon-onboarding"; + // Append the new DOM element to document.body + document.body.appendChild(domNode); + + // Render the React app + ReactDOM.render( + Loading...}> + + , + domNode + ); + } +}); diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts index 0e8efae07656..0c3e10dbb892 100644 --- a/src/stories/Button.stories.ts +++ b/src/stories/Button.stories.ts @@ -47,3 +47,19 @@ export const Small: Story = { label: "Button", }, }; + +export const Warning: Story = { + args: { + primary: true, + backgroundColor: "red", + label: "Delete now", + }, +}; + +export const Warnings: Story = { + args: { + primary: true, + backgroundColor: "red", + label: "Delete now", + }, +}; diff --git a/yarn.lock b/yarn.lock index 0cf41388bfe7..5ab9b51450a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,11 +8,11 @@ integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" "@arcanis/slice-ansi@^1.0.2": @@ -22,17 +22,17 @@ dependencies: grapheme-splitter "^1.0.4" -"@auto-it/bot-list@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.43.0.tgz#1a054a5ba0de3d68657a2f453de2ceffb3ea0ccc" - integrity sha512-rQshCAEjtRhF8oFL9VNxBm6nWibd+YVSnMfxPhg6v4Mbs0xBIoF3Nzu7aTEjOkSl9+YIaRWnVV70bALAFgI0MQ== +"@auto-it/bot-list@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.46.0.tgz#8e8c3d3bb68b8b4e13705fff373fbdab14869249" + integrity sha512-QkkBgQVi1g/1Tpxcs3Hm3zTzaaM0xjiIRt5xEA6TRM/ULdgEqY+Jk/w1fJZe9GVF+53mwRfqGtQeJirilMBH6g== -"@auto-it/core@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.43.0.tgz#05bb8f9544273ab4b3ce4b6cff12115ec644031c" - integrity sha512-aAhEodT0y2gS1ueKl2iCMc5VDK9jZMnuspGDaR8SBKcsP7o8R6hxKtxGc2cAAoNOPewcBpe72Yy8768FLoUhAQ== +"@auto-it/core@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.46.0.tgz#f7445ab03478cd9819e6bb78b1e5a441240dbf5f" + integrity sha512-68jWcUuQBFCjgUvEWa64ENeRPULFYiaFpo37H6SUuLcZ2XBD+Bt4Y0yqHWjs6F5g19S7pzOYe25SxWf+U0J4LQ== dependencies: - "@auto-it/bot-list" "10.43.0" + "@auto-it/bot-list" "10.46.0" "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" "@octokit/core" "^3.5.1" "@octokit/plugin-enterprise-compatibility" "1.3.0" @@ -73,13 +73,13 @@ typescript-memoize "^1.0.0-alpha.3" url-join "^4.0.0" -"@auto-it/npm@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.43.0.tgz#049a6402937c94623d3d2832f669d108fc4e3db4" - integrity sha512-XR3HA8HwUHFaZHQjFeUBDtymjIKEv4m2W1/uaix6MSgPs3Np/hmV7e6R/TGdA8XXFU1oSlkQEuu0CI9/rK4qKA== +"@auto-it/npm@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.46.0.tgz#2c139b831fe73eee7b9065de01a953525eba20f1" + integrity sha512-hvwXxRJE70ay4/CMEDtILZvefXqmo+jp/w8FEu4Bo1Kq96AREfH9cO+mgj1nPon5yg353SCcupGV3OyoZt18iw== dependencies: - "@auto-it/core" "10.43.0" - "@auto-it/package-json-utils" "10.43.0" + "@auto-it/core" "10.46.0" + "@auto-it/package-json-utils" "10.46.0" await-to-js "^3.0.0" endent "^2.1.0" env-ci "^5.0.1" @@ -93,32 +93,32 @@ url-join "^4.0.0" user-home "^2.0.0" -"@auto-it/package-json-utils@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.43.0.tgz#dc8e0b2290d52109f35c0d152142ee54f00272b9" - integrity sha512-93NwxSNnocpsiJiXZOX/DE1R9j+NOXCXzRAgnXpeRFdOBviMi8AxCQBoyW66IYjLAEnwKwFXN8Xk76zejkPlgw== +"@auto-it/package-json-utils@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.46.0.tgz#3a035efbf098cbb61ad3ce712008a060a25896a8" + integrity sha512-dl0VW3oJ/JfyuXlVucLlsBaQH69GTkTXLSq9JZ723hT55/owcywDpSlD4YH158hm7Lv5CdHw2u3z60XUlqa6xQ== dependencies: parse-author "^2.0.0" parse-github-url "1.0.2" -"@auto-it/released@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.43.0.tgz#3192a11126da283cbec741bba61faa6e1861ea4b" - integrity sha512-pwUG0uUX1Zeoinj7BB2/af7aRLU3mgbBqpHyCip5VJyYjRnGvoZKRpYbSl+zY7MnT9LVbKy9zPWezjyM5j0Ong== +"@auto-it/released@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.46.0.tgz#9e18c909f7e067e3769ee439290404e28420bae0" + integrity sha512-U0XYvkcPoO4c4WiJz6PQ8jUOMEH1EjxXRGyvaaZWfZOtr2vquvGDIAs6ntekURcNs75H780K49es18mTLgz9/g== dependencies: - "@auto-it/bot-list" "10.43.0" - "@auto-it/core" "10.43.0" + "@auto-it/bot-list" "10.46.0" + "@auto-it/core" "10.46.0" deepmerge "^4.0.0" fp-ts "^2.5.3" io-ts "^2.1.2" tslib "2.1.0" -"@auto-it/version-file@10.43.0": - version "10.43.0" - resolved "https://registry.yarnpkg.com/@auto-it/version-file/-/version-file-10.43.0.tgz#adac9f9d9df9e507c892a56fec439afa506d1db1" - integrity sha512-PikUfE89C8yzb9EKylMBWyizQ+0PfXTkDahyu5kqefokxETnEKcV/6qDS5GvAVCchprN1ibvNwEq7tkeBRtSfA== +"@auto-it/version-file@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@auto-it/version-file/-/version-file-10.46.0.tgz#d99d87f9dffe17ac3ac638f5feaffccdfb496d13" + integrity sha512-V5HEQyGHPCFzH8Fj7RlBebgZ83P0QYXpNTtzPF6az4NLoNvaeZmqkirhx7WEasggVvyfX56GlM6df5jwXXfi7g== dependencies: - "@auto-it/core" "10.43.0" + "@auto-it/core" "10.46.0" fp-ts "^2.5.3" io-ts "^2.1.2" semver "^7.0.0" @@ -131,52 +131,76 @@ dependencies: default-browser-id "3.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.12.13": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" - integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.0", "@babel/compat-data@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.3.tgz#cd502a6a0b6e37d7ad72ce7e71a7160a3ae36f7e" + integrity sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.12", "@babel/core@^7.20.2", "@babel/core@^7.7.5", "@babel/core@~7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== +"@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.12", "@babel/core@^7.20.2", "@babel/core@^7.7.5": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.1.tgz#5de51c5206f4c6f5533562838337a603c1033cfd" + integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.0" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-module-transforms" "^7.22.1" + "@babel/helpers" "^7.22.0" + "@babel/parser" "^7.22.0" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/core@~7.21.0": + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" + integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@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.0" - "@babel/types" "^7.21.0" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.12.11", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@~7.21.1": - version "7.21.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" - integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== +"@babel/generator@^7.12.11", "@babel/generator@^7.21.5", "@babel/generator@^7.22.0", "@babel/generator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.3.tgz#0ff675d2edb93d7596c5f6728b52615cfc0df01e" + integrity sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.22.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@~7.21.1": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" + integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== + dependencies: + "@babel/types" "^7.21.5" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -189,45 +213,46 @@ "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.3.tgz#c9b83d1ba74e163e023f008a3d3204588a7ceb60" + integrity sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/types" "^7.22.3" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5", "@babel/helper-compilation-targets@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz#bfcd6b7321ffebe33290d68550e2c9d7eb7c7a58" + integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ== dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" + "@babel/compat-data" "^7.22.0" + "@babel/helper-validator-option" "^7.21.0" browserslist "^4.21.3" lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" - integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz#ae3de70586cc757082ae3eba57240d42f468c41b" + integrity sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-environment-visitor" "^7.22.1" "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.22.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-replace-supers" "^7.22.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" + semver "^6.3.0" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" - integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.1.tgz#a7ed9a8488b45b467fca353cd1a44dc5f0cf5c70" + integrity sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.3.1" + semver "^6.3.0" "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" @@ -241,17 +266,22 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== +"@babel/helper-define-polyfill-provider@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz#487053f103110f25b9755c5980e031e93ced24d8" + integrity sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg== dependencies: - "@babel/types" "^7.18.6" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5", "@babel/helper-environment-visitor@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz#ac3a56dbada59ed969d712cf527bd8271fe3eba8" + integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA== "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" @@ -268,33 +298,33 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" - integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== +"@babel/helper-member-expression-to-functions@^7.22.0": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz#4b77a12c1b4b8e9e28736ed47d8b91f00976911f" + integrity sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.22.3" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" - integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz#e0cad47fedcf3cae83c11021696376e2d5a50c63" + integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-environment-visitor" "^7.22.1" + "@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.2" - "@babel/types" "^7.21.2" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -303,10 +333,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" @@ -318,24 +348,24 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" - integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz#38cf6e56f7dc614af63a21b45565dd623f0fdc95" + integrity sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-member-expression-to-functions" "^7.22.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: - "@babel/types" "^7.20.2" + "@babel/types" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" @@ -351,17 +381,17 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": +"@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== @@ -376,14 +406,14 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/helpers@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" - integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== +"@babel/helpers@^7.21.5", "@babel/helpers@^7.22.0": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.3.tgz#53b74351da9684ea2f694bf0877998da26dd830e" + integrity sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w== dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.3" "@babel/highlight@^7.18.6": version "7.18.6" @@ -394,10 +424,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2", "@babel/parser@~7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32" + integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA== + +"@babel/parser@~7.21.2": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" + integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -406,16 +441,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" - integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.3.tgz#a75be1365c0c3188c51399a662168c1c98108659" + integrity sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.7" + "@babel/plugin-transform-optional-chaining" "^7.22.3" -"@babel/plugin-proposal-async-generator-functions@^7.20.1": +"@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== @@ -433,7 +468,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== @@ -466,7 +501,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": +"@babel/plugin-proposal-logical-assignment-operators@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== @@ -490,7 +525,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.20.2": +"@babel/plugin-proposal-object-rest-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -509,7 +544,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -526,7 +561,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== @@ -580,11 +615,11 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107" + integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-import-assertions@^7.20.0": version "7.20.0" @@ -593,6 +628,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/plugin-syntax-import-attributes@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.3.tgz#d7168f22b9b49a6cc1792cec78e06a18ad2e7b4b" + integrity sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -600,12 +649,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== +"@babel/plugin-syntax-jsx@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -663,21 +712,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== +"@babel/plugin-syntax-typescript@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" - integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" + integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.3.tgz#3ed99924c354fb9e80dabb2cc8d002c702e94527" + integrity sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== @@ -693,14 +760,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.20.2": +"@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.20.2": +"@babel/plugin-transform-class-properties@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.3.tgz#3407145e513830df77f0cef828b8b231c166fe4c" + integrity sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-class-static-block@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.3.tgz#e352cf33567385c731a8f21192efeba760358773" + integrity sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== @@ -715,18 +799,18 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" - integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== +"@babel/plugin-transform-computed-properties@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" + integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/template" "^7.20.7" -"@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" - integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== +"@babel/plugin-transform-destructuring@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -745,6 +829,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-dynamic-import@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.1.tgz#6c56afaf896a07026330cf39714532abed8d9ed1" + integrity sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" @@ -753,7 +845,15 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-flow-strip-types@^7.18.6": +"@babel/plugin-transform-export-namespace-from@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.3.tgz#9b8700aa495007d3bebac8358d1c562434b680b9" + integrity sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== @@ -761,12 +861,12 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-flow" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.8": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" - integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== +"@babel/plugin-transform-for-of@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" + integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" @@ -777,6 +877,14 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-json-strings@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.3.tgz#a181b8679cf7c93e9d0e3baa5b1776d65be601a9" + integrity sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -784,6 +892,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-logical-assignment-operators@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.3.tgz#9e021455810f33b0baccb82fb759b194f5dc36f0" + integrity sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" @@ -791,7 +907,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.19.6": +"@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== @@ -799,23 +915,23 @@ "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" - integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" + integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== dependencies: - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-simple-access" "^7.21.5" -"@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" - integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== +"@babel/plugin-transform-modules-systemjs@^7.20.11", "@babel/plugin-transform-modules-systemjs@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.3.tgz#cc507e03e88d87b016feaeb5dae941e6ef50d91e" + integrity sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-module-transforms" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": @@ -826,20 +942,47 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" - integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.3.tgz#db6fb77e6b3b53ec3b8d370246f0b7cf67d35ab4" + integrity sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== +"@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.3.tgz#deb0377d741cbee2f45305868b9026dcd6dd96e2" + integrity sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.3.tgz#8c519f8bf5af94a9ca6f65cf422a9d3396e542b9" + integrity sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.3.tgz#02493070ca6685884b0eee705363ee4da2132ab0" + integrity sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.3.tgz#da6fba693effb8c203d8c3bdf7bf4e2567e802e9" + integrity sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw== + dependencies: + "@babel/compat-data" "^7.22.3" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.3" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" @@ -849,12 +992,47 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" - integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== +"@babel/plugin-transform-optional-catch-binding@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.3.tgz#e971a083fc7d209d9cd18253853af1db6d8dc42f" + integrity sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.3.tgz#5fd24a4a7843b76da6aeec23c7f551da5d365290" + integrity sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3", "@babel/plugin-transform-parameters@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.3.tgz#24477acfd2fd2bc901df906c9bf17fbcfeee900d" + integrity sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw== + dependencies: + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-private-methods@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.3.tgz#adac38020bab5047482d3297107c1f58e9c574f6" + integrity sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.3.tgz#031621b02c7b7d95389de1a3dba2fe9e8c548e56" + integrity sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" @@ -878,22 +1056,22 @@ "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-react-jsx@^7.19.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" - integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.3.tgz#5a1f380df3703ba92eb1a930a539c6d88836f690" + integrity sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.21.0" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/types" "^7.22.3" -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" - integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== +"@babel/plugin-transform-regenerator@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" + integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": @@ -910,7 +1088,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.19.0": +"@babel/plugin-transform-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== @@ -939,21 +1117,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typescript@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz#f0956a153679e3b377ae5b7f0143427151e4c848" - integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg== +"@babel/plugin-transform-typescript@^7.21.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz#8f662cec8ba88c873f1c7663c0c94e3f68592f09" + integrity sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-typescript" "^7.20.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/plugin-syntax-typescript" "^7.21.4" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== +"@babel/plugin-transform-unicode-escapes@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" + integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.3.tgz#597b6a614dc93eaae605ee293e674d79d32eb380" + integrity sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -963,31 +1150,125 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.20.2", "@babel/preset-env@~7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== +"@babel/plugin-transform-unicode-sets-regex@^7.22.3": + version "7.22.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.3.tgz#7c14ee33fa69782b0101d0f7143d3fc73ce00700" + integrity sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw== dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + +"@babel/preset-env@^7.20.2": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.4.tgz#c86a82630f0e8c61d9bb9327b7b896732028cbed" + integrity sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ== + dependencies: + "@babel/compat-data" "^7.22.3" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.3" + "@babel/plugin-proposal-private-property-in-object" "^7.21.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-import-attributes" "^7.22.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.21.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.3" + "@babel/plugin-transform-async-to-generator" "^7.20.7" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.21.0" + "@babel/plugin-transform-class-properties" "^7.22.3" + "@babel/plugin-transform-class-static-block" "^7.22.3" + "@babel/plugin-transform-classes" "^7.21.0" + "@babel/plugin-transform-computed-properties" "^7.21.5" + "@babel/plugin-transform-destructuring" "^7.21.3" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-dynamic-import" "^7.22.1" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-export-namespace-from" "^7.22.3" + "@babel/plugin-transform-for-of" "^7.21.5" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-json-strings" "^7.22.3" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.3" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.20.11" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.3" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.3" + "@babel/plugin-transform-new-target" "^7.22.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.3" + "@babel/plugin-transform-numeric-separator" "^7.22.3" + "@babel/plugin-transform-object-rest-spread" "^7.22.3" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-optional-catch-binding" "^7.22.3" + "@babel/plugin-transform-optional-chaining" "^7.22.3" + "@babel/plugin-transform-parameters" "^7.22.3" + "@babel/plugin-transform-private-methods" "^7.22.3" + "@babel/plugin-transform-private-property-in-object" "^7.22.3" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.21.5" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.20.7" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.21.5" + "@babel/plugin-transform-unicode-property-regex" "^7.22.3" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.3" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.22.4" + babel-plugin-polyfill-corejs2 "^0.4.3" + babel-plugin-polyfill-corejs3 "^0.8.1" + babel-plugin-polyfill-regenerator "^0.5.0" + core-js-compat "^3.30.2" + semver "^6.3.0" + +"@babel/preset-env@~7.21.0": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" + integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg== + dependencies: + "@babel/compat-data" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" + "@babel/plugin-proposal-async-generator-functions" "^7.20.7" "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.21.0" "@babel/plugin-proposal-dynamic-import" "^7.18.6" "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-object-rest-spread" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.21.0" "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.21.0" "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -995,6 +1276,7 @@ "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1004,40 +1286,40 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.21.5" + "@babel/plugin-transform-async-to-generator" "^7.20.7" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-block-scoping" "^7.21.0" + "@babel/plugin-transform-classes" "^7.21.0" + "@babel/plugin-transform-computed-properties" "^7.21.5" + "@babel/plugin-transform-destructuring" "^7.21.3" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-for-of" "^7.21.5" "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-amd" "^7.20.11" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" + "@babel/plugin-transform-modules-systemjs" "^7.20.11" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-parameters" "^7.21.3" "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.21.5" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-spread" "^7.20.7" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-escapes" "^7.21.5" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" + "@babel/types" "^7.21.5" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -1045,13 +1327,13 @@ semver "^6.3.0" "@babel/preset-flow@^7.13.13": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" - integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.21.4.tgz#a5de2a1cafa61f0e0b3af9b30ff0295d38d3608f" + integrity sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-flow-strip-types" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-flow-strip-types" "^7.21.0" "@babel/preset-modules@^0.1.5": version "0.1.5" @@ -1065,13 +1347,15 @@ esutils "^2.0.2" "@babel/preset-typescript@^7.13.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" - integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg== + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz#68292c884b0e26070b4d66b202072d391358395f" + integrity sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-transform-typescript" "^7.21.0" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" + "@babel/plugin-transform-typescript" "^7.21.3" "@babel/register@^7.13.16": version "7.21.0" @@ -1089,58 +1373,69 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.8.4": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/runtime@^7.13.10": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" - integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.22.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb" integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ== dependencies: regenerator-runtime "^0.13.11" -"@babel/template@^7.18.10", "@babel/template@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== +"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.21.9": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" + integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/code-frame" "^7.21.4" + "@babel/parser" "^7.21.9" + "@babel/types" "^7.21.5" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@~7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" - integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.22.1": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.4.tgz#c3cf96c5c290bd13b55e29d025274057727664c0" + integrity sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.1" - "@babel/helper-environment-visitor" "^7.18.9" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.3" + "@babel/helper-environment-visitor" "^7.22.1" "@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.2" - "@babel/types" "^7.21.2" + "@babel/parser" "^7.22.4" + "@babel/types" "^7.22.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@~7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" - integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== +"@babel/traverse@~7.21.2": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" + integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== + 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.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.22.0", "@babel/types@^7.22.3", "@babel/types@^7.22.4", "@babel/types@^7.4.4": + version "7.22.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.4.tgz#56a2653ae7e7591365dabf20b76295410684c071" + integrity sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA== dependencies: - "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-string-parser" "^7.21.5" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@babel/types@~7.21.2": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" + integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== + dependencies: + "@babel/helper-string-parser" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" @@ -1172,9 +1467,9 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== "@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2": version "3.0.2" @@ -1186,335 +1481,115 @@ ts-node "^9" tslib "^2" -"@esbuild/android-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" - integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== - -"@esbuild/android-arm64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.11.tgz#52c3e6cabc19c5e4c1c0c01cb58f0442338e1c14" - integrity sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg== - -"@esbuild/android-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz#4624cea3c8941c91f9e9c1228f550d23f1cef037" - integrity sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg== - -"@esbuild/android-arm@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" - integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== - -"@esbuild/android-arm@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.11.tgz#f3fc768235aecbeb840d0049fdf13cd28592105f" - integrity sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw== - -"@esbuild/android-arm@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.14.tgz#74fae60fcab34c3f0e15cb56473a6091ba2b53a6" - integrity sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g== - -"@esbuild/android-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" - integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== - -"@esbuild/android-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.11.tgz#443ed47771a7e917e4282469ba350d117473550c" - integrity sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ== - -"@esbuild/android-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.14.tgz#f002fbc08d5e939d8314bd23bcfb1e95d029491f" - integrity sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng== - -"@esbuild/darwin-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" - integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== - -"@esbuild/darwin-arm64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.11.tgz#0e8c78d94d5759a48521dbfd83189d2ed3499a16" - integrity sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw== - -"@esbuild/darwin-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz#b8dcd79a1dd19564950b4ca51d62999011e2e168" - integrity sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw== - -"@esbuild/darwin-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" - integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== - -"@esbuild/darwin-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.11.tgz#2405cfdf70eb961c7cf973463ca7263dc2004c88" - integrity sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw== - -"@esbuild/darwin-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz#4b49f195d9473625efc3c773fc757018f2c0d979" - integrity sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g== - -"@esbuild/freebsd-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" - integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== - -"@esbuild/freebsd-arm64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.11.tgz#d5138e873e15f87bd4564c024dfa00ef37e623fd" - integrity sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q== - -"@esbuild/freebsd-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz#480923fd38f644c6342c55e916cc7c231a85eeb7" - integrity sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A== - -"@esbuild/freebsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" - integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== - -"@esbuild/freebsd-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.11.tgz#e850b58b8fabf8e9ef0e125af3c25229ad2d6c38" - integrity sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g== - -"@esbuild/freebsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz#a6b6b01954ad8562461cb8a5e40e8a860af69cbe" - integrity sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw== - -"@esbuild/linux-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" - integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== - -"@esbuild/linux-arm64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.11.tgz#2bfb93d0809ec2357c12ebb27736b750c9ae0aa5" - integrity sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg== - -"@esbuild/linux-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz#1fe2f39f78183b59f75a4ad9c48d079916d92418" - integrity sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g== - -"@esbuild/linux-arm@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" - integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== - -"@esbuild/linux-arm@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.11.tgz#e56fb3b76828317a704f4a167c5bd790fe5314e7" - integrity sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg== - -"@esbuild/linux-arm@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz#18d594a49b64e4a3a05022c005cb384a58056a2a" - integrity sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg== - -"@esbuild/linux-ia32@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" - integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== - -"@esbuild/linux-ia32@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.11.tgz#59fa1c49b271793d14eb5effc757e8c0d0cb2cab" - integrity sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA== - -"@esbuild/linux-ia32@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz#f7f0182a9cfc0159e0922ed66c805c9c6ef1b654" - integrity sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ== - -"@esbuild/linux-loong64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" - integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== - -"@esbuild/linux-loong64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.11.tgz#89575bc189099c03a36daa54f3f481780c7fd502" - integrity sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g== - -"@esbuild/linux-loong64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz#5f5305fdffe2d71dd9a97aa77d0c99c99409066f" - integrity sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ== - -"@esbuild/linux-mips64el@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" - integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== - -"@esbuild/linux-mips64el@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.11.tgz#0e18ca039dc7e4645efd8edc1b10952933eb6b1b" - integrity sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw== - -"@esbuild/linux-mips64el@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz#a602e85c51b2f71d2aedfe7f4143b2f92f97f3f5" - integrity sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg== - -"@esbuild/linux-ppc64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" - integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== - -"@esbuild/linux-ppc64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.11.tgz#2d152cb3a253afb8c100a165ad132dc96f36cb11" - integrity sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA== - -"@esbuild/linux-ppc64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz#32d918d782105cbd9345dbfba14ee018b9c7afdf" - integrity sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ== - -"@esbuild/linux-riscv64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" - integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== - -"@esbuild/linux-riscv64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.11.tgz#c6ac494a81221d53d65b33e665c7df1747952d3c" - integrity sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA== - -"@esbuild/linux-riscv64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz#38612e7b6c037dff7022c33f49ca17f85c5dec58" - integrity sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw== - -"@esbuild/linux-s390x@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" - integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== - -"@esbuild/linux-s390x@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.11.tgz#4bad33894bc7415cea4be8fa90fe456226a424ad" - integrity sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ== - -"@esbuild/linux-s390x@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz#4397dff354f899e72fd035d72af59a700c465ccb" - integrity sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww== - -"@esbuild/linux-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" - integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== - -"@esbuild/linux-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.11.tgz#903fda743459f530a16a6c6ee8d2c0f6c1a12fc7" - integrity sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw== - -"@esbuild/linux-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz#6c5cb99891b6c3e0c08369da3ef465e8038ad9c2" - integrity sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw== - -"@esbuild/netbsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" - integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== - -"@esbuild/netbsd-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.11.tgz#b589239fe7d9b16ee03c5e191f3f5b640f1518a1" - integrity sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag== - -"@esbuild/netbsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz#5fa5255a64e9bf3947c1b3bef5e458b50b211994" - integrity sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ== - -"@esbuild/openbsd-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" - integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== - -"@esbuild/openbsd-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.11.tgz#b355019754116bef39ec688f8fd2fe6471b9779b" - integrity sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w== - -"@esbuild/openbsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz#74d14c79dcb6faf446878cc64284aa4e02f5ca6f" - integrity sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g== - -"@esbuild/sunos-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" - integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== - -"@esbuild/sunos-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.11.tgz#2ea47fb592e68406e5025a7696dc714fc6a115dc" - integrity sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg== - -"@esbuild/sunos-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz#5c7d1c7203781d86c2a9b2ff77bd2f8036d24cfa" - integrity sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA== - -"@esbuild/win32-arm64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" - integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== - -"@esbuild/win32-arm64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.11.tgz#47e6fdab17c4c52e6e0d606dd9cb843b29826325" - integrity sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ== - -"@esbuild/win32-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz#dc36ed84f1390e73b6019ccf0566c80045e5ca3d" - integrity sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ== - -"@esbuild/win32-ia32@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" - integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== - -"@esbuild/win32-ia32@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.11.tgz#a97273aa3164c8d8f501899f55cc75a4a79599a3" - integrity sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw== - -"@esbuild/win32-ia32@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz#0802a107afa9193c13e35de15a94fe347c588767" - integrity sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w== - -"@esbuild/win32-x64@0.16.17": - version "0.16.17" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" - integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== - -"@esbuild/win32-x64@0.17.11": - version "0.17.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.11.tgz#9be796d93ae27b636da32d960899a4912bca27a1" - integrity sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ== - -"@esbuild/win32-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz#e81fb49de05fed91bf74251c9ca0343f4fc77d31" - integrity sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA== +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + +"@esbuild/darwin-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" + integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== + +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== "@fal-works/esbuild-plugin-global-externals@^2.1.2": version "2.1.2" @@ -1600,7 +1675,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@joshwooding/vite-plugin-react-docgen-typescript@^0.2.1": +"@joshwooding/vite-plugin-react-docgen-typescript@0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.2.1.tgz#930f6f0382520e4ba349eea1b152f9ae49364516" integrity sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ== @@ -1610,38 +1685,40 @@ magic-string "^0.27.0" react-docgen-typescript "^2.2.2" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1651,9 +1728,9 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" @@ -1672,9 +1749,9 @@ "@types/react" ">=16" "@ndelangen/get-tarball@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.7.tgz#87c7aef2df4ff4fbdbab6ac9ed32cee142c4b1a3" - integrity sha512-NqGfTZIZpRFef1GoVaShSSRwDC3vde3ThtTeqFdcYd6ipKqnfEVhjK2hUeHjCQUcptyZr2TONqcloFXM+5QBrQ== + version "3.0.9" + resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz#727ff4454e65f34707e742a59e5e6b1f525d8964" + integrity sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA== dependencies: gunzip-maybe "^1.4.2" pump "^3.0.0" @@ -2032,19 +2109,19 @@ lodash.union "^4.6.0" lodash.values "^4.3.0" -"@storybook/addon-actions@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.0.tgz#a9e42089686f46ea4af210032bd8a392497ce28a" - integrity sha512-IRqLHAgc9I1a4OXkSOIIUc4NtEH5Uh3DzOMVJD+Gxt3vSJ4aINRGVN9MTOi+pfyv945BENKfXhpKo55oX19MLQ== +"@storybook/addon-actions@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.0.18.tgz#003cb5fc7810b5ba9fd2c8249ba82bc4b95a02dc" + integrity sha512-3M5AU/ZD79YP88vKlFezIJbIoG/II7wCixUBTmwiC3BeQZDuVsqPNl8eiP6MGT70xwyx7a993lSM5f5N5W93vg== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" dequal "^2.0.2" lodash "^4.17.21" polished "^4.2.2" @@ -2052,214 +2129,186 @@ react-inspector "^6.0.0" telejson "^7.0.3" ts-dedent "^2.0.0" - uuid-browser "^3.1.0" + uuid "^9.0.0" -"@storybook/addon-backgrounds@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0.tgz#4f2344a08f49f9742e48dfa1d7a7dfde7829ed47" - integrity sha512-6/HY25DlYrNHlDBbQcEkK/8zXyE/qFPMc6UkWegxdWx67ZLsgVB/djYcNSBMpBKzTgsxWYNRsGealgUo3S110A== +"@storybook/addon-backgrounds@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.18.tgz#ffb47f8ac5e51718103b8931326321032d0e3f8b" + integrity sha512-cPQy1Ot7Urf4hQz+xnF1YKrqSyR0DRwozBmF+sGzceACWmueFl0CifYZC8RSmaiIyVh0RyWPxZ9F/eT67NX2lA== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.0.0.tgz#42d088a1a56a0f94afcba4ee4e4f72be093b2400" - integrity sha512-qowL2plF/EbCRpys2tP6HhJ2qZf3piOkvdMFHkO1xmMd2jZ5dZFnfJ0Qgzj7aBUyXknyzQF+rYh0AVdEDd0eHg== - dependencies: - "@storybook/blocks" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/node-logger" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" +"@storybook/addon-controls@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.0.18.tgz#e2875f7fed4befd542507e35f2534b7e9a64d7d1" + integrity sha512-mD6DE52CCMKugXk2Uab0QxwgfE76kFJroxASmnePnXUNWfP9EZJpJXYE3cyyBbmZuxa46VHDGGEGXQWRl4+Eog== + dependencies: + "@storybook/blocks" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/manager-api" "7.0.18" + "@storybook/node-logger" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.0.0.tgz#062b7c42042460157a51e5b1000d2225658a4455" - integrity sha512-tC7tTttU4oO4QYeVkLGDtUzJbNOSRoLv+C5xy7GIL9cEQN2P7kvviJuPErbBEBvY4Slsl89Amg0b1pHK/D3jFQ== +"@storybook/addon-docs@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.0.18.tgz#a39b0a1443158e0046a1b0746bab20344400f1da" + integrity sha512-oq+ZN5809gIRdTZQIpeK1F8BJtL1/VWo9rWvl6ymVOL/Xzdgd7AOfKf9Y99X35RcxAGysRIHLGJjF4bgLoY1Aw== dependencies: "@babel/core" "^7.20.2" "@babel/plugin-transform-react-jsx" "^7.19.0" "@jest/transform" "^29.3.1" "@mdx-js/react" "^2.1.5" - "@storybook/blocks" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/csf-plugin" "7.0.0" - "@storybook/csf-tools" "7.0.0" + "@storybook/blocks" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/csf-plugin" "7.0.18" + "@storybook/csf-tools" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/mdx2-csf" next - "@storybook/node-logger" "7.0.0" - "@storybook/postinstall" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/react-dom-shim" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/mdx2-csf" "^1.0.0" + "@storybook/node-logger" "7.0.18" + "@storybook/postinstall" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/react-dom-shim" "7.0.18" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" fs-extra "^11.1.0" remark-external-links "^8.0.0" remark-slug "^6.0.0" ts-dedent "^2.0.0" "@storybook/addon-essentials@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.0.tgz#04ad2f81c8eba3c664320ad6d8cb02e10bd3093e" - integrity sha512-eKX/9BPqAnzY2XhnjX7T6iu2SGKCSwCQrbxZt5j+8K9QwcskpiQB7XAwZKTnKr7DVALDaYEeGsTFQKfNzaQW0Q== - dependencies: - "@storybook/addon-actions" "7.0.0" - "@storybook/addon-backgrounds" "7.0.0" - "@storybook/addon-controls" "7.0.0" - "@storybook/addon-docs" "7.0.0" - "@storybook/addon-highlight" "7.0.0" - "@storybook/addon-measure" "7.0.0" - "@storybook/addon-outline" "7.0.0" - "@storybook/addon-toolbars" "7.0.0" - "@storybook/addon-viewport" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/node-logger" "7.0.0" - "@storybook/preview-api" "7.0.0" + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.18.tgz#20c9a4b43e3e173dbfc0d742eb3e6bc7ba42b4c9" + integrity sha512-0XXu7xhtRefA1WxxorKk6BWeeB+7gQ+r2+bG1zQEfBgDYPR06YbPw4H79IZ8JiR97aJRsZBK5UUhOZMDrc5zcQ== + dependencies: + "@storybook/addon-actions" "7.0.18" + "@storybook/addon-backgrounds" "7.0.18" + "@storybook/addon-controls" "7.0.18" + "@storybook/addon-docs" "7.0.18" + "@storybook/addon-highlight" "7.0.18" + "@storybook/addon-measure" "7.0.18" + "@storybook/addon-outline" "7.0.18" + "@storybook/addon-toolbars" "7.0.18" + "@storybook/addon-viewport" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/manager-api" "7.0.18" + "@storybook/node-logger" "7.0.18" + "@storybook/preview-api" "7.0.18" ts-dedent "^2.0.0" -"@storybook/addon-highlight@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.0.0.tgz#89845f0aaccaf9ea12439e0b5496c83f3d0b7ce9" - integrity sha512-lBrsf/NKGPwQU5oXpEevgYiCKPHw7dugjRAkFd62NWX3/bLGNRIBgqj3odx9f86nRBrzUHGvXs7r5NzoC5arNQ== +"@storybook/addon-highlight@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.0.18.tgz#801d1242462b275aa4ba668ddcbf1474cd9f59ae" + integrity sha512-a3nfUhbu6whoDclIZSV/fzLj132tNNjV05ENTpuN3JpLoMd3+obDUWzeQUs9TetK4RBRN3ewM7sIMEI4oBpgmg== dependencies: - "@storybook/core-events" "7.0.0" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.0" + "@storybook/preview-api" "7.0.18" "@storybook/addon-interactions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.0.tgz#78e2ec1fa2a8bd992dfa9485d6ef36a15a4391cb" - integrity sha512-sRCGNB+GaqujsBG3a+ljk0uVb8SRPFkLUUGJMUZb0R6OsF/uHf4W8SUHZrvN1OWJZjZ3TWLGA9k8Kt5AGeXj7A== + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.18.tgz#c363517f10dd5a2e6c78c6a0ac690799158ab9ec" + integrity sha512-V3OD5lSj6Te6Kzc//2k2S79dLPk6Zu1pAbqWAN4RrdXyKj6YCiZ666GmVdiaG+24Qp5UuMeAkd1D05osJlOteA== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "7.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/instrumenter" "7.0.18" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" jest-mock "^27.0.6" polished "^4.2.2" ts-dedent "^2.2.0" "@storybook/addon-links@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.0.tgz#11ef7e13031d2f0fba32caae83feef1ae3dbd48f" - integrity sha512-2sIu/G6Apsufexq+ZTrKW85UCMYVnz7l+BDk0eNOyMQ7cGkrCk1Wq9ax07eCYnQpd6xScoIe0BEzxCHa7oFKDw== + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.18.tgz#3c7f72f1a5b241718a57132991272e0bcc2ba7f4" + integrity sha512-xEwflt7bp9FRoZVeqPGb6d3s2Gh+/jaSmnyIxMxrBy2oovKIqu9ptolqz1AhjFOXfaLs9c2RAmJUuFZJtETLxA== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/csf" next + "@storybook/client-logger" "7.0.18" + "@storybook/core-events" "7.0.18" + "@storybook/csf" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/router" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/router" "7.0.18" + "@storybook/types" "7.0.18" prop-types "^15.7.2" ts-dedent "^2.0.0" -"@storybook/addon-measure@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.0.0.tgz#3e3e3fadbc7fe31a732d484dca9c2f1b4c15938e" - integrity sha512-h7crWGxiAxtzJsmbGi+C6jVVY+Lp64pHQl3rdeUwFbdnTXxG/rYlPpu4fW6lmCPyLhQauXcoxqbtkPd7T7HFMw== +"@storybook/addon-measure@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.0.18.tgz#ee670ccb9cbaed6805343111d3b10839dc5e3ff1" + integrity sha512-iu8vQpGOA+CFYbWR6QNshj20o33OQ/xcTbp5P4U6xGYDUliUBbwJ2KLxcKlmIeBanBrBdz0jPFtHwY4dM1ZdKw== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/types" "7.0.18" -"@storybook/addon-outline@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.0.0.tgz#e8f85beae6aed31cf1a3fb48187aaaa30c5fbf8a" - integrity sha512-OtbQHCxgbGU+QV5tshLYt/iqJUXfqExHC0WufEWVBeeEebtPZ6Z3oAGr9RKkN5KMtcngex4fVrEnsRGiZHnAvQ== +"@storybook/addon-outline@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.0.18.tgz#69c5705135b199a814c82a3297c7870a3b56fe59" + integrity sha512-3vNWO7ezo6GIvidbz8JxFrKtfVEoTQN7tnZx+wpqmCF8ihBORewkpeMUnvgb9ZKjD0X7gE8eQvvG8KKWcyHDBQ== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/types" "7.0.18" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.0.tgz#f1e26b20f6d452214df94301082318a7e5d202e1" - integrity sha512-RfjZbXTRt5wC7BWdXfuhxh2SuQTjr6wHl+N3UlAmZkP0YL4BZufKS/ukFOY4Niu18/3lryLoUpRkDOEaYjWsRA== +"@storybook/addon-toolbars@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.0.18.tgz#619293c15c97a971f1e77b8b9a0c4173e08865cc" + integrity sha512-mwhq962o0WloHAeFjJ6BXO2nzdTo5KE2fqawPpqcB2lwXP6tvaA2tDWwgntjPCHejqWTS+ZTdO4/1xrMhWYt/g== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" -"@storybook/addon-viewport@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.0.0.tgz#11c80fb61cf5e28e574aeec05b5350c66371f783" - integrity sha512-NcFFJmhtGZEaS8VH3UgxZHyPb7wiBZ1VU4JIOihFjGvnIN4uY/2LQV/a+xOKBorgR4fpb5zZvbZa6t3LB+3WsA== +"@storybook/addon-viewport@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.0.18.tgz#976ab4ef2daa69718e6a98560414d3ee43f56b14" + integrity sha512-aVVLBsWXfGDX3z1pc93LWWdG5RUoJbGL/JJPMZGwXdwWpP8V3OBl8D8bgPymyg+MgwhSRZZDDGgnJaVGGwZ6bQ== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/components" "7.0.18" + "@storybook/core-events" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" + "@storybook/manager-api" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/theming" "7.0.18" memoizerific "^1.11.3" prop-types "^15.7.2" -"@storybook/blocks@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.0.tgz#a6844f1ea8b5c89e5496ca7e2ae7981dadb7807b" - integrity sha512-12jSgVNu//LQz0rpXRdoxhU/sS01fxcXuYBGdzk6ycuV0gWrAScjG/GPzh6zNSsfXg4vgtA3sk37tehX6Te6yA== - dependencies: - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/components" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/csf" next - "@storybook/docs-tools" "7.0.0" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" - "@types/lodash" "^4.14.167" - color-convert "^2.0.1" - dequal "^2.0.2" - lodash "^4.17.21" - markdown-to-jsx "^7.1.8" - memoizerific "^1.11.3" - polished "^4.2.2" - react-colorful "^5.1.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/blocks@^7.0.0": +"@storybook/blocks@7.0.18", "@storybook/blocks@^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.18.tgz#996651ac813de2a810ba442ab77266961721d324" integrity sha512-HLsuzmUdVIeFXEP5v5vyjnEePRNYjzltwTjCKQhHAlt8/aQZmREiIMOfoMoAa1Rd+On8Ib2DUd2cN10VS18H8A== @@ -2287,15 +2336,15 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-manager@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.0.0.tgz#e53a58c26bf3f29c09c86d2640032e38f439c150" - integrity sha512-JEEsLJXLoYf2XCFVuXcaMdXXmHBxD7oTmmF9f1zASuGRfWUmVVIoWG179kV3Pzkh1OYd7QjHSw313kI5kWo+Bw== +"@storybook/builder-manager@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.0.18.tgz#f964b8ef174441f9f35702c88bf8c47b819d7baf" + integrity sha512-yFMm3xuYkyg2hS1uz3CkvyvLzK7qJsDPVEh7lew8GiJK1Xx8cc+FnAOlRTjWNxvhfiT296wAMCTPWv7LeoSgqQ== dependencies: "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.0.0" - "@storybook/manager" "7.0.0" - "@storybook/node-logger" "7.0.0" + "@storybook/core-common" "7.0.18" + "@storybook/manager" "7.0.18" + "@storybook/node-logger" "7.0.18" "@types/ejs" "^3.1.1" "@types/find-cache-dir" "^3.2.1" "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" @@ -2309,21 +2358,21 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-vite@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-7.0.0.tgz#efbba39e349a39e52c2b60ac71d9942a9af99737" - integrity sha512-MXbgmvskciJaS9Um9OVQ9uks11saWlw601gpuvr/jIORm+5+TzFe2uhuqWKLaHTXSxMO2vsG7/ssLTJIP4q/jA== - dependencies: - "@storybook/channel-postmessage" "7.0.0" - "@storybook/channel-websocket" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/csf-plugin" "7.0.0" - "@storybook/mdx2-csf" next - "@storybook/node-logger" "7.0.0" - "@storybook/preview" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/types" "7.0.0" +"@storybook/builder-vite@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-7.0.18.tgz#f9fb19c89bc084f5e1b54384faa1e2cb2143075d" + integrity sha512-Qze6/PwUJq+z776dBoG5uinAEVZyPalZIaU/VOWpTrN8L9FQbL0+HDrZU2E/BMNW+ZfnSjF3V2USLyiutsC1Tw== + dependencies: + "@storybook/channel-postmessage" "7.0.18" + "@storybook/channel-websocket" "7.0.18" + "@storybook/client-logger" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/csf-plugin" "7.0.18" + "@storybook/mdx2-csf" "^1.0.0" + "@storybook/node-logger" "7.0.18" + "@storybook/preview" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/types" "7.0.18" browser-assert "^1.2.1" es-module-lexer "^0.9.3" express "^4.17.3" @@ -2335,30 +2384,6 @@ remark-slug "^6.0.0" rollup "^2.25.0 || ^3.3.0" -"@storybook/channel-postmessage@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.0.tgz#15f9218d0e3f19ba12c7f9e8a86c058d5f64f72d" - integrity sha512-Sy3oHL/xDRjUiHnM0ncnkbOE5pK3O72MjOoiLJX4FCI90w03KM4+F/N0eU2cXl6yXHuCyI5eJisEzQxTNsaJiw== - dependencies: - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - -"@storybook/channel-postmessage@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.1.tgz#3323dc3d1aa912f1d97a144a3ad870fce33c8e7d" - integrity sha512-lIj0oDecEOSy6ZSNXBgWs0hqnjKudrDxuRyR0gAC5w5lZ8sMaj6er9caqaii61S4HRAcT5312RpA0V1J746hZw== - dependencies: - "@storybook/channels" "7.0.0-rc.1" - "@storybook/client-logger" "7.0.0-rc.1" - "@storybook/core-events" "7.0.0-rc.1" - "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" - "@storybook/channel-postmessage@7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.18.tgz#deb843705aec24bd23e717a14678fdb1f7cce8ae" @@ -2371,46 +2396,36 @@ qs "^6.10.0" telejson "^7.0.3" -"@storybook/channel-websocket@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.0.tgz#46100ad20a591215ebded73dcf85b2d4652cced6" - integrity sha512-KIXxMtJjqaeo5iKB5734+Wx1Dm3/yM08kJXdx0LEFGguHcE3L0WOi04HFMtd9wjldE+VVM8KWxoO9AoRUH60nQ== +"@storybook/channel-websocket@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-7.0.18.tgz#d603b14b811e2c7a904cb7cc2f16a167e1124632" + integrity sha512-QYsZIfe23NN4i+oIdPKHaYBehk3a/HYk57a+M2oR3Frmv8IOqc/e31uH+xx5NxnjHrTJj7Y80ZJw6EKB682S6w== dependencies: - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" + "@storybook/channels" "7.0.18" + "@storybook/client-logger" "7.0.18" "@storybook/global" "^5.0.0" telejson "^7.0.3" -"@storybook/channels@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0.tgz#f3f047916b01b9ce09c76a0300352cfd8d53815b" - integrity sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ== - -"@storybook/channels@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.0-rc.1.tgz#c60f4a9c82e899f1766f3979c97e7b884518e1b1" - integrity sha512-hBER6gliJxsrYEbWlXNljf0/1ybIlYCtaK0Vcgqdw/zmTLG6hEbBpVnxJh56T3mD0Beng8ro9D4EkcLZGQ1LlA== - "@storybook/channels@7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.18.tgz#0b5053ad6237ad7f619f1e17448d588de90ac235" integrity sha512-rkA7ea0M3+dWS+71iHJdiZ5R2QuIdiVg0CgyLJHDagc1qej7pEVNhMWtppeq+X5Pwp9nkz8ZTQ7aCjTf6th0/A== -"@storybook/cli@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.0.tgz#fd64dd0edeabbad041ce3a9aff078bf04851105e" - integrity sha512-PdGAyKASFgnUED3TmdyrGh5X5sEA5DT7+YIhTmbectRXN+LmgQ3d/RoVN/21VRV8LTNZesJwJSCvhhBCrFkcZw== +"@storybook/cli@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.18.tgz#5b00f26a6a5c1a3c76c986126f37e951ab25e4f0" + integrity sha512-9n4J4thiCUsGSXiRc6ZysqYUaCMCrpu0/qgC+5ngfFRuMmZgUV0y5+0fmaOhT2XjsonTTgucizO82i7+ottCVg== dependencies: "@babel/core" "^7.20.2" "@babel/preset-env" "^7.20.2" "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/core-server" "7.0.0" - "@storybook/csf-tools" "7.0.0" - "@storybook/node-logger" "7.0.0" - "@storybook/telemetry" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/codemod" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/core-server" "7.0.18" + "@storybook/csf-tools" "7.0.18" + "@storybook/node-logger" "7.0.18" + "@storybook/telemetry" "7.0.18" + "@storybook/types" "7.0.18" "@types/semver" "^7.3.4" boxen "^5.1.2" chalk "^4.1.0" @@ -2428,6 +2443,7 @@ globby "^11.0.2" jscodeshift "^0.14.0" leven "^3.1.0" + ora "^5.4.1" prettier "^2.8.0" prompts "^2.4.0" puppeteer-core "^2.1.1" @@ -2440,46 +2456,25 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.0.tgz#c5eeba62707654e517e9a0ede0e698c9058f434f" - integrity sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.0-rc.1", "@storybook/client-logger@next": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.0-rc.1.tgz#bcaa95232be02b1952ca092d88d6fcfa322f4692" - integrity sha512-ltdDjd5wwq1xyFmA7Q7PT0Rx4Jrd0u8m0hnjnlou7qjKd7J+tqi8019oC4t5CSWRhl8lDg0QbI11LUM2SmkRMA== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.17": - version "7.0.17" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.17.tgz#7acd3d0e467d6a69f3fc6fbd5b157a32d475c11d" - integrity sha512-1u313wdESQqN08DLfdB1tNMdsk3JExWU1ZlViCwK8cFPZaWgjts1vLcilWtYJBK28yEO/vS4H+lgwSm+oVQXVA== - dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/client-logger@7.0.18": +"@storybook/client-logger@7.0.18", "@storybook/client-logger@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.18.tgz#396858b53d0aa9485f173083ea27b7c1c48fa2dd" integrity sha512-uKgFdVedYoRDZBVrE1IBdWNHDFln1IxWEeI+7ZiNSQwREG9swHpU5Fa8DceclM/oLjJRuzG1jFzv+XZY8894+Q== dependencies: "@storybook/global" "^5.0.0" -"@storybook/codemod@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.0.tgz#0dcc824ee5ba20542fc3d5c1f944c3d7c993b922" - integrity sha512-RskA0EDTN2ANxcRyucApr5+Qf4zE0VK3xUCbWv4TZjJ57IDfVE3iEpLJ/mNsSES00sAtOeZX4cpcktvb2ajRJw== +"@storybook/codemod@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.18.tgz#b5dbdcd0928ec60e09db58b48269506c056c3760" + integrity sha512-+9XFns29e8FpPLsqA8ZCQ3mNnIIKD3QnqGYkbkCVKi/G1fomvVQsIfsnkrYv5SobTbz29B4aNWxAaeSnO7/OGg== dependencies: "@babel/core" "~7.21.0" - "@babel/preset-env" "~7.20.2" + "@babel/preset-env" "~7.21.0" "@babel/types" "~7.21.2" - "@storybook/csf" next - "@storybook/csf-tools" "7.0.0" - "@storybook/node-logger" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/csf" "^0.1.0" + "@storybook/csf-tools" "7.0.18" + "@storybook/node-logger" "7.0.18" + "@storybook/types" "7.0.18" cross-spawn "^7.0.3" globby "^11.0.2" jscodeshift "^0.14.0" @@ -2487,66 +2482,27 @@ prettier "^2.8.0" recast "^0.23.1" -"@storybook/components@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.0.tgz#020384597ec2d26015dfe3d9fb0522fc122ca263" - integrity sha512-q2JIxTlXMcZceMWnHrpQwRO3E8fk02zKjsSZDYkd9vXxsr91Kg4NTgR7GMHSHN8ZLMQQwwi77Iw+wpWfTVHg6g== - dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/csf" next - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - "@storybook/components@7.0.18", "@storybook/components@^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.18.tgz#74ab115342e576b7644c83667a9daef5758fc3c8" - integrity sha512-Jn1CbF9UAKt8BVaZtuhmthpcZ02VMaCFXR0ISfDXCpiMKnylmpP0+WfXcoKLzz6yS+EW8EW5S9+Qq8xgQY8H7A== - dependencies: - "@storybook/client-logger" "7.0.18" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/theming" "7.0.18" - "@storybook/types" "7.0.18" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/core-client@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.0.0.tgz#94e212ad05b2255e49f56f82104ec7701ad8233d" - integrity sha512-TK+VhLEryroXpp+A1BBfyW/0nFMwNtE64tQ6+R3zpd3QScZQsT19GolSIYudTHKhkFxaxEfgbG6R1S+7j75I2g== - dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/preview-api" "7.0.0" - -"@storybook/core-common@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.0.tgz#59fba04114718eeab88be4b1acf272e368fcaaa5" - integrity sha512-KEGzsmpRj7RPUoAQ+l9MypGHAFRvFq3RtnROuwMdwc5f4Lo0eCtfLRKRK2tTFNIFSMGaebjXBqGawUsoE7awiA== - dependencies: - "@storybook/node-logger" "7.0.0" - "@storybook/types" "7.0.0" - "@types/node" "^16.0.0" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.17.0" - esbuild-register "^3.4.0" - file-system-cache "^2.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^8.1.0" - glob-promise "^6.0.2" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" + integrity sha512-Jn1CbF9UAKt8BVaZtuhmthpcZ02VMaCFXR0ISfDXCpiMKnylmpP0+WfXcoKLzz6yS+EW8EW5S9+Qq8xgQY8H7A== + dependencies: + "@storybook/client-logger" "7.0.18" + "@storybook/csf" "^0.1.0" + "@storybook/global" "^5.0.0" + "@storybook/theming" "7.0.18" + "@storybook/types" "7.0.18" + memoizerific "^1.11.3" + use-resize-observer "^9.1.0" + util-deprecate "^1.0.2" + +"@storybook/core-client@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-7.0.18.tgz#b70b9e8f0efd2dc1eb7fd925a8615b6ef32f07aa" + integrity sha512-ueExRZx6fd9LRssgdhDJ0bL4Ir2RrbXzJz/kjIT2KgYY3l7jkhe0dpT3bOgGKjQt0f7XMFU24t/r7aDLGMB+2Q== + dependencies: + "@storybook/client-logger" "7.0.18" + "@storybook/preview-api" "7.0.18" "@storybook/core-common@7.0.18": version "7.0.18" @@ -2573,40 +2529,30 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/core-events@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0.tgz#5f0bcc07f72d99856411a09a0f07aac17700aaff" - integrity sha512-pxzNmgEI1p90bHyAYABHDDtB2XM5pffq6CqIHboK6aSCux7Cdc16IjOYq6BJIhCKaaI+qQHaFLR4JfaFAsxwQQ== - -"@storybook/core-events@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.0-rc.1.tgz#78e9f7bb0cb63fab417845b005ee702565574d1e" - integrity sha512-kp5p7U8H4X+XnJwzm3S9UM1vOREZ/bziQ34882FevPq7HaAQ5JI7p9gQO50JdTbDoe8gtn8cgfzxSkqO6FlY1w== - "@storybook/core-events@7.0.18", "@storybook/core-events@^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.18.tgz#429e0b092c645bd283adb4836ac0a945e813f085" integrity sha512-7gxHBQDezdKOeq/u1LL80Bwjfcwsv7XOS3yWQElcgqp+gLaYB6OwwgtkCB2yV6a6l4nep9IdPWE8G3TxIzn9xw== -"@storybook/core-server@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.0.tgz#56f24ec7f948673d67c1bf1e5dda563fe15f0f43" - integrity sha512-j4R0/vR8zP0jXda/PL0Gs9n6UoOKqb31Dx7QCMo07SJ4TRqnx10BKj8ZxiJuj31/Uxgq3Wk4cCzbeDwkj9Oo4A== +"@storybook/core-server@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.18.tgz#9a4900afd956e27886238fbd4ee871c9e0dca29f" + integrity sha512-zGSGYSoCaSXM28OYKW7zsmpo8VU1icubXLRgdF21fbMhFN1WVS+bPA5+gSkAMf8acq5RNM8uSKskh7E2YDVEqA== dependencies: "@aw-web-design/x-default-browser" "1.4.88" "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.0.0" - "@storybook/core-common" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/csf" next - "@storybook/csf-tools" "7.0.0" - "@storybook/docs-mdx" next + "@storybook/builder-manager" "7.0.18" + "@storybook/core-common" "7.0.18" + "@storybook/core-events" "7.0.18" + "@storybook/csf" "^0.1.0" + "@storybook/csf-tools" "7.0.18" + "@storybook/docs-mdx" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/manager" "7.0.0" - "@storybook/node-logger" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/telemetry" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/manager" "7.0.18" + "@storybook/node-logger" "7.0.18" + "@storybook/preview-api" "7.0.18" + "@storybook/telemetry" "7.0.18" + "@storybook/types" "7.0.18" "@types/detect-port" "^1.3.0" "@types/node" "^16.0.0" "@types/node-fetch" "^2.5.7" @@ -2636,25 +2582,25 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/csf-plugin@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.0.0.tgz#85f910b031bb35f8a86dfb966e7b7c3a5aec2561" - integrity sha512-8V0C91YDLGer9+1JfONbt56u2U2kazjtzZXrznF6C0pRuzj/28qaoFZ7jegPybX9JOQOnwNbR4eOBUIVxlkBlw== +"@storybook/csf-plugin@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.0.18.tgz#d601817ee8ee7eaf011a7e4a5d821356f5d1907e" + integrity sha512-Cr/Qr4/H4JIYgbbmDjQIYuqjp6nOaZga73R3KZcuClk27B90sI2ADegMYvORgbFgSkwweNQjgak6hLoOyogAhw== dependencies: - "@storybook/csf-tools" "7.0.0" + "@storybook/csf-tools" "7.0.18" unplugin "^0.10.2" -"@storybook/csf-tools@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.0.tgz#296094aab9d5f3e984c57979edbfd0da28bf1f64" - integrity sha512-JIslbrcectcZFJJAhaOBRxNLPkBWIugNsdOTVHk3BHIu2tgF8U5No6Y+grYYooVLUhbRKYKCzXo0Hs89pbLtUw== +"@storybook/csf-tools@7.0.18", "@storybook/csf-tools@^7.0.12": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.18.tgz#f61810f683b4eaa855a4a1ff876628835e82e965" + integrity sha512-0IJ2qdrxleTl67FUzsEvGcy96CY0OKyERE33tAsLNbvWcabdJKpLHP+rJwbsCw4z6IlS+kkmEffeFf5qRPTwkQ== dependencies: "@babel/generator" "~7.21.1" "@babel/parser" "~7.21.2" "@babel/traverse" "~7.21.2" "@babel/types" "~7.21.2" - "@storybook/csf" next - "@storybook/types" "7.0.0" + "@storybook/csf" "^0.1.0" + "@storybook/types" "7.0.18" fs-extra "^11.1.0" recast "^0.23.1" ts-dedent "^2.0.0" @@ -2666,30 +2612,10 @@ dependencies: type-fest "^2.19.0" -"@storybook/csf@next": - version "0.0.2-next.10" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2-next.10.tgz#be71280e08bafae97134770ed9d0e5c75bc02f6c" - integrity sha512-m2PFgBP/xRIF85VrDhvesn9ktaD2pN3VUjvMqkAL/cINp/3qXsCyI81uw7N5VEOkQAbWrY2FcydnvEPDEdE8fA== - dependencies: - type-fest "^2.19.0" - -"@storybook/docs-mdx@next": - version "0.0.1-next.6" - resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.0.1-next.6.tgz#8fa2d0e30e7487101e7e286e593323b1ce750699" - integrity sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ== - -"@storybook/docs-tools@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.0.0.tgz#f9b135fdb1e4f1a69d80db8cff524e349ed503bd" - integrity sha512-4a9xecYhjRAYAzbmheF2nnZst3sWe/tmlOcspky/wGU3BR1Wy3u9b45q+r3wW/Nm9C8XHt0CRmkFwQKGme14iQ== - dependencies: - "@babel/core" "^7.12.10" - "@storybook/core-common" "7.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/types" "7.0.0" - "@types/doctrine" "^0.0.3" - doctrine "^3.0.0" - lodash "^4.17.21" +"@storybook/docs-mdx@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz#33ba0e39d1461caf048b57db354b2cc410705316" + integrity sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg== "@storybook/docs-tools@7.0.18": version "7.0.18" @@ -2716,18 +2642,7 @@ resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/instrumenter@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0.tgz#6e56740fe0703908050f1086f5e7c8b69c996dd3" - integrity sha512-A7jBrV7VM3OxRgall8rpjagy3VC78A/OV1g1aYVVLpAF/+Odj+MeHHF179+fR6JBLnBgukNfsG7/ZHHGs0gL5Q== - dependencies: - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.0" - -"@storybook/instrumenter@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": +"@storybook/instrumenter@7.0.18", "@storybook/instrumenter@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.18.tgz#7ac595948b726e55ebdde4288c12b1bd1b4d3781" integrity sha512-fyQxeuVC0H+w3oyTuByE95xnAQ+l/WhUBVkHV2X+PWjg9vg9Y9JmrbNWynlvz5HLFlsY3qAWJh+ciVRVSvY5Jw== @@ -2738,17 +2653,6 @@ "@storybook/global" "^5.0.0" "@storybook/preview-api" "7.0.18" -"@storybook/instrumenter@next": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.0.0-rc.1.tgz#f22ae8d25243375b9e63f1266ae2669614c5c7d7" - integrity sha512-spihMm1Xb+lw1Vac5Uo+06m2jdDEhGGkM/nesXO3ZkYyNatC0IGXgU9NyELI6YCkhEprwK3MIXoo8in97Kjk+w== - dependencies: - "@storybook/channels" "7.0.0-rc.1" - "@storybook/client-logger" "7.0.0-rc.1" - "@storybook/core-events" "7.0.0-rc.1" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.0-rc.1" - "@storybook/jest@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@storybook/jest/-/jest-0.1.0.tgz#73e51e390b36e93e51e6082f4a5bfbad0097d5e3" @@ -2759,27 +2663,6 @@ "@testing-library/jest-dom" "^5.16.2" jest-mock "^27.3.0" -"@storybook/manager-api@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.0.tgz#49195b6b9e6f28f6d7f7be08f43adb6892ed1991" - integrity sha512-A4OQXPUvaOT9mp+sXxq5CveIrq1luYDiK9H3k0eUqIgI8nS6+FonaLqouJchUMeYZ3CbHtKLMtkzLJKGfUGjjQ== - dependencies: - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/csf" next - "@storybook/global" "^5.0.0" - "@storybook/router" "7.0.0" - "@storybook/theming" "7.0.0" - "@storybook/types" "7.0.0" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.0.3" - ts-dedent "^2.0.0" - "@storybook/manager-api@7.0.18", "@storybook/manager-api@^7.0.0": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.18.tgz#9e0e011df04271b0ed7216a22f9c965e3b7ac4b9" @@ -2801,25 +2684,15 @@ telejson "^7.0.3" ts-dedent "^2.0.0" -"@storybook/manager@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.0.tgz#84fc1f8e6433b5147ded6834a138620ac68f419f" - integrity sha512-lMSM6PQvSLtq46JVaMq/xuxjOzZuD20DMcJzYnjFL3bkMjmkL2hHyzYjfs4BTI9i9nhPqXF/rZSwFGGG+ok9dw== - -"@storybook/mdx2-csf@next": - version "1.0.0-next.5" - resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.0.0-next.5.tgz#b43b403b3a0b2ebdb3603bf6d20d7319b407e199" - integrity sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ== +"@storybook/manager@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.18.tgz#1dc5d64ecc683f5e7041eb8350eccaae6958204b" + integrity sha512-hasb8XDmkT9lyX2cwb3Xg0ngcNQ1QCNHKurl2YJtXowb1CvawGKokhnVUTso15NCnurolDyw/Wqka1sagfm+Mg== -"@storybook/node-logger@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.0.tgz#9d58cfb886a54d4997c7b0231bce78d8e8ab4f47" - integrity sha512-GjmHY9dSEFQ/BRsjhC63DsMr85Wfb/+R73ApJcGyc3sJDSfNil0JVgIsU7ZfCGV1ty0XhtvLd+jd+J1EAHi/dw== - dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.1.0" - npmlog "^5.0.1" - pretty-hrtime "^1.0.3" +"@storybook/mdx2-csf@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz#97f6df04d0bf616991cc1005a073ac004a7281e5" + integrity sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw== "@storybook/node-logger@7.0.18": version "7.0.18" @@ -2831,53 +2704,10 @@ npmlog "^5.0.1" pretty-hrtime "^1.0.3" -"@storybook/postinstall@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.0.0.tgz#4ff5da3047fc6ee23244d0b45c1d671aab026f84" - integrity sha512-ynG1uj5OFWw4MHo/XES1Ok7tIQf3eSmKn07QjiOe8AnS2sRAEAIxVM3JdX63qwD6oQaHesiNbc+S2UNYcbBA2g== - -"@storybook/preview-api@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.0.tgz#5b3bcf934bd9b96f4723ae329e28fc5534de7f2a" - integrity sha512-Q0IYYH1gOmx42ClYlQfQPjuERBWM3Ey+3DFsLQaraKXDdgZ9wN7jPNuS7wxuUNylT0oa/3WjxT7qNfiGw8JtBw== - dependencies: - "@storybook/channel-postmessage" "7.0.0" - "@storybook/channels" "7.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/core-events" "7.0.0" - "@storybook/csf" next - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.0" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview-api@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.0-rc.1.tgz#d7db0ab3f262088a8b980cd6d6a4da4dccc19dfb" - integrity sha512-KrXMxCffKsXLsWb8ptXmLcbetZOPLbPpnKU43S1iHnvc5Jp89lrJBpztHZsUnuwGMJ1K5ajdZd+l/kGs75ru6Q== - dependencies: - "@storybook/channel-postmessage" "7.0.0-rc.1" - "@storybook/channels" "7.0.0-rc.1" - "@storybook/client-logger" "7.0.0-rc.1" - "@storybook/core-events" "7.0.0-rc.1" - "@storybook/csf" next - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.0-rc.1" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - slash "^3.0.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" +"@storybook/postinstall@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.0.18.tgz#348711fea8ccf66255904811fa33316d0f54445e" + integrity sha512-ObIwAK2UiYhXN/7UifISQgBoH5jnyxh6T8kvCw83YhC78SDOPNgIGjToJECizJ7iubtqAWtCfCT5TrGEpyLGbg== "@storybook/preview-api@7.0.18": version "7.0.18" @@ -2900,42 +2730,42 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.0.tgz#1f29a57f748a356c98ecc28b355216fe32d6d25e" - integrity sha512-6fSR9zt5fzEQE7iP538Txg2xVG5ndyzAYdSZfMB7LKPBWc8har6EgnpbX9OSPeoEf96/VFRGa/OSS7nV32xFHQ== +"@storybook/preview@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.0.18.tgz#8f8ac8b1bce674d52c1f9640073fb93b786e2f26" + integrity sha512-L53p2eo8G12U6tp7hD3mk5tdWFXLvdEyV9e7a1x9bw1LfH15K/bp8lO6U/W1kkpse7+rqWBqoTjJC1Ktm5Sxog== -"@storybook/react-dom-shim@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.0.tgz#9bb1e57cc60e70bb151879c1c615aca71671270f" - integrity sha512-oMCkYYVbDaNMolnzObYvHuWNLUGC87osJmjjT3l+zugVUETDM/oDrvbAyzDucCJDea2ZCfxQHxYkhY6R+MQxHA== +"@storybook/react-dom-shim@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.18.tgz#d2ac94c50c48b92417338823c8a7eabace308771" + integrity sha512-O1FRypR8q1katjbznnxI+NtALd2gaWa7KnTwbIDf+ddZltXHMZ8xMiEGEtAMrfXlIuqIr9UvmLRfKZC/ysuA+g== "@storybook/react-vite@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-7.0.0.tgz#75684c089b3263e5ab37ca698e79b329c79db563" - integrity sha512-U02/QYQMtlRKelvGeQAx4wYASU339Q2ikgbjV21dHfLp1O5e7t5r/SpPBj9Q1K6t6FRklHo3FwbqKzuSwEG0JQ== + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-7.0.18.tgz#a744057c0a30614b40ccb86322ae58575eede788" + integrity sha512-rxJwp/b0dPazn15xLIeRgwrdZGWmoqoLhU7Mm+AXKToXvbe77i2bjHhkFbz34dpKFtD0i/ajcZSpmsxpxfB0HA== dependencies: - "@joshwooding/vite-plugin-react-docgen-typescript" "^0.2.1" + "@joshwooding/vite-plugin-react-docgen-typescript" "0.2.1" "@rollup/pluginutils" "^4.2.0" - "@storybook/builder-vite" "7.0.0" - "@storybook/react" "7.0.0" + "@storybook/builder-vite" "7.0.18" + "@storybook/react" "7.0.18" "@vitejs/plugin-react" "^3.0.1" ast-types "^0.14.2" magic-string "^0.27.0" react-docgen "6.0.0-alpha.3" -"@storybook/react@7.0.0", "@storybook/react@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.0.tgz#b409d926eb9c2e5a8f6400bb0c97d03055360cad" - integrity sha512-JvLpm9DsDdVPEfg0I5O7so9PgRJa4eqJH5bZLgdtUXyzLWj6d0woa1uz/BqDHEXk5AveNipmTcqxTOZ0SWw2jw== +"@storybook/react@7.0.18", "@storybook/react@^7.0.0": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.18.tgz#d6f4919e22e169062e794b8a742f1b1978abf0ab" + integrity sha512-lumUbHYeuL3qa4SZR9K2YC4UIt1hwW19GuI/6f2HEV5gR9QHHSJHg9HD9pjcxv4fQaiG81ACZ0Sg6lyUkcJvuQ== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/core-client" "7.0.0" - "@storybook/docs-tools" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/core-client" "7.0.18" + "@storybook/docs-tools" "7.0.18" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.0.0" - "@storybook/react-dom-shim" "7.0.0" - "@storybook/types" "7.0.0" + "@storybook/preview-api" "7.0.18" + "@storybook/react-dom-shim" "7.0.18" + "@storybook/types" "7.0.18" "@types/escodegen" "^0.0.6" "@types/estree" "^0.0.51" "@types/node" "^16.0.0" @@ -2951,15 +2781,6 @@ type-fest "^2.19.0" util-deprecate "^1.0.2" -"@storybook/router@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.0.tgz#dc346e1910d77e6de39a401c5b0745e0825fcf7a" - integrity sha512-TVJDDNd4s3No+6MCv5WxDZjb7eQH1CyLR7LifXMkj9pnGp9rUe0pfA4a+5Dze5ID/YPzdbsEiI1ijnuWSanY6Q== - dependencies: - "@storybook/client-logger" "7.0.0" - memoizerific "^1.11.3" - qs "^6.10.0" - "@storybook/router@7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.0.18.tgz#c82146a6d4894c6d3d55b80a447010bebf192804" @@ -2969,13 +2790,13 @@ memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/telemetry@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.0.tgz#c6761b955e3aad60addf7f4ed0c9881f89d92af3" - integrity sha512-eU3TTQT+lRl10h0+ncYruoCYx+uvqugRnkuZMD9HYh4eDrST+7/ktvFcVagsf02zERHja5KUFP7n8dadVt1uZg== +"@storybook/telemetry@7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.18.tgz#ccf52de6c82a54953eb2a30270edc5d7caf12cd1" + integrity sha512-JP5Z7lGU+oKjNmz2cZW5J7EerwyWBBPOU+NvvooZsymIx02ZvJ4ClmFtolJnBM7m4KoAy50JxV5NQWi+q8PicQ== dependencies: - "@storybook/client-logger" "7.0.0" - "@storybook/core-common" "7.0.0" + "@storybook/client-logger" "7.0.18" + "@storybook/core-common" "7.0.18" chalk "^4.1.0" detect-package-manager "^2.0.1" fetch-retry "^5.0.2" @@ -2985,27 +2806,17 @@ read-pkg-up "^7.0.1" "@storybook/testing-library@^0.0.14-next.1": - version "0.0.14-next.1" - resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.0.14-next.1.tgz#c8e93aea7b2a4caba4f4b60b2195e4de589f8a3c" - integrity sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw== + version "0.0.14-next.2" + resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.0.14-next.2.tgz#458e6c7623118e24826ba73b80db0a887f3f57e8" + integrity sha512-i/SLSGm0o978ELok/SB4Qg1sZ3zr+KuuCkzyFqcCD0r/yf+bG35aQGkFqqxfSAdDxuQom0NO02FE+qys5Eapdg== dependencies: - "@storybook/client-logger" next - "@storybook/instrumenter" next + "@storybook/client-logger" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" + "@storybook/instrumenter" "^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0" "@testing-library/dom" "^8.3.0" "@testing-library/user-event" "^13.2.1" ts-dedent "^2.2.0" -"@storybook/theming@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.0.tgz#ddcb42dff76cd4fd03f44302534cc00ab5e4f5ee" - integrity sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.0" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/theming@7.0.18": +"@storybook/theming@7.0.18", "@storybook/theming@^7.0.17": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.18.tgz#566f5f42c9324b734f8aa9be4d16221278054734" integrity sha512-P1gMKa/mKQHIMq0sxBIwTzAcF6v/6hrc62YmkuV62vXu+8zNV2YWbRwywqm3Q6faZEadmb/bL9+z8whaKhCL/g== @@ -3015,36 +2826,6 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" -"@storybook/theming@^7.0.17": - version "7.0.17" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.0.17.tgz#2bb6154f558b08c21d924cd80cdf0c170e93c6c4" - integrity sha512-I0MrZorCGJ1kQmwhsxAsNy02gXRiUmQKuoLNQwitwx8ridzA+ukkkBIr6M38jwA2URaO53AvlGfD/664ZdM4XA== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.0.17" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/types@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0.tgz#01e0a6bdd94207ea2316dc126dd780438fcb1f2c" - integrity sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw== - dependencies: - "@storybook/channels" "7.0.0" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "^2.0.0" - -"@storybook/types@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.0-rc.1.tgz#83f790a25ea0a077658744ccee2332b3cc6b4888" - integrity sha512-wWFGKzXXD04j52iHTE7mxCz0zkJH0J/wh7pSsYAxUgyQaYHIIqLZUb9PLWVWf1v6RiSSa5k0HXhFWnfBOJeVIQ== - dependencies: - "@storybook/channels" "7.0.0-rc.1" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "^2.0.0" - "@storybook/types@7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.18.tgz#9418da288db3a1258996aab17fd49ca4eb810b7a" @@ -3114,9 +2895,9 @@ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/aria-query@^5.0.1": version "5.0.1" @@ -3124,9 +2905,9 @@ integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== "@types/babel__core@^7.0.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -3150,11 +2931,11 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" - integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.0.tgz#4709d34d3eba3e1dad1950d40e80c6b5e0b81fc9" + integrity sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@types/body-parser@*": version "1.19.2" @@ -3192,9 +2973,9 @@ "@types/node" "*" "@types/detect-port@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.2.tgz#8c06a975e472803b931ee73740aeebd0a2eb27ae" - integrity sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.3.tgz#124c5d4c283f48a21f80826bcf39433b3e64aa81" + integrity sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg== "@types/doctrine@^0.0.3": version "0.0.3" @@ -3222,13 +3003,14 @@ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@^4.17.33": - version "4.17.33" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" - integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + version "4.17.35" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" + "@types/send" "*" "@types/express@^4.7.0": version "4.17.17" @@ -3293,9 +3075,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@*", "@types/jest@>=26.0.0": - version "29.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" - integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== + version "29.5.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.2.tgz#86b4afc86e3a8f3005b297ed8a72494f89e6395b" + integrity sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -3308,14 +3090,14 @@ "@types/node" "*" "@types/lodash@^4.14.167": - version "4.14.191" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + version "4.14.195" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" + integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== "@types/mdx@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" - integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.5.tgz#9a85a8f70c7c4d9e695a21d5ae5c93645eda64b1" + integrity sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg== "@types/mime-types@^2.1.0": version "2.1.1" @@ -3327,23 +3109,28 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node-fetch@^2.5.7": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + version "2.6.4" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" + integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@^18.15.0": - version "18.15.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" - integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== +"@types/node@*": + version "20.2.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.5.tgz#26d295f3570323b2837d322180dfbf1ba156fefb" + integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ== "@types/node@^13.7.0": version "13.13.52" @@ -3351,9 +3138,14 @@ integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ== "@types/node@^16.0.0": - version "16.18.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.14.tgz#5465ce598486a703caddbefe8603f8a2cffa3461" - integrity sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw== + version "16.18.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.34.tgz#62d2099b30339dec4b1b04a14c96266459d7c8b2" + integrity sha512-VmVm7gXwhkUimRfBwVI1CHhwp86jDWR04B5FGebMMyxV90SlCmFujwUHrxTD4oO+SOYU86SoxvhgeRQJY7iXFg== + +"@types/node@^18.15.0": + version "18.16.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.16.tgz#3b64862856c7874ccf7439e6bab872d245c86d8e" + integrity sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3397,28 +3189,10 @@ dependencies: "@types/react" "*" -"@types/react@*": - version "18.2.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" - integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@>=16": - version "18.0.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" - integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^18.0.34": - version "18.0.34" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.34.tgz#e553444a578f023e6e1ac499514688fb80b0a984" - integrity sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ== +"@types/react@*", "@types/react@>=16", "@types/react@^18.2.7": + version "18.2.7" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3" + integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3432,19 +3206,22 @@ "@types/node" "*" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== -"@types/semver@^7.1.0": +"@types/semver@^7.1.0", "@types/semver@^7.3.4": version "7.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== -"@types/semver@^7.3.4": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/send@*": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" "@types/serve-static@*": version "1.15.1" @@ -3477,9 +3254,9 @@ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/webpack-env@^1.17.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.0.tgz#ed6ecaa8e5ed5dfe8b2b3d00181702c9925f13fb" - integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== + version "1.18.1" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.1.tgz#49699bb508961e14a3bfb68c78cd87b296889d1d" + integrity sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww== "@types/yargs-parser@*": version "21.0.0" @@ -3494,9 +3271,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.22" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" - integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" @@ -3880,14 +3657,14 @@ author-regex@^1.0.0: integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== auto@^10.3.0: - version "10.43.0" - resolved "https://registry.yarnpkg.com/auto/-/auto-10.43.0.tgz#11127815fd6f02003cf4e4675279f8a1666824d8" - integrity sha512-dZTGoIhzJa6vP4QBtBc4xPjscs2NyoMTeIht4rBPk0hz6NySev3Wrp1UReCwrl/gYx4cuSyjNfYaG0gJtnfEqQ== - dependencies: - "@auto-it/core" "10.43.0" - "@auto-it/npm" "10.43.0" - "@auto-it/released" "10.43.0" - "@auto-it/version-file" "10.43.0" + version "10.46.0" + resolved "https://registry.yarnpkg.com/auto/-/auto-10.46.0.tgz#0e1f51e60341fb5cc6851de499b2d41c0b938436" + integrity sha512-LUsn5SWyM6Qdz2i1h4YyDpBYlOUQ0Z+ZcQhDTu8DLLoUuUP4cGf79MCdpRpM1LQVbkqZ2WWi8s/QM4it/FmRjw== + dependencies: + "@auto-it/core" "10.46.0" + "@auto-it/npm" "10.46.0" + "@auto-it/released" "10.46.0" + "@auto-it/version-file" "10.46.0" await-to-js "^3.0.0" chalk "^4.0.0" command-line-application "^0.10.1" @@ -3932,6 +3709,15 @@ babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" +babel-plugin-polyfill-corejs2@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd" + integrity sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.4.0" + semver "^6.1.1" + babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" @@ -3940,6 +3726,14 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" +babel-plugin-polyfill-corejs3@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz#39248263c38191f0d226f928d666e6db1b4b3a8a" + integrity sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.0" + core-js-compat "^3.30.1" + babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" @@ -3947,6 +3741,13 @@ babel-plugin-polyfill-regenerator@^0.4.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" +babel-plugin-polyfill-regenerator@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz#e7344d88d9ef18a3c47ded99362ae4a757609380" + integrity sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -3984,7 +3785,7 @@ binjumper@^0.1.4: resolved "https://registry.yarnpkg.com/binjumper/-/binjumper-0.1.4.tgz#4acc0566832714bd6508af6d666bd9e5e21fc7f8" integrity sha512-Gdxhj+U295tIM6cO4bJO1jsvSjBVHNpj2o/OwW7pqDEtaqF6KdOxjtbo93jMMKAkP7+u09+bV8DhSqjIv4qR3w== -bl@^4.0.3: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -4072,14 +3873,14 @@ browserify-zlib@^0.1.4: pako "~0.2.0" browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + version "4.21.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.7.tgz#e2b420947e5fb0a58e8f4668ae6e23488127e551" + integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA== dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001489" + electron-to-chromium "^1.4.411" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" bser@2.1.1: version "2.1.1" @@ -4124,9 +3925,9 @@ bytes@3.1.2: integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== c8@^7.6.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.13.0.tgz#a2a70a851278709df5a9247d62d7f3d4bcb5f2e4" - integrity sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA== + version "7.14.0" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" + integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@istanbuljs/schema" "^0.1.3" @@ -4187,10 +3988,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001449: - version "1.0.30001464" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" - integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== +caniuse-lite@^1.0.30001489: + version "1.0.30001492" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001492.tgz#4a06861788a52b4c81fd3344573b68cc87fe062b" + integrity sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw== chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -4243,11 +4044,12 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chromatic@^6.17.4: - version "6.17.4" - resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-6.17.4.tgz#6a946d51c631d871c165fe28fa2b3b0bcdf32e24" - integrity sha512-vnlvsv2lkp8BVtTn1OumJzqkDk2qB3pcGxEDIfZtVboKtzIPjnIlGa+c1fVKQe8NvHDU8R39k8klqgKHIXUVJw== + version "6.18.0" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-6.18.0.tgz#cf9c7f3bf7bcce1bd9f77a431b73f52a3404ed42" + integrity sha512-Sj7xMFGQ6jSTBrsdgMMjSQAP2OMNogg4GXV4djf4kAp6Dp+pY4FwByIagvbtQRjC33kQVi592FS52vMBOBMEzw== dependencies: "@discoveryjs/json-ext" "^0.5.7" + "@storybook/csf-tools" "^7.0.12" "@types/webpack-env" "^1.17.0" snyk-nodejs-lockfile-parser "^1.49.0" @@ -4271,6 +4073,18 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + cli-table3@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" @@ -4310,6 +4124,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -4340,9 +4159,9 @@ color-support@^1.1.2: integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== colorette@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" @@ -4477,10 +4296,10 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-js-compat@^3.25.1: - version "3.29.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.0.tgz#1b8d9eb4191ab112022e7f6364b99b65ea52f528" - integrity sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ== +core-js-compat@^3.25.1, core-js-compat@^3.30.1, core-js-compat@^3.30.2: + version "3.30.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" + integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== dependencies: browserslist "^4.21.5" @@ -4536,9 +4355,9 @@ css.escape@^1.5.1: integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== debug@2.6.9, debug@^2.6.9: version "2.6.9" @@ -4574,15 +4393,16 @@ dedent@^0.7.0: integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-equal@^2.0.5: - version "2.2.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" - integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" + integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== dependencies: + array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" - es-get-iterator "^1.1.2" - get-intrinsic "^1.1.3" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.0" is-arguments "^1.1.1" - is-array-buffer "^3.0.1" + is-array-buffer "^3.0.2" is-date-object "^1.0.5" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" @@ -4590,7 +4410,7 @@ deep-equal@^2.0.5: object-is "^1.1.5" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.0" side-channel "^1.0.4" which-boxed-primitive "^1.0.2" which-collection "^1.0.1" @@ -4606,12 +4426,7 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" - integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== - -deepmerge@^4.2.2, deepmerge@^4.3.1: +deepmerge@^4.0.0, deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -4624,6 +4439,13 @@ default-browser-id@3.0.0: bplist-parser "^0.2.0" untildify "^4.0.0" +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -4634,7 +4456,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4: +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== @@ -4758,9 +4580,9 @@ dotenv-expand@^10.0.0: integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== dotenv@^16.0.0: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + version "16.1.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.1.3.tgz#0c67e90d0ddb48d08c570888f709b41844928210" + integrity sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A== dotenv@^8.0.0: version "8.6.0" @@ -4783,16 +4605,16 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.284: - version "1.4.327" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.327.tgz#288b106518cfed0a60f7de8a0480432a9be45477" - integrity sha512-DIk2H4g/3ZhjgiABJjVdQvUdMlSABOsjeCm6gmUzIdKxAuFrGiJ8QXMm3i09grZdDBMC/d8MELMrdwYRC0+YHg== +electron-to-chromium@^1.4.411: + version "1.4.416" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.416.tgz#7291f704168d3842ae4da3ae9fdc7bfbeb97d116" + integrity sha512-AUYh0XDTb2vrj0rj82jb3P9hHSyzQNdTPYWZIhPdCOui7/vpme7+HTE07BE5jwuqg/34TZ8ktlRz6GImJ4IXjA== emoji-regex@^8.0.0: version "8.0.0" @@ -4895,7 +4717,7 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-get-iterator@^1.1.2: +es-get-iterator@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== @@ -4950,89 +4772,33 @@ esbuild-register@^3.4.0: dependencies: debug "^4.3.4" -esbuild@^0.16.14: - version "0.16.17" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" - integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== +esbuild@^0.17.0, esbuild@^0.17.5, esbuild@^0.17.6: + version "0.17.19" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== optionalDependencies: - "@esbuild/android-arm" "0.16.17" - "@esbuild/android-arm64" "0.16.17" - "@esbuild/android-x64" "0.16.17" - "@esbuild/darwin-arm64" "0.16.17" - "@esbuild/darwin-x64" "0.16.17" - "@esbuild/freebsd-arm64" "0.16.17" - "@esbuild/freebsd-x64" "0.16.17" - "@esbuild/linux-arm" "0.16.17" - "@esbuild/linux-arm64" "0.16.17" - "@esbuild/linux-ia32" "0.16.17" - "@esbuild/linux-loong64" "0.16.17" - "@esbuild/linux-mips64el" "0.16.17" - "@esbuild/linux-ppc64" "0.16.17" - "@esbuild/linux-riscv64" "0.16.17" - "@esbuild/linux-s390x" "0.16.17" - "@esbuild/linux-x64" "0.16.17" - "@esbuild/netbsd-x64" "0.16.17" - "@esbuild/openbsd-x64" "0.16.17" - "@esbuild/sunos-x64" "0.16.17" - "@esbuild/win32-arm64" "0.16.17" - "@esbuild/win32-ia32" "0.16.17" - "@esbuild/win32-x64" "0.16.17" - -esbuild@^0.17.0: - version "0.17.14" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.14.tgz#d61a22de751a3133f3c6c7f9c1c3e231e91a3245" - integrity sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw== - optionalDependencies: - "@esbuild/android-arm" "0.17.14" - "@esbuild/android-arm64" "0.17.14" - "@esbuild/android-x64" "0.17.14" - "@esbuild/darwin-arm64" "0.17.14" - "@esbuild/darwin-x64" "0.17.14" - "@esbuild/freebsd-arm64" "0.17.14" - "@esbuild/freebsd-x64" "0.17.14" - "@esbuild/linux-arm" "0.17.14" - "@esbuild/linux-arm64" "0.17.14" - "@esbuild/linux-ia32" "0.17.14" - "@esbuild/linux-loong64" "0.17.14" - "@esbuild/linux-mips64el" "0.17.14" - "@esbuild/linux-ppc64" "0.17.14" - "@esbuild/linux-riscv64" "0.17.14" - "@esbuild/linux-s390x" "0.17.14" - "@esbuild/linux-x64" "0.17.14" - "@esbuild/netbsd-x64" "0.17.14" - "@esbuild/openbsd-x64" "0.17.14" - "@esbuild/sunos-x64" "0.17.14" - "@esbuild/win32-arm64" "0.17.14" - "@esbuild/win32-ia32" "0.17.14" - "@esbuild/win32-x64" "0.17.14" - -esbuild@^0.17.6: - version "0.17.11" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.11.tgz#9f3122643b21d7e7731e42f18576c10bfa28152b" - integrity sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg== - optionalDependencies: - "@esbuild/android-arm" "0.17.11" - "@esbuild/android-arm64" "0.17.11" - "@esbuild/android-x64" "0.17.11" - "@esbuild/darwin-arm64" "0.17.11" - "@esbuild/darwin-x64" "0.17.11" - "@esbuild/freebsd-arm64" "0.17.11" - "@esbuild/freebsd-x64" "0.17.11" - "@esbuild/linux-arm" "0.17.11" - "@esbuild/linux-arm64" "0.17.11" - "@esbuild/linux-ia32" "0.17.11" - "@esbuild/linux-loong64" "0.17.11" - "@esbuild/linux-mips64el" "0.17.11" - "@esbuild/linux-ppc64" "0.17.11" - "@esbuild/linux-riscv64" "0.17.11" - "@esbuild/linux-s390x" "0.17.11" - "@esbuild/linux-x64" "0.17.11" - "@esbuild/netbsd-x64" "0.17.11" - "@esbuild/openbsd-x64" "0.17.11" - "@esbuild/sunos-x64" "0.17.11" - "@esbuild/win32-arm64" "0.17.11" - "@esbuild/win32-ia32" "0.17.11" - "@esbuild/win32-x64" "0.17.11" + "@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" escalade@^3.1.1: version "3.1.1" @@ -5238,9 +5004,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fetch-retry@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.4.tgz#06e8e4533030bf6faa00ffbb9450cb9264c23c12" - integrity sha512-LXcdgpdcVedccGg0AZqg+S8lX/FCdwXD92WNZ5k5qsb0irRhSFsBOpcJt7oevyqT2/C2nEE0zSFNdBEpj3YOSw== + version "5.0.6" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" + integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== figures@^2.0.0: version "2.0.0" @@ -5250,14 +5016,14 @@ figures@^2.0.0: escape-string-regexp "^1.0.5" file-system-cache@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.0.2.tgz#6b51d58c5786302146fa883529e0d7f88896e948" - integrity sha512-lp4BHO4CWqvRyx88Tt3quZic9ZMf4cJyquYq7UI8sH42Bm2ArlBBjKQAalZOo+UfaBassb7X123Lik5qZ/tSAA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" + integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== dependencies: - fs-extra "^11.1.0" - ramda "^0.28.0" + fs-extra "11.1.1" + ramda "0.29.0" -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== @@ -5340,9 +5106,9 @@ find-up@^5.0.0: path-exists "^4.0.0" flow-parser@0.*: - version "0.201.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.201.0.tgz#d2005d4dae6fddf60d30f9ae0fb49a13c9c51cfe" - integrity sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw== + version "0.207.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.207.0.tgz#376975f6b88991bf0ef9496fa3bffd5eb3120046" + integrity sha512-s90OlXqzWj1xc4yUtqD1Gr8pGVx0/5rk9gsqPrOYF1kBAPMH4opkmzdWgQ8aNe3Pckqtwr8DlYGbfE2GnW+zsg== for-each@^0.3.3: version "0.3.3" @@ -5374,9 +5140,9 @@ forwarded@0.2.0: integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fp-ts@^2.5.3: - version "2.13.1" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.13.1.tgz#1bf2b24136cca154846af16752dc29e8fa506f2a" - integrity sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ== + version "2.16.0" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.0.tgz#64e03314dfc1c7ce5e975d3496ac14bc3eb7f92e" + integrity sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ== fresh@0.5.2: version "0.5.2" @@ -5393,10 +5159,10 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" - integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== +fs-extra@11.1.1, fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5434,7 +5200,7 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functions-have-names@^1.2.2: +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -5465,12 +5231,13 @@ get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + 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" get-monorepo-packages@^1.1.0: @@ -5540,12 +5307,12 @@ github-slugger@^1.0.0: integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== gitlog@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gitlog/-/gitlog-4.0.4.tgz#8da6c08748dc290eb6c2fc11e3c505fb73715564" - integrity sha512-jeY2kO7CVyTa6cUM7ZD2ZxIyBkna1xvW2esV/3o8tbhiUneX1UBQCH4D9aMrHgGiohBjyXbuZogyjKXslnY5Yg== + version "4.0.8" + resolved "https://registry.yarnpkg.com/gitlog/-/gitlog-4.0.8.tgz#a255e7d4cb7bc9603afab01c39bd71816c800c20" + integrity sha512-FcTLP7Rc0H1vWXD+J/aj5JS1uiCEBblcYXlcacRAT73N26OMYFFzrBXYmDozmWlV2K7zwK5PrH16/nuRNhqSlQ== dependencies: debug "^4.1.1" - tslib "^1.14.1" + tslib "^2.5.0" glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -5669,9 +5436,9 @@ got@^11.7.0: responselike "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" @@ -5764,9 +5531,9 @@ html-escaper@^2.0.0: integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-tags@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" - integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + version "3.3.1" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== http-cache-semantics@^4.0.0: version "4.1.1" @@ -5980,10 +5747,10 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: has "^1.0.3" @@ -6033,6 +5800,11 @@ is-gzip@^1.0.0: resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-lite@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/is-lite/-/is-lite-0.8.2.tgz#26ab98b32aae8cc8b226593b9a641d2bf4bd3b6a" @@ -6244,14 +6016,14 @@ istanbul-reports@^3.1.4: istanbul-lib-report "^3.0.0" jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" java-properties@^1.0.0: version "1.0.2" @@ -6512,9 +6284,9 @@ load-json-file@^4.0.0: strip-bom "^3.0.0" load-tsconfig@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.3.tgz#08af3e7744943caab0c75f8af7f1703639c3ef1f" - integrity sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ== + version "0.2.5" + resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" + integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== locate-path@^2.0.0: version "2.0.0" @@ -6676,7 +6448,7 @@ lodash@^4.17.15, lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -6755,9 +6527,9 @@ map-or-similar@^1.5.0: integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== markdown-to-jsx@^7.1.8: - version "7.1.9" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.9.tgz#1ffae0cda07c189163d273bd57a5b8f8f8745586" - integrity sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.2.0.tgz#e7b46b65955f6a04d48a753acd55874a14bdda4b" + integrity sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg== mdast-util-definitions@^4.0.0: version "4.0.0" @@ -6889,10 +6661,10 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -minipass@^4.0.0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.4.tgz#7d0d97434b6a19f59c5c3221698b48bbf3b2cd06" - integrity sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ== +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== minizlib@^2.1.1: version "2.1.2" @@ -6958,10 +6730,10 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.1, nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.1, nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== negotiator@0.6.3: version "0.6.3" @@ -6991,9 +6763,9 @@ node-dir@^0.1.10, node-dir@^0.1.17: minimatch "^3.0.2" node-fetch-native@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz#de3651399fda89a1a7c0bf6e7c4e9c239e8d0697" - integrity sha512-KIkvH1jl6b3O7es/0ShyCgWLcfXxlBrLBbP3rOr23WArC66IMcU4DeZEeYEOwnopYhawLTn7/y+YtmASe8DFVQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.1.1.tgz#b8977dd7fe6c5599e417301ed3987bca787d3d6f" + integrity sha512-9VvspTSUp2Sxbl+9vbZTlFGq9lHwE8GDVVekxx6YsNd1YH59sb3Ba8v3Y3cD8PkLNcileGGcA21PFjVl0jzDaw== node-fetch@2.6.7: version "2.6.7" @@ -7003,9 +6775,9 @@ node-fetch@2.6.7: whatwg-url "^5.0.0" node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== dependencies: whatwg-url "^5.0.0" @@ -7014,10 +6786,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node-releases@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== node.extend@^2.0.0: version "2.0.2" @@ -7171,7 +6943,7 @@ once@~1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -7207,6 +6979,21 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -7490,12 +7277,12 @@ postcss-load-config@^3.0.1: lilconfig "^2.0.5" yaml "^1.10.2" -postcss@^8.4.21: - version "8.4.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" - integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== +postcss@^8.4.23: + version "8.4.24" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" + integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -7505,9 +7292,9 @@ prelude-ls@~1.1.2: integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prettier@^2.3.1, prettier@^2.8.0: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== pretty-bytes@^5.1.0: version "5.6.0" @@ -7670,9 +7457,9 @@ qs@6.11.0: side-channel "^1.0.4" qs@^6.10.0: - version "6.11.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" - integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" @@ -7686,10 +7473,10 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -ramda@^0.28.0: - version "0.28.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" - integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== +ramda@0.29.0: + version "0.29.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" + integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== range-parser@~1.2.1: version "1.2.1" @@ -7932,9 +7719,9 @@ recast@^0.21.0: tslib "^2.0.1" recast@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.1.tgz#ee415a5561d2f99f02318ea8db81ad3a2267a6ff" - integrity sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g== + version "0.23.2" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.2.tgz#d3dda3e8f0a3366860d7508c00e34a338ac52b41" + integrity sha512-Qv6cPfVZyMOtPszK6PgW70pUgm7gPlFitAPf0Q69rlOA0zLw2XdDcNmPbVGYicFGT9O8I7TZ/0ryJD+6COvIPw== dependencies: assert "^2.0.0" ast-types "^0.16.1" @@ -7986,19 +7773,19 @@ regenerator-transform@^0.15.1: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" regexpu-core@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" - integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -8075,12 +7862,12 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -8098,6 +7885,14 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -8124,10 +7919,10 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -"rollup@^2.25.0 || ^3.3.0", rollup@^3.10.0, rollup@^3.2.5: - version "3.19.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.19.1.tgz#2b3a31ac1ff9f3afab2e523fa687fef5b0ee20fc" - integrity sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg== +"rollup@^2.25.0 || ^3.3.0", rollup@^3.2.5, rollup@^3.21.0: + version "3.23.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564" + integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== optionalDependencies: fsevents "~2.3.2" @@ -8180,9 +7975,9 @@ scroll@^3.0.1: integrity sha512-pz7y517OVls1maEzlirKO5nPYle9AXsFzTMNJrRGmT951mzpIBy7sNHOg5o/0MQd/NqliCiWnAi0kZneMPFLcg== scrollparent@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.0.1.tgz#715d5b9cc57760fb22bdccc3befb5bfe06b1a317" - integrity sha512-HSdN78VMvFCSGCkh0oYX/tY4R3P1DW61f8+TeZZ4j2VLgfwvw0bpRSOv4PCVKisktIwbzHCfZsx+rLbbDBqIBA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.1.0.tgz#6cae915c953835886a6ba0d77fdc2bb1ed09076d" + integrity sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA== "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" @@ -8194,14 +7989,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -semver@^7.1.2, semver@^7.3.5: +semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7: version "7.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== @@ -8295,9 +8083,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" - integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== shelljs@^0.8.5: version "0.8.5" @@ -8364,9 +8152,9 @@ snyk-config@^5.0.0: minimist "^1.2.5" snyk-nodejs-lockfile-parser@^1.49.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.51.0.tgz#73f1a364e9e921fb35d0239e1b4b156c48a35700" - integrity sha512-uepLn2WELhgAVoYZ7QOt3nFwBVZvJAUfdDyebhb2Wqn5ftTthELzUp5/kCqxOXWoXBSg2KQIjI42U7SRq8gxLg== + version "1.51.1" + resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.51.1.tgz#8a1c81fc2450a1b512d3b9e9334a8ad3807a7878" + integrity sha512-NVD93nZwuLg/uhgHpMLk0e28r1Xz2wTsY00zK9L7dPMGF1BKbh05O5WXGagCb7yL5zFcb/xNyIkYyGoaTxWtmQ== dependencies: "@snyk/dep-graph" "^2.3.0" "@snyk/graphlib" "2.1.9-patch.3" @@ -8437,9 +8225,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== sprintf-js@~1.0.2: version "1.0.3" @@ -8471,11 +8259,11 @@ store2@^2.14.2: integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== storybook@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.0.0.tgz#ab80e46c01e341a5a557fe7aecc7f8b458b432f1" - integrity sha512-sZamiYhd2lzQ2A+UIlkUlc6/i8TiNCcCUBmpTiN6qlbBPId5Gji1XdDTqgiuaKLTFnLU/1DBTS1a2ndGI1fIKw== + version "7.0.18" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.0.18.tgz#0783af5356fa72161258abef009cde0c9f7e5c77" + integrity sha512-FXMmTiomSlLPTHty7vGLr0prPf6pCV07EwAmNOYYYTskitEYV0R7hlhawByd7HuobjIhHvSTKesa1Whl86zLNA== dependencies: - "@storybook/cli" "7.0.0" + "@storybook/cli" "7.0.18" stream-buffers@^3.0.2: version "3.0.2" @@ -8597,10 +8385,11 @@ strip-json-comments@~2.0.1: integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== sucrase@^3.20.3: - version "3.29.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" - integrity sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A== + version "3.32.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" + integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== dependencies: + "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" glob "7.1.6" lines-and-columns "^1.1.6" @@ -8684,21 +8473,21 @@ tar-stream@^2.0.1, tar-stream@^2.1.4: readable-stream "^3.1.1" tar@^6.1.13: - version "6.1.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" - integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + version "6.1.15" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^4.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" telejson@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.0.4.tgz#2e88c0af9566b4f687622ed490588312b2bec186" - integrity sha512-J4QEuCnYGXAI9KSN7RXK0a0cOW2ONpjc4IQbInGZ6c3stvplLAYyZjTnScrRd8deXVjNCFV1wXcLC7SObDuQYA== + version "7.1.0" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.1.0.tgz#1ef7a0dd57eeb52cde933126f61bcc296c170f52" + integrity sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA== dependencies: memoizerific "^1.11.3" @@ -8879,25 +8668,20 @@ tslib@2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tslib@^1.13.0, tslib@^1.14.1, tslib@^1.9.3: +tslib@^1.13.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.0.1, tslib@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tslib@^2.0.0, tslib@^2.1.0: +tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== tsup@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.6.3.tgz#f6f975a8656cfd9b8e115f33b1aa0f0fd4df78e2" - integrity sha512-OLx/jFllYlVeZQ7sCHBuRVEQBBa1tFbouoc/gbYakyipjVQdWy/iQOvmExUA/ewap9iQ7tbJf9pW0PgcEFfJcQ== + version "6.7.0" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.7.0.tgz#416f350f32a07b6ae86792ad7e52b0cafc566d64" + integrity sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ== dependencies: bundle-require "^4.0.0" cac "^6.7.12" @@ -9110,10 +8894,10 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -9173,16 +8957,16 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid-browser@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" - integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== - uuid@^8.3.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -9211,14 +8995,13 @@ vary@~1.1.2: integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vite@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0" - integrity sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg== + version "4.3.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" + integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== dependencies: - esbuild "^0.16.14" - postcss "^8.4.21" - resolve "^1.22.1" - rollup "^3.10.0" + esbuild "^0.17.5" + postcss "^8.4.23" + rollup "^3.21.0" optionalDependencies: fsevents "~2.3.2" @@ -9237,6 +9020,13 @@ watchpack@^2.2.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -9392,9 +9182,9 @@ ws@^6.1.0: async-limiter "~1.0.0" ws@^8.2.3: - version "8.12.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" - integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== xtend@~4.0.1: version "4.0.2" From 22fcefc7978993eaf48c2fc0e0c3ceccfe84a576 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 1 Jun 2023 11:24:54 +0200 Subject: [PATCH 050/430] delete duplicated story --- src/stories/Button.stories.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts index 0c3e10dbb892..1e4cfa09ce68 100644 --- a/src/stories/Button.stories.ts +++ b/src/stories/Button.stories.ts @@ -55,11 +55,3 @@ export const Warning: Story = { label: "Delete now", }, }; - -export const Warnings: Story = { - args: { - primary: true, - backgroundColor: "red", - label: "Delete now", - }, -}; From 486892beaf3a32b09756d63d14502c8f902fc338 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 1 Jun 2023 11:25:24 +0200 Subject: [PATCH 051/430] fix story --- src/stories/Button.stories.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts index 1e4cfa09ce68..462d5528400a 100644 --- a/src/stories/Button.stories.ts +++ b/src/stories/Button.stories.ts @@ -48,10 +48,11 @@ export const Small: Story = { }, }; -export const Warning: Story = { - args: { - primary: true, - backgroundColor: "red", - label: "Delete now", - }, -}; +// Comment this out to test the flow +// export const Warning: Story = { +// args: { +// primary: true, +// backgroundColor: "red", +// label: "Delete now", +// }, +// }; From 33bf67a1f8721d4e5d7748cdfaa1a6c4b4fa13cc Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 1 Jun 2023 09:56:24 +0000 Subject: [PATCH 052/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8249aa7b5af..a9e8a666e939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.11 (Thu Jun 01 2023) + +#### πŸ› Bug Fix + +- Add guided tour example [#5](https://github.com/storybookjs/addon-onboarding/pull/5) ([@yannbf](https://github.com/yannbf)) + +#### Authors: 1 + +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.10 (Tue May 30 2023) #### ⚠️ Pushed to `main` From 543294885b4b4356037069a6af51bcf76757bf0e Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 1 Jun 2023 09:56:25 +0000 Subject: [PATCH 053/430] Bump version to: 0.0.11 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 831a5cf3cbcf..d69eabc3cefe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.10", + "version": "0.0.11", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 4c5cf400245b4afbd9d9296d3ff9375e13bedf42 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Thu, 1 Jun 2023 15:08:48 +0200 Subject: [PATCH 054/430] Implemented bare minimum list component Co-authored-by: its9527 --- src/components/List/List.stories.tsx | 51 +++++++++++++++++++ src/components/List/List.styled.tsx | 9 ++++ src/components/List/List.tsx | 10 ++++ .../List/ListItem/ListItem.styled.tsx | 31 +++++++++++ src/components/List/ListItem/ListItem.tsx | 27 ++++++++++ 5 files changed, 128 insertions(+) create mode 100644 src/components/List/List.stories.tsx create mode 100644 src/components/List/List.styled.tsx create mode 100644 src/components/List/List.tsx create mode 100644 src/components/List/ListItem/ListItem.styled.tsx create mode 100644 src/components/List/ListItem/ListItem.tsx diff --git a/src/components/List/List.stories.tsx b/src/components/List/List.stories.tsx new file mode 100644 index 000000000000..ccd8e015039c --- /dev/null +++ b/src/components/List/List.stories.tsx @@ -0,0 +1,51 @@ +import React, { useState } from "react"; +import type { Meta, StoryObj } from "@storybook/react"; +import { userEvent, waitFor, within } from "@storybook/testing-library"; +import { expect } from "@storybook/jest"; + +import { List } from "./List"; +import { ListItem } from "./ListItem/ListItem"; + +const meta: Meta = { + component: List, +}; + +export default meta; + +export const Default: StoryObj = { + render: () => { + const [workingIndex, setWorkingIndex] = useState(1); + + return ( + <> + + = 1} nthItem={1}> + Hello World + + = 2} nthItem={2}> + Bonjour le monde + + = 3} nthItem={3}> + δ½ ε₯½, δΈ–η•Œ + + +
+ + + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement.parentElement); + const button = canvas.getByText("Complete"); + + expect(canvas.getAllByLabelText("complete")).toHaveLength(1); + + userEvent.click(button); + + await waitFor(() => + expect(canvas.getAllByLabelText("complete")).toHaveLength(2) + ); + }, +}; diff --git a/src/components/List/List.styled.tsx b/src/components/List/List.styled.tsx new file mode 100644 index 000000000000..d75395a65467 --- /dev/null +++ b/src/components/List/List.styled.tsx @@ -0,0 +1,9 @@ +import { styled } from "@storybook/theming"; + +export const ListWrapper = styled.ul(() => ({ + display: "flex", + flexDirection: "column", + rowGap: 16, + padding: 0, + margin: 0, +})); diff --git a/src/components/List/List.tsx b/src/components/List/List.tsx new file mode 100644 index 000000000000..f443ec992f1b --- /dev/null +++ b/src/components/List/List.tsx @@ -0,0 +1,10 @@ +import React from "react"; +import { ListWrapper } from "./List.styled"; + +interface ListProps { + children: React.ReactNode; +} + +export const List = ({ children }: ListProps) => { + return {children}; +}; diff --git a/src/components/List/ListItem/ListItem.styled.tsx b/src/components/List/ListItem/ListItem.styled.tsx new file mode 100644 index 000000000000..98dd471ee30d --- /dev/null +++ b/src/components/List/ListItem/ListItem.styled.tsx @@ -0,0 +1,31 @@ +import { styled } from "@storybook/theming"; + +export const ListItemWrapper = styled.li(() => ({ + display: "flex", + alignItems: "flex-start", + columnGap: 12, +})); + +export const ListItemContentWrapper = styled.div(({ theme }) => ({ + fontFamily: theme.typography.fonts.base, + color: theme.color.darker, + fontSize: "13px", +})); + +export const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>( + ({ isCompleted, theme }) => ({ + display: "flex", + alignItems: "center", + justifyContent: "center", + border: !isCompleted && `1px solid ${theme.color.medium}`, + minWidth: 20, + width: 20, + height: 20, + borderRadius: "50%", + backgroundColor: isCompleted ? theme.color.green : "white", + fontFamily: theme.typography.fonts.base, + fontSize: 10, + fontWeight: 600, + color: theme.color.dark, + }) +); diff --git a/src/components/List/ListItem/ListItem.tsx b/src/components/List/ListItem/ListItem.tsx new file mode 100644 index 000000000000..735934838893 --- /dev/null +++ b/src/components/List/ListItem/ListItem.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { Icons } from "@storybook/components"; +import { + ListItemContentWrapper, + ListItemIndexWrapper, + ListItemWrapper, +} from "./ListItem.styled"; + +interface ListItemProps { + children: React.ReactNode; + nthItem: number; + isCompleted?: boolean; +} + +export const ListItem = ({ children, nthItem, isCompleted }: ListItemProps) => { + return ( + + + {isCompleted ? : nthItem} + + {children} + + ); +}; From c7c01ab78257965de87d87c7425d545618df29a8 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Thu, 1 Jun 2023 16:41:16 +0200 Subject: [PATCH 055/430] Rename ListItem property and optimize play function of List --- src/components/List/List.stories.tsx | 10 +++++----- src/components/List/ListItem/ListItem.tsx | 10 +++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/List/List.stories.tsx b/src/components/List/List.stories.tsx index ccd8e015039c..dcfdb640fe3b 100644 --- a/src/components/List/List.stories.tsx +++ b/src/components/List/List.stories.tsx @@ -19,13 +19,13 @@ export const Default: StoryObj = { return ( <> - = 1} nthItem={1}> + = 1} index={1}> Hello World - = 2} nthItem={2}> + = 2} index={2}> Bonjour le monde - = 3} nthItem={3}> + = 3} index={3}> δ½ ε₯½, δΈ–η•Œ @@ -40,9 +40,9 @@ export const Default: StoryObj = { const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Complete"); - expect(canvas.getAllByLabelText("complete")).toHaveLength(1); + await expect(canvas.getAllByLabelText("complete")).toHaveLength(1); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => expect(canvas.getAllByLabelText("complete")).toHaveLength(2) diff --git a/src/components/List/ListItem/ListItem.tsx b/src/components/List/ListItem/ListItem.tsx index 735934838893..16f4ceb34878 100644 --- a/src/components/List/ListItem/ListItem.tsx +++ b/src/components/List/ListItem/ListItem.tsx @@ -8,18 +8,22 @@ import { interface ListItemProps { children: React.ReactNode; - nthItem: number; + index: number; isCompleted?: boolean; } -export const ListItem = ({ children, nthItem, isCompleted }: ListItemProps) => { +export const ListItem = ({ children, index, isCompleted }: ListItemProps) => { return ( - {isCompleted ? : nthItem} + {isCompleted ? ( + + ) : ( + index + )} {children} From feb91ff301e4d9f53cee3157397f14e40b8eacc4 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 1 Jun 2023 15:03:40 +0000 Subject: [PATCH 056/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9e8a666e939..1b0770d76045 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.12 (Thu Jun 01 2023) + +#### πŸ› Bug Fix + +- Implemented bare minimum list component [#19](https://github.com/storybookjs/addon-onboarding/pull/19) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.11 (Thu Jun 01 2023) #### πŸ› Bug Fix From dd4f31a1e79d7cb35151c6a1a80c2064a2d04cb0 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 1 Jun 2023 15:03:41 +0000 Subject: [PATCH 057/430] Bump version to: 0.0.12 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d69eabc3cefe..d7eb7af75a63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.11", + "version": "0.0.12", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From d6d666c448df97e4f20246a04e4bc18cd0d712e7 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 2 Jun 2023 14:20:24 +0200 Subject: [PATCH 058/430] Implement syntax highlighter --- package.json | 3 +- .../Snippet/Snippet.styled.tsx | 8 ++ .../SyntaxHighlighter/Snippet/Snippet.tsx | 79 +++++++++++++ .../SyntaxHighlighter.stories.tsx | 86 ++++++++++++++ .../SyntaxHighlighter.styled.tsx | 36 ++++++ .../SyntaxHighlighter/SyntaxHighlighter.tsx | 106 ++++++++++++++++++ yarn.lock | 21 ++++ 7 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx create mode 100644 src/components/SyntaxHighlighter/Snippet/Snippet.tsx create mode 100644 src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx create mode 100644 src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx create mode 100644 src/components/SyntaxHighlighter/SyntaxHighlighter.tsx diff --git a/package.json b/package.json index d69eabc3cefe..78f3e549e5f8 100644 --- a/package.json +++ b/package.json @@ -74,8 +74,8 @@ "@storybook/blocks": "^7.0.0", "@storybook/components": "^7.0.0", "@storybook/core-events": "^7.0.0", - "@storybook/manager-api": "^7.0.0", "@storybook/jest": "^0.1.0", + "@storybook/manager-api": "^7.0.0", "@storybook/react": "^7.0.0", "@storybook/react-vite": "^7.0.0", "@storybook/testing-library": "^0.0.14-next.1", @@ -129,6 +129,7 @@ "homepage": "https://github.com/storybookjs/addon-onboarding#readme", "dependencies": { "@radix-ui/react-dialog": "^1.0.4", + "framer-motion": "^10.12.16", "react-confetti": "^6.1.0", "react-joyride": "^2.5.4" } diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx new file mode 100644 index 000000000000..655ded673910 --- /dev/null +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx @@ -0,0 +1,8 @@ +import { styled } from "@storybook/theming"; +import { motion } from "framer-motion"; + +export const SnippetWrapper = styled(motion.div)<{ active?: boolean }>` + position: relative; + padding-top: 12px; + padding-bottom: 12px; +`; diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx new file mode 100644 index 000000000000..793210d48806 --- /dev/null +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -0,0 +1,79 @@ +import { motion } from "framer-motion"; +import { forwardRef } from "react"; +import { SnippetWrapper } from "./Snippet.styled"; +import React from "react"; +import { SyntaxHighlighter as StorybookSyntaxHighlighter } from "@storybook/components"; +import { ThemeProvider, ensure, themes } from "@storybook/theming"; + +interface Props { + contents: { content: string; toggle?: boolean }[]; + active: boolean; + open?: boolean; +} + +const wrapperVariants = { + default: { + filter: "grayscale(1)", + opacity: 0.5, + }, + active: { + filter: "grayscale(0)", + opacity: 1, + }, +}; + +export const Snippet = forwardRef( + ({ active, contents, open }, ref) => { + return ( + + + {contents.map(({ toggle, content }, i) => ( + <> + {toggle === undefined && ( + + {content} + + )} + + {toggle && !open && ( + + {` ...`} + + )} + + {toggle && open && ( + + + {content} + + + )} + + ))} + + + ); + } +); diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx new file mode 100644 index 000000000000..394330546df9 --- /dev/null +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -0,0 +1,86 @@ +import { Meta, StoryObj } from "@storybook/react"; +import { SyntaxHighlighter } from "./SyntaxHighlighter"; +import React from "react"; + +const meta: Meta = { + component: SyntaxHighlighter, + parameters: { + chromatic: { delay: 300 }, + }, +}; + +export default meta; + +type Story = StoryObj; + +const newData = [ + [ + { + content: `// Button.stories.tsx`, + }, + ], + [ + { + content: `import type { Meta, StoryObj } from '@storybook/react'; + +import { Button } from './Button';`, + }, + ], + [ + { + content: `const meta: Meta = { + title: 'Example/Button', + component: Button, + ... +}; + +export default meta;`, + }, + ], + [ + { content: `export const Primary: Story = {` }, + { + content: ` args: { + primary: true, + label: 'Click', + background: 'red', + },`, + toggle: true, + }, + { content: `};` }, + ], + [ + { + content: `// Copy the code below + + export const Warning: Story = { + args: { + backgroundColor: 'red', + label: 'Delete now', + }, + };`, + }, + ], +]; + +export const Default: Story = { + render: (args) => { + const [activeStep, setActiveStep] = React.useState(1); + + return ( +
+ + + + +
+ ); + }, + args: { + contents: newData, + activeStep: 1, + width: "50%", + }, +}; diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx new file mode 100644 index 000000000000..499dfac47d81 --- /dev/null +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx @@ -0,0 +1,36 @@ +import { styled } from "@storybook/theming"; +import { motion } from "framer-motion"; + +export const Code = styled(motion.div)` + position: relative; + z-index: 2; +`; + +export const Container = styled.div<{ width: string }>` + position: relative; + box-sizing: border-box; + background: #171c23; + width: ${({ width }) => width}; + height: 100%; + overflow: hidden; + padding-left: 15px; + padding-right: 15px; + padding-top: 6px; + + && { + pre { + background: transparent !important; + margin: 0 !important; + padding: 0 !important; + } + } +`; + +export const Backdrop = styled(motion.div)` + background: #143046; + position: absolute; + z-index: 1; + left: 0; + width: 100%; + height: 200px; +`; diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx new file mode 100644 index 000000000000..48362413a06d --- /dev/null +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -0,0 +1,106 @@ +import React, { useCallback, useEffect, useLayoutEffect, useMemo } from "react"; +import { Backdrop, Code, Container } from "./SyntaxHighlighter.styled"; +import { Snippet } from "./Snippet/Snippet"; + +type SyntaxHighlighterProps = { + contents: { content: string; toggle?: boolean }[][]; + activeStep: number; + width: string; +}; + +const OFFSET = 49; + +export const SyntaxHighlighter = ({ + activeStep, + contents, + width, +}: SyntaxHighlighterProps) => { + const [steps, setSteps] = React.useState< + { yPos: number; height: number; index: number; open: boolean }[] + >([]); + + const refs = useMemo( + () => contents.map(() => React.createRef()), + [contents] + ); + + const getYPos = (idx: number) => { + let yPos = 0; + for (let i = 0; i < idx; i++) { + yPos -= refs[i].current!.getBoundingClientRect().height; + } + return yPos; + }; + + const setNewSteps = useCallback(() => { + const newSteps = contents.flatMap((content, i) => { + const height = refs[i].current!.getBoundingClientRect().height; + const finalSteps = [ + { + yPos: getYPos(i) + OFFSET - 7, + height, + index: i, + open: false, + }, + ]; + + if (content.length > 1) { + finalSteps.push({ + yPos: getYPos(i) + OFFSET - 7, + height, + index: i, + open: true, + }); + } + + return finalSteps; + }); + + setSteps(newSteps); + }, [contents]); + + useEffect(() => { + // Call setNewSteps every time height of the refs elements changes + const resizeObserver = new ResizeObserver(() => { + setNewSteps(); + }); + + refs.forEach((ref) => { + resizeObserver.observe(ref.current!); + }); + + return () => { + resizeObserver.disconnect(); + }; + }, []); + + return ( + <> + + + {contents.map((content, idx: number) => ( + idx + ? true + : steps[activeStep]?.open ?? false + } + contents={content} + /> + ))} + + + + + ); +}; diff --git a/yarn.lock b/yarn.lock index 5ab9b51450a8..9a7379dab4d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1466,6 +1466,18 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" @@ -5144,6 +5156,15 @@ fp-ts@^2.5.3: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.0.tgz#64e03314dfc1c7ce5e975d3496ac14bc3eb7f92e" integrity sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ== +framer-motion@^10.12.16: + version "10.12.16" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.12.16.tgz#ccba11d216ac370c6bc65fcd9953a61deb54f071" + integrity sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" From 71b4c6203b88d905ef7ba155c96824e9be70105d Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 2 Jun 2023 14:47:24 +0200 Subject: [PATCH 059/430] Add play function to SyntaxHighlighter Story --- .../SyntaxHighlighter/Snippet/Snippet.tsx | 1 + .../SyntaxHighlighter.stories.tsx | 42 +++++++++++++++++++ src/helpers/textContentMatcher.tsx | 30 +++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 src/helpers/textContentMatcher.tsx diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index 793210d48806..7e0ae6b95d29 100644 --- a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -30,6 +30,7 @@ export const Snippet = forwardRef( ref={ref} initial="default" animate={active ? "active" : "default"} + aria-hidden={!active} variants={wrapperVariants} transition={{ ease: "easeInOut", duration: 0.6 }} > diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index 394330546df9..0483f04b99df 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -1,6 +1,9 @@ import { Meta, StoryObj } from "@storybook/react"; import { SyntaxHighlighter } from "./SyntaxHighlighter"; import React from "react"; +import { fireEvent, userEvent, within } from "@storybook/testing-library"; +import { expect } from "@storybook/jest"; +import { textContentMatcher } from "../../helpers/textContentMatcher"; const meta: Meta = { component: SyntaxHighlighter, @@ -83,4 +86,43 @@ export const Default: Story = { activeStep: 1, width: "50%", }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + const resetButton = canvas.getByText("Reset"); + const previousButton = canvas.getByText("Previous"); + const nextButton = canvas.getByText("Next"); + + const firstElement = await canvas.findByText( + textContentMatcher(newData[0][0].content) + ); + const secondElement = await canvas.findByText( + textContentMatcher(newData[1][0].content) + ); + const thirdElement = await canvas.findByText( + textContentMatcher(newData[2][0].content) + ); + + await expect( + firstElement.closest('[aria-hidden="true"]') + ).toBeInTheDocument(); + await expect( + secondElement.closest('[aria-hidden="true"]') + ).not.toBeInTheDocument(); + await expect( + thirdElement.closest('[aria-hidden="true"]') + ).toBeInTheDocument(); + + await userEvent.click(nextButton); + + await expect( + firstElement.closest('[aria-hidden="true"]') + ).toBeInTheDocument(); + await expect( + secondElement.closest('[aria-hidden="true"]') + ).toBeInTheDocument(); + await expect( + thirdElement.closest('[aria-hidden="true"]') + ).not.toBeInTheDocument(); + }, }; diff --git a/src/helpers/textContentMatcher.tsx b/src/helpers/textContentMatcher.tsx new file mode 100644 index 000000000000..ece935b6157a --- /dev/null +++ b/src/helpers/textContentMatcher.tsx @@ -0,0 +1,30 @@ +/** + * Getting the deepest element that contain string / match regex even when it split between multiple elements + * + * @example + * For: + *
+ * Hello World + *
+ * + * screen.getByText('Hello World') // ❌ Fail + * screen.getByText(textContentMatcher('Hello World')) // βœ… pass + */ +export function textContentMatcher(textMatch: string | RegExp) { + const hasText = + typeof textMatch === "string" + ? (node: Element) => node.textContent === textMatch + : (node: Element) => textMatch.test(node.textContent); + + const matcher = (_content: string, node: Element) => { + if (!hasText(node)) { + return false; + } + + return Array.from(node?.children || []).every((child) => !hasText(child)); + }; + + matcher.toString = () => `textContentMatcher(${textMatch})`; + + return matcher; +} From 3fcd7ae26e9fc2fd0d1956922ce657fd7124be1d Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 2 Jun 2023 15:34:32 +0200 Subject: [PATCH 060/430] Update src/components/SyntaxHighlighter/Snippet/Snippet.tsx Co-authored-by: Yann Braga --- src/components/SyntaxHighlighter/Snippet/Snippet.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index 7e0ae6b95d29..cce9a26dd035 100644 --- a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -52,7 +52,7 @@ export const Snippet = forwardRef( language="javascript" customStyle={{ fontSize: "0.8rem" }} > - {` ...`} + {` // ...`} )} From b5f373d474d29011095e300d2c54334d0761d2f3 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 5 Jun 2023 08:52:03 +0200 Subject: [PATCH 061/430] Intend toggled code in CodeHighlighter --- .../SyntaxHighlighter/Snippet/Snippet.tsx | 1 + .../SyntaxHighlighter.stories.tsx | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index cce9a26dd035..ef2194f9b8b0 100644 --- a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -66,6 +66,7 @@ export const Snippet = forwardRef( {content} diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index 0483f04b99df..87bdf710803b 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -34,7 +34,7 @@ import { Button } from './Button';`, content: `const meta: Meta = { title: 'Example/Button', component: Button, - ... + // ... }; export default meta;`, @@ -43,11 +43,11 @@ export default meta;`, [ { content: `export const Primary: Story = {` }, { - content: ` args: { + content: `args: { primary: true, label: 'Click', - background: 'red', - },`, + background: 'red' + }`, toggle: true, }, { content: `};` }, @@ -59,8 +59,8 @@ export default meta;`, export const Warning: Story = { args: { backgroundColor: 'red', - label: 'Delete now', - }, + label: 'Delete now' + } };`, }, ], @@ -89,8 +89,6 @@ export const Default: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); - const resetButton = canvas.getByText("Reset"); - const previousButton = canvas.getByText("Previous"); const nextButton = canvas.getByText("Next"); const firstElement = await canvas.findByText( From 6cb059bcc07f7a1680ae96b42483ada7894cb3d1 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Mon, 5 Jun 2023 06:56:46 +0000 Subject: [PATCH 062/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b0770d76045..44f44a3af2f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.13 (Mon Jun 05 2023) + +#### πŸ› Bug Fix + +- Implement syntax highlighter [#20](https://github.com/storybookjs/addon-onboarding/pull/20) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.12 (Thu Jun 01 2023) #### πŸ› Bug Fix From c2b8caec79abda7848ad40690fe4aadd4f15e96d Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Mon, 5 Jun 2023 06:56:47 +0000 Subject: [PATCH 063/430] Bump version to: 0.0.13 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 189ddb7dd8bd..641c1f45f7e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.12", + "version": "0.0.13", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 648a737c22b75358d3ddd16a8d669069be565610 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 5 Jun 2023 13:12:03 +0200 Subject: [PATCH 064/430] trigger via /onboarding path instead of query parameter --- src/manager.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manager.tsx b/src/manager.tsx index b71d44185828..4a6f0121f576 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -8,7 +8,7 @@ const App = lazy(() => import("./App")); // 1. The onboarding query parameter is present // 2. The example button stories are present addons.register("@storybook/addon-onboarding", async (api) => { - const isOnboarding = api.getUrlState().queryParams.onboarding; + const isOnboarding = api.getUrlState().path === '/onboarding'; if (!isOnboarding) { return; From f293e4ea7e9d013f87d11fc43e33130ccaacfe6a Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 5 Jun 2023 13:27:15 +0100 Subject: [PATCH 065/430] Added a new Default story for Modal --- src/components/Modal/Modal.stories.tsx | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index e031fe5e148d..4d462b3cc5d6 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -19,6 +19,33 @@ export default meta; type Story = StoryObj; export const Default: Story = { + render: () => { + const [isOpen, setOpen] = useState(false); + return ( + <> + + {({ Title, Description, Close }) => ( + <> + Hello world + Modal Title + Modal Description + setOpen(false)}>Close + + )} + + + + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement.parentElement); + const button = canvas.getByText("Open modal"); + await userEvent.click(button); + await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + }, +}; + +export const FixedWidth: Story = { render: () => { const [isOpen, setOpen] = useState(false); return ( From 6d0f33ac204f3f33a34e9143af04e04614c04338 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 5 Jun 2023 13:28:19 +0100 Subject: [PATCH 066/430] Moved styles inside of the Welcome Modal --- src/components/Modal/Modal.styled.tsx | 35 ++++--------------- src/components/Modal/Modal.tsx | 21 ++++------- .../WelcomeModal/WelcomeModal.styled.tsx | 15 ++++++++ src/features/WelcomeModal/WelcomeModal.tsx | 4 ++- 4 files changed, 32 insertions(+), 43 deletions(-) diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index 126a344d4a0a..1d91d193177b 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -1,20 +1,14 @@ import { css, styled } from "@storybook/theming"; -import { - Overlay, - Content, - Title, - Description, - Close, -} from "@radix-ui/react-dialog"; +import * as Dialog from "@radix-ui/react-dialog"; import React from "react"; -export const StyledOverlay = styled(Overlay)` - background-color: rgba(0, 0, 0, 0.25); +export const StyledOverlay = styled(Dialog.Overlay)` + background-color: rgba(27, 28, 29, 0.48); position: fixed; inset: 0px; width: 100%; height: 100%; -})`; +`; export const StyledContent = styled.div<{ width: string }>( ({ width }) => css` @@ -34,24 +28,9 @@ export const StyledContent = styled.div<{ width: string }>( export const ContentWrapper = React.forwardRef< HTMLDivElement, React.ComponentProps & - React.ComponentProps + React.ComponentProps >(({ width, children, ...contentProps }, ref) => ( - + {children} - + )); - -export const StyledTitle = styled(Title)` - color: #000; - font-weight: 700; - font-size: 20px; - line-height: 20px; -`; -export const StyledDescription = styled(Description)` - font-size: 14px; - font-weight: 400; - line-height: 20px; - color: #454e54; -`; - -export const StyledClose = styled(Close)``; diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index e217c32c380d..9168eb3fe078 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -1,13 +1,6 @@ import React from "react"; - import * as Dialog from "@radix-ui/react-dialog"; -import { - ContentWrapper, - StyledClose, - StyledDescription, - StyledOverlay, - StyledTitle, -} from "./Modal.styled"; +import { ContentWrapper, StyledOverlay } from "./Modal.styled"; type ContentProps = React.ComponentProps; @@ -15,9 +8,9 @@ interface ModalProps extends Omit, "children"> { width?: string; children: (props: { - Title: typeof StyledTitle; - Description: typeof StyledDescription; - Close: typeof StyledClose; + Title: typeof Dialog.Title; + Description: typeof Dialog.Description; + Close: typeof Dialog.Close; }) => React.ReactNode; onEscapeKeyDown?: ContentProps["onEscapeKeyDown"]; onInteractOutside?: ContentProps["onInteractOutside"]; @@ -40,9 +33,9 @@ export function Modal({ onEscapeKeyDown={onEscapeKeyDown} > {children({ - Title: StyledTitle, - Description: StyledDescription, - Close: StyledClose, + Title: Dialog.Title, + Description: Dialog.Description, + Close: Dialog.Close, })} diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx index e8344da3f151..6ab5d69ae67a 100644 --- a/src/features/WelcomeModal/WelcomeModal.styled.tsx +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -1,6 +1,21 @@ import { Icons } from "@storybook/components"; import { keyframes, styled } from "@storybook/theming"; +export const Title = styled.h1` + color: #2e3438; + font-weight: 700; + font-size: 20px; + line-height: 20px; +`; + +export const Description = styled.p` + text-align: center; + font-size: 14px; + font-weight: 400; + line-height: 20px; + color: #454e54; +`; + export const rainbowAnimation = keyframes` 0% { background-position: 0% 50%; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 44f4b302a1c8..4d4cf4a10caa 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -7,6 +7,8 @@ import { ModalContentWrapper, SkipButton, StyledIcon, + Title, + Description, } from "./WelcomeModal.styled"; export const WelcomeModal = ({ @@ -18,7 +20,7 @@ export const WelcomeModal = ({ }) => { return ( - {({ Title, Description, Close }) => ( + {({ Close }) => ( Welcome to Storybook From 54dae249256628894718f310cae30d7410de2798 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 5 Jun 2023 14:06:46 +0100 Subject: [PATCH 067/430] Add height property to modal --- src/components/Modal/Modal.stories.tsx | 87 ++++++++++++++++++++++---- src/components/Modal/Modal.styled.tsx | 13 ++-- src/components/Modal/Modal.tsx | 5 +- 3 files changed, 87 insertions(+), 18 deletions(-) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 4d462b3cc5d6..d6116e30d814 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -19,16 +19,18 @@ export default meta; type Story = StoryObj; export const Default: Story = { - render: () => { + args: { + width: undefined, + height: undefined, + }, + render: (props) => { const [isOpen, setOpen] = useState(false); return ( <> - - {({ Title, Description, Close }) => ( + + {({ Close }) => ( <> - Hello world - Modal Title - Modal Description +
Hello world
setOpen(false)}>Close )} @@ -46,16 +48,77 @@ export const Default: Story = { }; export const FixedWidth: Story = { - render: () => { + args: { + ...Default.args, + width: 1024, + }, + render: (props) => { + const [isOpen, setOpen] = useState(false); + return ( + <> + + {({ Close }) => ( + <> +
Hello world
+ setOpen(false)}>Close + + )} +
+ + + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement.parentElement); + const button = canvas.getByText("Open modal"); + await userEvent.click(button); + await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + }, +}; + +export const FixedHeight: Story = { + args: { + ...Default.args, + height: 430, + }, + render: (props) => { + const [isOpen, setOpen] = useState(false); + return ( + <> + + {({ Close }) => ( + <> +
Hello world
+ setOpen(false)}>Close + + )} +
+ + + ); + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement.parentElement); + const button = canvas.getByText("Open modal"); + await userEvent.click(button); + await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + }, +}; + +export const FixedWidthAndHeight: Story = { + args: { + ...Default.args, + width: 1024, + height: 430, + }, + render: (props) => { const [isOpen, setOpen] = useState(false); return ( <> - - {({ Title, Description, Close }) => ( + + {({ Close }) => ( <> - Hello world - Modal Title - Modal Description +
Hello world
setOpen(false)}>Close )} diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index 1d91d193177b..fe40d30e6318 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -10,8 +10,8 @@ export const StyledOverlay = styled(Dialog.Overlay)` height: 100%; `; -export const StyledContent = styled.div<{ width: string }>( - ({ width }) => css` +export const StyledContent = styled.div<{ width: number; height: number }>( + ({ width, height }) => css` background-color: white; border-radius: 6px; box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px; @@ -19,7 +19,8 @@ export const StyledContent = styled.div<{ width: string }>( top: 50%; left: 50%; transform: translate(-50%, -50%); - width: ${width ?? "calc(100% - 40px)"}; + width: ${width ?? 740}px; + height: ${height ? `${height}px` : "auto"}; max-width: calc(100% - 40px); max-height: 85vh; ` @@ -29,8 +30,10 @@ export const ContentWrapper = React.forwardRef< HTMLDivElement, React.ComponentProps & React.ComponentProps ->(({ width, children, ...contentProps }, ref) => ( +>(({ width, height, children, ...contentProps }, ref) => ( - {children} + + {children} + )); diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index 9168eb3fe078..76a95c4c5411 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -6,7 +6,8 @@ type ContentProps = React.ComponentProps; interface ModalProps extends Omit, "children"> { - width?: string; + width?: number; + height?: number; children: (props: { Title: typeof Dialog.Title; Description: typeof Dialog.Description; @@ -19,6 +20,7 @@ interface ModalProps export function Modal({ children, width, + height, onEscapeKeyDown, onInteractOutside = (ev) => ev.preventDefault(), ...rootProps @@ -29,6 +31,7 @@ export function Modal({ From 68ef76e7e7b4d667f604ffca96f9777c9c92700f Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 5 Jun 2023 14:13:16 +0100 Subject: [PATCH 068/430] Fixed width --- src/features/WelcomeModal/WelcomeModal.tsx | 2 +- src/features/WriteStoriesModal/WriteStoriesModal.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 4d4cf4a10caa..b6f6a1cc2034 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -19,7 +19,7 @@ export const WelcomeModal = ({ onProceed: () => void; }) => { return ( - + {({ Close }) => ( diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index af9e89164bfd..1bc379e5994f 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -7,7 +7,7 @@ import { ModalContentWrapper } from "../WelcomeModal/WelcomeModal.styled"; export function WriteStoriesModal({ onFinish }: { onFinish: () => void }) { return ( - + {({ Title, Description }) => ( From 27381c818b132108576bb8a650e49688daef88f9 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 5 Jun 2023 14:30:50 +0100 Subject: [PATCH 069/430] Update Modal.stories.tsx --- src/components/Modal/Modal.stories.tsx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index d6116e30d814..f9bb50ea611b 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -30,7 +30,7 @@ export const Default: Story = { {({ Close }) => ( <> -
Hello world
+
Hello world!
setOpen(false)}>Close )} @@ -43,7 +43,9 @@ export const Default: Story = { const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Open modal"); await userEvent.click(button); - await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + await expect( + canvas.findByText("Hello world!") + ).resolves.toBeInTheDocument(); }, }; @@ -59,7 +61,7 @@ export const FixedWidth: Story = { {({ Close }) => ( <> -
Hello world
+
Hello world!
setOpen(false)}>Close )} @@ -72,7 +74,9 @@ export const FixedWidth: Story = { const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Open modal"); await userEvent.click(button); - await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + await expect( + canvas.findByText("Hello world!") + ).resolves.toBeInTheDocument(); }, }; @@ -88,7 +92,7 @@ export const FixedHeight: Story = { {({ Close }) => ( <> -
Hello world
+
Hello world!
setOpen(false)}>Close )} @@ -101,7 +105,9 @@ export const FixedHeight: Story = { const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Open modal"); await userEvent.click(button); - await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + await expect( + canvas.findByText("Hello world!") + ).resolves.toBeInTheDocument(); }, }; @@ -118,7 +124,7 @@ export const FixedWidthAndHeight: Story = { {({ Close }) => ( <> -
Hello world
+
Hello world!
setOpen(false)}>Close )} @@ -131,6 +137,8 @@ export const FixedWidthAndHeight: Story = { const canvas = within(canvasElement.parentElement); const button = canvas.getByText("Open modal"); await userEvent.click(button); - await expect(canvas.findByText("Hello world")).resolves.toBeInTheDocument(); + await expect( + canvas.findByText("Hello world!") + ).resolves.toBeInTheDocument(); }, }; From f62462f13d18324f266e961ae677bf786adb9d34 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Mon, 5 Jun 2023 13:48:35 +0000 Subject: [PATCH 070/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44f44a3af2f1..d2d3e50de04d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.14 (Mon Jun 05 2023) + +#### πŸ› Bug Fix + +- Modal improvements [#22](https://github.com/storybookjs/addon-onboarding/pull/22) ([@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 1 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) + +--- + # v0.0.13 (Mon Jun 05 2023) #### πŸ› Bug Fix From 9006d112f3864cfdbe7553d8a952fbb4e416cc8b Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Mon, 5 Jun 2023 13:48:36 +0000 Subject: [PATCH 071/430] Bump version to: 0.0.14 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 641c1f45f7e5..5e87fd58e47b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.13", + "version": "0.0.14", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From ac20b428db58eb659a427ff9370e614e4a8fc842 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 6 Jun 2023 08:54:38 +0100 Subject: [PATCH 072/430] Add first circles animations --- .../WelcomeModal/WelcomeModal.styled.tsx | 103 +++++++++--------- src/features/WelcomeModal/WelcomeModal.tsx | 7 ++ 2 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx index 6ab5d69ae67a..fed86d33d0f3 100644 --- a/src/features/WelcomeModal/WelcomeModal.styled.tsx +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -16,60 +16,61 @@ export const Description = styled.p` color: #454e54; `; -export const rainbowAnimation = keyframes` - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } +export const Background = styled.div` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + overflow: hidden; `; -export const ModalContentWrapper = styled.div` +export const circle1Anim = keyframes` + 0% { transform: translate(0px, 0px) } + 50% { transform: translate(-200px, 0px) } + 100% { transform: translate(0px, 0px) } +`; + +export const Circle1 = styled.div` + position: absolute; + width: 1200px; + height: 1200px; + left: -200px; + top: -900px; + background: radial-gradient( + circle at center, + rgba(253, 255, 147, 1) 0%, + rgba(253, 255, 147, 0) 70% + ); + animation: ${circle1Anim} 4s linear infinite; + animation-timing-function: ease-in-out; + z-index: 2; +`; + +export const circle2Anim = keyframes` + 0% { transform: translate(0px, 0px) } + 50% { transform: translate(400px, 0px) } + 100% { transform: translate(0px, 0px) } +`; + +export const Circle2 = styled.div` + position: absolute; + width: 1200px; + height: 1200px; + left: -600px; + top: -840px; background: radial-gradient( - circle at left, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ) - left, - radial-gradient( - circle at right, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ) - right, - linear-gradient( - 45deg, - #ffccd2, - #ffdbcb, - #ffe9c5, - #fff8c0, - #f2ffd8, - #d2f8e5, - #b3f0f1, - #a1e6f0, - #9fd8df - ); - background-size: 300% 300%; - background-repeat: no-repeat; - animation: ${rainbowAnimation} 10s linear infinite; + circle at center, + rgba(255, 119, 119, 1) 0%, + rgba(255, 119, 119, 0) 70% + ); + animation: ${circle2Anim} 6s linear infinite; + animation-timing-function: ease-in-out; + z-index: 1; +`; + +export const ModalContentWrapper = styled.div` border-radius: 5px; display: flex; flex-direction: column; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index b6f6a1cc2034..4e36f54d1c39 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -9,6 +9,9 @@ import { StyledIcon, Title, Description, + Background, + Circle1, + Circle2, } from "./WelcomeModal.styled"; export const WelcomeModal = ({ @@ -38,6 +41,10 @@ export const WelcomeModal = ({
+ + + + )} From 87c77514afb47ead7258210cbc054aea2a40a9f0 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 6 Jun 2023 10:09:01 +0100 Subject: [PATCH 073/430] Added other circles --- .../WelcomeModal/WelcomeModal.styled.tsx | 26 +++++++++++++++++-- src/features/WelcomeModal/WelcomeModal.tsx | 2 ++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx index fed86d33d0f3..cc9aadee7e86 100644 --- a/src/features/WelcomeModal/WelcomeModal.styled.tsx +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -45,7 +45,7 @@ export const Circle1 = styled.div` ); animation: ${circle1Anim} 4s linear infinite; animation-timing-function: ease-in-out; - z-index: 2; + z-index: 3; `; export const circle2Anim = keyframes` @@ -67,7 +67,29 @@ export const Circle2 = styled.div` ); animation: ${circle2Anim} 6s linear infinite; animation-timing-function: ease-in-out; - z-index: 1; + z-index: 2; +`; + +export const circle3Anim = keyframes` + 0% { transform: translate(600px, -40px) } + 50% { transform: translate(600px, -200px) } + 100% { transform: translate(600px, -40px) } +`; + +export const Circle3 = styled.div` + position: absolute; + width: 1200px; + height: 1200px; + left: -600px; + top: -840px; + background: radial-gradient( + circle at center, + rgba(119, 255, 247, 0.8) 0%, + rgba(119, 255, 247, 0) 70% + ); + animation: ${circle3Anim} 4s linear infinite; + animation-timing-function: ease-in-out; + z-index: 4; `; export const ModalContentWrapper = styled.div` diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 4e36f54d1c39..87f91e31e57a 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -12,6 +12,7 @@ import { Background, Circle1, Circle2, + Circle3, } from "./WelcomeModal.styled"; export const WelcomeModal = ({ @@ -44,6 +45,7 @@ export const WelcomeModal = ({ + )} From 0b841048cd8221b3c2b06901d4e40e6a50116ae4 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 6 Jun 2023 13:01:07 +0100 Subject: [PATCH 074/430] Fix theme and other stuff --- .../WelcomeModal}/StorybookLogo.tsx | 0 .../WelcomeModal/WelcomeModal.styled.tsx | 81 +++++++++++-------- src/features/WelcomeModal/WelcomeModal.tsx | 26 +++--- .../WriteStoriesModal/WriteStoriesModal.tsx | 2 +- 4 files changed, 63 insertions(+), 46 deletions(-) rename src/{components/Icons => features/WelcomeModal}/StorybookLogo.tsx (100%) diff --git a/src/components/Icons/StorybookLogo.tsx b/src/features/WelcomeModal/StorybookLogo.tsx similarity index 100% rename from src/components/Icons/StorybookLogo.tsx rename to src/features/WelcomeModal/StorybookLogo.tsx diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx index cc9aadee7e86..154f16251005 100644 --- a/src/features/WelcomeModal/WelcomeModal.styled.tsx +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -1,19 +1,59 @@ import { Icons } from "@storybook/components"; import { keyframes, styled } from "@storybook/theming"; +export const ModalContentWrapper = styled.div` + border-radius: 5px; + display: flex; + flex-direction: column; + align-items: center; + height: 100%; + justify-content: space-between; +`; + +export const TopContent = styled.div` + display: flex; + flex: 1; + flex-direction: column; + align-items: center; + justify-content: center; +`; + export const Title = styled.h1` - color: #2e3438; - font-weight: 700; - font-size: 20px; - line-height: 20px; + margin: 0; + margin-top: 20px; + margin-bottom: 5px; + color: ${({ theme }) => theme.color.darkest}; + font-weight: ${({ theme }) => theme.typography.weight.bold}; + font-size: ${({ theme }) => theme.typography.size.m1}px; + line-height: ${({ theme }) => theme.typography.size.m3}px; `; export const Description = styled.p` + margin: 0; + margin-bottom: 20px; + max-width: 320px; text-align: center; - font-size: 14px; - font-weight: 400; - line-height: 20px; - color: #454e54; + font-size: ${({ theme }) => theme.typography.size.s2}px; + font-weight: ${({ theme }) => theme.typography.weight.regular}; + line-height: ${({ theme }) => theme.typography.size.m1}px; + color: ${({ theme }) => theme.color.darker}; +`; + +export const SkipButton = styled.button` + all: unset; + cursor: pointer; + font-size: 13px; + color: #798186; + padding-bottom: 20px; + + &:focus-visible { + outline: auto; + } +`; + +export const StyledIcon = styled(Icons)` + margin-left: 2px; + height: 10px; `; export const Background = styled.div` @@ -91,28 +131,3 @@ export const Circle3 = styled.div` animation-timing-function: ease-in-out; z-index: 4; `; - -export const ModalContentWrapper = styled.div` - border-radius: 5px; - display: flex; - flex-direction: column; - align-items: center; - padding-top: 100px; - padding-bottom: 20px; -`; - -export const StyledIcon = styled(Icons)` - margin-left: 2px; - height: 10px; -`; - -export const SkipButton = styled.button` - all: unset; - margin-top: 90px; - cursor: pointer; - font-size: 13px; - color: #798186; - :focus-visible { - outline: auto; - } -`; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 87f91e31e57a..99222749e0e2 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; -import { StorybookLogo } from "../../components/Icons/StorybookLogo"; +import { StorybookLogo } from "./StorybookLogo"; import { ModalContentWrapper, SkipButton, @@ -13,6 +13,7 @@ import { Circle1, Circle2, Circle3, + TopContent, } from "./WelcomeModal.styled"; export const WelcomeModal = ({ @@ -23,19 +24,20 @@ export const WelcomeModal = ({ onProceed: () => void; }) => { return ( - + {({ Close }) => ( - - Welcome to Storybook - - Storybook helps you develop UI components. -
- Learn the basics in a few simple steps. -
- + + + Welcome to Storybook + + Storybook helps you develop UI components. Learn the basics in a + few simple steps. + + + Skip tour diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 1bc379e5994f..a7829b6e488a 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; -import { StorybookLogo } from "../../components/Icons/StorybookLogo"; +import { StorybookLogo } from "../WelcomeModal/StorybookLogo"; import { ModalContentWrapper } from "../WelcomeModal/WelcomeModal.styled"; export function WriteStoriesModal({ onFinish }: { onFinish: () => void }) { From aad239cb5c2b6a2e1538e9acc319b50fb2f7a27d Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 6 Jun 2023 13:29:24 +0000 Subject: [PATCH 075/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2d3e50de04d..cabe89f9bb05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +# v0.0.15 (Tue Jun 06 2023) + +#### πŸ› Bug Fix + +- Trigger via `/onboarding` path instead of query parameter [#21](https://github.com/storybookjs/addon-onboarding/pull/21) ([@yannbf](https://github.com/yannbf)) +- Welcome modal animation [#34](https://github.com/storybookjs/addon-onboarding/pull/34) ([@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 2 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.14 (Mon Jun 05 2023) #### πŸ› Bug Fix From 941931a4a3057d977965c48925b049627c5b13fe Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 6 Jun 2023 13:29:25 +0000 Subject: [PATCH 076/430] Bump version to: 0.0.15 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e87fd58e47b..b6366c8109a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.14", + "version": "0.0.15", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 36c6db4189f903786df575453f125abebe4e0186 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 6 Jun 2023 14:59:51 +0100 Subject: [PATCH 077/430] Improve Guided tour --- package.json | 2 +- src/components/Button/Button.stories.tsx | 15 ++ src/components/Button/Button.tsx | 88 +++++++-- src/features/GuidedTour/GuidedTour.styled.tsx | 20 ++ src/features/GuidedTour/GuidedTour.tsx | 182 +++++++++--------- src/features/GuidedTour/Tooltip.tsx | 23 +++ 6 files changed, 220 insertions(+), 110 deletions(-) create mode 100644 src/components/Button/Button.stories.tsx create mode 100644 src/features/GuidedTour/GuidedTour.styled.tsx create mode 100644 src/features/GuidedTour/Tooltip.tsx diff --git a/package.json b/package.json index b6366c8109a2..14452b98f5b6 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "vite.config.ts" ], "ext": "js,jsx,ts,tsx", - "exec": "yarn storybook" + "exec": "yarn storybook --ci" }, "devDependencies": { "@storybook/addon-essentials": "^7.0.0", diff --git a/src/components/Button/Button.stories.tsx b/src/components/Button/Button.stories.tsx new file mode 100644 index 000000000000..7e437ad8d1ce --- /dev/null +++ b/src/components/Button/Button.stories.tsx @@ -0,0 +1,15 @@ +import { Meta, StoryObj } from "@storybook/react"; +import { Button } from "./Button"; + +const meta: Meta = { + title: "Components/Button", + component: Button, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { children: "Button" }, +}; diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 263d01d5e7ef..96279a206462 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,22 +1,70 @@ -import React from "react"; - -export const buttonStyles: React.ComponentProps<"button">["style"] = { - border: 0, - cursor: "pointer", - fontSize: 13, - lineHeight: 1, - padding: "9px 12px", - backgroundColor: "#029CFD", - borderRadius: 4, - color: "#fff", - fontWeight: 700, -}; - -export function Button(props: React.ComponentProps<"button">) { - const style = { - ...buttonStyles, - ...(props.style || {}), - }; +import { css, styled } from "@storybook/theming"; +import React, { FC } from "react"; - return + + +); From e63d5deefd905270be8259a4f98d8f5d324c8f82 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 6 Jun 2023 15:51:14 +0100 Subject: [PATCH 078/430] Created custom component --- src/components/Button/Button.tsx | 32 +------- src/components/TitleBody/TitleBody.styled.tsx | 19 ----- src/components/TitleBody/TitleBody.tsx | 20 ----- src/features/GuidedTour/GuidedTour.styled.tsx | 20 ----- src/features/GuidedTour/GuidedTour.tsx | 80 +++++-------------- src/features/GuidedTour/Tooltip.tsx | 70 ++++++++++++---- 6 files changed, 74 insertions(+), 167 deletions(-) delete mode 100644 src/components/TitleBody/TitleBody.styled.tsx delete mode 100644 src/components/TitleBody/TitleBody.tsx delete mode 100644 src/features/GuidedTour/GuidedTour.styled.tsx diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 96279a206462..9078cdd8c00c 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,9 +1,9 @@ -import { css, styled } from "@storybook/theming"; +import { styled } from "@storybook/theming"; import React, { FC } from "react"; export interface ButtonProps { children: string; - onClick?: () => void; + onClick?: (e: React.MouseEvent) => void; } const Container = styled.button` @@ -33,34 +33,6 @@ const Container = styled.button` } `; -export const getStyles = (theme: any) => css` - all: unset; - border: 0; - border-radius: 0.25rem; - cursor: pointer; - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 0.75rem; - /* background: ${theme.color.secondary}; */ - background: red; - color: ${theme.color.lightest}; - height: 32px; - font-size: 0.8125rem; - font-weight: 700; - font-family: ${theme.typography.fonts.base}; - transition: all 0.16s ease-in-out; - text-decoration: none; - - &:hover { - background-color: #0b94eb; - } - - &:focus { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1); - } -`; - export const Button: FC = ({ children, onClick, ...rest }) => { return ( diff --git a/src/components/TitleBody/TitleBody.styled.tsx b/src/components/TitleBody/TitleBody.styled.tsx deleted file mode 100644 index 1bb86b600807..000000000000 --- a/src/components/TitleBody/TitleBody.styled.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { styled } from "@storybook/theming"; - -export const Wrapper = styled.div` - display: flex; - flex-direction: column; - align-items: flex-start; -`; - -export const Title = styled.strong` - font-size: 13px; -`; - -export const Body = styled.p` - font-size: 13px; - text-align: start; - color: #798186; - margin: 0; - margin-top: 4px; -`; diff --git a/src/components/TitleBody/TitleBody.tsx b/src/components/TitleBody/TitleBody.tsx deleted file mode 100644 index 1c096c2129b2..000000000000 --- a/src/components/TitleBody/TitleBody.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import { Body, Title, Wrapper } from "./TitleBody.styled"; - -export function TitleBody({ - prefix, - title, - body, -}: { - prefix?: React.ReactNode; - title: React.ReactNode; - body: React.ReactNode; -}) { - return ( - - {prefix} - {title} - {body} - - ); -} diff --git a/src/features/GuidedTour/GuidedTour.styled.tsx b/src/features/GuidedTour/GuidedTour.styled.tsx deleted file mode 100644 index 99e441497d10..000000000000 --- a/src/features/GuidedTour/GuidedTour.styled.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { type Theme } from "@storybook/theming"; - -export const getStyles = (theme: Theme) => ({ - border: 0, - borderRadius: "0.25rem", - cursor: "pointer", - display: "inline-flex", - alignItems: "center", - justifyContent: "center", - padding: "0 0.75rem", - background: theme.color.secondary, - color: "#FFF", - height: 32, - fontSize: "0.8125rem", - fontWeight: 700, - fontFamily: theme.typography.fonts.base, - transition: "all 0.16s ease-in-out", - textDecoration: "none", - outline: "none", -}); diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index 3b3b9ead6742..f610fc6870fe 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -3,11 +3,8 @@ import Joyride, { CallBackProps, STATUS, Step } from "react-joyride"; import { PulsatingEffect } from "../../components/PulsatingEffect/PulsatingEffect"; import { Confetti } from "../../components/Confetti/Confetti"; -import { TitleBody } from "../../components/TitleBody/TitleBody"; import { API } from "@storybook/manager-api"; import { STORY_ARGS_UPDATED } from "@storybook/core-events"; -import { useTheme } from "@storybook/theming"; -import { getStyles } from "./GuidedTour.styled"; import { Tooltip } from "./Tooltip"; let INTERACTIONS_COUNT = 0; @@ -22,7 +19,6 @@ export function GuidedTour({ onFirstTourDone: () => void; }) { const [stepIndex, setStepIndex] = useState(); - const theme = useTheme(); useEffect(() => { api.on(STORY_ARGS_UPDATED, () => { @@ -37,20 +33,12 @@ export function GuidedTour({ ? [ { target: "#configure-your-project--docs", - content: ( - - ), + title: "Continue setting up your project", + content: + "You nailed the basics. Now get started writing stories for your own components.", placement: "right", disableOverlay: true, disableBeacon: true, - styles: { - buttonNext: { - display: "none", - }, - }, floaterProps: { disableAnimation: true, }, @@ -59,12 +47,9 @@ export function GuidedTour({ : [ { target: "#storybook-explorer-tree > div", - content: ( - - ), + title: "Storybook is built from stories", + content: + "Storybook uses stories to represent the key states supported by each of your components. For example: this Button component has four stories.", placement: "right", disableBeacon: true, styles: { @@ -78,29 +63,21 @@ export function GuidedTour({ }, { target: "#storybook-preview-iframe", - content: ( - - ), + title: "Storybook previews are interactive", + content: + "Whenever you modify code or stories, Storybook automatically updates how it previews your components.", placement: "bottom", }, { target: "#root div[role=main]", + title: "Interactive story playground", content: ( <> - - See how a story renders with different data and state - without touching code. -
- Try it out by pressing this button. - - } - /> + See how a story renders with different data and state without + touching code. +
+
+ Try it out by pressing this button. ), @@ -109,21 +86,15 @@ export function GuidedTour({ floaterProps: { target: "#control-primary", }, - styles: { - buttonNext: { - display: "none", - }, - }, }, { target: "#control-primary", + title: "Congratulations!", content: ( <> + You've learned how to control your stories interactively. Now: + let's explore how to write your first story. - ), placement: "right", @@ -161,27 +132,14 @@ export function GuidedTour({ }, }, }} - // tooltipComponent={Tooltip} + tooltipComponent={Tooltip} styles={{ spotlight: { border: "solid 2px #004c7c", }, - tooltip: { - maxWidth: 260, - borderRadius: 4, - padding: 15, - }, overlay: { backgroundColor: "rgba(0, 0, 0, 0.48)", }, - buttonNext: { - ...getStyles(theme), - marginTop: 5, - }, - tooltipContent: { - paddingTop: 4, - padding: 0, - }, options: { zIndex: 10000, primaryColor: "#029CFD", diff --git a/src/features/GuidedTour/Tooltip.tsx b/src/features/GuidedTour/Tooltip.tsx index ada92dfdb959..226e6773896b 100644 --- a/src/features/GuidedTour/Tooltip.tsx +++ b/src/features/GuidedTour/Tooltip.tsx @@ -1,23 +1,59 @@ -import React, { styled } from "@storybook/theming"; +import { styled } from "@storybook/theming"; +import React from "react"; import { Button } from "src/components/Button/Button"; +import { TooltipRenderProps } from "react-joyride"; const TooltipBody = styled.div` background: #fff; - width: 240px; + width: 260px; + padding: 15px; + border-radius: 5px; `; -const TooltipTitle = styled.div``; -const TooltipContent = styled.div``; -const TooltipFooter = styled.div``; -const FormattedMessage = styled.div``; -export const Tooltip = ({ step, primaryProps, tooltipProps }) => ( - - {step.title && {step.title}} - {step.content} - - - - -); +const Wrapper = styled.div` + display: flex; + flex-direction: column; + align-items: flex-start; +`; + +const TooltipTitle = styled.div` + font-size: 13px; + font-weight: 700; + color: ${({ theme }) => theme.color.darkest}; +`; + +const TooltipContent = styled.p` + font-size: 13px; + text-align: start; + color: ${({ theme }) => theme.color.mediumdark}; + margin: 0; + margin-top: 5px; +`; + +const TooltipFooter = styled.div` + display: flex; + justify-content: flex-end; + margin-top: 15px; +`; + +export const Tooltip = ({ + step, + primaryProps, + tooltipProps, +}: TooltipRenderProps) => { + console.log(step); + return ( + + + {step.title && {step.title}} + {step.content} + + {(step.title !== "Interactive story playground" || + step.title !== "Continue setting up your project") && ( + + + + )} + + ); +}; From fbfd9b5eec79d6d699a095979f87269b80471308 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 6 Jun 2023 17:14:00 +0200 Subject: [PATCH 079/430] use onboarding parameter in conjunction with onboarding path --- src/App.tsx | 1 + src/manager.tsx | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index 5d83f42a4959..4d741e0c936d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -48,6 +48,7 @@ export default function App({ api }: { api: API }) { useEffect(() => { api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => { + api.setQueryParams({ onboarding: "true" }); // make sure the initial state is set correctly: // 1. Selected story is primary button // 2. The addon panel is opened, in the bottom and the controls tab is selected diff --git a/src/manager.tsx b/src/manager.tsx index 4a6f0121f576..66dc60237908 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -8,7 +8,8 @@ const App = lazy(() => import("./App")); // 1. The onboarding query parameter is present // 2. The example button stories are present addons.register("@storybook/addon-onboarding", async (api) => { - const isOnboarding = api.getUrlState().path === '/onboarding'; + const urlState = api.getUrlState(); + const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true'; if (!isOnboarding) { return; From c5d4c5e4c4d530cac8b3c9abad5502186d2052ab Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 6 Jun 2023 18:23:44 +0200 Subject: [PATCH 080/430] fix style leak on safari --- src/components/PulsatingEffect/PulsatingEffect.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/PulsatingEffect/PulsatingEffect.tsx b/src/components/PulsatingEffect/PulsatingEffect.tsx index b3192d962007..73b5bd45830a 100644 --- a/src/components/PulsatingEffect/PulsatingEffect.tsx +++ b/src/components/PulsatingEffect/PulsatingEffect.tsx @@ -7,6 +7,7 @@ export function PulsatingEffect({ }): JSX.Element { useEffect(() => { const element = document.querySelector(targetSelector); + if (element) { element.style.animation = "pulsate 3s infinite"; element.style.transformOrigin = "center"; @@ -35,7 +36,14 @@ export function PulsatingEffect({ const styleElement = document.querySelector( "#sb-onboarding-pulsating-effect" ); - styleElement?.remove(); + + if (styleElement) { + styleElement.remove(); + } + + if (element) { + element.style.animation = "auto"; + } }; }, [targetSelector]); From acee73fb5f650a5acd73f11927a464d13e1fe171 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 6 Jun 2023 18:31:04 +0200 Subject: [PATCH 081/430] cleanup code --- src/features/GuidedTour/GuidedTour.tsx | 16 ++++++---------- src/features/GuidedTour/Tooltip.tsx | 14 ++++++-------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index f610fc6870fe..6407bc8aee1b 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -7,7 +7,7 @@ import { API } from "@storybook/manager-api"; import { STORY_ARGS_UPDATED } from "@storybook/core-events"; import { Tooltip } from "./Tooltip"; -let INTERACTIONS_COUNT = 0; +type GuidedTourStep = Step & { hideNextButton?: boolean }; export function GuidedTour({ api, @@ -21,15 +21,12 @@ export function GuidedTour({ const [stepIndex, setStepIndex] = useState(); useEffect(() => { - api.on(STORY_ARGS_UPDATED, () => { - INTERACTIONS_COUNT = INTERACTIONS_COUNT + 1; - if (INTERACTIONS_COUNT === 2) { - setStepIndex(3); - } + api.once(STORY_ARGS_UPDATED, () => { + setStepIndex(3); }); }, []); - const steps: Step[] = isFinalStep + const steps: GuidedTourStep[] = isFinalStep ? [ { target: "#configure-your-project--docs", @@ -42,6 +39,7 @@ export function GuidedTour({ floaterProps: { disableAnimation: true, }, + hideNextButton: true }, ] : [ @@ -86,6 +84,7 @@ export function GuidedTour({ floaterProps: { target: "#control-primary", }, + hideNextButton: true }, { target: "#control-primary", @@ -99,9 +98,6 @@ export function GuidedTour({ ), placement: "right", disableOverlay: true, - locale: { - last: "Next", - }, }, ]; diff --git a/src/features/GuidedTour/Tooltip.tsx b/src/features/GuidedTour/Tooltip.tsx index 226e6773896b..f6f18503685b 100644 --- a/src/features/GuidedTour/Tooltip.tsx +++ b/src/features/GuidedTour/Tooltip.tsx @@ -36,20 +36,18 @@ const TooltipFooter = styled.div` margin-top: 15px; `; -export const Tooltip = ({ - step, - primaryProps, - tooltipProps, -}: TooltipRenderProps) => { - console.log(step); +type TooltipProps = TooltipRenderProps & { + step: TooltipRenderProps["step"] & { hideNextButton?: boolean }; +}; + +export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { return ( {step.title && {step.title}} {step.content} - {(step.title !== "Interactive story playground" || - step.title !== "Continue setting up your project") && ( + {!step.hideNextButton && ( From 721d8320552399aedb1da7e551f8aade9a47ea57 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 6 Jun 2023 18:31:54 +0200 Subject: [PATCH 082/430] fix import --- src/features/GuidedTour/Tooltip.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/features/GuidedTour/Tooltip.tsx b/src/features/GuidedTour/Tooltip.tsx index f6f18503685b..26af5e75cdbd 100644 --- a/src/features/GuidedTour/Tooltip.tsx +++ b/src/features/GuidedTour/Tooltip.tsx @@ -1,7 +1,7 @@ -import { styled } from "@storybook/theming"; import React from "react"; -import { Button } from "src/components/Button/Button"; +import { styled } from "@storybook/theming"; import { TooltipRenderProps } from "react-joyride"; +import { Button } from "../../components/Button/Button"; const TooltipBody = styled.div` background: #fff; From 3524d0db51191724e91f6435295a6e5dcdad7fc9 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 6 Jun 2023 16:36:29 +0000 Subject: [PATCH 083/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cabe89f9bb05..a9b1cb7b6755 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# v0.0.16 (Tue Jun 06 2023) + +#### πŸ› Bug Fix + +- Improve guided tour [#35](https://github.com/storybookjs/addon-onboarding/pull/35) ([@cdedreuille](https://github.com/cdedreuille) [@yannbf](https://github.com/yannbf)) + +#### Authors: 2 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.15 (Tue Jun 06 2023) #### πŸ› Bug Fix From cbea0b970fab64c0dfedcdd17e14bd772c60ee22 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Tue, 6 Jun 2023 16:36:31 +0000 Subject: [PATCH 084/430] Bump version to: 0.0.16 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 14452b98f5b6..bef763b389bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.15", + "version": "0.0.16", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 8cd9d452fdcb1a2b6afe5f0fab1e73e50f4e2fac Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 06:47:59 +0000 Subject: [PATCH 085/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9b1cb7b6755..7862f373996b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.17 (Wed Jun 07 2023) + +#### πŸ› Bug Fix + +- use onboarding parameter in conjunction with onboarding path [#37](https://github.com/storybookjs/addon-onboarding/pull/37) ([@yannbf](https://github.com/yannbf)) + +#### Authors: 1 + +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.16 (Tue Jun 06 2023) #### πŸ› Bug Fix From e7eb1a8f4928d81e7a302f21d99ec79ed959ffde Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 06:48:00 +0000 Subject: [PATCH 086/430] Bump version to: 0.0.17 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bef763b389bc..730e1ed2c24d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.16", + "version": "0.0.17", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From a18886d59c69ff50a2e0755a0b7a28f1b8564b84 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 5 Jun 2023 18:07:52 +0200 Subject: [PATCH 087/430] Implement "How to write your Story" flow --- package.json | 3 +- src/App.tsx | 9 +- src/components/Modal/Modal.styled.tsx | 1 + .../SyntaxHighlighter/Snippet/Snippet.tsx | 9 +- .../SyntaxHighlighter.stories.tsx | 12 +- .../SyntaxHighlighter/SyntaxHighlighter.tsx | 1 + src/features/GuidedTour/GuidedTour.tsx | 4 +- .../WelcomeModal/WelcomeModal.styled.tsx | 13 + .../WriteStoriesModal.stories.tsx | 67 ++++- .../WriteStoriesModal.styled.tsx | 74 +++++ .../WriteStoriesModal/WriteStoriesModal.tsx | 283 ++++++++++++++++-- .../assets/01-title-sidebar.png | Bin 0 -> 4674 bytes .../assets/02-story-name-sidebar.png | Bin 0 -> 4587 bytes .../WriteStoriesModal/assets/03-args.png | Bin 0 -> 6571 bytes .../WriteStoriesModal/code/javascript.tsx | 47 +++ .../code/nextjs-typescript.tsx | 49 +++ .../WriteStoriesModal/code/typescript.tsx | 49 +++ .../hooks/useGetBackdropBoundary.tsx | 37 +++ .../hooks/useGetButtonPath.tsx | 29 ++ .../hooks/useGetFrameworkName.tsx | 37 +++ .../hooks/useGetWarningButtonStatus.tsx | 41 +++ src/stories/Button.stories.ts | 9 - src/stories/Introduction.mdx | 32 +- src/types.d.ts | 4 + src/types/response.ts | 10 + tsup.config.ts | 4 + yarn.lock | 112 ++++++- 27 files changed, 870 insertions(+), 66 deletions(-) create mode 100644 src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx create mode 100644 src/features/WriteStoriesModal/assets/01-title-sidebar.png create mode 100644 src/features/WriteStoriesModal/assets/02-story-name-sidebar.png create mode 100644 src/features/WriteStoriesModal/assets/03-args.png create mode 100644 src/features/WriteStoriesModal/code/javascript.tsx create mode 100644 src/features/WriteStoriesModal/code/nextjs-typescript.tsx create mode 100644 src/features/WriteStoriesModal/code/typescript.tsx create mode 100644 src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx create mode 100644 src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx create mode 100644 src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx create mode 100644 src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx create mode 100644 src/types.d.ts create mode 100644 src/types/response.ts diff --git a/package.json b/package.json index 730e1ed2c24d..9bea03ee7363 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "@storybook/react-vite": "^7.0.0", "@storybook/testing-library": "^0.0.14-next.1", "@storybook/theming": "^7.0.17", + "@types/lodash.throttle": "^4.1.7", "@types/node": "^18.15.0", "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", @@ -129,7 +130,7 @@ "homepage": "https://github.com/storybookjs/addon-onboarding#readme", "dependencies": { "@radix-ui/react-dialog": "^1.0.4", - "framer-motion": "^10.12.16", + "framer-motion": "^6.5.1", "react-confetti": "^6.1.0", "react-joyride": "^2.5.4" } diff --git a/src/App.tsx b/src/App.tsx index 4d741e0c936d..cb06bb1d8e41 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useEffect, useState } from "react"; import { ThemeProvider, ensure, themes } from "@storybook/theming"; import { STORY_CHANGED, CURRENT_STORY_WAS_SET } from "@storybook/core-events"; -import { type API } from "@storybook/manager-api"; +import { addons, type API } from "@storybook/manager-api"; import { GuidedTour } from "./features/GuidedTour/GuidedTour"; import { WelcomeModal } from "./features/WelcomeModal/WelcomeModal"; @@ -35,8 +35,8 @@ export default function App({ api }: { api: API }) { useEffect(() => { let stepTimeout: number; if (step === "4:VisitNewStory") { + setShowConfetti(true); stepTimeout = window.setTimeout(() => { - setShowConfetti(true); setStep("5:ConfigureYourProject"); }, 2000); } @@ -113,9 +113,10 @@ export default function App({ api }: { api: API }) { )} {step === "3:WriteYourStory" && ( { - // TODO: enable this - // api.selectStory("example-button--warning"); + api.selectStory("example-button--warning"); setStep("4:VisitNewStory"); }} /> diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index fe40d30e6318..53e7e11dd0d6 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -23,6 +23,7 @@ export const StyledContent = styled.div<{ width: number; height: number }>( height: ${height ? `${height}px` : "auto"}; max-width: calc(100% - 40px); max-height: 85vh; + overflow: hidden; ` ); diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index ef2194f9b8b0..71ad9c7eae10 100644 --- a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -1,5 +1,5 @@ import { motion } from "framer-motion"; -import { forwardRef } from "react"; +import { Fragment, forwardRef } from "react"; import { SnippetWrapper } from "./Snippet.styled"; import React from "react"; import { SyntaxHighlighter as StorybookSyntaxHighlighter } from "@storybook/components"; @@ -35,10 +35,9 @@ export const Snippet = forwardRef( transition={{ ease: "easeInOut", duration: 0.6 }} > {contents.map(({ toggle, content }, i) => ( - <> + {toggle === undefined && ( @@ -48,7 +47,6 @@ export const Snippet = forwardRef( {toggle && !open && ( @@ -58,7 +56,6 @@ export const Snippet = forwardRef( {toggle && open && ( ( )} - + ))} diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index 87bdf710803b..ea7bab4352ae 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -56,12 +56,12 @@ export default meta;`, { content: `// Copy the code below - export const Warning: Story = { - args: { - backgroundColor: 'red', - label: 'Delete now' - } - };`, +export const Warning: Story = { + args: { + backgroundColor: 'red', + label: 'Delete now' + } +};`, }, ], ]; diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index 48362413a06d..a5fda9147410 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -99,6 +99,7 @@ export const SyntaxHighlighter = ({ animate={{ height: steps[activeStep]?.height ?? 0 }} transition={{ ease: "easeInOut", duration: 0.6 }} style={{ top: OFFSET }} + className="syntax-highlighter-backdrop" />
diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index 6407bc8aee1b..d1918da8a29b 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -39,7 +39,7 @@ export function GuidedTour({ floaterProps: { disableAnimation: true, }, - hideNextButton: true + hideNextButton: true, }, ] : [ @@ -84,7 +84,7 @@ export function GuidedTour({ floaterProps: { target: "#control-primary", }, - hideNextButton: true + hideNextButton: true, }, { target: "#control-primary", diff --git a/src/features/WelcomeModal/WelcomeModal.styled.tsx b/src/features/WelcomeModal/WelcomeModal.styled.tsx index 154f16251005..432e2121a0f1 100644 --- a/src/features/WelcomeModal/WelcomeModal.styled.tsx +++ b/src/features/WelcomeModal/WelcomeModal.styled.tsx @@ -131,3 +131,16 @@ export const Circle3 = styled.div` animation-timing-function: ease-in-out; z-index: 4; `; + +export const StyledTitle = styled.h2` + color: #000; + font-weight: 700; + font-size: 20px; + line-height: 20px; +`; +export const StyledDescription = styled.p` + font-size: 14px; + font-weight: 400; + line-height: 20px; + color: #454e54; +`; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 90af238d17ec..5eef02e09133 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -2,6 +2,12 @@ import React from "react"; import { Meta, StoryObj } from "@storybook/react"; import { WriteStoriesModal } from "./WriteStoriesModal"; +import { waitFor, within } from "@storybook/testing-library"; +import { expect } from "@storybook/jest"; +import { + STORY_INDEX_INVALIDATED, + STORY_RENDERED, +} from "@storybook/core-events"; const meta: Meta = { component: WriteStoriesModal, @@ -16,4 +22,63 @@ export default meta; type Story = StoryObj; -export const Default: Story = {}; +let storyIndexInvalidatedCb: () => void; + +export const Default: Story = { + args: { + api: { + getData: () => ({ some: "data" }), + } as any, + addonsStore: { + getChannel: () => { + return { + once: (type: string, cb: () => void) => { + if (type === STORY_RENDERED) { + cb(); + } + }, + }; + }, + getServerChannel: () => ({ + on: (type: string, cb: () => void) => { + if (type === STORY_INDEX_INVALIDATED) { + storyIndexInvalidatedCb = cb; + } + }, + off: () => {}, + }), + getData: () => ({ some: "data" }), + } as any, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement.parentElement); + + const importsText = await canvas.findByText("Imports"); + await expect(importsText).toBeVisible(); + + await canvas.getByRole("button", { name: /Next/i }).click(); + + const metaText = await canvas.findAllByText("Meta"); + await expect(metaText?.[0]).toBeVisible(); + + await canvas.getByRole("button", { name: /Next/i }).click(); + + const storyText = await canvas.findAllByText("Story"); + await expect(storyText?.[0]).toBeVisible(); + + await canvas.getByRole("button", { name: /Next/i }).click(); + + const argsText = await canvas.findAllByText("Args"); + await expect(argsText?.[0]).toBeVisible(); + + await canvas.getByRole("button", { name: /Next/i }).click(); + + (await canvas.findByRole("button", { name: /Copy code/i })).click(); + + await storyIndexInvalidatedCb(); + + await waitFor(() => + expect(canvas.getAllByLabelText("complete")).toHaveLength(3) + ); + }, +}; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx new file mode 100644 index 000000000000..4f1451b9b97e --- /dev/null +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -0,0 +1,74 @@ +import { styled } from "@storybook/theming"; + +export const ModalContent = styled.div` + display: flex; + flex-direction: row; + max-height: 85vh; +`; + +export const Main = styled.div` + flex: 1; + display: flex; + flex-direction: column; + font-family: ${({ theme }) => theme.typography.fonts.base}; +`; + +export const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + color: ${({ theme }) => theme.color.darkest}; + padding: 1em; + border-bottom: 1px solid ${({ theme }) => theme.appBorderColor}; + + h2 { + margin: 0; + padding: 0; + display: flex; + align-items: center; + font-size: 13px; + font-weight: bold; + } + + svg { + margin-right: 0.5em; + } +`; + +export const Description = styled.div` + font-size: 13px; + padding: 1em; + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-end; + justify-content: space-between; + color: #454e54; + + h3 { + font-size: 13px; + font-weight: bold; + padding: 0; + margin: 0; + } +`; + +export const ContentWrapper = styled.div` + display: flex; + flex-direction: column; +`; + +export const SpanHighlight = styled.span` + color: ${({ theme }) => theme.color.secondary}; + display: inline-block; + border-radius: 4px; + padding: 0.2em 0.4em; + opacity: 0.8; + background-color: ${({ theme }) => theme.color.secondary}20; + font-weight: bold; +`; + +export const Image = styled.img` + max-width: 100%; + margin-top: 1em; +`; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index a7829b6e488a..2ba7f2ee8b75 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -2,27 +2,272 @@ import React from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; -import { StorybookLogo } from "../WelcomeModal/StorybookLogo"; -import { ModalContentWrapper } from "../WelcomeModal/WelcomeModal.styled"; +import { Icons } from "@storybook/components"; +import { + Description, + Header, + Image, + Main, + ModalContent, + SpanHighlight, +} from "./WriteStoriesModal.styled"; +import { SyntaxHighlighter } from "../../components/SyntaxHighlighter/SyntaxHighlighter"; +import { List } from "../../components/List/List"; +import { ListItem } from "../../components/List/ListItem/ListItem"; +import { useGetButtonPath } from "./hooks/useGetButtonPath"; +import { useGetWarningButtonStatus } from "./hooks/useGetWarningButtonStatus"; +import { useGetBackdropBoundary } from "./hooks/useGetBackdropBoundary"; +import titleSidebarImg from "./assets/01-title-sidebar.png"; +import storyNameSidebarImg from "./assets/02-story-name-sidebar.png"; +import argsImg from "./assets/03-args.png"; + +import dataJavascript from "./code/javascript"; +import dataTypescript from "./code/typescript"; +import dataTypescriptNextjs from "./code/nextjs-typescript"; +import { useGetProject } from "./hooks/useGetFrameworkName"; +import { API, AddonStore } from "@storybook/manager-api"; + +export function WriteStoriesModal({ + onFinish, + api, + addonsStore, +}: { + onFinish: () => void; + api: API; + addonsStore: AddonStore; +}) { + const [step, setStep] = React.useState< + "imports" | "meta" | "story" | "args" | "customStory" + >("imports"); + + const [isWarningStoryCopied, setWarningStoryCopied] = React.useState(false); + + const buttonPath = useGetButtonPath(); + const doesWarningButtonExist = useGetWarningButtonStatus( + step === "customStory", + api, + addonsStore + ); + const backdropBoundary = useGetBackdropBoundary( + "syntax-highlighter-backdrop", + step === "customStory" + ); + + const project = useGetProject(); + const isJavascript = project?.data?.language === "javascript"; + + const data = isJavascript + ? dataJavascript + : project?.data?.framework.name === "@storybook/nextjs" + ? dataTypescriptNextjs + : dataTypescript; + + const copyWarningStory = () => { + const warningContent = data[4][0].content; + navigator.clipboard.writeText( + warningContent.replace("// Copy the code below", "") + ); + setWarningStoryCopied(true); + }; -export function WriteStoriesModal({ onFinish }: { onFinish: () => void }) { return ( - - {({ Title, Description }) => ( - - - - Create your first story (WORK IN PROGRESS) - - - Now it's your turn.
- See how easy it is to create your first story by following these - steps below. -
- -
+ + {({ Title, Description: DefaultDescription, Close }) => ( + +
+ {data ? ( + + ) : ( +
loading...
+ )} + {backdropBoundary && !doesWarningButtonExist?.data && ( + + )} +
+
+
+ + <Icons icon="bookmarkhollow" />{" "} + <span>How to write a story</span> + + + + +
+ + + {step === "imports" && ( + <> +
+

Imports

+

+ First, import Meta and StoryObj for type safety and + autocompletion in TypeScript stories. +

+

+ Next, import a component. In this case, the Button + component. +

+
+ + + )} + {step === "meta" && ( + <> +
+

Meta

+

+ The default export, Meta, contains metadata about this + component's stories. The title field controls where + stories appear in the sidebar. +

+ +
+ + + )} + {step === "story" && ( + <> +
+

Story

+

+ Each named export is a story. Its contents specify how + the story is rendered in addition to other configuration + options. +

+ +
+ + + )} + {step === "args" && ( + <> +
+

Args

+

+ Args are inputs that are passed to the component, which + Storybook uses to render the component in different + states. In React, args = props. They also specify the + initial control settings for the story. +

+ +
+ + + )} + {step === "customStory" && + (!doesWarningButtonExist?.error ? ( + <> +
+

Create your first story

+

+ Now it's your turn. See how easy it is to create your + first story by following these steps below. +

+ + + Copy the Warning story + + + Open{" "} + {buttonPath?.data ? ( + {buttonPath.data} + ) : ( + <>the Button Story + )}{" "} + in your current working directory + + + Paste it at the bottom of the file + + +
+ {doesWarningButtonExist?.data ? ( + + ) : null} + + ) : null)} +
+
+
+
)}
); diff --git a/src/features/WriteStoriesModal/assets/01-title-sidebar.png b/src/features/WriteStoriesModal/assets/01-title-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..b09f10ab10ce360b751bce037724aa6b0f06db39 GIT binary patch literal 4674 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 Isc9SWAAVpTOaK4? literal 0 HcmV?d00001 diff --git a/src/features/WriteStoriesModal/assets/02-story-name-sidebar.png b/src/features/WriteStoriesModal/assets/02-story-name-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..6b449ba413daa5a4f26e4f963ee44d7bd0b532e9 GIT binary patch literal 4587 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 literal 0 HcmV?d00001 diff --git a/src/features/WriteStoriesModal/code/javascript.tsx b/src/features/WriteStoriesModal/code/javascript.tsx new file mode 100644 index 000000000000..5168980bcdfc --- /dev/null +++ b/src/features/WriteStoriesModal/code/javascript.tsx @@ -0,0 +1,47 @@ +export default [ + [ + { + content: `// Button.stories.jsx`, + }, + ], + [ + { + content: `import { Button } from './Button';`, + }, + ], + [ + { + content: `const meta = { + title: 'Example/Button', + component: Button, + // ... + }; + + export default meta;`, + }, + ], + [ + { content: `export const Primary = {` }, + { + content: `args: { + primary: true, + label: 'Click', + background: 'red' + }`, + toggle: true, + }, + { content: `};` }, + ], + [ + { + content: `// Copy the code below +export const Warning = { + args: { + primary: true, + backgroundColor: 'red', + label: 'Delete now' + } +};`, + }, + ], +]; diff --git a/src/features/WriteStoriesModal/code/nextjs-typescript.tsx b/src/features/WriteStoriesModal/code/nextjs-typescript.tsx new file mode 100644 index 000000000000..f177b7b80117 --- /dev/null +++ b/src/features/WriteStoriesModal/code/nextjs-typescript.tsx @@ -0,0 +1,49 @@ +export default [ + [ + { + content: `// Button.stories.tsx`, + }, + ], + [ + { + content: `import type { Meta, StoryObj } from '@storybook/nextjs'; + + import { Button } from './Button';`, + }, + ], + [ + { + content: `const meta: Meta = { + title: 'Example/Button', + component: Button, + // ... + }; + + export default meta;`, + }, + ], + [ + { content: `export const Primary: Story = {` }, + { + content: `args: { + primary: true, + label: 'Click', + background: 'red' + }`, + toggle: true, + }, + { content: `};` }, + ], + [ + { + content: `// Copy the code below +export const Warning: Story = { + args: { + primary: true, + backgroundColor: 'red', + label: 'Delete now' + } +};`, + }, + ], +]; diff --git a/src/features/WriteStoriesModal/code/typescript.tsx b/src/features/WriteStoriesModal/code/typescript.tsx new file mode 100644 index 000000000000..c6f5a7bd08a4 --- /dev/null +++ b/src/features/WriteStoriesModal/code/typescript.tsx @@ -0,0 +1,49 @@ +export default [ + [ + { + content: `// Button.stories.tsx`, + }, + ], + [ + { + content: `import type { Meta, StoryObj } from '@storybook/react'; + + import { Button } from './Button';`, + }, + ], + [ + { + content: `const meta: Meta = { + title: 'Example/Button', + component: Button, + // ... + }; + + export default meta;`, + }, + ], + [ + { content: `export const Primary: Story = {` }, + { + content: `args: { + primary: true, + label: 'Click', + background: 'red' + }`, + toggle: true, + }, + { content: `};` }, + ], + [ + { + content: `// Copy the code below +export const Warning: Story = { + args: { + primary: true, + backgroundColor: 'red', + label: 'Delete now' + } +};`, + }, + ], +]; diff --git a/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx b/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx new file mode 100644 index 000000000000..0be06ee440cf --- /dev/null +++ b/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx @@ -0,0 +1,37 @@ +import { useEffect, useState } from "react"; + +// get an element and return its boundary. It accepts a classname as argument +export const useGetBackdropBoundary = (className: string, active: boolean) => { + const [boundary, setBoundary] = useState<{ + top: number; + left: number; + height: number; + width: number; + } | null>(null); + + const element = document.querySelector(`.${className}`) as HTMLElement; + + // setBoundary if element changes sized. use resize observer + useEffect(() => { + if (active) { + const resizeObserver = new ResizeObserver(() => { + if (element) { + setBoundary({ + top: element.offsetTop, + left: element.offsetLeft, + height: element.offsetHeight, + width: element.offsetWidth, + }); + } + }); + + resizeObserver.observe(element); + + return () => { + resizeObserver.disconnect(); + }; + } + }, [className, active]); + + return boundary; +}; diff --git a/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx b/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx new file mode 100644 index 000000000000..2c5843f9b4e2 --- /dev/null +++ b/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx @@ -0,0 +1,29 @@ +import { useEffect, useState } from "react"; +import { Response } from "../../../types/response"; + +export function useGetButtonPath() { + const [buttonPath, setButtonPath] = useState>(null); + + useEffect(() => { + const getButtonPath = async () => { + try { + const response = await fetch("/index.json"); + const json = await response.json(); + const buttonPath = json.entries["example-button--primary"].importPath; + setButtonPath({ + data: buttonPath, + error: null, + }); + } catch (e) { + console.log({ e }); + setButtonPath({ + data: null, + error: e, + }); + } + }; + getButtonPath(); + }, []); + + return buttonPath; +} diff --git a/src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx b/src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx new file mode 100644 index 000000000000..6ce5d29defba --- /dev/null +++ b/src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx @@ -0,0 +1,37 @@ +// fetch project.json and read `framework.name` from it and return it + +import { useEffect, useState } from "react"; +import { Response } from "../../../types/response"; + +type Project = { + language: "javascript" | "typescript"; + framework: { + name: string; + }; +}; + +export function useGetProject() { + const [project, setProject] = useState>(null); + + useEffect(() => { + const getProject = async () => { + try { + const response = await fetch("/project.json"); + const json = await response.json(); + + setProject({ + data: json, + error: null, + }); + } catch (e) { + setProject({ + data: null, + error: e, + }); + } + }; + getProject(); + }, []); + + return project; +} diff --git a/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx b/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx new file mode 100644 index 000000000000..eedfbc8326c5 --- /dev/null +++ b/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx @@ -0,0 +1,41 @@ +import { useState, useEffect } from "react"; +import { Response } from "../../../types/response"; +import { API, AddonStore } from "@storybook/manager-api"; +import { + STORY_INDEX_INVALIDATED, + STORY_RENDERED, +} from "@storybook/core-events"; + +export const useGetWarningButtonStatus = ( + active: boolean, + api: API, + addonsStore: AddonStore +) => { + const [status, setStatus] = useState>(null); + + useEffect(() => { + if (active) { + const getWarningButtonStatus = () => { + addonsStore.getChannel().once(STORY_RENDERED, () => { + const out = api.getData("example-button--warning"); + + if (out) { + setStatus({ data: true, error: null }); + } + }); + }; + + addonsStore + .getServerChannel() + .on(STORY_INDEX_INVALIDATED, getWarningButtonStatus); + + return () => { + addonsStore + .getServerChannel() + .off(STORY_INDEX_INVALIDATED, getWarningButtonStatus); + }; + } + }, [active]); + + return status; +}; diff --git a/src/stories/Button.stories.ts b/src/stories/Button.stories.ts index 462d5528400a..0e8efae07656 100644 --- a/src/stories/Button.stories.ts +++ b/src/stories/Button.stories.ts @@ -47,12 +47,3 @@ export const Small: Story = { label: "Button", }, }; - -// Comment this out to test the flow -// export const Warning: Story = { -// args: { -// primary: true, -// backgroundColor: "red", -// label: "Delete now", -// }, -// }; diff --git a/src/stories/Introduction.mdx b/src/stories/Introduction.mdx index fdfcb71062f9..2994a7faef96 100644 --- a/src/stories/Introduction.mdx +++ b/src/stories/Introduction.mdx @@ -1,12 +1,12 @@ -import { Meta } from '@storybook/blocks'; -import Code from './assets/code-brackets.svg'; -import Colors from './assets/colors.svg'; -import Comments from './assets/comments.svg'; -import Direction from './assets/direction.svg'; -import Flow from './assets/flow.svg'; -import Plugin from './assets/plugin.svg'; -import Repo from './assets/repo.svg'; -import StackAlt from './assets/stackalt.svg'; +import { Meta } from "@storybook/blocks"; +import Code from "./assets/code-brackets.svg"; +import Colors from "./assets/colors.svg"; +import Comments from "./assets/comments.svg"; +import Direction from "./assets/direction.svg"; +import Flow from "./assets/flow.svg"; +import Plugin from "./assets/plugin.svg"; +import Repo from "./assets/repo.svg"; +import StackAlt from "./assets/stackalt.svg"; @@ -182,14 +182,22 @@ We recommend building UIs with a [**component-driven**](https://componentdriven. Configure, customize, and extend - + direction In-depth guides Best practices from leading teams - + code GitHub project @@ -206,6 +214,6 @@ We recommend building UIs with a [**component-driven**](https://componentdriven.
- TipEdit the Markdown in{' '} + TipEdit the Markdown in{" "} stories/Introduction.stories.mdx
diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 000000000000..cbfbd10d0a4f --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,4 @@ +declare module "*.png" { + const content: any; + export default content; +} diff --git a/src/types/response.ts b/src/types/response.ts new file mode 100644 index 000000000000..56814973274f --- /dev/null +++ b/src/types/response.ts @@ -0,0 +1,10 @@ +export type Response = + | null + | { + data: T; + error: null; + } + | { + data: null; + error: any; + }; diff --git a/tsup.config.ts b/tsup.config.ts index f9e0c3ed3faf..1b95c315b67c 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -14,5 +14,9 @@ export default defineConfig((options) => ({ platform: "browser", esbuildOptions(options) { options.conditions = ["module"]; + options.loader = { + ...options.loader, + ".png": "dataurl", + }; }, })); diff --git a/yarn.lock b/yarn.lock index 9a7379dab4d3..74d979fdceb7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1760,6 +1760,59 @@ "@types/mdx" "^2.0.0" "@types/react" ">=16" +"@motionone/animation@^10.12.0": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" + integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== + dependencies: + "@motionone/easing" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/dom@10.12.0": + version "10.12.0" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.12.0.tgz#ae30827fd53219efca4e1150a5ff2165c28351ed" + integrity sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw== + dependencies: + "@motionone/animation" "^10.12.0" + "@motionone/generators" "^10.12.0" + "@motionone/types" "^10.12.0" + "@motionone/utils" "^10.12.0" + hey-listen "^1.0.8" + tslib "^2.3.1" + +"@motionone/easing@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" + integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== + dependencies: + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/generators@^10.12.0": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" + integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== + dependencies: + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" + tslib "^2.3.1" + +"@motionone/types@^10.12.0", "@motionone/types@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" + integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== + +"@motionone/utils@^10.12.0", "@motionone/utils@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" + integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== + dependencies: + "@motionone/types" "^10.15.1" + hey-listen "^1.0.8" + tslib "^2.3.1" + "@ndelangen/get-tarball@^3.0.7": version "3.0.9" resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz#727ff4454e65f34707e742a59e5e6b1f525d8964" @@ -3101,7 +3154,14 @@ dependencies: "@types/node" "*" -"@types/lodash@^4.14.167": +"@types/lodash.throttle@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/lodash.throttle/-/lodash.throttle-4.1.7.tgz#4ef379eb4f778068022310ef166625f420b6ba58" + integrity sha512-znwGDpjCHQ4FpLLx19w4OXDqq8+OvREa05H89obtSyXyOFKL3dDjCslsmfBz0T2FU8dmf5Wx1QvogbINiGIu9g== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*", "@types/lodash@^4.14.167": version "4.14.195" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== @@ -5156,15 +5216,27 @@ fp-ts@^2.5.3: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.0.tgz#64e03314dfc1c7ce5e975d3496ac14bc3eb7f92e" integrity sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ== -framer-motion@^10.12.16: - version "10.12.16" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.12.16.tgz#ccba11d216ac370c6bc65fcd9953a61deb54f071" - integrity sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ== +framer-motion@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7" + integrity sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw== dependencies: - tslib "^2.4.0" + "@motionone/dom" "10.12.0" + framesync "6.0.1" + hey-listen "^1.0.8" + popmotion "11.0.3" + style-value-types "5.0.0" + tslib "^2.1.0" optionalDependencies: "@emotion/is-prop-valid" "^0.8.2" +framesync@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.0.1.tgz#5e32fc01f1c42b39c654c35b16440e07a25d6f20" + integrity sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA== + dependencies: + tslib "^2.1.0" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -5541,6 +5613,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hey-listen@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" + integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -7285,6 +7362,16 @@ polished@^4.2.2: dependencies: "@babel/runtime" "^7.17.8" +popmotion@11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" + integrity sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA== + dependencies: + framesync "6.0.1" + hey-listen "^1.0.8" + style-value-types "5.0.0" + tslib "^2.1.0" + popper.js@^1.16.0: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -8405,6 +8492,14 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +style-value-types@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" + integrity sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA== + dependencies: + hey-listen "^1.0.8" + tslib "^2.1.0" + sucrase@^3.20.3: version "3.32.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" @@ -8699,6 +8794,11 @@ tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== +tslib@^2.3.1: + version "2.5.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" + integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== + tsup@^6.6.3: version "6.7.0" resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.7.0.tgz#416f350f32a07b6ae86792ad7e52b0cafc566d64" From 98b637a5945924ac514b8e07e71f2aa3031c07a1 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 08:46:20 +0200 Subject: [PATCH 088/430] Define 'Copy to clipboard' buttons position in a more resilient way. Slight adjustments on the Modal --- package.json | 3 +- src/components/Button/Button.tsx | 12 +--- .../WriteStoriesModal.stories.tsx | 30 +++++----- .../WriteStoriesModal/WriteStoriesModal.tsx | 56 +++++++++---------- yarn.lock | 12 ++++ 5 files changed, 59 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 9bea03ee7363..0b879af6a809 100644 --- a/package.json +++ b/package.json @@ -132,6 +132,7 @@ "@radix-ui/react-dialog": "^1.0.4", "framer-motion": "^6.5.1", "react-confetti": "^6.1.0", - "react-joyride": "^2.5.4" + "react-joyride": "^2.5.4", + "react-use-measure": "^2.1.1" } } diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 9078cdd8c00c..bbefa527b6fc 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,12 +1,12 @@ import { styled } from "@storybook/theming"; -import React, { FC } from "react"; +import React, { FC, forwardRef } from "react"; export interface ButtonProps { children: string; onClick?: (e: React.MouseEvent) => void; } -const Container = styled.button` +export const Button = styled.button` all: unset; border: 0; border-radius: 0.25rem; @@ -32,11 +32,3 @@ const Container = styled.button` box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1); } `; - -export const Button: FC = ({ children, onClick, ...rest }) => { - return ( - - {children} - - ); -}; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 5eef02e09133..a5dad91bcb5e 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -11,20 +11,6 @@ import { const meta: Meta = { component: WriteStoriesModal, - decorators: [ - (storyFn) => ( -
{storyFn()}
- ), - ], -}; - -export default meta; - -type Story = StoryObj; - -let storyIndexInvalidatedCb: () => void; - -export const Default: Story = { args: { api: { getData: () => ({ some: "data" }), @@ -50,6 +36,22 @@ export const Default: Story = { getData: () => ({ some: "data" }), } as any, }, + decorators: [ + (storyFn) => ( +
{storyFn()}
+ ), + ], +}; + +export default meta; + +type Story = StoryObj; + +let storyIndexInvalidatedCb: () => void; + +export const Default: Story = {}; + +export const DefaultPlayed: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 2ba7f2ee8b75..5a0cf96fdb07 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -1,8 +1,9 @@ -import React from "react"; +import React, { useRef } from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; +import useMeasure from "react-use-measure"; import { Description, Header, @@ -42,8 +43,10 @@ export function WriteStoriesModal({ const [isWarningStoryCopied, setWarningStoryCopied] = React.useState(false); + const [clipboardButtonRef, clipboardButtonBounds] = useMeasure(); + const buttonPath = useGetButtonPath(); - const doesWarningButtonExist = useGetWarningButtonStatus( + const warningButtonStatus = useGetWarningButtonStatus( step === "customStory", api, addonsStore @@ -70,34 +73,29 @@ export function WriteStoriesModal({ setWarningStoryCopied(true); }; + const stepIndex = { + imports: 1, + meta: 2, + story: 3, + args: 4, + customStory: 5, + }; + return ( - + {({ Title, Description: DefaultDescription, Close }) => ( -
+
{data ? ( - ) : ( -
loading...
- )} - {backdropBoundary && !doesWarningButtonExist?.data && ( + ) : null} + {backdropBoundary && !warningButtonStatus?.data && ( )}
@@ -215,7 +214,7 @@ export function WriteStoriesModal({ )} {step === "customStory" && - (!doesWarningButtonExist?.error ? ( + (!warningButtonStatus?.error ? ( <>

Create your first story

@@ -226,15 +225,14 @@ export function WriteStoriesModal({ Copy the Warning story Open{" "} @@ -246,14 +244,14 @@ export function WriteStoriesModal({ in your current working directory Paste it at the bottom of the file
- {doesWarningButtonExist?.data ? ( + {warningButtonStatus?.data ? (
- @@ -82,7 +88,7 @@ export const Default: Story = { ); }, args: { - data: newData, + data: data, activeStep: 1, width: 480, }, @@ -92,13 +98,13 @@ export const Default: Story = { const nextButton = canvas.getByText("Next"); const firstElement = await canvas.findByText( - textContentMatcher(newData[0][0].code) + textContentMatcher(data[0][0].code) ); const secondElement = await canvas.findByText( - textContentMatcher(newData[1][0].code) + textContentMatcher(data[1][0].code) ); const thirdElement = await canvas.findByText( - textContentMatcher(newData[2][0].code) + textContentMatcher(data[2][0].code) ); await expect( diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index ed7408bea0d4..d10378770cf0 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,4 +1,10 @@ -import React, { useCallback, useEffect, useMemo } from "react"; +import React, { + createRef, + useCallback, + useEffect, + useMemo, + useState, +} from "react"; import { Backdrop, Code, Container } from "./SyntaxHighlighter.styled"; import { Snippet } from "./Snippet/Snippet"; @@ -8,6 +14,13 @@ type SyntaxHighlighterProps = { width: number; }; +type StepsProps = { + yPos: number; + backdropHeight: number; + index: number; + open: boolean; +}; + const OFFSET = 49; export const SyntaxHighlighter = ({ @@ -15,12 +28,10 @@ export const SyntaxHighlighter = ({ data, width, }: SyntaxHighlighterProps) => { - const [steps, setSteps] = React.useState< - { yPos: number; height: number; index: number; open: boolean }[] - >([]); + const [steps, setSteps] = useState([]); const refs = useMemo( - () => data.map(() => React.createRef()), + () => data.map(() => createRef()), [data] ); @@ -34,11 +45,11 @@ export const SyntaxHighlighter = ({ const setNewSteps = useCallback(() => { const newSteps = data.flatMap((content, i) => { - const height = refs[i].current!.getBoundingClientRect().height; + const backdropHeight = refs[i].current!.getBoundingClientRect().height; const finalSteps = [ { yPos: getYPos(i) + OFFSET - 7, - height, + backdropHeight, index: i, open: false, }, @@ -47,7 +58,7 @@ export const SyntaxHighlighter = ({ if (content.length > 1) { finalSteps.push({ yPos: getYPos(i) + OFFSET - 7, - height, + backdropHeight, index: i, open: true, }); @@ -95,7 +106,7 @@ export const SyntaxHighlighter = ({ ))} ("imports"); - const [isWarningStoryCopied, setWarningStoryCopied] = React.useState(false); + const stepIndex = { + imports: 1, + meta: 2, + story: 3, + args: 4, + customStory: 5, + }; + + const [isWarningStoryCopied, setWarningStoryCopied] = useState(false); const [clipboardButtonRef, clipboardButtonBounds] = useMeasure(); @@ -76,14 +84,6 @@ export function WriteStoriesModal({ setWarningStoryCopied(true); }; - const stepIndex = { - imports: 1, - meta: 2, - story: 3, - args: 4, - customStory: 5, - }; - return ( {({ Title, Description: DefaultDescription, Close }) => ( From 09feeae304f8a31eb1bd98cc0c6854d4def98695 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 10:25:23 +0100 Subject: [PATCH 094/430] Fix code highlighter height --- .../SyntaxHighlighter/SyntaxHighlighter.tsx | 2 +- .../WriteStoriesModal.styled.tsx | 1 + .../WriteStoriesModal/WriteStoriesModal.tsx | 58 +++++++++---------- 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index d10378770cf0..b0bfc3bc4818 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -77,7 +77,7 @@ export const SyntaxHighlighter = ({ }); refs.forEach((ref) => { - resizeObserver.observe(ref.current!); + if (ref.current) resizeObserver.observe(ref.current!); }); return () => { diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx index 4f1451b9b97e..4d283e92c3ae 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -3,6 +3,7 @@ import { styled } from "@storybook/theming"; export const ModalContent = styled.div` display: flex; flex-direction: row; + height: 100%; max-height: 85vh; `; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 1ac4005e325d..42f1712c736a 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -1,6 +1,5 @@ import React, { useState } from "react"; import { Button } from "../../components/Button/Button"; - import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; import useMeasure from "react-use-measure"; @@ -21,7 +20,6 @@ import { useGetBackdropBoundary } from "./hooks/useGetBackdropBoundary"; import titleSidebarImg from "./assets/01-title-sidebar.png"; import storyNameSidebarImg from "./assets/02-story-name-sidebar.png"; import argsImg from "./assets/03-args.png"; - import dataJavascript from "./code/javascript"; import dataTypescript from "./code/typescript"; import dataTypescriptNextjs from "./code/nextjs-typescript"; @@ -88,35 +86,33 @@ export function WriteStoriesModal({ {({ Title, Description: DefaultDescription, Close }) => ( -
- {data ? ( - - ) : null} - {backdropBoundary && !warningButtonStatus?.data && ( - - )} -
+ {data ? ( + + ) : null} + {backdropBoundary && !warningButtonStatus?.data && ( + + )}
From c8197d62dc8b1b90916a8ce70387a811a68bbb52 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 7 Jun 2023 10:31:21 +0100 Subject: [PATCH 095/430] Fixed lineHeight --- src/components/SyntaxHighlighter/Snippet/Snippet.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index 6e0a498a5b47..06493090c4d1 100644 --- a/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -24,6 +24,11 @@ const wrapperVariants = { export const Snippet = forwardRef<HTMLDivElement, Props>( ({ active, content, open }, ref) => { + const customStyle = { + fontSize: "0.8125rem", + lineHeight: "1.1875rem", + }; + return ( <ThemeProvider theme={ensure(themes.dark)}> <SnippetWrapper @@ -39,7 +44,7 @@ export const Snippet = forwardRef<HTMLDivElement, Props>( {toggle === undefined && ( <StorybookSyntaxHighlighter language="javascript" - customStyle={{ fontSize: "0.8125rem" }} + customStyle={customStyle} > {code} </StorybookSyntaxHighlighter> @@ -48,7 +53,7 @@ export const Snippet = forwardRef<HTMLDivElement, Props>( {toggle && !open && ( <StorybookSyntaxHighlighter language="javascript" - customStyle={{ fontSize: "0.8125rem" }} + customStyle={customStyle} > {` // ...`} </StorybookSyntaxHighlighter> @@ -62,7 +67,7 @@ export const Snippet = forwardRef<HTMLDivElement, Props>( > <StorybookSyntaxHighlighter language="javascript" - customStyle={{ fontSize: "0.8125rem" }} + customStyle={customStyle} codeTagProps={{ style: { paddingLeft: "15px" } }} > {code} From 26f3e01d4d19b437fe747e6a2f2d48fc351d4ab6 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille <charles.dedreuille@gmail.com> Date: Wed, 7 Jun 2023 11:33:38 +0100 Subject: [PATCH 096/430] Improve header modal --- .../WriteStoriesModal.styled.tsx | 25 ++++++++++--------- .../WriteStoriesModal/WriteStoriesModal.tsx | 11 +++++--- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx index 4d283e92c3ae..e79e038e8d93 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -15,24 +15,25 @@ export const Main = styled.div` `; export const Header = styled.div` + box-sizing: border-box; display: flex; justify-content: space-between; align-items: center; - color: ${({ theme }) => theme.color.darkest}; - padding: 1em; + padding: 0 15px; border-bottom: 1px solid ${({ theme }) => theme.appBorderColor}; + height: 40px; +`; - h2 { - margin: 0; - padding: 0; - display: flex; - align-items: center; - font-size: 13px; - font-weight: bold; - } +export const ModalTitle = styled.div` + display: flex; + align-items: center; + gap: 5px; + font-size: 13px; + font-weight: bold; + color: ${({ theme }) => theme.color.darkest}; - svg { - margin-right: 0.5em; + span { + margin-top: 2px; } `; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 42f1712c736a..f0c08a852588 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -9,6 +9,7 @@ import { Image, Main, ModalContent, + ModalTitle, SpanHighlight, } from "./WriteStoriesModal.styled"; import { SyntaxHighlighter } from "../../components/SyntaxHighlighter/SyntaxHighlighter"; @@ -115,12 +116,14 @@ export function WriteStoriesModal({ )} <Main> <Header> - <Title> - <Icons icon="bookmarkhollow" />{" "} - <span>How to write a story</span> + <Title asChild> + <ModalTitle> + <Icons icon="bookmarkhollow" width={13} /> + <span>How to write a story</span> + </ModalTitle> - +
From a168d37340aad0272b14400603f59a2741199688 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 11:53:04 +0100 Subject: [PATCH 097/430] Fix the unmount error --- .../SyntaxHighlighter/SyntaxHighlighter.stories.tsx | 2 -- src/components/SyntaxHighlighter/SyntaxHighlighter.tsx | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index d29d0a31049c..d16e88fe4032 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -70,8 +70,6 @@ export const Default: Story = { render: (args) => { const [activeStep, setActiveStep] = React.useState(1); - console.log(activeStep); - return (
diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index b0bfc3bc4818..bb04404c3725 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,7 +1,7 @@ import React, { createRef, useCallback, - useEffect, + useLayoutEffect, useMemo, useState, } from "react"; @@ -70,14 +70,14 @@ export const SyntaxHighlighter = ({ setSteps(newSteps); }, [data]); - useEffect(() => { + useLayoutEffect(() => { // Call setNewSteps every time height of the refs elements changes const resizeObserver = new ResizeObserver(() => { setNewSteps(); }); refs.forEach((ref) => { - if (ref.current) resizeObserver.observe(ref.current!); + resizeObserver.observe(ref.current!); }); return () => { From 4f907d2d2fac8e6cc3c768d4cb64066975cea62f Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 11:53:16 +0100 Subject: [PATCH 098/430] Update styles --- .../WriteStoriesModal/WriteStoriesModal.styled.tsx | 9 ++------- src/features/WriteStoriesModal/WriteStoriesModal.tsx | 12 ++++++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx index e79e038e8d93..185d737239da 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -37,9 +37,9 @@ export const ModalTitle = styled.div` } `; -export const Description = styled.div` +export const Content = styled.div` font-size: 13px; - padding: 1em; + padding: 15px; flex: 1; display: flex; flex-direction: column; @@ -55,11 +55,6 @@ export const Description = styled.div` } `; -export const ContentWrapper = styled.div` - display: flex; - flex-direction: column; -`; - export const SpanHighlight = styled.span` color: ${({ theme }) => theme.color.secondary}; display: inline-block; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index f0c08a852588..91339bbd98d3 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -4,7 +4,7 @@ import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; import useMeasure from "react-use-measure"; import { - Description, + Content, Header, Image, Main, @@ -85,7 +85,7 @@ export function WriteStoriesModal({ return ( - {({ Title, Description: DefaultDescription, Close }) => ( + {({ Title, Description, Close }) => ( {data ? ( - - + + {step === "imports" && ( <>
@@ -276,8 +276,8 @@ export function WriteStoriesModal({ ) : null} ) : null)} - - + +
)} From 3c859a129d5774b832f7dacbcf704dfbcec98bf0 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 12:07:55 +0100 Subject: [PATCH 099/430] Add circle animation --- .../WriteStoriesModal.styled.tsx | 82 ++++++++++++++++++- .../WriteStoriesModal/WriteStoriesModal.tsx | 9 ++ 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx index 185d737239da..55a588094cf5 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -1,4 +1,4 @@ -import { styled } from "@storybook/theming"; +import { keyframes, styled } from "@storybook/theming"; export const ModalContent = styled.div` display: flex; @@ -8,6 +8,7 @@ export const ModalContent = styled.div` `; export const Main = styled.div` + position: relative; flex: 1; display: flex; flex-direction: column; @@ -45,7 +46,7 @@ export const Content = styled.div` flex-direction: column; align-items: flex-end; justify-content: space-between; - color: #454e54; + color: ${({ theme }) => theme.color.darker}; h3 { font-size: 13px; @@ -69,3 +70,80 @@ export const Image = styled.img` max-width: 100%; margin-top: 1em; `; + +export const Background = styled.div` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + overflow: hidden; +`; + +export const circle1Anim = keyframes` + 0% { transform: translate(0px, 0px) } + 50% { transform: translate(120px, 0px) } + 100% { transform: translate(0px, 0px) } +`; + +export const Circle1 = styled.div` + position: absolute; + width: 350px; + height: 350px; + left: -160px; + top: -260px; + background: radial-gradient( + circle at center, + rgba(255, 119, 119, 1) 0%, + rgba(255, 119, 119, 0) 70% + ); + animation: ${circle1Anim} 8s linear infinite; + animation-timing-function: ease-in-out; + z-index: 2; +`; + +export const circle2Anim = keyframes` + 0% { transform: translate(0px, 0px) } + 33% { transform: translate(-64px, 0px) } + 66% { transform: translate(120px, 0px) } + 100% { transform: translate(0px, 0px) } +`; + +export const Circle2 = styled.div` + position: absolute; + width: 350px; + height: 350px; + left: -54px; + top: -250px; + background: radial-gradient( + circle at center, + rgba(253, 255, 147, 1) 0%, + rgba(253, 255, 147, 0) 70% + ); + animation: ${circle2Anim} 12s linear infinite; + animation-timing-function: ease-in-out; + z-index: 3; +`; + +export const circle3Anim = keyframes` + 0% { transform: translate(0px, 0px) } + 50% { transform: translate(-120px, 0px) } + 100% { transform: translate(0px, 0px) } +`; + +export const Circle3 = styled.div` + position: absolute; + width: 350px; + height: 350px; + left: 150px; + top: -220px; + background: radial-gradient( + circle at center, + rgba(119, 255, 247, 0.8) 0%, + rgba(119, 255, 247, 0) 70% + ); + animation: ${circle3Anim} 4s linear infinite; + animation-timing-function: ease-in-out; + z-index: 4; +`; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 91339bbd98d3..80849f644202 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -4,6 +4,10 @@ import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; import useMeasure from "react-use-measure"; import { + Background, + Circle1, + Circle2, + Circle3, Content, Header, Image, @@ -278,6 +282,11 @@ export function WriteStoriesModal({ ) : null)} + + + + +
)} From 4f4890908a4e921bdb8a696f08c56d2ddb8d128c Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 12:09:38 +0000 Subject: [PATCH 100/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1e72647ad7e..444c6e7a9141 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.19 (Wed Jun 07 2023) + +#### πŸ› Bug Fix + +- Improve write a story modal [#38](https://github.com/storybookjs/addon-onboarding/pull/38) ([@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 1 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) + +--- + # v0.0.18 (Wed Jun 07 2023) #### πŸ› Bug Fix From 0e6ca715526cb7b77920eaf67293a04d7ebb9850 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 12:09:39 +0000 Subject: [PATCH 101/430] Bump version to: 0.0.19 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 295ad9eb3549..5799fb4b97ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.18", + "version": "0.0.19", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From dc3025932c91113ffd74f1b5d47dd36664c16d8e Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 13:59:40 +0200 Subject: [PATCH 102/430] Implement tracking --- package.json | 20 ++++++----- src/App.tsx | 29 +++++++++++++++- src/constants.ts | 2 ++ src/features/GuidedTour/GuidedTour.tsx | 4 +-- .../WriteStoriesModal/WriteStoriesModal.tsx | 11 +++++-- src/preset.ts | 33 +++++++++++++++++++ yarn.lock | 20 +++++------ 7 files changed, 94 insertions(+), 25 deletions(-) create mode 100644 src/constants.ts create mode 100644 src/preset.ts diff --git a/package.json b/package.json index 5799fb4b97ed..d2c9f2a39bdc 100644 --- a/package.json +++ b/package.json @@ -68,16 +68,17 @@ "exec": "yarn storybook --ci" }, "devDependencies": { - "@storybook/addon-essentials": "^7.0.0", - "@storybook/addon-interactions": "^7.0.0", - "@storybook/addon-links": "^7.0.0", - "@storybook/blocks": "^7.0.0", - "@storybook/components": "^7.0.0", - "@storybook/core-events": "^7.0.0", + "@storybook/addon-essentials": "^7.0.18", + "@storybook/addon-interactions": "^7.0.18", + "@storybook/addon-links": "^7.0.18", + "@storybook/blocks": "^7.0.18", + "@storybook/components": "^7.0.18", + "@storybook/core-events": "^7.0.18", "@storybook/jest": "^0.1.0", - "@storybook/manager-api": "^7.0.0", - "@storybook/react": "^7.0.0", - "@storybook/react-vite": "^7.0.0", + "@storybook/manager-api": "^7.0.18", + "@storybook/react": "^7.0.18", + "@storybook/react-vite": "^7.0.18", + "@storybook/telemetry": "^7.0.18", "@storybook/testing-library": "^0.0.14-next.1", "@storybook/theming": "^7.0.17", "@types/lodash.throttle": "^4.1.7", @@ -107,6 +108,7 @@ "@storybook/components": "^7.0.0", "@storybook/core-events": "^7.0.0", "@storybook/manager-api": "^7.0.0", + "@storybook/telemetry": "^7.0.0", "@storybook/theming": "^7.0.0", "@storybook/types": "^7.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", diff --git a/src/App.tsx b/src/App.tsx index cb06bb1d8e41..f1614d0ccf6a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,6 +7,7 @@ import { GuidedTour } from "./features/GuidedTour/GuidedTour"; import { WelcomeModal } from "./features/WelcomeModal/WelcomeModal"; import { WriteStoriesModal } from "./features/WriteStoriesModal/WriteStoriesModal"; import { Confetti } from "./components/Confetti/Confetti"; +import { STORYBOOK_ADDON_ONBOARDING_CHANNEL } from "./constants"; type Step = | "1:Welcome" @@ -32,6 +33,22 @@ export default function App({ api }: { api: API }) { setEnabled(false); }, [setEnabled]); + // for some reason the api.emit event is not ready in the very first beginning. + // Therefore we wait for a CURRENT_STORY_WAS_SET event to fire the initial step tracking once + useEffect(() => { + api.once(CURRENT_STORY_WAS_SET, () => { + api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { + step: "1:Welcome", + }); + }); + }, []); + + useEffect(() => { + api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { + step, + }); + }, [api, step]); + useEffect(() => { let stepTimeout: number; if (step === "4:VisitNewStory") { @@ -67,6 +84,9 @@ export default function App({ api }: { api: API }) { const onStoryChanged = (storyId: string) => { if (storyId === "configure-your-project--docs") { skipTour(); + api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { + step: "6:FinishedOnboarding", + }); } }; @@ -99,7 +119,14 @@ export default function App({ api }: { api: API }) { onProceed={() => { setStep("2:StorybookTour"); }} - onSkip={skipTour} + onSkip={() => { + skipTour(); + + api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { + step: "X:SkippedOnboarding", + where: "WelcomeModal", + }); + }} /> )} {(step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 000000000000..18ca7a62b332 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,2 @@ +export const STORYBOOK_ADDON_ONBOARDING_CHANNEL = + "STORYBOOK_ADDON_ONBOARDING_CHANNEL"; diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index d1918da8a29b..fd4b3e7229f4 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -120,9 +120,7 @@ export function GuidedTour({ floaterProps={{ styles: { floater: { - padding: 0, - paddingLeft: 8, - paddingTop: 8, + padding: "8px 0 0 8px", filter: "drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))", }, diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 80849f644202..cee17c22dcd0 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useCallback, useState } from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; @@ -30,6 +30,7 @@ import dataTypescript from "./code/typescript"; import dataTypescriptNextjs from "./code/nextjs-typescript"; import { useGetProject } from "./hooks/useGetFrameworkName"; import { API, AddonStore } from "@storybook/manager-api"; +import { STORYBOOK_ADDON_ONBOARDING_CHANNEL } from "../../constants"; // TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true. // backdropBoundary && !warningButtonStatus?.data @@ -87,6 +88,12 @@ export function WriteStoriesModal({ setWarningStoryCopied(true); }; + const onModalClose = useCallback(() => { + api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { + step: "X:SkippedOnboarding", + where: `HowToWriteAStoryModal:${step}`, + }); + }, [api, step]); return ( {({ Title, Description, Close }) => ( @@ -126,7 +133,7 @@ export function WriteStoriesModal({ How to write a story - + diff --git a/src/preset.ts b/src/preset.ts new file mode 100644 index 000000000000..2d9c6cf5313c --- /dev/null +++ b/src/preset.ts @@ -0,0 +1,33 @@ +import { CoreConfig, Options } from "@storybook/types"; +import { Channel } from "@storybook/channels"; +import { STORYBOOK_ADDON_ONBOARDING_CHANNEL } from "./constants"; +import { telemetry } from "@storybook/telemetry"; + +type Event = { + type: "telemetry"; + step: string; + payload?: any; +}; + +export const experimental_serverChannel = async ( + channel: Channel, + options: Options +) => { + const { disableTelemetry } = await options.presets.apply( + "core", + {} + ); + + if (!disableTelemetry) { + channel.on( + STORYBOOK_ADDON_ONBOARDING_CHANNEL, + ({ type, ...event }: Event) => { + if (type === "telemetry") { + telemetry("addon-onboarding", event); + } + } + ); + } + + return channel; +}; diff --git a/yarn.lock b/yarn.lock index 6e44bc3af21a..b89b77396648 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2256,7 +2256,7 @@ remark-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@^7.0.0": +"@storybook/addon-essentials@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.0.18.tgz#20c9a4b43e3e173dbfc0d742eb3e6bc7ba42b4c9" integrity sha512-0XXu7xhtRefA1WxxorKk6BWeeB+7gQ+r2+bG1zQEfBgDYPR06YbPw4H79IZ8JiR97aJRsZBK5UUhOZMDrc5zcQ== @@ -2285,7 +2285,7 @@ "@storybook/global" "^5.0.0" "@storybook/preview-api" "7.0.18" -"@storybook/addon-interactions@^7.0.0": +"@storybook/addon-interactions@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-7.0.18.tgz#c363517f10dd5a2e6c78c6a0ac690799158ab9ec" integrity sha512-V3OD5lSj6Te6Kzc//2k2S79dLPk6Zu1pAbqWAN4RrdXyKj6YCiZ666GmVdiaG+24Qp5UuMeAkd1D05osJlOteA== @@ -2304,7 +2304,7 @@ polished "^4.2.2" ts-dedent "^2.2.0" -"@storybook/addon-links@^7.0.0": +"@storybook/addon-links@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-7.0.18.tgz#3c7f72f1a5b241718a57132991272e0bcc2ba7f4" integrity sha512-xEwflt7bp9FRoZVeqPGb6d3s2Gh+/jaSmnyIxMxrBy2oovKIqu9ptolqz1AhjFOXfaLs9c2RAmJUuFZJtETLxA== @@ -2373,7 +2373,7 @@ memoizerific "^1.11.3" prop-types "^15.7.2" -"@storybook/blocks@7.0.18", "@storybook/blocks@^7.0.0": +"@storybook/blocks@7.0.18", "@storybook/blocks@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.0.18.tgz#996651ac813de2a810ba442ab77266961721d324" integrity sha512-HLsuzmUdVIeFXEP5v5vyjnEePRNYjzltwTjCKQhHAlt8/aQZmREiIMOfoMoAa1Rd+On8Ib2DUd2cN10VS18H8A== @@ -2547,7 +2547,7 @@ prettier "^2.8.0" recast "^0.23.1" -"@storybook/components@7.0.18", "@storybook/components@^7.0.0": +"@storybook/components@7.0.18", "@storybook/components@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.0.18.tgz#74ab115342e576b7644c83667a9daef5758fc3c8" integrity sha512-Jn1CbF9UAKt8BVaZtuhmthpcZ02VMaCFXR0ISfDXCpiMKnylmpP0+WfXcoKLzz6yS+EW8EW5S9+Qq8xgQY8H7A== @@ -2594,7 +2594,7 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/core-events@7.0.18", "@storybook/core-events@^7.0.0": +"@storybook/core-events@7.0.18", "@storybook/core-events@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.18.tgz#429e0b092c645bd283adb4836ac0a945e813f085" integrity sha512-7gxHBQDezdKOeq/u1LL80Bwjfcwsv7XOS3yWQElcgqp+gLaYB6OwwgtkCB2yV6a6l4nep9IdPWE8G3TxIzn9xw== @@ -2728,7 +2728,7 @@ "@testing-library/jest-dom" "^5.16.2" jest-mock "^27.3.0" -"@storybook/manager-api@7.0.18", "@storybook/manager-api@^7.0.0": +"@storybook/manager-api@7.0.18", "@storybook/manager-api@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.0.18.tgz#9e0e011df04271b0ed7216a22f9c965e3b7ac4b9" integrity sha512-anQkm09twL96YkKGXHa+LI0+yMaY6Jxs1lRaetHdMlIqN4VHBHhizHaMgtGfH6xCTuO3WdrKTN7cZii5RH7PBQ== @@ -2805,7 +2805,7 @@ resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.0.18.tgz#d2ac94c50c48b92417338823c8a7eabace308771" integrity sha512-O1FRypR8q1katjbznnxI+NtALd2gaWa7KnTwbIDf+ddZltXHMZ8xMiEGEtAMrfXlIuqIr9UvmLRfKZC/ysuA+g== -"@storybook/react-vite@^7.0.0": +"@storybook/react-vite@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-7.0.18.tgz#a744057c0a30614b40ccb86322ae58575eede788" integrity sha512-rxJwp/b0dPazn15xLIeRgwrdZGWmoqoLhU7Mm+AXKToXvbe77i2bjHhkFbz34dpKFtD0i/ajcZSpmsxpxfB0HA== @@ -2819,7 +2819,7 @@ magic-string "^0.27.0" react-docgen "6.0.0-alpha.3" -"@storybook/react@7.0.18", "@storybook/react@^7.0.0": +"@storybook/react@7.0.18", "@storybook/react@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.0.18.tgz#d6f4919e22e169062e794b8a742f1b1978abf0ab" integrity sha512-lumUbHYeuL3qa4SZR9K2YC4UIt1hwW19GuI/6f2HEV5gR9QHHSJHg9HD9pjcxv4fQaiG81ACZ0Sg6lyUkcJvuQ== @@ -2855,7 +2855,7 @@ memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/telemetry@7.0.18": +"@storybook/telemetry@7.0.18", "@storybook/telemetry@^7.0.18": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.18.tgz#ccf52de6c82a54953eb2a30270edc5d7caf12cd1" integrity sha512-JP5Z7lGU+oKjNmz2cZW5J7EerwyWBBPOU+NvvooZsymIx02ZvJ4ClmFtolJnBM7m4KoAy50JxV5NQWi+q8PicQ== From e998ac4ec84cf54f40142b2829e478069f599830 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 15:36:08 +0200 Subject: [PATCH 103/430] Change code for Javascript projects --- src/features/WriteStoriesModal/code/javascript.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/features/WriteStoriesModal/code/javascript.tsx b/src/features/WriteStoriesModal/code/javascript.tsx index 941a588e9712..234d51e2796f 100644 --- a/src/features/WriteStoriesModal/code/javascript.tsx +++ b/src/features/WriteStoriesModal/code/javascript.tsx @@ -11,13 +11,11 @@ export default [ ], [ { - code: `const meta = { + code: `export default meta = { title: 'Example/Button', component: Button, // ... - }; - - export default meta;`, + };`, }, ], [ From b9e16c4195759e3d185ba85cad6563f8326565d1 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 15:38:54 +0200 Subject: [PATCH 104/430] Ensure package managers which install peer dependencies install the latest alpha version --- package.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index d2c9f2a39bdc..7ded8cb3c1e9 100644 --- a/package.json +++ b/package.json @@ -104,13 +104,13 @@ "vite": "^4.1.4" }, "peerDependencies": { - "@storybook/blocks": "^7.0.0", - "@storybook/components": "^7.0.0", - "@storybook/core-events": "^7.0.0", - "@storybook/manager-api": "^7.0.0", - "@storybook/telemetry": "^7.0.0", - "@storybook/theming": "^7.0.0", - "@storybook/types": "^7.0.0", + "@storybook/blocks": "next", + "@storybook/components": "next", + "@storybook/core-events": "next", + "@storybook/manager-api": "next", + "@storybook/telemetry": "next", + "@storybook/theming": "next", + "@storybook/types": "next", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, From 8f60b36f493bdb248dea48af46a00cef067114ea Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 16:03:53 +0200 Subject: [PATCH 105/430] Update src/features/WriteStoriesModal/code/javascript.tsx Co-authored-by: Yann Braga --- src/features/WriteStoriesModal/code/javascript.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/features/WriteStoriesModal/code/javascript.tsx b/src/features/WriteStoriesModal/code/javascript.tsx index 234d51e2796f..e5a77589a306 100644 --- a/src/features/WriteStoriesModal/code/javascript.tsx +++ b/src/features/WriteStoriesModal/code/javascript.tsx @@ -11,7 +11,7 @@ export default [ ], [ { - code: `export default meta = { + code: `export default { title: 'Example/Button', component: Button, // ... From 25bbf96deed647a2edf81ceeab69097ca11a96ab Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 7 Jun 2023 16:04:38 +0200 Subject: [PATCH 106/430] Externalize storybook packages. Define @storybook/telemetry as a regular dependency --- package.json | 42 ++++++++++++++++++------------------------ tsup.config.ts | 14 ++++++++++++++ yarn.lock | 2 +- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 7ded8cb3c1e9..47c0e9d92476 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,18 @@ "storybook-addons", "addon-onboarding" ], + "homepage": "https://github.com/storybookjs/addon-onboarding#readme", + "bugs": { + "url": "https://github.com/storybookjs/addon-onboarding/issues" + }, "repository": { "type": "git", "url": "git+https://github.com/storybookjs/addon-onboarding.git" }, + "license": "MIT", "author": { "name": "@storybookjs/core" }, - "license": "MIT", "exports": { ".": { "require": "./dist/index.js", @@ -55,6 +59,8 @@ "chromatic": "npx chromatic" }, "nodemonConfig": { + "exec": "yarn storybook --ci", + "ext": "js,jsx,ts,tsx", "ignore": [ "src/stories", "src/**/*.stories.*" @@ -63,9 +69,15 @@ "src", ".storybook/main.ts", "vite.config.ts" - ], - "ext": "js,jsx,ts,tsx", - "exec": "yarn storybook --ci" + ] + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.0.4", + "@storybook/telemetry": "^7.0.18", + "framer-motion": "^6.5.1", + "react-confetti": "^6.1.0", + "react-joyride": "^2.5.4", + "react-use-measure": "^2.1.1" }, "devDependencies": { "@storybook/addon-essentials": "^7.0.18", @@ -78,9 +90,9 @@ "@storybook/manager-api": "^7.0.18", "@storybook/react": "^7.0.18", "@storybook/react-vite": "^7.0.18", - "@storybook/telemetry": "^7.0.18", "@storybook/testing-library": "^0.0.14-next.1", "@storybook/theming": "^7.0.17", + "@storybook/types": "^7.0.17", "@types/lodash.throttle": "^4.1.7", "@types/node": "^18.15.0", "@types/react": "^18.2.7", @@ -104,13 +116,6 @@ "vite": "^4.1.4" }, "peerDependencies": { - "@storybook/blocks": "next", - "@storybook/components": "next", - "@storybook/core-events": "next", - "@storybook/manager-api": "next", - "@storybook/telemetry": "next", - "@storybook/theming": "next", - "@storybook/types": "next", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, @@ -125,16 +130,5 @@ "publishConfig": { "access": "public" }, - "bugs": { - "url": "https://github.com/storybookjs/addon-onboarding/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/storybookjs/addon-onboarding#readme", - "dependencies": { - "@radix-ui/react-dialog": "^1.0.4", - "framer-motion": "^6.5.1", - "react-confetti": "^6.1.0", - "react-joyride": "^2.5.4", - "react-use-measure": "^2.1.1" - } + "readme": "ERROR: No README data found!" } diff --git a/tsup.config.ts b/tsup.config.ts index 1b95c315b67c..8b620c20172f 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,5 +1,7 @@ import { defineConfig } from "tsup"; +const packageJson = require("./package.json"); + export default defineConfig((options) => ({ entry: ["src/index.ts", "src/preview.ts", "src/manager.tsx"], splitting: false, @@ -8,6 +10,18 @@ export default defineConfig((options) => ({ dts: { resolve: true, }, + external: Array.from( + new Set([ + ...Object.keys(packageJson.peerDependencies), + ...Object.keys(packageJson.dependencies), + "@storybook/blocks", + "@storybook/components", + "@storybook/core-events", + "@storybook/manager-api", + "@storybook/theming", + "@storybook/types", + ]) + ), treeshake: true, sourcemap: true, clean: true, diff --git a/yarn.lock b/yarn.lock index b89b77396648..c96fbeb7f68d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2891,7 +2891,7 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" -"@storybook/types@7.0.18": +"@storybook/types@7.0.18", "@storybook/types@^7.0.17": version "7.0.18" resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.18.tgz#9418da288db3a1258996aab17fd49ca4eb810b7a" integrity sha512-qPop2CbvmX42/BX29YT9jIzW2TlMcMjAE+KCpcKLBiD1oT5DJ1fhMzpe6RW9HkMegkBxjWx54iamN4oHM/pwcQ== From 9a049948c5c72d12c1ea519f61e5e54c2dddfdfe Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 15:14:10 +0100 Subject: [PATCH 107/430] Improve Modal Animation --- src/App.tsx | 41 ++++---- src/components/Modal/Modal.stories.tsx | 96 +++++++++---------- src/components/Modal/Modal.styled.tsx | 16 +++- src/components/Modal/Modal.tsx | 51 ++++++---- src/features/GuidedTour/GuidedTour.styled.tsx | 20 ++++ .../WelcomeModal/WelcomeModal.stories.tsx | 6 +- src/features/WelcomeModal/WelcomeModal.tsx | 20 ++-- .../WriteStoriesModal/WriteStoriesModal.tsx | 24 +++-- .../hooks/useGetButtonPath.tsx | 1 - 9 files changed, 162 insertions(+), 113 deletions(-) create mode 100644 src/features/GuidedTour/GuidedTour.styled.tsx diff --git a/src/App.tsx b/src/App.tsx index cb06bb1d8e41..d2f7a22da2f7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -22,7 +22,7 @@ export default function App({ api }: { api: API }) { const [showConfetti, setShowConfetti] = useState(false); const [step, setStep] = useState("1:Welcome"); - const skipTour = useCallback(() => { + const skipOnboarding = useCallback(() => { // remove onboarding query parameter from current url const url = new URL(window.location.href); url.searchParams.delete("onboarding"); @@ -66,7 +66,7 @@ export default function App({ api }: { api: API }) { useEffect(() => { const onStoryChanged = (storyId: string) => { if (storyId === "configure-your-project--docs") { - skipTour(); + skipOnboarding(); } }; @@ -77,10 +77,6 @@ export default function App({ api }: { api: API }) { }; }, []); - if (!enabled) { - return null; - } - return ( {showConfetti && ( @@ -94,14 +90,11 @@ export default function App({ api }: { api: API }) { }} /> )} - {step === "1:Welcome" && ( - { - setStep("2:StorybookTour"); - }} - onSkip={skipTour} - /> - )} + setStep("2:StorybookTour")} + isOpen={enabled && step === "1:Welcome"} + skipOnboarding={skipOnboarding} + /> {(step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( )} - {step === "3:WriteYourStory" && ( - { - api.selectStory("example-button--warning"); - setStep("4:VisitNewStory"); - }} - /> - )} + { + api.selectStory("example-button--warning"); + setStep("4:VisitNewStory"); + }} + isOpen={enabled && step === "3:WriteYourStory"} + skipOnboarding={skipOnboarding} + /> ); } diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index f9bb50ea611b..a9f29ba0fc12 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -24,19 +24,19 @@ export const Default: Story = { height: undefined, }, render: (props) => { - const [isOpen, setOpen] = useState(false); + const [open, setOpen] = useState(true); + return ( - <> - - {({ Close }) => ( - <> -
Hello world!
- setOpen(false)}>Close - - )} -
- - + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
); }, play: async ({ canvasElement }) => { @@ -55,19 +55,19 @@ export const FixedWidth: Story = { width: 1024, }, render: (props) => { - const [isOpen, setOpen] = useState(false); + const [open, setOpen] = useState(true); + return ( - <> - - {({ Close }) => ( - <> -
Hello world!
- setOpen(false)}>Close - - )} -
- - + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
); }, play: async ({ canvasElement }) => { @@ -86,19 +86,19 @@ export const FixedHeight: Story = { height: 430, }, render: (props) => { - const [isOpen, setOpen] = useState(false); + const [open, setOpen] = useState(true); + return ( - <> - - {({ Close }) => ( - <> -
Hello world!
- setOpen(false)}>Close - - )} -
- - + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
); }, play: async ({ canvasElement }) => { @@ -118,19 +118,19 @@ export const FixedWidthAndHeight: Story = { height: 430, }, render: (props) => { - const [isOpen, setOpen] = useState(false); + const [open, setOpen] = useState(true); + return ( - <> - - {({ Close }) => ( - <> -
Hello world!
- setOpen(false)}>Close - - )} -
- - + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
); }, play: async ({ canvasElement }) => { diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index 53e7e11dd0d6..2e8fdb3062dd 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -1,8 +1,9 @@ import { css, styled } from "@storybook/theming"; import * as Dialog from "@radix-ui/react-dialog"; import React from "react"; +import { motion } from "framer-motion"; -export const StyledOverlay = styled(Dialog.Overlay)` +export const StyledOverlay = styled(motion.div)` background-color: rgba(27, 28, 29, 0.48); position: fixed; inset: 0px; @@ -10,7 +11,10 @@ export const StyledOverlay = styled(Dialog.Overlay)` height: 100%; `; -export const StyledContent = styled.div<{ width: number; height: number }>( +export const StyledContent = styled(motion.div)<{ + width: number; + height: number; +}>( ({ width, height }) => css` background-color: white; border-radius: 6px; @@ -33,7 +37,13 @@ export const ContentWrapper = React.forwardRef< React.ComponentProps >(({ width, height, children, ...contentProps }, ref) => ( - + {children} diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index 76a95c4c5411..789316c4efb4 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -1,13 +1,15 @@ import React from "react"; import * as Dialog from "@radix-ui/react-dialog"; import { ContentWrapper, StyledOverlay } from "./Modal.styled"; +import { AnimatePresence } from "framer-motion"; type ContentProps = React.ComponentProps; -interface ModalProps - extends Omit, "children"> { +interface ModalProps { width?: number; height?: number; + isOpen?: boolean; + setOpen?: (open: boolean) => void; children: (props: { Title: typeof Dialog.Title; Description: typeof Dialog.Description; @@ -21,27 +23,38 @@ export function Modal({ children, width, height, + isOpen, + setOpen, onEscapeKeyDown, onInteractOutside = (ev) => ev.preventDefault(), - ...rootProps }: ModalProps) { return ( - - - - - {children({ - Title: Dialog.Title, - Description: Dialog.Description, - Close: Dialog.Close, - })} - - + + + {open && ( + + + + + + {children({ + Title: Dialog.Title, + Description: Dialog.Description, + Close: Dialog.Close, + })} + + + )} + ); } diff --git a/src/features/GuidedTour/GuidedTour.styled.tsx b/src/features/GuidedTour/GuidedTour.styled.tsx new file mode 100644 index 000000000000..99e441497d10 --- /dev/null +++ b/src/features/GuidedTour/GuidedTour.styled.tsx @@ -0,0 +1,20 @@ +import { type Theme } from "@storybook/theming"; + +export const getStyles = (theme: Theme) => ({ + border: 0, + borderRadius: "0.25rem", + cursor: "pointer", + display: "inline-flex", + alignItems: "center", + justifyContent: "center", + padding: "0 0.75rem", + background: theme.color.secondary, + color: "#FFF", + height: 32, + fontSize: "0.8125rem", + fontWeight: 700, + fontFamily: theme.typography.fonts.base, + transition: "all 0.16s ease-in-out", + textDecoration: "none", + outline: "none", +}); diff --git a/src/features/WelcomeModal/WelcomeModal.stories.tsx b/src/features/WelcomeModal/WelcomeModal.stories.tsx index 334eef5c7f7c..3934364ebf07 100644 --- a/src/features/WelcomeModal/WelcomeModal.stories.tsx +++ b/src/features/WelcomeModal/WelcomeModal.stories.tsx @@ -16,4 +16,8 @@ export default meta; type Story = StoryObj; -export const Default: Story = {}; +export const Default: Story = { + args: { + open: true, + }, +}; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 99222749e0e2..8089285f20d4 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { FC } from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; @@ -16,15 +16,19 @@ import { TopContent, } from "./WelcomeModal.styled"; -export const WelcomeModal = ({ - onSkip, - onProceed, -}: { - onSkip: () => void; +interface WelcomeModalProps { + skipOnboarding: () => void; onProceed: () => void; + isOpen: boolean; +} + +export const WelcomeModal: FC = ({ + skipOnboarding, + onProceed, + isOpen, }) => { return ( - + {({ Close }) => ( @@ -39,7 +43,7 @@ export const WelcomeModal = ({ - + Skip tour diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 80849f644202..b463bfca1f2e 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { FC, useState } from "react"; import { Button } from "../../components/Button/Button"; import { Modal } from "../../components/Modal/Modal"; import { Icons } from "@storybook/components"; @@ -34,15 +34,21 @@ import { API, AddonStore } from "@storybook/manager-api"; // TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true. // backdropBoundary && !warningButtonStatus?.data -export function WriteStoriesModal({ - onFinish, - api, - addonsStore, -}: { +interface WriteStoriesModalProps { onFinish: () => void; api: API; addonsStore: AddonStore; -}) { + skipOnboarding: () => void; + isOpen: boolean; +} + +export const WriteStoriesModal: FC = ({ + onFinish, + api, + addonsStore, + skipOnboarding, + isOpen, +}) => { const [step, setStep] = useState< "imports" | "meta" | "story" | "args" | "customStory" >("imports"); @@ -88,7 +94,7 @@ export function WriteStoriesModal({ }; return ( - + {({ Title, Description, Close }) => ( {data ? ( @@ -292,4 +298,4 @@ export function WriteStoriesModal({ )} ); -} +}; diff --git a/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx b/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx index 2c5843f9b4e2..fdc7ee542744 100644 --- a/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx +++ b/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx @@ -15,7 +15,6 @@ export function useGetButtonPath() { error: null, }); } catch (e) { - console.log({ e }); setButtonPath({ data: null, error: e, From babf2603217b50d8e8bac924e3a44d7d265aa9ce Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 15:19:44 +0100 Subject: [PATCH 108/430] Fix animations --- src/components/Modal/Modal.styled.tsx | 7 ++++--- src/components/Modal/Modal.tsx | 12 ++++++------ src/features/WriteStoriesModal/WriteStoriesModal.tsx | 2 ++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index 2e8fdb3062dd..cb2e0e545b80 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -2,6 +2,7 @@ import { css, styled } from "@storybook/theming"; import * as Dialog from "@radix-ui/react-dialog"; import React from "react"; import { motion } from "framer-motion"; +import { animate, exit, initial } from "./Modal"; export const StyledOverlay = styled(motion.div)` background-color: rgba(27, 28, 29, 0.48); @@ -40,9 +41,9 @@ export const ContentWrapper = React.forwardRef< {children} diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index 789316c4efb4..560c2a36d561 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -19,6 +19,10 @@ interface ModalProps { onInteractOutside?: ContentProps["onInteractOutside"]; } +export const initial = { opacity: 0 }; +export const animate = { opacity: 1, transition: { duration: 0.3 } }; +export const exit = { opacity: 0, transition: { duration: 0.3 } }; + export function Modal({ children, width, @@ -31,14 +35,10 @@ export function Modal({ return ( - {open && ( + {isOpen && ( - + = ({ setWarningStoryCopied(true); }; + console.log("Write Stories Modal", isOpen); + return ( {({ Title, Description, Close }) => ( From b0ed4b8cbc2d46c34149c89fd6311a53d1ec9d89 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 15:20:46 +0100 Subject: [PATCH 109/430] Remove console.log() --- src/features/WriteStoriesModal/WriteStoriesModal.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 3108efb5df12..b463bfca1f2e 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -93,8 +93,6 @@ export const WriteStoriesModal: FC = ({ setWarningStoryCopied(true); }; - console.log("Write Stories Modal", isOpen); - return ( {({ Title, Description, Close }) => ( From 373a4d6504984b1e0db36912def9e36cdc4ab5da Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 14:21:47 +0000 Subject: [PATCH 110/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 444c6e7a9141..3f959e583364 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.20 (Wed Jun 07 2023) + +#### πŸ› Bug Fix + +- Change code for Javascript projects [#41](https://github.com/storybookjs/addon-onboarding/pull/41) ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +#### Authors: 1 + +- Valentin Palkovic ([@valentinpalkovic](https://github.com/valentinpalkovic)) + +--- + # v0.0.19 (Wed Jun 07 2023) #### πŸ› Bug Fix From 5da4cddbe01b2090fb0e094075eb2cc3bd280b94 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Wed, 7 Jun 2023 14:21:48 +0000 Subject: [PATCH 111/430] Bump version to: 0.0.20 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5799fb4b97ed..f813f66d6a9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.19", + "version": "0.0.20", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 316a6860b14a64c199c3543fd9b3165a903dfab2 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:06:24 +0100 Subject: [PATCH 112/430] Fixed modal story --- src/components/Modal/Modal.stories.tsx | 100 ++++++++++++++----------- 1 file changed, 56 insertions(+), 44 deletions(-) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index a9f29ba0fc12..36b96a115b6a 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -24,19 +24,22 @@ export const Default: Story = { height: undefined, }, render: (props) => { - const [open, setOpen] = useState(true); + const [open, setOpen] = useState(false); return ( - - {({ Close }) => ( -
-
Hello world!
- - - -
- )} -
+ <> + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
+ + ); }, play: async ({ canvasElement }) => { @@ -55,19 +58,22 @@ export const FixedWidth: Story = { width: 1024, }, render: (props) => { - const [open, setOpen] = useState(true); + const [open, setOpen] = useState(false); return ( - - {({ Close }) => ( -
-
Hello world!
- - - -
- )} -
+ <> + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
+ + ); }, play: async ({ canvasElement }) => { @@ -86,19 +92,22 @@ export const FixedHeight: Story = { height: 430, }, render: (props) => { - const [open, setOpen] = useState(true); + const [open, setOpen] = useState(false); return ( - - {({ Close }) => ( -
-
Hello world!
- - - -
- )} -
+ <> + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
+ + ); }, play: async ({ canvasElement }) => { @@ -118,19 +127,22 @@ export const FixedWidthAndHeight: Story = { height: 430, }, render: (props) => { - const [open, setOpen] = useState(true); + const [open, setOpen] = useState(false); return ( - - {({ Close }) => ( -
-
Hello world!
- - - -
- )} -
+ <> + + {({ Close }) => ( +
+
Hello world!
+ + + +
+ )} +
+ + ); }, play: async ({ canvasElement }) => { From 4b1611d4781e72c5d6739e9db62dc69da6ee9aa7 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:12:47 +0100 Subject: [PATCH 113/430] Update Modal.stories.tsx --- src/components/Modal/Modal.stories.tsx | 44 ++++++++++++++++++-------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 36b96a115b6a..400c132ad68e 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -1,7 +1,8 @@ -import React, { useState } from "react"; +import React from "react"; import { Meta, StoryObj } from "@storybook/react"; import { userEvent, within } from "@storybook/testing-library"; import { expect } from "@storybook/jest"; +import { useArgs } from "@storybook/preview-api"; import { Modal } from "./Modal"; @@ -20,15 +21,20 @@ type Story = StoryObj; export const Default: Story = { args: { + isOpen: false, width: undefined, height: undefined, }, render: (props) => { - const [open, setOpen] = useState(false); + const [, updateArgs] = useArgs(); return ( <> - + updateArgs({ isOpen: !props.isOpen })} + > {({ Close }) => (
Hello world!
@@ -38,7 +44,7 @@ export const Default: Story = {
)}
- + ); }, @@ -58,11 +64,15 @@ export const FixedWidth: Story = { width: 1024, }, render: (props) => { - const [open, setOpen] = useState(false); + const [, updateArgs] = useArgs(); return ( <> - + updateArgs({ isOpen: !props.isOpen })} + > {({ Close }) => (
Hello world!
@@ -72,7 +82,7 @@ export const FixedWidth: Story = {
)}
- + ); }, @@ -92,11 +102,15 @@ export const FixedHeight: Story = { height: 430, }, render: (props) => { - const [open, setOpen] = useState(false); + const [, updateArgs] = useArgs(); return ( <> - + updateArgs({ isOpen: !props.isOpen })} + > {({ Close }) => (
Hello world!
@@ -106,7 +120,7 @@ export const FixedHeight: Story = {
)}
- + ); }, @@ -127,11 +141,15 @@ export const FixedWidthAndHeight: Story = { height: 430, }, render: (props) => { - const [open, setOpen] = useState(false); + const [, updateArgs] = useArgs(); return ( <> - + updateArgs({ isOpen: !props.isOpen })} + > {({ Close }) => (
Hello world!
@@ -141,7 +159,7 @@ export const FixedWidthAndHeight: Story = {
)}
- + ); }, From a16db98f94d91700dbd5396f1c16467e620c8f83 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:18:00 +0100 Subject: [PATCH 114/430] Update WriteStoriesModal.stories.tsx --- .../WriteStoriesModal/WriteStoriesModal.stories.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index a5dad91bcb5e..c7cf69777965 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -49,9 +49,16 @@ type Story = StoryObj; let storyIndexInvalidatedCb: () => void; -export const Default: Story = {}; +export const Default: Story = { + args: { + isOpen: true, + }, +}; export const DefaultPlayed: Story = { + args: { + ...Default.args, + }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); From 70c2d8ea8ff8b24cfedcd5a121439b455d5ae3dd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:26:28 +0100 Subject: [PATCH 115/430] Update WriteStoriesModal.stories.tsx --- .../WriteStoriesModal.stories.tsx | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index c7cf69777965..0fcdec51ae80 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -61,31 +61,22 @@ export const DefaultPlayed: Story = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const importsText = await canvas.findByText("Imports"); - await expect(importsText).toBeVisible(); - - await canvas.getByRole("button", { name: /Next/i }).click(); - + await waitFor(() => { + expect(importsText).toBeVisible(); + }); + canvas.getByRole("button", { name: /Next/i }).click(); const metaText = await canvas.findAllByText("Meta"); - await expect(metaText?.[0]).toBeVisible(); - - await canvas.getByRole("button", { name: /Next/i }).click(); - + expect(metaText?.[0]).toBeVisible(); + canvas.getByRole("button", { name: /Next/i }).click(); const storyText = await canvas.findAllByText("Story"); - await expect(storyText?.[0]).toBeVisible(); - - await canvas.getByRole("button", { name: /Next/i }).click(); - + expect(storyText?.[0]).toBeVisible(); + canvas.getByRole("button", { name: /Next/i }).click(); const argsText = await canvas.findAllByText("Args"); - await expect(argsText?.[0]).toBeVisible(); - - await canvas.getByRole("button", { name: /Next/i }).click(); - + expect(argsText?.[0]).toBeVisible(); + canvas.getByRole("button", { name: /Next/i }).click(); (await canvas.findByRole("button", { name: /Copy code/i })).click(); - - await storyIndexInvalidatedCb(); - + storyIndexInvalidatedCb(); await waitFor(() => expect(canvas.getAllByLabelText("complete")).toHaveLength(3) ); From 99a662d66c38f64602ab15864e1e4ab4fb428a39 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:52:14 +0100 Subject: [PATCH 116/430] Update WelcomeModal.stories.tsx --- src/features/WelcomeModal/WelcomeModal.stories.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/features/WelcomeModal/WelcomeModal.stories.tsx b/src/features/WelcomeModal/WelcomeModal.stories.tsx index 3934364ebf07..7351ea7af2fc 100644 --- a/src/features/WelcomeModal/WelcomeModal.stories.tsx +++ b/src/features/WelcomeModal/WelcomeModal.stories.tsx @@ -18,6 +18,6 @@ type Story = StoryObj; export const Default: Story = { args: { - open: true, + isOpen: true, }, }; From faa4d0afe41e5a59d2b99da83d285ce9e0e721e5 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Wed, 7 Jun 2023 16:55:39 +0100 Subject: [PATCH 117/430] Update WriteStoriesModal.stories.tsx --- .../WriteStoriesModal.stories.tsx | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 0fcdec51ae80..7e13a739194e 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -59,22 +59,24 @@ export const DefaultPlayed: Story = { args: { ...Default.args, }, - play: async ({ canvasElement }) => { + play: async ({ canvasElement, step }) => { const canvas = within(canvasElement.parentElement); const importsText = await canvas.findByText("Imports"); - await waitFor(() => { - expect(importsText).toBeVisible(); + await step("Wait for modal to be visible", async () => { + const modal = await canvas.findByRole("dialog"); + await waitFor(async () => expect(modal).toBeVisible()); }); - canvas.getByRole("button", { name: /Next/i }).click(); + await expect(importsText).toBeVisible(); + await canvas.getByRole("button", { name: /Next/i }).click(); const metaText = await canvas.findAllByText("Meta"); - expect(metaText?.[0]).toBeVisible(); - canvas.getByRole("button", { name: /Next/i }).click(); + await expect(metaText?.[0]).toBeVisible(); + await canvas.getByRole("button", { name: /Next/i }).click(); const storyText = await canvas.findAllByText("Story"); - expect(storyText?.[0]).toBeVisible(); - canvas.getByRole("button", { name: /Next/i }).click(); + await expect(storyText?.[0]).toBeVisible(); + await canvas.getByRole("button", { name: /Next/i }).click(); const argsText = await canvas.findAllByText("Args"); - expect(argsText?.[0]).toBeVisible(); - canvas.getByRole("button", { name: /Next/i }).click(); + await expect(argsText?.[0]).toBeVisible(); + await canvas.getByRole("button", { name: /Next/i }).click(); (await canvas.findByRole("button", { name: /Copy code/i })).click(); storyIndexInvalidatedCb(); await waitFor(() => From a1e85b2f70c71c861533595af72301e3ca84ae60 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 07:46:54 +0200 Subject: [PATCH 118/430] improve confetti colors and shapes --- src/App.tsx | 3 +- src/components/Confetti/Confetti.stories.tsx | 10 +++ src/components/Confetti/Confetti.tsx | 69 +++++++++++++++++++- 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index cb06bb1d8e41..9bb61df97dbc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -85,8 +85,7 @@ export default function App({ api }: { api: API }) { {showConfetti && ( { confetti.reset(); diff --git a/src/components/Confetti/Confetti.stories.tsx b/src/components/Confetti/Confetti.stories.tsx index ab8eec54ccbc..f4a42676dc09 100644 --- a/src/components/Confetti/Confetti.stories.tsx +++ b/src/components/Confetti/Confetti.stories.tsx @@ -31,3 +31,13 @@ export const Positioned: Story = { height: 250, }, }; + +export const OneTimeConfetti: Story = { + args: { + numberOfPieces: 800, + recycle: false, + onConfettiComplete: (confetti) => { + confetti.reset() + } + }, +}; diff --git a/src/components/Confetti/Confetti.tsx b/src/components/Confetti/Confetti.tsx index 19222fe7e3de..9a56f3dbef71 100644 --- a/src/components/Confetti/Confetti.tsx +++ b/src/components/Confetti/Confetti.tsx @@ -31,6 +31,7 @@ export function Confetti({ left = 0, width = window.innerWidth, height = window.innerHeight, + colors = ['#CA90FF', '#FC521F', '#66BF3C', '#FF4785', '#FFAE00', '#1EA7FD'], ...confettiProps }: ConfettiProps): React.ReactPortal { const [confettiContainer] = useState(() => { @@ -54,8 +55,74 @@ export function Confetti({ return createPortal( - + , confettiContainer ); } + +enum ParticleShape { + Circle = 1, + Square = 2, + TShape = 3, + LShape = 4, + Triangle = 5, + QuarterCircle = 6, +} + +function getRandomInt(min: number, max: number) { + return Math.floor(Math.random() * (max - min)) + min; +} + +function draw(context: CanvasRenderingContext2D) { + this.shape = this.shape || getRandomInt(1, 6); + + switch (this.shape) { + case ParticleShape.Square: { + const cornerRadius = 2; + const width = this.w / 2; + const height = this.h / 2; + + context.moveTo(-width + cornerRadius, -height); + context.lineTo(width - cornerRadius, -height); + context.arcTo(width, -height, width, -height + cornerRadius, cornerRadius); + context.lineTo(width, height - cornerRadius); + context.arcTo(width, height, width - cornerRadius, height, cornerRadius); + context.lineTo(-width + cornerRadius, height); + context.arcTo(-width, height, -width, height - cornerRadius, cornerRadius); + context.lineTo(-width, -height + cornerRadius); + context.arcTo(-width, -height, -width + cornerRadius, -height, cornerRadius); + + break; + } + case ParticleShape.TShape: { + context.rect(-4, -4, 8, 16); + context.rect(-12, -4, 24, 8); + break; + } + case ParticleShape.LShape: { + context.rect(-4, -4, 8, 16); + context.rect(-4, -4, 24, 8); + break; + } + case ParticleShape.Circle: { + context.arc(0, 0, this.radius, 0, 2 * Math.PI) + break; + } + case ParticleShape.Triangle: { + context.moveTo(16, 4); + context.lineTo(4, 24); + context.lineTo(24, 24); + break; + } + case ParticleShape.QuarterCircle: { + context.arc(4, -4, 4, -Math.PI / 2, 0); + context.lineTo(4, 0); + break; + } + } + + context.closePath(); + context.fill(); +}; \ No newline at end of file From 4e0873bddbae1af0d555f3178dabc9e62d0aeb60 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 09:25:23 +0000 Subject: [PATCH 119/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f959e583364..b8bef507d435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.21 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Improve modal animation [#42](https://github.com/storybookjs/addon-onboarding/pull/42) ([@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 1 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) + +--- + # v0.0.20 (Wed Jun 07 2023) #### πŸ› Bug Fix From 245de333359a7f1333f64321722468852fd940e6 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 09:25:24 +0000 Subject: [PATCH 120/430] Bump version to: 0.0.21 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f813f66d6a9f..d89862539199 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.20", + "version": "0.0.21", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 40ce2c464f7d6359be4f40c4ff0082d597c63311 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 13:27:44 +0200 Subject: [PATCH 121/430] improve README --- .github/assets/onboarding-intro.png | Bin 0 -> 976906 bytes MAINTAINERS.md | 46 +++++++++++++++++ README.md | 76 ++++++++++++---------------- 3 files changed, 78 insertions(+), 44 deletions(-) create mode 100644 .github/assets/onboarding-intro.png create mode 100644 MAINTAINERS.md diff --git a/.github/assets/onboarding-intro.png b/.github/assets/onboarding-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..343204a51a6e29b63255c46b1d29b4ef032c2e58 GIT binary patch literal 976906 zcmeFYXIv9o+dc{+8yiGLMMVgRiU<-Br9(tiEC>p20Vz?cNQn>-5Wo^uIs)Ne#O{O zbkp8V0s;b}7tWtC6%g2XL_k2~{D!~aJ$gHx1qB4Q=(!jeT)ALiAalhF>*V6*C?Ie? z{FS+gg<12i6ss4}r*6Nyw6SXA{*w=0ZoMHeZFBAPcA1yEh4kwqm5-F(%X=Vdv-9fQ ziOo+B@7h&ABC+{MOS#1tMXc$mUi@UhG9E_*^zeQv)7KbB6 zH@=n6Nc(xgL~z}eQ^EqJUZukOoxHu**WH}rG8yw)g->WtL$1vd#-SpY1(vY2K=kb} zRX^dOz%Yd119Q)_W2XheOh*DQzB~W)mdFje-7xLqGiHL@v3iy^2DRWcZ=o8*42EgY}z19h*8+!WU$3| zgVx_ynj%9j5Mz(I58rA$Zg*Ntvv`au)H7?dJHjg1m)Dlt)r-I2vCixrq?JgzK4t%@ zzJKw;Rx_F6!`ly>JDt5L&tBidy7Zfqk*AuXSJOGA@K+63K~E*j?(H(YjZcr)*W_*D z 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Ξs1FoBy@i546)4l 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 BRDwbb3jZJYW1;gzkgXAHqm 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 z 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 z z&EN6ksL?hz{w+_rYW7Fty*YWnv$+_;`V`os%OpYv2WLd`XF1iQ0F<)1OxjiO$c+(x z&ISapfKu&Rsx3}w6de%^X;j=+I|1!O-Mgn!?!Gw8iCf;ZS&GIu^yWjoFK*dxbqWFg z`6wZQxcg5ii0@lI^44(IU~tci90ikA3=+B;YpRSOc*o-yvq5furJ^~pebG>xWejL8 z(hSoUXrHrAk1bQ=T-qobArt9Ojg_nM+ba-yUz>Bm-fJ_4N9Tz;-VEE)?lN7o(WZfV zy}m+Pe2ml8 z@DHyJOn1wHyp$|gQv8q+&pG?+cM=8bc)T;eqD&|WAL>3&+VUkXHXojWNe}_7FRiKQ zo>$VyTkSg?WeM`;aw>`W1UFT#%5+7opU+C-463F#JvRwA6|3-OQB=lCTKwLA&iFXF zf~0!IkjuQ#2Ey<5q1IlF1HDO%e07y^GYKQh2bemd@p|FK>Qx^?y9`}{I58U&tB!9P zTd5fr(DZe6aOGveYZ|4+VNIQ5qK|@O#m4x_Yb3g7gjXZU-nO_;x7Z7x>l?E2k#~0$ z5!doOV7d}$xrQSk%W^Y9;o#w19IWb|zYnEZnO-%!ptoA`e+1_&k z9;@6<0o8Z_VE`YlvlK{eW5$eu&>~k^_4@ec=<-Ip6euVcA8-1K~z_Xi(c7 z`P$!Vy8xZ=rn8?B4%H_)_dTrUjKR=ZLgL%j0+I>$caaeJ8uoKLw;-W#>pTiaP%2roXmR>PT-N*)D6DH`*mVGfsv!YUMd0%P^qbeA8}R?9-#qJ;kdSMS z!LNUCV1Nfg*I~2NAO%l=nDoyQivC|fi$niEOQf5l&JtTR)?uvR(F%eT0*N zfp%DdzhSfXmTPDv!xj&h&F|VF&tSQ}qQ+q<1Dj2g8kSMa{ zA2qq0qJovg5A{TaVC^8As+)UWn(?Hz6JvAX$^#eK?eNBA8e4FTUh?29+VOu96GG0~ zh(2&=raVL{Q`LRFPg`cbS8EGYvP*YFIWOfO1nUu73K%*StJby7=5ZZSlz|k1^2^iT;Dn z?pe&mj)=w%GcYJmMu1q?Rh~o5rQ=w0-iJ#~a4vsu6|Mb~Vl^u3h=ag_p=l?|VOssH z7;!m|CKxkVrHHtMYPx2=8>Gs(_{f<$X!Ztqt?v+%3#E!~h%J0Dn!|{&ybYZIek-)| zsr8H=$ACYmF-4s}AjN#il-4y;E$mdEAfZdYNC{t=o9ZK~@B@7U?aR^Yqotpt z<#!cs(fqeosgJ{z8Twa0NUuH~bc6d7ZBlr#baypu*j@58kSX1Alk>%ql33flGR^C@9|On8P{sk3n$9h@xA4ma`J(+nz3op&8Mdr=zYQ} zs>hrZF~HY#tQoGHe43$}u=GqlORe0-xS^Oh2X*EDJA9Z2+am&-1~JKZ_B&wpZ)Zak z0U{$gojc`Sh#lC%?8S?jjqkGJZOC_PX(uPI=5JrH+Ti-1%f3&8Pne)K6mb(3ehJ>( z;$g+B(SX+U;vIUD$7%(!tF4|YC@Vbd87|88+*ND&5@l25q_8Io49?uO$Y6=_#@?yv zMg9>KsIev&I{=E6&JNZSH^EqrMkczCoO~U+&L4z&ft6XeMZOe+r-p+&!x7*#@mWE# zleqlIX~FuQ)v=);F`0Orkhc4n2{fOl6Hp0xefK|vWZgs4ZivkK7L#&OB%sh zqMwFlO7W7`{HazX%$4UVJ$P8g8nTJf-w*03MHg^7Y#|)CU}}u=IW>IZ@f+Z>jwIa^ z+`+r4^=gBK#{q6~$h13F9bbIjH94N6Y2@)cK>COow=b@bNFImstUQbP_T?p96?-Ll`)i#LCs)ql~>3by=_nme9a(lw!BDdKn3QLpgL)IR0jjJaoP@N%CJ zPmiyq|JO=YOgoH6{&D%b(|!A9a02&%qQ!X_6+o@xcoSU>B>D~eCuOz{!N%pSB+XW; zH(7O+9z8(#L9k0Txym|sMmCs)4nKuoLAeN@dAFGkB_fdMD zYR_1*pEdK;DzGA6;mx<*%Dr^j8vRlKH|0fji@i()8tL>TUg&3GdAT<>ppA?lBh$QX zIHm`~X3e@Z*A>vK5Hn6vlT1uv^Gw^=WC8wpl zCT0?`Fg7}IcJhPx)(5k~lW%5e+jN%KjD_JmPe|2}8G4zsbJ;6>*@}`$B}na*pw3RWGaqgNFOL z(>v5=Xy?gsqi-5;9KzK(m*KOJ+B9GK*XbbN5pUq*mKbfTYPsX=a__<|W%a+FN~z!t zyj^!b9soNo*@Y>N#dEAuJtPgkKOz&E?5mi32}w1PFqs-dr0KV07R;)AHwS~t3Jd%G z-Y0z8U)_k1Wk0gEkJ}Q@52yE$NyyE2l=O1xRku(>)F$%0p300ig7~urJ`R^Ic72Wg zT$3Y5Rb5E|ff41niOJdo^L8*!1n5elLHAKULB??qPcQWY-#dY6vG_4BU*a-Tsml^C zC8Std+kmtCDGX~F;fqRC2pZ{ulALwmk|cd!N;L29y$)-0rOyGMQ*h{wm^5VlwprPR zi;thNs|e?|z0e82k3g z8JGEzjsSYGdqnn{Bnyh-0km(!XYVZG;{Ya3h;XU)+Hhf^0BDV7j<_&}JDJjsa*BQh zy#es0=Z6{}9GeAu`d<{e4lnpss_;1<3rJ0hr%d&}GFGK?y)Ki(I0dCHxsXXz&tLDf zA{KvbfcE-s)6wIaeMW`_`Y;2HWI(D94)axR+qmm)YwP`o137?!V(gb!zGs{w>!c)7 z1Gtne7ri`VV5#eSFL@44o{Jl0&W8!b<5XoGF$+6cR~2m!wxw>jCz)zK?(&+??$RGx zH6tA}M5DOLRcz(kDub?0Cpz)-K1b2_OOdiUj;=5y|Mt2Rr0CdbzIghTJ(%~J?dN|_ z9JY*Pn_UDsdG@Yq&~qm@I>z4R+5T*wuO^HCS<)Vh}#)9-aJE$iG+- z)UCQMq_CZRe$Km3uCP-Ht*{WO2u2fl-B}_swDln1BEf4kWP%lSOva7`<9N~?_p7cF z0!Y>mV0%vV1txQRWxuY4Dgw_49`gTt%YsYGyZ-4t(|9{u?6@aL2InjfM362hRbK(E z7L=@Bq}<)CMtu!Y@{Bt;X-NOMKmtwVH^QAu1bUVlbWwX^@LFLyfXoq*;d@Z z&p3oGsogX}JOj7jVG=Eqy`j`10S^1e-qHq^p3jP?#O?cvW88M1AROr)shJqFplwOm zUP?|{>~Yn36xddeST&^O>+d8kJ6zK~HTlIxqqZP&6319>WD>43u{$~e#Gt+i6g-qG zG>Q{jD5!P9!CC8pdSk)Ma4$GE`A~rIlK20w-e_!3$rZwxzN%R&4sYxQ$#jlF-M?+? zTn=!xwx!Xn#f|$JKkkApyjH9ocZd`uFg>J5`=^b+s@^zH_9R@cT1E!rKq7fXn`V+k z7ma*9uGZUAL~9aO3?XFZ(Xr6U*eH1hPa=v=WSF02gwe(V=HSo%tngg!p8Ltwi_ zQiB~XmHn0r%)R2@GkwsI!p1jwhUXa|SBgOi>6m}y(-^?uyIiLigs{s9mL1$o6AsMc zy$BSnX-F(viQR-U$5~na{zCulQvaxNKKYOa*@tH8k?j0VE7Xt) z%#?sR;bp-iIsJ*cT{D(Kc3MIVM3g#4Rx{TTI98Gk1j*9PM#fdx#yzHZwncJCVPtK~ zFznE#R>AlZ&;rL9&3~7AtpKguCu&D z?majBBk_jrh-tQwJq%iz)ONEmY39%T&2H<9eAli%dChYr`132Q@)pOLt0fE(jJCgF zc0~F^UT{F%PgT|}>EibcwcStgg^zc^!)d$Ul(Mt^FvGAoZTzqtkk$)~kVZb#0_Mzo z;ODZO#Vz#unqtICcu=>@y|oesNql#oj~ZJ?e0EHZnYwEJTPyS&sP^YMZw9EP?Ps~_ zF6+f0HM4@akT%t1IZaMHpk1EFNqbu{JCxe?PBH=jq8Ij9u0Q|ST78I3J$P^r>vOLJ z@M=(kWi|l+ytM%_JvY4$$Zb>y1WDq$?9Acgt2CoT+Vz75HCemK{PK$4<%ITSZW|d> z7JR4Cx?8d|oRS7gPt|=64U3@PjWz34$c#*=0H0#@v(-evr(7=0)nisq&&e)CL%XL5 zKSI&(^9YHcP^9IMjftRYMzwAh6=H%yzr&<3c z%E;=J+`@dJn|9$w&);UBuN9OgVR4-O%|>jJEW><>PUpxs8!K{ceNl0V=ipmzdK~E9 zLQO(IGPhf&KDmHYC$!IMuGVXBtO`+BdbItZbhG&Pm*FP)Ja0970#8a&)1p*d$xo3=nayCe?6;hDZodsi-U+_V)%BkzcAnh>TvD~BZH6B| zvLmI!8{(oy29uGRvut(O;!TQap5?@*1--#A_~M&x`+pAYLi;9C&HS;~*k+8}#@bSL zV?`q4tMyTb`*nhvqMCYEh4aM2Msl28PPlJpQqm(RLCfrab!hpvU5ilyok#VRoN6UQW?&2Or#(UnYhf9K}>u;x#9;}%2np9nkgbJTTw z;AMGK{%#nX@`(Es*Zw!zokS+AEy|PjYU| zz3`&DQ3L9J3s3oMFys5~xMuWw^!d>tjd?3!fips)^mAPd}gs zGZa|EPgz@GDU~0>wMW!+rL*zfRXIV1Wx)>LtxIUkP|gc;kL>q?>~Sw8=DyB|Cm%o; z(JS2H0I8P34lh%2=MzV4(8CbJwcV5NG>R^^0P%R7QAEdjRg{cLRBhZw2HR?3E1iSd zR#}&tfBAQWe92c_5<$Xg$*cZKVy2yduYT!(c^umq=JsncVsF_{vZ}+6`dp@$>Fg$te~QBl ze5Qp!22%Rb67e#+m?1cL8SyarrMZ+QM+@dR7Ra4Lh8waQe z4Q*|OL<9s^WZ92Mdj3M!e+Ew_Qn2|hg$>K%Vz#qN#Gvx%vv%ympyKXz+c#fE$@slK zNkC2g2bSJ9DGoe~XDZA>O+Ke8jjPnc1Suf=&f4b*ZfmVIJ7Gu!s-5ut4Z}mZ9(L0| zU%|0T#A%&F?QJTun;wuq^Y&zGmLKo;WMxgZk+p>8`WDGCrvf&8{FFHR=rN#^d2K_L zM<$C=!nzNqU~)LZK8W}2@sLTVAZ6#kQ!ZCI2R;G$;kih8*vI1!gV_m=Cx#>(Uyx0b zK0>FUEhwS-&avxz)LE)Cf>KE4?5b0sh&-W^oM*}6b654_p5wT;Q7Z9i0KRC3@%G6e z;3JCTUtixtxhR;)CY#LRS1e$q{S~c7|8mNoZO;Hl9)jas>2fezG-^4PPWzAc7*BWG zIILEC(Qm+^&?I+p`zg*&UKqMm60(1=Duk8Qq{i|rA}J)C-s63(d+YDm`&lBV0R zlT-SK)~0#)+11gcSNeYD?ALyb-52Z#r?J!@bRqtA18!Cac@j1T<2#JoNZ~A0jNV?d zbLWsaQRtfKJ26;(w(S=hh|Z?hRw@;Eo<2Xo&7v z$dH8e*4KDf%C7=PGr9;!us{oScimt~OuPnHg>Kxw&&VMxWs1X+cfSJD(OSk#WFa(H zS>qp0oetYA30kc0Q8Is&!>49FuE!*Z{gwFXz8iA{XiJHi{Q9ZPSK-SmPy5R`DZQ)x z`MNqL0^!S_r7sxlAtmVZpmus8QgWUUcmGQ|Ve>yWMlAv>3zEf>6*;bK279!<>235$PDct-HpZXa4} zA)8^%g~is}t6`j({8PKCTRcq>Qgx^#%6MOr>l^!Vwv)3}*`x0I+k-b!+n!ayw|9FN zCd;>U=PM;x2!GKUAMOyh3OoMK@JhoRD|WVz7v1=JU(MPJ5Ly_(xMQywv+VCR5-ga^ zB9BVrUikjmpo^&X$wPcclY+OA3W_jGpSO!o04`>2bCi%#iD#~=Qd|*!2{`5g~R2&n0 zp5@r>{M^||pc1bBQs7rqqW@QmGF^)?4fAO@s{Ylq^=zC~p15(5I^rcX>pdLGh3Peu zVH!A-y;`5$?Ki%L3BOd~2t7$-0{?3GZ(b%TuKAu27<(=r`rUV@*a<(e^Q~F0;f=oC z8#t9juUhDPIY72^I{YAw!rq%gs)7TOpK|Q|7VVE5eV=j8H($FUE-hl9uLl1!>SZEM zHPBIi7uD^z5+&o95V+BmAD!=LzQ!uRa&%)?8^^tTN{ahN3y~<)=nVH6ucB$kpv^zB zKj8X3ybw~Gh#Et`9m(zLsZU=2T>RwyMuf*QkO@_>T z?b3~9W6k$T$1er+orT03;(}%AQoQ7g3v%u)%gm7(spCMr1{xhCV)lAxIL3zgkDnxA zHuu#6$BmW(^&t~Mv~PoePOnP3Mdj2I>E`mkGlH^z1-s7oC5q=_h>;LOOm?jq;&?`o ze>jcFV;6k>V98K-WOiK7#5jj-wh$JcBRmWk34zp>7zA_rQfx2;V{qM_kEHA5(ge^B zM@to+nSV9>^vi;PMt;_?e4NcV-(Y;&_DQ8TIZ0r`Y)Fch5BP$YJE6XC>xS}G)#=R0aI*NJDS7UzD%n1pN;l3Qv3)m= z1jlFP{La!`8HqbqsA8a2?jcS60xil?`#kZ-*@hZ(D3SYXuwn<=>Gd(?X2Zroa6g+ zFE}YUC{cKDb|-tkvn^yl)#mYI;x!yBFT>@M!S&ujr8}4m--8RI?*$iZCC4m;*-raK zPRph@mR**RAm(6N`LOM)<3MFryf4s{vbIiV7bNd zg`|Z+2+Ys@)!Sll_&u?FyqKljZ;)krCbYCzkoh?%DN?w$nyLs{80tSH#>S-P;c41g z(A2!;aGc&nWrj%shE04^#3bQiBnC{=`(X+S@k<*MZciT-HXU#OsOtHX-#(#l?{)If zakI`00Pj{cy;jg)Zu+bzG+OBUT-;~pxwap||WqDU}qStft5>wGME3mpT@;zUyw1Qeu_HOL8%ZT9tTzY!lZ` z`MKONawNT#ybM)^ZMvbk^n*Bpl+)G}=htm1)$_vx&+mnBTXhC+zYLORtg&j3c#9&s z_sg56v(eQEYbabI8;Hy@lKzm39Ss`Np9>xEN;J#lxprW8gSaFZCHB4^vJk^!+qd*2 z)R}2N^u5bjVLLzw*L?KI!BfX$tSgPo^x=RYo_*4Ip>F7oC*;U^uL}oDGDpn*nic@} zdh|ZKZ6rOAlg(Z0=(FFNu+c&PYv-_9Oj@~ECGVuaw@jVRuz*~{J2yh|-ZG~Bjfsm; z;I;I9cLLU9PBPDVh6}w@T(r(XJQ4`$1FbQDS#DALt09xOBYlMnS@7+cr65J_!i&D$ zxfyFh^~Y@^+d!tE>5>QaUwSC*+^#W|E`LM$BP>`R{cBi`8_`qJ{Vl?Fnn=|C^4MF| zIj+(qEA6)E{$|15V?Fs0hb2-LBuUGD(p9)V*5dd^!i8MCBwvFrLc^Yg9$C1`V}m8S z(Zm>#y`@_b@zrdoD9C)8!Q;c4xd(a9p@W1_!Pt9?{gjXkz{GS2?^=EDRd`8qANnv6 z-GOQrFz~0p@hwp^gu=G1mDgd7Z1DK*VB;~sSI?=X#rK&{?c;#8dR)YN-jzT6{L#*i zIr0^uG+`5KoG-cj0eFN8C_)--)V&7PR`rcRu7J%N|}~qeR~44~6&;4uuPkf^TME$xk_+ zXm(K*c&&Cn@NHvls#eWv>KZ1MKi5O|J-~e5s7EyL@u#mLdG=KnfwZ8N%6Cc%JcR*v z;TDfBQw_(%?LRy-NAFnFmAZziQkS~QXh{Zo$mu(7mpn?1sD;`%u4XXc96SKrk^^*C*kb(bJPWDn(x;%fB^l5CVP8xHPd&o5N{y@Ggem-LRn%eax>TEny4Yi#68A7 z@6alMJOEkd;)E;{Z-_l#O@ykbGOvEk>zzbbwsbG6#XktS-;ra@MWJO z9h_{c*6!E%R_D4euz9``>-#bI>5cBHt~H7?e26I}%y0e_(vjT_8_;TXqqvRt$~X5a zf~Ldw7@qd0pHVGcnllVE z!YJJBZpkylP`f)5kPTN4{>!qnt)1;@Zs*DU* zsT)ua^B!OS-}m!B|JA|V50e5nV`t6KLi<%)CX#9msHeZEI0M(N)djAn*B!LXC9Jxb znw?@7ei@@2>Ng@`c(Ut{UFM6W@Y=V}{&@ivoj4D@p~Jz3{#C z!(&hs^a0{M1RGD$!Y?100idTN?(%*+{?_+L40ha_ECbLj{D4}&rTwj!@Y)t~X76=< zA9Zi5P_MW;+0_mS(VWrvU)sSH#=|-@y>tc6rph{XAFNtG%$mGhiu6~Q(=T5czH4(PF>yeY{^qgGI*L?;(M=ZWMjN(etTaY8Zux65yiPQV8TJHrblQmxBc`KARUj2o zVS1FSnSz>E#~I9UGS@`s?3lFr`C7yq(pXDgAoyy zENoEa;rt^{>~dF(BV|x=wChA7h1C=7K(K6d9T^_U549LVaj%=_=O-g;+J{4UFeEb= zt%hUgIe&c7+#E~FN9(}MCD9*1V-Y;=(r+=;KI>w6p?h3H8q`dteVBiu=}@%{ym4jN zw@sC*WA;{nf!e_ZZ*e;nOj2eS0XwY+szqp2%H1aq5v;%oqUfjOs$QznG5V@HctcTg zu8}Vt@H!zM$7v_`c$M3LQ8IAiTsHtl{`)4h|6J!#jtQ~#!(H)a$E^94uXlfrugRuN zYgTFPz|v2F>Vy9AV4ER9=pBM-+|emSQ&5 zLkm#dKcMNklOGTenFH=JQXzco+evTUp2ifu{?nTi+^IkEo`LzXbg)VnWM8(uB@M(4 zCmEdCCNQBFax>C5xz^cuYTtZ#fg*C8ZUfum4;I{{S^Z~$_;ME9bb>c!-i^XfIW?Iw z5PuTit9#j;y&o6cUxrz&a&~W~pPD94ZfX`Z6f|Hu9Oz?pU*zV69n3CA)=T=<-hejw z7;tOC@|BX=i08HQ_>#|oQIbYYZpA`-MpNJkY>ZUEErU6NR>;ZPpJ8E*MonT0^Q^j< z6{tm(`@)hb4i(69Vt)N}1};<}wxUM0Fjx{)PYzQad1lMHyhVh3*AsA$iUY*6cmA>7 z;TTjtoZu8L{OL=?CSxt)1rEMk*ElY+?7^*!L3x+3{CK9Q^gwTNU_u1@0?Gl-XhkHz zSUQrof}pC6Kxy7);3^GBF@^#NBQ^NLy!G7}0hS@{xCj}l%M*MP0&bp-@G0}R?|Y!X zN4tqh+6XH&^0^VIPI?$v2QT*O>DCs@7nimNx+X|TVbTO|;ZsbYvQ+Q6$1yz4zgG4p zpD6wiI*(M{G<}8jw2y|Ig8I1pdc8_`FTQlbb7B+Z%Ya+TWanvJ@++gzihi6tl_&eF z8&gz-^8xdi%IACKYCzfdSRM*YFm7i2%=;~FQgq`-+_8mS`;}waMJhVbwsl<3S z6C7fkkvrg|%@5=z`J6XujQQ~JQx#7rv*lKNJ_Jl<(nqqhW)wS^oE40F4^mm*F%72N zu&7_5d`*oHXP8ecp(-YZj9qCP$pKqBPqO^xQHw&VtmlE!uEtkSsvu*LXs&Ak{%B6; ze<5(})aHX0(<}C|-ouGLU)+t+gMVYnf2J1Dq5j7=9|M}R{@%Mr>$eV!PcyP0_uK91 z+2v{|oz9{id;No`hb^=^7?sclHxF(U`5m(!w+eg(`ys2T%Nht@v(-&( z*3Z=dnU;jM2iI(ic$;taqY`rt7Im6s!C4y)TUC-*?l6gw3YvcS^f@~H3A8RWEh6Dk0xN36TKeVl<3;nju$tx91A zp5Us@o?6;7xVQC)#+=3+huw_i?7h~yikHL5wa%B{KAsDUuOr@#+yKYN<|ePZ?6Z$;K@m!Sq&ja2py!kd6D2@a%FPbXR8<0 z?xIo{=b^>G@#6l@K>rl{FK!-kn(^oLY|>4^u?}tXQe1KAWaDf!r`g?m#dic{eeeuX zPUu+{)$Vz1eNbrpnrJo6(`SSUV(_+Cy&PtR1)xy7H^T*bU2mMZ`$Z|Fte(BSbiF`X z0doT9u`T?6=>5we1AmYJx7yofOgFtZl-z$Dd>cCB1R5DQ&+Ntt_;fbkbLnoKW@ z@ur}I9LYyk?!ah+uhyCCyi%(oSN^`GDwC9uu1>?hN^Kj;v!W`4${}KF>HrLSSkADu zXxZe-`wlH>R_fK*&`bWsbejo=_-CGwKsE*E<2v@zZk%B*2oF>qwy0;-Ucm_HEIzWh z7b{!~0Xw3Z@h16x-VQ@aN7rRv7wvlrPyu<|t%L2cIJt8)Si)^a=!l;1Z{dR&lucEV zo%4~ftzL-d*A@mRNh^sZa7p4rv|RIOkl&fHS7FybFnTpg{0?gSfO_?}BR?(GO@6k) z8qq$z_mm;WOorISjIlvei#NFmc)F)q&%yoMVAaJG6C=xsVDMWUk2*wivbz*%4BKAc zaIhI`!yZOVIRc{s@o4UtI_e zd9Zbh`iBxYo3h*}$PG1E{hCpZ$a_rrlF@ketqnyI44#<1dr zz{^OwPl6wX>qHc;1So&H6IJpy`)-=8htsxq*g5@#ldv20<#FmYJTeZxW9^BbNj19E z{_wCV|*D zr^+K{NB{o+?EE=pAB^&6APgbbv-oBKQC!QH(&<9-`3K|t9aGa&N9QoS#x=bm(e3!R zaXD~vE2gG-tKD7H*)#!Uu<|_p%qw~SYCm52pY~%RX#4TxKkdi*kRMM0_xcn8-n}tY z6&?l53n5@xjF=UdA5ySs`pnqkK~!J3`jfK5a(Bi5-G9vfum0or|Ls5K`_Z>69>KR) z+;qE@h-1&Ow!ioCE7C;aL#pqmuqqy*RweT!`0Fcp3=CrGNw@vYN7{aZ&6 zJF(*y0J95a=M1h_yc^$+7OfvQ>^AM8M=Kr#zUl2MBfG`t=!ECFaa9=bCff*v)Kc3S z7!mxQd+iU=zaAGse|UQV$u|07a$&!`8a$}pynowg_T0Irr!V$6T>gApN8;xIdD#RP z*cu+Q26|3TZg#$yj6wsPFJ4-x?G0|z8P##QzP!9Vw7Ym4tbh9IGv>|-B!N7_HQLwN zr_Hbjc0x87Q30K=^w~}Sune;YI6{wG_ZqK^7jXYxSFV8X>?>8+)!s;ByBm~_=7GM* zIeUAILcE$rYjq2JJJbUn9Dj^YUqC87V)dcl|A`PicrcVDMZeRRc9Bmh!dcW~4 z%19FIio2G$f)SY?wWae#Y3#F|VOpKvNk&s0IBM))hxYNDb^1ox{KN?!q{)M`r#4KM zFWS}Z=d4TmNv>{iX+p(yyg&S@ZV88!NR*u!tq@j%f(j-qBdOrV*Ae}0oJpd#?5L~T zFiAzW9)8_5y0QSXBxLHD;G+mHry1sb6|&cqzdND@3gJN;cEIjILRTh!2>+s_yHF?D z_gwwH%M-lNxC-!+K;vNEgmAw`Uh@Dbdq9#G4_EzMK&*-p-oB3U>00A1h7aU9JA!6} z>!K)r&AB=+ly%MGvi;euEGETbMqI|UKjZEb;BxC#w;y(O*ck8!7e(|69xks&jf_lO zZC@~;ow7=IGWRJEKM`sf#9)@-Wq}B2)EtI&-EjFIX3z0aR)-4ulvlh z>yPLING+^dB#|(^T{Iixg(TUc`YsV4T?Z*)oBBa$Exb{2ZF(_YqcwR>KUzJqSJXqB zG0OP-r(5gJ25~}fYx&e><_gRQj!Yjwz!Ac3LRVAz-dNF9_>X&WlJBf<$gSKY_${XSClWBvoP}vzr`B zy8Cej9S`SY3sX={t}s!3+iSt*9o`YrYwO;(Q<9$4b` zaAqbim+M@(axhg(l;-uf5F+7z9KSJ&r;?%D@UIm+8N;>?M?wE-Ue^8`nZz&1(;shB zW>mEk7;-V>x$F1Ve(`)G{IDGp(7K`kGhrvf7qJS@nL1&k>NOI5-1xjw{Hzn^u)q52 zbtk4;&c0WoP;p7IThMmXO$<^|c^cz$+`jnlbCF>G{5U1~`18Qu zk0Acbp@of^?~JiuoNfBkQH)?y`_I-$@Lx(>EaSM>J-?Tov-~@P_#uejtGwbmSR!As z9lUk_+lPHt@@zFl->m#5$^dY2zfz3A{2wvWxV}g8SS?}XWxBTE4K`tkHT6wn;$u8TbbS!`1Wg%t6(0XP z$z26yG1e!K_8WN95G_DU@3hq`E7W%N3ue&eF-+<>bH7n-zuW5W*VcVWWT`Qrrj{Z2 zJ7}LIB!q@ZKxG<5foOfxMEl?*oX!ScOQ!Pf1pR;<(SRhD$&v>lFFt1WtIX+Yar(I$ z7+btOV@9~zViOJjOAz!I)4D+(OW=!sJ$`iTT2ryl@`7*t`)oA0fuQ{5mTOhP&dIZh zo0QPlv98vFPxFfQ^rO$VTI88-eCdN~t>&TeE4ChSJQYf?o)Cww!#6E9`D;!ceLoq? zz_5sN44*J|yq>j8g?&@2@;g*}-%BaQK$!Wr`*%_g#Zj`*jO<3S)<)d3)X7ELw7H8| zx7lQ^^G}S;1N3=Xv}<{+Z))25PYox@)1lz|LWpbBS@U^8BIAKA!|acQ=9zYd(os7` z*ckC^BVInj)b;+>3P577oD!Gn*b3S4My^#CFB~40LAiEZA}Y^uP=_f)Ag+u-)p|Y? z(HW5#Z{OBT(CdUX16bmUR4$;ZN(~t;P%R6Fc2SdH&kSqKdlFR_dhmXX?oO-CM!-+S zwq;f`N+$@jNgS6cx=(+fhBBuQ8qxwO2ONurCY<{U3Wq%)M~K!a!Y&tiE8jHl11*u9 z5lZJ5U()l(^`w zw(7>jEHm}}^ZMuCBn9{xDDoolm5a`2NS~w}&-tNCcyf;7CO7pyB=wN%oTFMA_(E{# zVc8jeF4Z@POHjE{%JG`V=(T-h0=UYJaNL>`Lf?C*&g|mAD)A*I%=Qi0X^tMwgOj9R z9A}pln%>{`Gn_f=*(CEfAha`9z>0z_J|IGRYA4W4rRVrc1;7H%oBed~yP7v-z>ce< zRLTt+$r9vGq}4oKPAkMqZq0x~ggekTmw9_8#h}@*ph7P56Jzm(yK%Lu)y1G#mudLy<50U zRsCb2xEd%oPZG)MVP>!TB;0X>x~UIYd0Ne>lnO)3!9Dzqiu7`sYg6gjr|5#ct-VS8 zZWANNr;QjR^?4z~`LmI(7DHki>!+2}T8MZ*E$;*yU&U>3+CE16J*fRTb%l=HH)H?q zTgH+u=?oFuY-< zX?rskd(q96#+gZs5M9Y+V}gLbgwkP;Ue9nku<~zR3Q$^OC1?M453H>Kns*djwh@{! z8n+X;hNz3ek#L*ZU~lu3t;9ZQn$2LAJliHn2OcnpN^kF0XCCD-@nSWhksU6QFg_0zaLgB67)=TmvL%k}U; zeklirAB5{*6=0CpOni8Ld(Ir(^!b@0Z*%Q9jpHFV+}ji-s`J_n<@Y?IT=xK~hT@us z&Rf+ktVj9)*-+i;r7JsKMxjM0nb$WQx;^s`BJGGl_MM612d2YPHzlj zU5-f)_(As`rsOF7zWgWyUKsJNqb78MpN-W_dzp^U2Ipe7Ay7-}30IgijDM*P#k!V>E~Mjzr;fe9UXWOWTUDm+)v~ zeN%1-s`^_FiSKl0yOi4O|HD<-*^U{otzaP{}jGed9Z&wE^aXZt!3bJ_;o?g-DX?Oyz#5fy+xrTVY3i< z;eZf8!#}69K0Njoql*<3F5t64;X>9*i5MQFIA*WPgwB>^p+yqF-D1z-c;^;VQUP`{ z0|MfD?Y+y4uXh8McDQ+NzdhN0U(b|LiNvZ?GWYzbeKhW}X?H`s9{|aJ{sJQn&7tvR z;8v;E)R|#p_up?f3CM<9sxOyE*tx2D%02b z?3RA`kDv**x{P*@uN^4xUYG|IK$rQ!&v29S6mzC#=sWPayp%;X zhOjO+2pl>-7E+o2=&xav-WS;o;a*z%L`A@Z*bS$okADCVYdgk7bwTPsLfb& zVRCk+0^U_xV~9}MofGujzHD2!!bbVx#~C@YT4q({vgLaQd+Zc2x7j97gV<&_nB8j! zim}-INS`4PrInR-s#utb4+@V6wLBoUi~EcEKtt?%%<)P`j)Hqxo^pY!cQPr=*JBX2?1>lWR}Cugs@ZQ0k%Ru;Bid{ybDS&!s!s zI=$m|?MVDTbBD_cI9yGM~20hC>uUAyFEHyTwaGEBWN@rE74)``;Avak8Nu z_4Go}NOJI{G60jLiZ(3dhDo2#Au?(Xg$+}$-0+}+*X-3#}^9d6}Yd+oLE zIqkOl6RKL9?;LaV{`8&&UFpfL98E;D_l0qOkM|Dl1)x7O{Vu_aou`FR=0TaKk>yXFbJ$38c9-tOeRy0q_sr~bDQ{e$$Z zhk?SS2Q%)D)T7(GYYW*`mrwySIB%?T6#<8fJIuS>_CZeF*PVNp&XkLdHjr2N>&>c< z0RTcgPuX$-*sIhLc)WVLnicY%o5|zTeRFxRx3>M{@YlIypy_w%euT~ewk*c}T|S(O zQB*AS4kXz>YL{iJKhGBy+Cs@57-wv~;z~c|P?9r0S`qOEsZxx2b*kabF@y@O!hpli zm*Ro+WY+myW5WGB+t?!6e3TFIfES~B#ZOOJln>l>__S_ zX)o!%R<~MtHAvi=edB`X^v|)VYwS@bEkv~WqMRy(gNQI01sU=u>CXEp&`M>%BVPuq zVr3uMl`8~6I~2ni{lnLUoglfpt<8PHuE5$CM00G83w_Mkaf&gwn^cpOYb;_*b`7Or z8Q5O%-fi^W&WFw1*EaA9n}4 z2$BF?CZ9TJoFvx_RKt2b-U#TQ`qb@+7#4ei`Y`+GkPSzX-K<8N=0k=Zj6RU>%k9m# zSbCF&wL6H4CMTY>mGJfaNwP-&#WSmSj_arUDE>!7u8#-koIAd_x4ftQX!25aXNNU0 zTXZNNJ;yOd-FWYWW|F3hy-(lR=TUr&sq@V}>?=KTQsW?pnuE^`KNh;8y1UJc>-~8!RKrXY?0oa7l;eo}))XAAyfceuaZ~1e{H0qUR z68=*;DXgQT)l!@-9=XUzb9ua3$i~Iy9TfsKbR&ip)$Bjmv)!9`)EWx#vhs{BFnrfx z9kHt!wH`&EZLq_HQV~wQ``8YB(0(dHtYKx?=UdshUn4$>#H7P-6P=072Cvq&TB-1c z><{jDpRE+tX^3zYEUp_g!rT2D8vu)Wx^yU=}gc~)Y401#DC~>Rp%~F?{4~#cZIEZclJGr=B4_#Z;{qkcNm(&O{pr0xV zxPz^uTLo{C%VkHaLSpL29v(3v0m33#gcBPwS z;rE-fh333#PAQZIAk)6Fn?Jdj%!xP?cU1x>x=_7u!9M z&&K&%0+)a!!OC3NFWN#eIp#1+;F#^Wt~ zfK)+{-wXBs&Gdy!c3@xoMmzA+w;_7VH&9+I!{49*OSoob zWUCdkPeLKc5RUDuKY2UK2*>GvDxUm74SgEsKj2RHDs#gbJQwEF;-iey+psm8PNP4b zrby4^i(-yE?lCnHTeJ`A~_zuVpWq~yDF{gpk+KLhVWH56Jj5d|0=Pq`Rpyk+;HVwwc*w$A_#7(GN1#X1o%nFNk zO0!o!-b4|Wz@(OESEyIvGH9!BLfZ<&!mVKV*KCwAAln5r(7d#C(&p@NpGOwU$kB;) zo^#6U@6ucSp48PvlUo3SDp(Y%aEkcnu$l0FwWyVW5E(+p+5`VP1Qnd z^^TKjlkT%ErxXgjVPyaLIV7m;fw+B2;1(x!ksWF@YlaFIA{~zw@d(CZDH+#u_SQwS)JA?6PzvRW|L4=e2@U21i(yoS{O$I2 z=b0o&m0hO-2II!Xj z%&x-*05FMt9mxKqe<89Yb8zVvBThT*kq9OvU=l!q@gM7TJab^N>&iKx(76l`t~Nw( z?_Zihg(0ZM$gbw3Hj6s!6R&(&k<~9*$VINPmqSKDO53NAag5tmo;Y-+5l6q+AbHTN z8~S&r_C8clwX9(`2U?_VOpt|(PIvX!p799Yr7a9P!X-ToB)-oP@RaaT5; zAnmmg9q*feHEQGGXtVdLL>*>VFXEqp%^B}tJCkJH=D!w?(F^6^Pr&A5XtMRiJ999| zGaNs$Mp{fitf}2bafF-5Id3N2(qZjK8on#mK`eKzY{yo(>z@f3dX*!V?n zbG0a8FF@APP62I`_jYmf8h94HBD)}<nJ#ADrW|{Hy&$dI`YM zz}8B!WmJqphwhEWN|mDp9hSB)w_-lai<=$V)(IqjlgGIOnH{PC|0!MvG0%_^fbT8% zj&T)X?djcrdju5t=?VsA*71}Pg%~44 zY+1iV3iYh;KD+M2b04F5+{tH5EzaEB_v>2Z`n6#d6j9Kf)ber>d>s7q3)-uC4>y#m zdZQ6@Z~uyUGP+&vQC(_FTk92mO&G6;5$%3?mmG?&v4N7gVM}VEkR2zi+(YT0c5o%qp^2GwkF3L5V z{Jfs*x2VHt5C5E(pW0Mf+Vx3}I-eV28&+$;0aM1_+U?6o3@P_e>j0gB(T^bE46`kk zAK=1Eq}Ny75F6*#kjrwVHwHBhtBVqTR)V>by{=Er>go4LL6Yv4(V7rs2Q;Ly3rAD*uDLwqk^&pa(b@q!)^ zn()TY%Pnq1I~mSwE1yWK#!YO^ z{Fy4RVmdE6S(H{+b3LbvyNfvoliy^#$lKx#K3L?YMZo2J{|MC!kKeCrkAaN9>zRj0 z@67SY8s#0~gn~&d17hDpu?k}X^h1S5vAhl49AeJ)VKD)_Oxfi6MgjIO zstHdD3?=kx{R1WVyhN{o@xzB=Bbv1Hp9N@7wgdiJ4ekWS#GUHNFjCX?f$LlFB>{NR z<${VX8vBj$n@o#bbY|;T@?SP1Ym~{;!=;ov*P|m8bUv2vxJ4P5S+F~4 zetu1&!;$V|?C?bdhAb9Ak_uNZJi_zdtXG!$GlmE-3G?phvTG6G>+)i$a@5XsQglHE z4k;myr`qXrStVhazU!`VhpU{!SJcCy&Iqq&Yxz99cEf*l!xDSR%!8u-wj9Aq;}T@> z!ZI*0KCY%1GZRgKS8s#QDk=o_IXfheOL9lK^u?BlMoA_c;UZX&0-za8c!Y9keu&%f zmWLIcv&!t#`+yokP3NB+8hK7wB#k)I7_GRi>@bp0CKoVS3ijr;cwitk-CAYEIgYYk z71D5ooh7xrgl#a!X993EBo`@ycta=Bbo+#mJFrwAv5+I-TyIfI21EZ0ah!idS#FHU z%y`zPh7j=C*X?DH>u#c9$qnmNNU|l@j;viY47VRQ7qZ%poV@@9S$MNK=@s&qpCdAW zWPbJ@cN8{fqD9ocG=^s(t9`1J+{O8kS;pai7~BRRTigKj4Yj>CvfJjC@Vj zFM1l2nVC!Vb^1%J0Jf>}_e?}P+HG>b9NL37(ybhAiq+wX3JriZq{|*jUyjZi)oqMR zd<37CIDS%EfRivUzNQ?rjV;CNI5{QL#!1h*jbCMEPL_vN~@LV3swE( zdV1?vRxAu8J7<`td}Ih<3w@s+x`4X+3|;~Jv5Y^Ki#ic;Lj0>z{R769bYY7?#r-7@ zC>&&`B0f&PI1{0J+JMmwiq99t0E-bHM)|M8o!iB$Y?ZWk;^3kC%;z9IyUlAoIniJs^k<4q zW9Ov-)4Jfzv^N6rKDUFPK#pii$=8F+es<$DL6Io;hBZcKQw>QudCUZ#B& z{}kGDFz6pTi3QFIB{9>7<#0dR4qmNM?Ju@N==u8vh`qY<+vm)?sA8HMKZ|K3%j-);t)+@+kl?ls!H-pi$rHed)C^kZ z!_u%{Jd{1=4Inlcz3^QapSrQo2hj)R7TvJGO{#cG*$XrJ^)}xYp7>2NE<3EpVM_=A zPY5Igh`;X(@v^x=nn2s7jSGj;UEzxzl&8azc5VP%f46^mYDSslftngiOF8XB0kre%BA39=nxEa4&Z1P8 z{w#ZJDS%ArO`8P6Pg3)Z_zS_; z%*lNj2Bhx-&HezzdiG3gyaTUpk2G@I6q|#|N3rq($KAwE7bCQdKssJJ&m;kLa@JXS{E+y~zfWJI*&Evzx-t$g;uo@hD)V*!f?pdN<6eRhyLN z;wP9%1n@s>m4{|@C2Jwv9@Q6ek$e-W!lJfErcI3$53!%OhdgO3<@sb%jn7nF;O%Lx zVSiLb`D$;aeC6w~F{1xl)*MA3$>C$&4qa3;^^u*qE)}7e)s+635&J~7C&>m5nqD7Q z*SGc4bj*1Mj~U)_G2`7U(C~QZeF$Yyhbu*JeEbqJipHAm%zL^jX3X^Yy`|^7! zav9;GTpD3Mvz)&VF_i^Yg54@+%t}SFV(S7iTTTw_6AvoAVy=F7spHIiLr+`)oBc`gV)G-!TiOB3}ndK0ZGh zh3!~G)WEhAwzAlNugOo7))p&du^I4Z1hsMxes=y94J$RkoX`}Zgc!OmZ0NB3eeEQC zXACC#Re|2aQhlKWEkB!bun;M|em2_ZCZTOFA#fuu{W^RfF4ZSa$-*Qk>1ZOri+`-Z z7e6pBt{DRKLqz@k7)eF{-c`U8D!C$1X9=E`i&F>E55(Qy{f>nH`PW+nx5Mz@&Jw{+ zvdZv+duH@^20Y5_xOA23){7_y$kZy|vwX~Tm8+79fLYllhNP*lYFDb{JS2<$z3SWU zlp@kNhhGkmbT6zNGy0KWc~aCaBAdC+>j^fXKo*fF(b&IiJ@oVqH|> zn_ToW(mF-&*Di1XJ-uz2$8&+d$I7PJe;?j&E-otZ82x5UILBD}s$fmm=+b@-(`<_2 zTHdZ>VNRmu0%EdfAraSTyqBQ!$nZDdtR~F`jcW=>CQs<{KDFI60|m0X1Ka)+9njf^ zS+rTy2VPMvpRnBl(UFPp9D@DIxGbz%gpe7}nIIsO#E_GMH*c0edXVvVCZ=rhP2;;P zZoY)Cn8fcm0Q>D93Z8r4UY3d1GvGVeAHXNHiUr{KaFr_vWSw@Zp%Zk7oMfuM$x6T~E5*>0oPFoKbE%@coeqLWm81DFD_9E!*G3??gr_mni17XIc z3-@6nT0bt{=Ug@7S8#`z#LEMUEAA#IUAd*7Cq_ID842!oEy8a63a@|^LG|fFoY>v+ zlQ|j0vfJ@_%I=E371iOavlFn9=Seb4uvg_d%50HorqEuDz)^?*d0&@$>@A@nMBATT zTS>+#uw2Fd@Zp(M?AgceOW2UEI9gh_mjjJcki6y`@$O%<&P66AylIQhulL> z5)~|X3r;L`&qH#TruIZJTjmt*35|&{;j56v&lUzsn&Gv#w8(jB9a{dh3S>uPmR+W< z(KF&Akz~XnWO%vYtzNC^-YPR%$(L&6xmi!u?9gygB<&E01R`&LjOY)F<{Rnt@<|ph zgNW78#1e=m?@Eiy<_#0I9MFi&+0WDJ!w+HBnUHIL;vS=#J@BqAvHH%u*b1%UODW8E z7-_pwI%rbE=uGoK?#K6^2?mJacMU7>69fle#OiHBP_x`9n1 zWxWq9g&bJ6UJJh<652CyK(7z0U#mH@2-~Kqvr8uSv$Dpo~DN{id9ytaK*GL@`5nxbTn0zGK3R_IQ8e=?>m^ z$-!Os$YlEBFFr8nj#|;d*|I&UMG1aS^E0N8l^;lRqMah#hj;b(O^SAb?T<$@t{X0V zM?!1}L8j^5(@u6fwkm=1R;oHKLyIN z>}0a#qotz00V3f09c}5`W`p#1!1bm5IcOa4UT&rRRF^5wq}C6(OoeH*$dj+6z;CYG zKBTg|p5F9fD*S0y>2?eT2HGA&S5?~ILRTw`=x%yDZ?^6x0j}?N?#~mIHr@tm6-?lN z*5)aU3h$s$$J6#19&iOb6P<|rCo~8ISN63z2pJvB739SK!xd!LWqW(5174Nk`y;=5 zEOBDkn4kzs&zaPGzkMwjjQ-j+Syr2U0BO3dAjq7>c*Bi~Sko8HQT5_`zV~8G0rX(p zW#hO~U*hkCJ?}MS#HF7ne57nHTY%sop2*|TjfC3U?>$vU4`?=O30p2sCO$}&G?3K~ zR%xo6eEG!~vg*%+GtM7bxXt;37eh3%4PKA$Nw`KVvqLcsLB`l%;j(1hYt2#|)mMz}$0aJFnxmFPdS(32VG2 zaj3^WDvo#p>G4bym78A^q#PaIfE=x3*U+?!XKmFbH4Zau*X(z@^z2X^782*Lz6@;}~tNEEB`^d7ZQ?gkr_S!LeEghanYY!BMVp zYtc&AxonHe&!BCqxRCYo{s788)nL=pY6q!O*sc#p-m%g(YAzr0%m|uwLdXV)_}Dn- zDsm*46GkofYNGbeoe^5(;4QBZON68}TQVJH+*)ZRZ7;@;sT&UPCHjdh*PAUpzlClzQkE1pU9Gvc~{il=?HWsazAY*GC!RU=P%(09O$p~R`Hz( z|1rp9$iYV4@6x$8Jt)tZFa7DHd2Rq7Op^Y_{5Wm!zM@h+p?2Yb)Po(ZkP{=(3GE`w zq}qjXso3$gaK$PFE6iO2YoWen6Y37PY&y?~hpK2Mz&xTg7|zqhmMBM0xA`bTPfT^j zk;OYoeQ1Dm$yAYFaqe=>i#lx0Y{aU*7*(}xLI?1gl+0$Hyg2o_W%s{MJC4%UvPpJ( z`)g~b27cnh5m%O?16={k@{lFtl?MDt_4Sue&XzMLchbZ^P0_(^;gkQgg`dPqmfy@&ru>OC=9biRNhxV;B z*X-jrS|n#mSp}AqI>Q^FLUd&4jDLQpY|V|X>yfT*;c&7RdRQeQpk~mOh3cp~&!p@j zE+0mio{-rv&Hc0_64>jPiOnBImR-bEy8~+OkP9`>umnqTz1RYF&ku#8lz+g>@}T}Z z(aPon!1G<17vB^N!2R85wFtw2|NJVs?QY{t!MXXFV)g4yv$+olKl{q2_t(3)_tV>% zj%Ud1k@??8c^fMjIJ5u*hiir)IPk-UaMOL~omN8QrH=_pY9wS)YwFWcul%!M1)8^a zgjhI0*C8D@Ub)ApAx&be{OMZAuHG6~XJTAZ)(~g=@qb<)mGLlO8Vzt|8VG1+c=iw z7o04%eE!O5A@(x^4##6JtsU3H_`5s*0qyZL4zYgSpat}DKo=sChm~cz$XCPZPl`y# z`Gv@*scJui)dtks@xx+Wp?%B@RX5gfWb)}CQmU7;t9u!*XuO{ftyAa zQE@M?w_dcLMO%sFQG&c?{C2=)ecI0vD-Qz61lK6I)u%79f`{_LGCc_)h#D&%CwBUw zy&dP6TCW&%+_0#Ml+G^=lu)V9P*@BBpHhl`k(GKC0_TRWPH>SbTK(6XaIl@Iu#7v? zc&zb_w~xPOJ_qJMGZyjYNN(Mw8@U#cpcl-gT096oyfBfW7TmqYYf`*SDxaG z7XsGo4G-&O_#sK97f6ksy6ref!dS;Irj@g#qxsmg{F~C8zNpf#2dVVc%bCfQ<(EQ<2849qtj%s@mnoYR-xRHP4rY=E{?xSfNAE}E#&a?mdC32rYk zF>6QPylk1C0lhXi#-@nPNV4b$8P5_XXHOh9CXPoxss?+Z%7>vgQYOvGrIX0JS({Ct z*PC=DV9x75;&kbmhR@rCY@6froIV-iCejT<=iM;)m3#_L>99f{n-}b)1z}FEwSqYv z6&d0V?N_FiMjEfH+6=sZfi#I~e!DM!@64obIP4T8JhZZrnEP#kwuW_O-}SSFeo`@jG8v2@^uZ8|N1?Hzyswl`Wx2R(nRG$ z6z~{A$q-k-vW_{4gW4d;v;e(zuf+t*^7z1MvS|vW(kvxI2X9;YUP4(_hC6B>x~K<8 znAe*`*0urf6}5%#P{yx$PBacGnS*&WBxMkpvo;fRGTuGt?PSQT325?)0eqD>ls}8= z7QlH73*V zZzU3jMrkNi75BpUv8xXnY}sx}E#6^P$GEC-yjrocVFUS^o=v(H_z?>s-DC3G%-=(* zsW=f|Gg6qG*Qsfa22UroFhw2MlXpDOO?Y$7Xe#`C&L`h;2*I%h$Cor5G|hJw(9EuI zH1>6Vf_&Cy!-cdhJ|bOhdyFfWHuuC}`shjXQqWvG`Taj?)r02WD>JLP{q@Y|-Fe4n zLp!?x8~J|uKxh(CXicSu2yLV75fqgrK)90qyZuW6txNnoCEwa9xQJBy#&!za-aYu= z?cJdA|Es+lo5g6bAW{mHa{wjNM)|a+NW6SW0l2O4S0Nfgo=+JYolYRoOlyM6$I(rw za;FRxlvxNu3}*6VXHN4RDEBY=MN70a1c`k)-CYc+pL;EC4ICyW-Xo0|NP{E*hIedr zPsNzs^qJ`WZSPLLn#IBA<&JS{U(nWhUATDdaOnhXpA>GEVX1hG(SbZp4<0ve`ZLfP zS3SkX6;2ZL%F<5z~-7HF&3!5niXJCx*BIF^vkeLU3 z-XUF?4sq3Ed8&@nKV~EL4{`X$^@EdGuuR93-kQhu*=cY=ayj5DGo}#MKDs$s{k?WL zgNmHZt^bAjmNj2TxaN!jN1p_Dut7bEbJTS5wIlKwykUqI44L$=6o`m>GN-s@>>pE5 zcBB6qWA&nG%n)%THMa%Ho)y{_I`%S#_M>IIj}w0!Jz8cjSxb{xyO?rKh$}@i?AveM zby**=dWB}apT!!t(jOaT?+d0wm3mG3K(8zni@hET-5f)7AFfAtB@8g{qI#?t*T9iF zHyAe%1nNG1okf;;H95kt;IPpLMarYE)!k;M_8ouWX@UMgHjz~NQ{sXvbcVXHNB!?NB+Cl(_XyiPQ$A?HGszk7OzWL zd`e^{{10L!*TXwYhz8VVD)-@(AGe!;yBmrMumIE4J~WO63LA7?p8zm=w0l{fuS zZ;tl*clU$zeZ=9T*|~r|Ww)x}=13Xc`rGnq`wM^i z$b7jFX=E7L1=}s%#_cQH&rCE1=-W<*`0#@!ZajExO>81JykQ9XMFxu4*7ACnTYNUg z_oVeyp*Wjiiff+uaJ>PH1%=h>xUr<(itKh@mD{U}DBxZ%Ab zgZ@Se^1DLH1p1dfvIKa&RDf+DbSche4uhckwvN@6#wmW{hL=|!8b!;>j;7z@s_d25 ziH+w7HsJcD+vgs5b^z!$bNbi%xEWKT0-|817un~eURM3WCu#h=an;4^8b~!&@R7)7 zfqDN1U2`MLe>@0Pr7X|7tJTH&g8$CXHe`JlXY^DX_vC%o1)OfjY4Z!F6R*Tk?xLwX z4cR!GK&hS};jCI-pou13iBc`*a&)>*hl_nEPaJvV;0Bg@ zZJ7$Hw@c0p8K{S=KC;lRTy+q9|Hj-$-iRhfJSz3TJ7y52>bgH9?!DTA5!65D(Pg{d zCH(M6?efEAog7zc6;~uL7pFATfu@z?DI?xw)4jmOBz;#?1NZq6Q2SY^^J+tR=m09Q zIe`^>!~R{_tz?}{#0`~_fYGJ-Bs;FVr*vTPGROI?T)IH~zy@CCt9=70_62$sb|0zC z&x?JsTwk3qNq5+yAan?xMeb~*-@%``kyM#Ast2x<_0#=GlK=}YS>kGt>DPWJ3rN@W z%+Dv^Ba1mShHFUv5Qxv5-ye7-U0l~!xMhqrg_s>nx33d=0w~oou888)q#8d{-B1=F z1beYIwr1epnZ2#+PojSZ%JL+)oGw~l7gTAS@C4K7;ybU|C5_W)%!Tg^K7u_`+bvDJ zn;$(;8R`M|6DRnIoKC42J5Khj+P(k%P*vW-1xKqMY`onyF3)8(Vs9SzAR;!hdLHHk ze?DAt_-2sZZ*m$a7HqtFXbmD^iX{3 zsp6(B>QByTVJc$l$i#a%@csaIxE$`G5lDP@&UcjHEJ`HX-EW?Hc}(tl(w5a2DgvDS z;sdg7U6YgbG#xN3HS{4%EQSp>T^FgWFcaMeB93`UW~nHK`M#D^4D9X_QrO zudu(};4(%I|o zvDcu0&{~_5pZ(OK!WYa_#M?Kau(r>$o4o6QGihMyHn>97M+fNaj|_!*EHeI8z#(B@ z_JF}yVI-JnBaDC0!V)#e!KSe$ClIBszQwA50ALZ_O#F`g4epk+ORQFI34;OV(S~>> znSLd2Y*=TKCddpS)CLBeo+ts=Gqf_Lhy!rjkN)R(O{thVTLx>(>c5k{) z1U1EhmD#ZshRC*hC5$y6j+A7+XRXL})+au9XRnVZvqc%D!56YiV#SW->OCx(_6*0r z_w8zzNJG76JQ(r%v>l>(e-u^DnjY3HHnT7u-2nI&3Q` z-y(ajf`$wv9&h%w9c$?pclbO)sg9-GrPOxTJGX!MaV-C%!JA+ss=ImJxZ_;e)oBq+ zG*;bwv)QkhN(C6u8`9&ihM2Mlfl`#R(7my>L3R*%#wAc==Anvqv_cc|PL-93La6=D z6I-Zs1v&6=KD_0wHQ1u3A_xYzMZ(!z4XF?yY%vpo&d4I!Qx$CB-FZ8xMUai{2%lm#dQK zp5MD!uQ=Z7j~gR?*B_9N_?lHuWVcDpl@?P2&?Y+$uvNN#zM_1|$#2VKZdJhF4kc*o zzodsWM1sUaJpM=m(~O+)WuZ5uG$w4Go6pw3JcU;A5d2nU9CL1K8C)i18voBI?8;C3 zvs3Pf&yw?^cCqlZKNAu^c1gV3Du{^kI+}jqv^E4k(DLw^JHSK=a`G*zNL+mO4a;@Q zUquxtE^s;B|DZd)Ee@H-eHa++ehTc-dDg+uQT0sB4kb#~uI}=Wj9l9)q!DzrBQ=02 zTD?eVZ zHYjx|zWN(LSDu0mAP;vo?E=rIwfW2)U*pouw){yZk`Es+#^N$5IrBO#Y*fIlbK9c`Y8b3%S47^twy|X?zbFe zXxXvg1l@3PY}|y%>2Lx}e0+ZuY_jnu*R4do&GH;)SIBW?%}2~v&V25?zQu7N;yx=& zc8jhOjP^AP9RTHzk481Oo2Hy$-qv=AQONlHlCrpUL zQ99r%T_q~Fjr8wpP>~pp!|FWwsFehHGd(j?6&jxl-E4KK5xvpBNQd$ zPY)P(1#E2bBJ{CQ_v$7_CCldDk+T;~ly~?^6=WKa*Hv~~IhDADQBYmno7C}V?OF)w z-Pye2a*yg}FRycHPaH%&NmxW12~-MHqRn|OA37BTGG}E!PF)bxu$A4m;0&=bu@RH3 zS#(euDT=o!%yY*^RKoRU0?CRAb2bK}?eG0j?ZHmVb}@+B!RD3@Bf&Rq1LDnzOH$5J zs+HK$<+*FH7)dI-u2ESb;E>@!SK<--{MrIHnPB6(dC0EB+goL~LVag0;2Upy{}8z) zZaTUHtd8^TBi#->Vl1Yw97O+41b3EepWa{F<(84LE`6@NW651ee!=QkL0^bx!F;y6 zsK4Ttmu*_s0@fVpCght&o$S8b&bc zCx)z37ZDE!78R!*C*@-U{b`qac-4aG<1r?lp>k?zKc4MSUGM>05c7 zy57xJ!Qo+0%P4LL2lb#xUh^cYzYOu|{^quU$*?e{(ARam`^05wGH7n+o9}-;(sCo`I}Ofxpj?d3)au9k%q`L$o8dY%4e! zbs-MeLKzi0Zf}(^Ge=)16No+L3-5(wBAA^ri+;PQ!hcUW{wnPKoql5S4DT@Ob;&6+ zZYpjFzKDY_VxzajWrJ;F`exVuy)_I{@vcHl9ze5cW(&Y)%PvI9E7 z$2kUpcL1S74gnl@e4^G_2s?1NW1prZoEf%0mB-8)O%{`OcQ`M84NWit2GkGgBNyD# z>zr*+u(6u#o3O+P5OYpeB$mWYt_Tj+yz(4VetfzZD)k)FGa5Y_(<@}h&nCRuKKrot zE7`$a&wM)y74g`v&QD^+etfRzKL5=tqOK>Z$ZmIVWxvQiqg96G1ZZbm4o*GK=bcPR z6ibb^G`Mi%duf{-vbFxhi)b21fHmO@>h`p34DpiY<17rfE}h)qQhCQx7oQE_?OD|L z2~+KVNA41$ZAJkp+y`CX3Z;PpX-@acq9c5X7dQ7F_@?J37t%2l{_=JKUUlqCS`Dmv zq$BRi|CgO`8b+fwmRoZ%AQGI*wcHFgI+rF8NxZ=YmHatEwRFX`@`G|k|rWbfP{r%WTF+PxYU@q)R%!v2Upvd(0QbRMNkhFk@E zkYD^Mk@r2}(8GgPK;M*}JW9$$OHpqv@iF3HjjkCx1~h-nH$m%BmKvlVSkfqcshsK) zD6aoNJ>11cP{|YYrJs#g?JMrLQ?)S?$jQ^615_l?pXMPCmy99^!aX=AAGhE6Hy+S> zuo3Lsl~?Og1w3TrR(B1hIai~)xIPL*)5TYePK?PJghD;Na%MevHo~*YZ4dr#^=}0iQ1arB2hBAofh=1 z-aXgTaRl77b8Wkf-OW0wKXeRe!qIiQpkLD(rSIe%uHa5;Iwb<;rfuvDIX;+!(w zx`f~hty}fp*XU8BN{X}wHA+=%+cMA~*jXv6V=xxopIdx9Mf)$Ov4Mi$6WFs?3){Y_ z4d!s}!fgwCIuNayTv-+<3EaIbX$TD7guW1?6Z*@z-dPOEvVg>ciB&JhHCY5zJ*S3s zF8ggLCp9i{$xfVU271NcfRJ>Io(a+WD6iH2iQ|1q*t}I>*e4>zM~J^qM}nxn|Nkh^ zuK#y|wp%sqXP>6IF5l>O%P?dZrZk`l%T|tFuL=+IzNjZ5J-R>vFf6;;@rj4qazyPd zEIJZ<=dkplMsJal0xVy)fGtR2w*TyN{sH(Xlzkifi&IN{9)`9O+vSdAJ)endz+Qp& zP0bt0V(a79{O>zd_tNbcto$zQqsmd^BN;}@L=}wuW4}EQc~(bZ4%BF`A@jRu58{nj zat4Hy{ZV71L8EAnH>APAkx+#SjIPyG%^5xq%$EcFw=ufEP--ZZ`Wy+Q#P1S1pV%5x zW<^Sad*WM=RQhJ{AG-+QX~y~pxLW8*)(t+Plq5Q`J0+)l;{mN>_uM)O=T)Xf2od zY7h=I_78qnF*~4myE|MCpE5k6Vq1q+Bc5NLPLrCg*Bie~ z(c20Pu8r4^ZuOgR@R^gXYG(#L+Dq43OcHrh&6)$#@`qq~p{2(BX}=pTdQn;4b!_Nw zV~57NsKYvZD0ypHIGaK&us_1)8vJFz`t_WD>QZ9F&7`8--+oQedBEYmsT?w) zzZ14fjy*^|uf81u`RCyCx%Q6>5dX$xkOA;$sV^$>-E$u-gk0c` z9okv{H34G3e*2%|tG@)F&KulZq~xYqEI_w1dNsTi&WaQmscwM&DvZ$XmM6aNj|e(_ z5Aj|ygee{8ovC&ac0C38qAGjvv2!YfM@L~xdxu36M{={D>Lx}zo}$a~FLMlt^Rvj> z4FwUaYOnZ^r5CG9UFPL=qwmnEaBbWo?=qPveA&k2LjS|UV;EPcr!t))QfD9>EC9>{ z)Vv&C%6T>^N^!^ZKfc%ApHDtBsAwHH$b4fw*v*K^@!ciT{jf**5lY=?`}1WGM^u=U zOiHSb1S=rqjW4c`Mil+0MOdknQqG*5zh+rCP~MkJSLW9zbhNk(&Ck0TYL(~SE|urn z>mEKG2jppx3+DwVg|7xnIE8_&y|CiiYcm%rl?eK0YRs@V01lCxNx@mLYtuXM>! z;lVZAp8r*|E!c7Jw`QB)qkRl~W5QI}C`#Toz5Va#;iUwz0q)tR^`g$$P(Sk@eSX7F zB&xPiOp~MteEJ=Q;E(JjmpBP&68u5u!q}J{q6gckZFM@&4@pQ#|!wecenXr7?T+e z9>Zw<*mvx#xdazD{P0(j5e1}rCB;vhpE=58?9@aoBC`~-di+Z3q5Mi(^z~xhkQsWp zDnKj>V=?k{(c?M9y>Ep~(iQSazWz@QIq_|lOW&P=+sz6u?LGr7)Cuakuq_(X{=C2c zMypt%{XVZcE7qpT#F*z`xl7XH zibgPNsm_QLiy4Jta zTOvZCbVxDVDGax9FQj5Ru>;OJRb`#J?mklM+o~bj-UQ!Z2I{3pWIr#GN`ag&n^Qx& zn-T4&iqWBrcm=*o{$%NGk;`Fixz+Y_>#Ll_I~GI7cKg|4eNO`BMg+PhxD$R_!y%4? z_}2;7!j%k&24B&Z^w~>0sNd1^&$>>W2A3X7&W?B7{exKuQ6?yqB#W(yqeU6Q?mGy} zd`ll==l@(#C#&iq6}0jNQ(4=|KvT?r09(|GCE|f&PB!)}82^>r!PfNuF!t7MZTL&q zZwm!Vi@UqKyR?NO#jQwjcMC;AfYRXZ?iQ@LySux)yStop@B7~Scg}hKc-}#h>zd4W zX4YCCm~F`FRp_^;DtKP>rn#celL+P^^_g2czo81%f8()3(`dY`pJI}2<*~$!Kvk=q zT?4GTqd-iE~_n$fU|c2FQG2Qtx%h~zMOh+{S+P>g3sOxE=dIa$4R=M;1*3Oqga z=<53Ka!1Yku>c0h_!GdR_81Y_{@kn-Xr~Ii8kYok=Q&Deu1qU!oX|(IwS=EFz+Tlc z>>8>1gV9WCpmum7hO2K@1{n&S%iztY7^aQjgdmne@3n@_$+_D*W~=Hx16;<)ZONES z7iGV=IJF1`_g|Cxl~`xa_3&M>##h9>*czsFe|r@{YX^~2aZCi;ToJnhu)aPYv4`^S+_-p5#g5MIK0V0n7E@6=VWmHX$*s{UagjJ zHcep*;lnbZjE_^;Qy#L4(L8F$Q#-$}_8;jfG)l=JnWixH+@87;3{1E;M@qT&j;&yM z4n%O>Z;$#Rb!fNi4H&5%UbIf)jb^)hXqSG`O*6n*pPJ;S$Qb4vEgoVW%Kr^$c1ZCzLoFlxQ&~7dw}BKvQ(7z zQf<*CGbUQ1BX$`_h5{m2jR-ldUg^&MCI3` zkfP#>7xNbGcVA>!hNqDQ6G(mh!^d`(N)U>O475gVcGUnHb=foi&dF#N)l?q=G_XB3kn28Kq5Aqf9hI(ApM8Koo~~WzR2id-Lpw85MN;^w$CzlZ?$y)P zBIDm1B@n8}QQP>JX6|2IEM4taZAWHep|FIZeLA$hj!IWawh3dW@}i_Ob=#I8gvmG3 z9(LNH5<*mqap996Fif0FlVc}fPsk!jQhW;X?!`6ViGQsQs=Ub$J4SJSW2K|OA9hXh zRMW}z2V5`rmj6#5jp%#bON1t!5@Ghdn-BwNeHl#|`cH^83pM1NlapNy48+=vE0~I| z_9xK$%MmB9nQGbVYbGx}Ed0Xo9_1YnXXL2BUPk+ZI>xInPLZCX zWbJ^7>wDe75CBAwHte}ZEtUwmpMhga)321|?k(=S>BRQoR~o~40IAC%`Nvi*QhYT>MWp1auE?+DPXhS~ z-CU0vB3VS=$B_o#@=XdcO^Yw}j*ujpD44z=eKfy~C_U#Y2-Y1*mXFW(cg2nG4mJ$?sQa0oQZp;_l<{s~9zGfjY4JC) z`F=4t<#%T8@70IlIt@h}E0L$*ubv8}O9x9!i3SV!r*Q|ZKW?Ukp$DF-Zjk+}(r%ns zUOCllPDwm>;sSl~6ndSegTG{dbhLe$r)Lnuf{YrIOdsYN(ikEWv{=dp81m+%$HWsF z(&hp}9$`0J$-pO`6om1&a4WnK^`dj5M$U!YcyhFX6YTyu$#YUQq^tls+X7klpn2df z2#P()zT({6=dXBC)}aW4;daJ(|R z3oDtn`B5D=k0GcpS(;;_vRy6x9y7`|OZV%&L*`r9GK%ntC2eV{I)(D7H>UrD)nU&* z(up)L(1GJwm$iL zA^*Wsk0wZr(vZ=xu!M`nAqzSP$yaOu(69!(SZK66j8rB+w@Ik5Y9gQrJAjagovt?2 zUoOm;G|zLhZHuX@JHT_*Q3CB-dpily7Y^G~`)Rl5KEpbDpvlN^m4v0-yJM#X$cdamEiC zsOHCl6|rhX*X>Q#z~=mL=Og_dZ_9zzL7*WKQ%)}XgJV`mCF;xwYdb>9?If%p47scr zFa0>53`w|`WK*S`tVNUvEkN*f{W+{|jz)^bH0{v%Xx2vGxsm~O?R&;Bco`@}spo=4 zQAr&^YON8A)S!hRqTsc6u!8`?qQjjifyteG?% zu@lShwzh0HSHQK;2l0RZHeS6PN6leZI1oR6`hqr?zopppN+lgH`S<3qg9wmL8YRs! zY}t^*C9J4-H^7sI*@ECJkr@NA;fs~3LP=Ty|sQV03 zBId~0JfSf%ZcmT>Dzfbu{rbtO(@;~V4x1azu_yars+Y1;OkFQG^RfQG+fqT z89jg1`jo<;`y@q;C#;|kkFYf_i`AJ52eMC-hrPX}_!#a6_6hQ`_VJLwEOV_-%WxA~`l@zUwisjq%F1)N{=>FomAH0~g2T(aLNcRN;d zza>Pg7=@6K+Bbnf!yif51~%(y zE}=uN*Z;4@wYA2^7bF)7Q~eEHNrF~pVS$r!{%Jf0>f7f~IXj(@2}m8-MkXqJc1_6- zs6G3mHaQl9D=C~BeLGLe6lGFYPa1$JgZ!(0d&zI19oZt(OS964JZ7*@;B2a7 zsxMqoqlDlh44S6|2dce>37&bdP zB3Ha2Bw2i}I`2h3KU|#+h@~4`9`^_p4s+8D;dxnSE@ni96vYEcpIo> z0ro{$xfTkw;57Q?6+v;7WzFx?kyOqK8gIv2?J}m!a+vy(uC}7$j5r?uXOuRgYiC%OJ- z?+I1%iK>0Fo3$Ouvn0Lx8(rp07)v*=DndWi*g*62MYOHK;A%hb#8@B$9*6Qm+BD31 zt*PrUkA7g$mB(|?f1sasL**sd6Vqya{NiI?ipP%7FBV=@W>{>o+@dc>>{|ell{Ud? zW3rPh)RxN)8*|r>YK4-O8V*lnQK)YtRmO)~m|N!I0X4DWlG$12l^B>w2hNuJwv3D60%6A*_d@GO} zZgReg!QFD*_&lAb7+w_;}vV zp?rXBHtF*e;VCzFGRfV@QoS`pQ;x*skjUT4Lfay=n2|?N|h!n3nF(mPkJ=^m30HiehQK z8h&D`570BqcaxS_ohK(R{Yba0rPmkZu~0#4J@3k$1qoV+soD#6XKJn7ev&~oSf)}xPkjC386*^CQ+tiJK=ZOhPhU1;o zx*-{if!lV5L8Chqq>`>qK>89OUrZ6(o;m9L;dbeLqn+oX zyXe_^&OdgM(0vI6%0EUKRy`)i20ub6NViQl&}q)&Dl${bmM>QE!!=5<>)o1FTPeti z7po(^m{-QTeuW9Rc#<5;!2%>Qm$u%idcp zp%#YaenKqDaJgiCDE^MSmAW9myDPP4Un3+#BynBl@_{qYw6&3o z?D_K1XbKFyi)K7pk6OJ=AJW5Y6r;N$XG&w;#WF)l#x-;B4qCv_0he z=uT%&YCH{3AnLO{^#i(<*3K45cDiiHkxb}Ajjs5!??;i9a&B8(;$S;I{WM!38;8b% zIbdHlFR`EeGf!kR?t{=pA7$;V7c~5KWaqN38R|~7$y!f$Z!*`Nk;8Fe`WML9ey(le z5(5{{M&nC(sl9#`=~t1X%}?K-lzP(RdC&|Xxg_5+a`TuvSIB0wjC;E%fxXdEHwd|>YmB>_*FXGj_iF$bSRAZlZHDG1x2{i5>* zIDgx+&usVDCwWyFocC`r=l`sPP#MsKpEg1h6q2m$E>2%xP9X>;sG>u-=p?lPE>}V9 z_cl!n)*2?1W64dk?e3;aY&Z5*o>39xt!Ct>IGLlegY?Y_eJ4#S{oz+en0Y^^Ef0U8Y^K zlACH!fWb9vW=41FY1!im%7(&5q8D#JdS>)<5A@oHsFE_&AKZRxBE;fnfLaIci zsYy2NN{xsuCYPmEoa4y?*VmHF7X+t4TM4ooqIHxn=HM|X+>NmN6Y5KXy8p%|CrScg z|Ico49fQjRg7x8kQt!xIU4(>jWnSBJ`r6vssYlciwy@ZTx!$ApMk}$bZ*SeP)Gt(jbjR^GZ`E%R2{;*ocQ{C%-Ra)wBA}Wk$zj2$^Zv19jU#jC?1&_DA9zyB&<6@r) z8a^Am!d;ldZYK9!HPtCarmuGX4re=BjbIXTzR&E8_X}fpO#(Vi6!p^BmU*Hg8XcV> zQrcQ?eA>~&8z3g_x#}1@ghL2Ti+`OB+{N{KNh5fhZfmr`5EM1p_2l#9BOG?uaSv)6 z8*7&&x~HcBwiNW83aAhP&yy02?gnt!zKlsFz$xWiG-Qzh}@^5wJEs|JBl?lk1qU& zQ_fb};eEg|ibp7K&Pe~CgS6J4c|J(bm( zY1%>#Zeu)$Ta?Rykh7+r6u`6S?0f#lJNJ5=41a2lK{LM92c%#b<%RTL45CMInQjWG z*aLpKAbG@9NQ@+X`H12QoS+Ut9ZXFh+>9_A^LGK86oNVB5cWTTRW6pO4`ypZUiWeH zLo6`wnyF3i#;MgT`8=oH*cAq%M&cbx`q>$K`C=!h8xQOey+~L@jl*YTufLMbMGU&C zrJSXHfjwv#YO)PM)AGQz>Z3Hki5b*L8tq_paJEuOL=vt?A{tBpTM?iD_IL2tF4bo6 zhtdJpeRe-f->S%aNm2Qt*%^eBA=YxK-n{$xf|Q$#j?lX{wu)DaCGkd5MEEi?*^JXF zW-sxMzJmv`JhC`Cb*{uf-h$#>EdJ9zU_0PKB<>k*Bw#;j&c8U@$)hk^3eC>gN+4Z* zk_Ry^#bVNpeld8*I8~4|{gYW)T}UGjeabW@e>G+}It<~&4oB)KhktV`E&c_OpB8tt zz}E0UlDmNB$wobSs;rr7f6n@Z08?k)br*QXukm_IIK3ssX!LMzC1JGG-(W+^qA z)pxQ*pYHc-Pb->UE1RDbTFdRaS1HJ?LPC4|ADim%Bast@Y4zuVGwpN?L*!a$@@Pco zuiJj<@|;^SAsHDTlX|1!v*;cPDm{(k%AY4`?7k%hc7Gxv)J_X`5{;fJgiczF#G5AsJ+&Iw6s(nsWUh_4U#eE4t$C1nq>4>$f0~Q!Nhq5f6+* z3K)UB(eAsUz&v$QJT=Bve1xeM#3G=LHA#MY89O{1G!yuyki3wrwa^@958y;;cbStG z{S&*gK9&l8wBIg%c}>t{d?%5H-=UYDuaujNnIbq{nXETX#(gWmeG->r7JKpCIUp@$ zzSUNrpU)Gqd5vwckgESrUippQxC=>vP%2G*wWv^jInF2hY5Ed>&2h23hkV*KsVRvl znVL6m4zyB1km*nLF+W5MKrwu|0&dhtc7f6mSt?ir{VjXvoqe=`IzQ{33n=QohR8_a_RorzDw1nswG$ zrv4eB*l#fWtF`zbc(PD18g$Kk|0jQ#i1hj!+k3_=c$vfD*zVD?%p|VV%V91V9v2QN z(T~DEPK%|rM-E+`k(u_{=2`b;Fn(WFJ;iB6h*CB9JZTlpb+TL!AmG{rUBi z)s{{zJ^wttmBBzyPmuNf=-*>vYRs>Q*S)qmk#qoV`kd@ zGM^MCj{Hkqg%B!k%3VcBS645*adBObxyf;af>`m3pQhcRNZ$Kr-m~AnDxvHex?Izr z092^msw`JQf#LD^t12omw_DmNLjF<86-ji>G+)C}1!zvn=f>Pck4T_r0$)xw%Zu$d zV@;$>A=rA(-Ns0~$RtoAFW)KZ_xk+acstE3NISS#PVQ=hhO}qyT(Z=)qc6RV>r9`d zVs`K^DD$T4deZLuKYR<%s@_)FQOiPmm|~5L`4#&U$N|^TXzHhdvE#s5Y&VX~gqUHa z^W+_kAW&VAX4Nq-W1>RLvU6qB{g!6iXC)Xe#@lRjRB~+xZKR5w(pMZs)Q|Y2hNZaOB|)2TVi66RDOrLMd#i00?~VY=I%3kSmIv9`Ijp|yhyLcXu1~;YX>%r0bYdm1@C;~@FEJV&~UhdV4h0k=ZQ^rseL3w=Lkd)*l~O+ zUH?Z@E6)G5n17YbL+<$y+5=B$Q?U+9?U64&dK~VRnVmUlgJ02W=#NV5&b=or`p8$+ z-`8b~0GsaGgye_EwT>lfRY{`B2Q;)SMfB`a3zvJ8YWpTS5E2^!u z)U6Y|r8;*?M)}ZBHhGwvl|R|7rPMfx!}&;;g@+=27OD<9ivDE z3f8&nc$54+J&Q2kcDKg)x(PTciS#jHj$8EZ-0TQoG9*(^*J9u0<=w1n3oW~vzt(t+ ze}_{1?Q4&PFyj*MSFG>Ft8QpkN1?uB;qd3s#q4k)jN)L`OzF{KiHElG%3q=9h&+N$ zE9+zzZiI$L+~^UU{eVjxBhr!4 zR%m8<3-9*Z65Z}U6$okI@2-&0xmOTX{)it*p;+Ee_@R21)U>IE%|5*O_N5=6TVZPJ zXmS&R!Rrdsb4fc5u|<`DD}xh#3R}WVl+ep38*q+ho5*@8oHRr;bwXIanuKdk;N*@_Swo=F*IySAn zbGRHtJyB{{a^*H*kt*SIP3GHEwb4Xvr_guEzHbxt*tg;yp*dS*6xEO5uV42;#AF-R zO)~{eI(?K&bH@{(ix?o%C1AO}Kqp_6k#h?3Dom z!cjg4wPY~S&Ln)|8#zUi$r>|*2?Eb~Lkjy+z8q<>P%&Jx>ev%>2(#Q`iP+ zg<*C5yRKY0^Xp~0*t~g=>i^{xR}ua@FByHM>Ka+HZ|+(GMVGII9}%BWnD2P{lfO{d z_@RkmRQuQ(TKYz|x@TXIFB6i0NQMf?M)3=3?M)0>c6NcJgo5@fIjMHYIHtcYvL^7J z4M+5RZI&^}Zl{qqy=%GI9aZj&GzU6146zZ$>{fd=q~HIG3Z3=ZICN2&B}q#PEDN$T ztU#9$*(=+G+-=;txsqZh>X!ScfjFrNwSk%0?0M^AMj`1qFh<+*sPg4h$%V;9eCuv4 z&AK-`wNL4*uj{B@cuW7C;0oJ3RJ`}Vx+}8xSLHV}dW5mRL%;3Y(x_SJvffX2e@1oo zMo0v~$7dUC8M)<7QLHYHwrSd4e^%PH(vlGzAqrRHnv}f9ujP?i9WV+*f?Y_(qRX;fjeOCl;^bBD0v-MhEH{xl7*)V*QB7WE=l&mAzOcHlkzytyGQD^tdg z)nAM=>ns02Upq27M)C6@Ww%fDO}@&?NPFPZJ4I12*{@DocIx?FFj#0Nl&>VW>4Gn# zsO^|PmWZ(mGY>HPBR1gvGVO5p)Z~<7FsZl?i5;gcu>)3J`fXac_HtDG#hDiL>4WfF zZc?LhN)d@!M+Kg^GsfblZZ}KV4}kTM<}UEvdUT;*_?vrUdz>*3rqfdQk{rw-U|?8& z(D}Xg@K+5^=#ZjLyy*$A;dq>B6EgzlDZWZAljm-yalz{E6(mW0Wj1W-kuOFr`{M~d z#skKTR%+5%2zk+d%9x{yTrGXq$DcAp^*%<;P$nDmzULNB<^f39`ep0xY1j;bpd%1AdKtr@19UjHB_T=fsy^m>=?ymCG;u%%+S%fYP?lhLJflfoN|GXJ^ ztzy&tD=>AnV%Gm#&5~!CsJJl4BV(0lSC{doA6)X)LaTRJ{7unbm@FuyeB7ys@}+nf z%1AZoRR`^Xi1?}%#QEPVgrl(ZZ?LN^dx4Lx2j1!qOFE3-^YuYx)T{)c4RKnp{kA0l zcx#^rgMz&-;oY!;1`l;HiD)+hm{mZ|p6Puu!2HN`Gdb8;5`w3NHy0U8*qpQxOi zG3IR`D?2Q`8rSt(4Yd94yIZoWdsuUuLA)G5jU}j*2sz17NwymTLB~Yd@qL0ymk-=m zuj0I(BLB8Stbeq_0+{g~|0_R>bkCWUtw&(?#3586ri*5+TKMs6EuLDWuVN?%7gl_ja+)TLgGLaEr|12 zN-37q1HTnK4Jgpwd0rGexnNlpfEr{~syZ?E zB2>UX$aeMfhtJ3DF3?N(7Oa1AmFC$B|6X}y_y(d`^J?*CWS0dhL6TmWqN9{fIk%L8 zio}35hb<3dIli&N;UDp`^AaH=dvNKlo$CHNzPwS2cYYjf=Fn6lRo#35Z$s9P?Ubu* z1h+)ggYAdKDVsb-{6A4-VKP90&!J z9o+=an_nqnX!{$4za(yI z%obnInAkuaww&&Lx0FI?;J#|vpvchc_S1{#!KX4Ta^fTmn05HZ z=0XlbWlUWW8)htn0Ck0rWbJZngn{J)?H8E+Jlcxfc37(0XUouS?ggW8iF3Q+eJrsGrj(NCv>+GCFjtkFe(GI z=bB%q6%ocWCOEH_6nB@zf@R`(6boQ&+-RfpwC>}&y5o?5dVTum0;N@S%AzrwcdHGC ze>hAVHA3>lPy5~Ml_zB7qy5rxjj;Ws_e~6^DYGG=o)iD3j{f!Kh9lte0UgiEBl+J1 z(WaDbYPbRlgzP8Q+DnAiKIN&WbtExxpDq0Ik>evJZSLXohCl<#Sv@9`Utds#&bu(B z9iHp|S8G!Qb1MUvh3f34vMtsCU9jl=kNDE#Y8>Q(!4jfcFcuZem(+F&;;D%o=vi74 z?`6k_5h{er!3O`lW>iJY2}qUWq|9wVH<}*52?P(w7mVdZinN$G=DQN_n!k9uVXSOy zk>TF+Pg#^tsF6DpJAMfNxz>-rRF6`>gE}@`?k5=`sfM%TAOycO$D23g_?Oaf<)JV{NnRbtjQK>&6E{*njEBIzI5NNmt4S@%)WD9 zWetcR%Z>Zkvyfz_rLrvVZ8~U==C&M$qc`b;Jq9m#1Y?#ZyYwPYTi}LjyM9mQ$HLC9 zyf{MUbo|U-@C`H1DFyu|R#-9_;Bq2U-a_j0ez+fhd1`^d;f6|J%)G)uLxr~;I3m&V z`5UpdS`HTOmTcMROyy|HN|L%>>3KE_ikq|3a$BQX{blKb?w)+XO3W}Cczv>FPcsUjBh7gV?%IiGEH9O8kxb*HXG)tht~0ep;0P$0rmtupUGXU?#E|rREm)7S~mFzA5K7YcY%>^ z9Rx|HJw=dk1?tZIEZVtE?L#GG741qR$&z=JL-fYFSdeft1%L-^>TiWrUaydNj&IOi@6qU zdC6%Hnj!KmvxHx^m#f-2dlTli?Xy?S<# zR=p^yP0hYE)!r|RXyZ=N_D^vtRsk6lhl}#rE!`ojx^nx`+h2x;Spmc^=2j{=O}2Vw z-`s!hMB!Z2vKit@#ym8zw&8mJ4A@R8kWQ?9{v(r9kfb`;dZPefzr^q+KfemtGso1J zw3NoHy{`qd?4H-9lr)QCN%;)noo;V8Pg6#6wr1t?3S04KEZBYD@K$pk@amOR2-4kn zV@Ylz+bm>KQn0sf=wI_Wq8KEZ|2q#a&^46EWAX|2?9O{Ix`=*dZZUUrsT;j@Sk169 zyI|VfQaY91{qTprAq!D9pRc|10DL@rZ_~#`iK?L)PrHM(5MC}CDXd$WbyCl0EfyuRD1AtGo?G6AZQT=zx;iQn`8Q-*V zvXJ3XKDS;;=5FQCJF}hK5Q17RBaFuK%g;>4&%nid$r{FVDP#xiu-laHT>cVIGN5 z3QAmF;eAKLdFB8wcusd>D-pG(-bmK2f2?clRNg`fwxU1aL6qorBS(Y!t-iWPi=TRJ z-Z>xdj}h`GJLez_CNxv5on;%ui#o6Gm3vRVpgeW?7dJCp;KnB^cdEM@RI7hIpJY~S zXB4##QXuN~A8c*Y$DQe#>M8*JHS3LCW_e$`I%IX8rX@?ACbkhtFVF@Z(H3n!{_bp_rift)P$)!44P-cquZRY*fX_>*Omd*kS&DBY5@D9rE%``l*G z1!wtq7bR(TybkcbTxmbn>(qVqsRnxL%MM)oHx>8aU-2aVgE(sZ1Yxm<;dl3FsAl{o z^jkyo1aV)LRGitX6s4+w^TjA0=bd3svhAs`-dZhcBPFt1qpsL<(awf~_Kku7Za?7^kTxsXZ8_ z&7{9CZ+_+5^r~{@@{ft5>0K*1Zj*GV`6@%?PI11)xGvDYoO!LgYq=*pb207~Aj+wZwNG2Q|NWF?2N$Aw;|jB<$SOS15F5shNY2ud91mzI4F>SY*&=*CM{ zjZXibL2B~6BCpRC=8;O?DQxd+q=0Ls>w8#vb77Jpa?y2)jX-3ooAcc;WCpe+=BMz7 z-QBTKbAsH>(y;^D816*x!@x+X1#>Hxp-;v2SA_(d*a{wNT zxblF!QXjk`#3alVMO2boe;8r?;4lO z#?10D?#StNxAkhT6kA3r_)%qiDgDk7x-`Et;1BBYZDf&!WWkvu)K5kAABL;rk?gU` z(k)+rA8v`LWLm&lb)jnR8LV)vuV<%h;#eE&1~UTV3slk&@kx<)ELw%lF26$Au9!Rm-?l@hl={0 zY?_vykbEo9KZGvs3}|lcCU?yFtYGIqKm!4GX6l$<1%Nmfa~5^ixXt^A0f;A*etlSf}1wY$oA8{L$`g zJNKEf%Rd;JB6^>t0#>mJVSP>oD!9^0BFu<$<70n{e)qu-mnSF_5&YS|wANegvutro z9|M|e5=z!aXP~GYziaZwpn^ktmQjc(hcK|43mV+W$F?B5b$)TH{d7gx0!^DyQA-UE z*F7J{L`dI-N;{!p+@fdD^knAdylhStr_+6_$ltb7bcK!?> zlE`Qw6uFtx0pNU*LT007Ys8Y4Bp}I0rZDTI_dBEd!lI696G(bRXr9in05I{Ad3VzNECcMHY+Pt`n0E3!XhV! z6&(3{J79PwC&Y47QEPfIOhGhwOptkT&Ts+S<>%THA?_D$n#}C61&4?-p%G6Bq}hG^ zUi3;4EJRH+Egvr4XaKTPuO$`Ugm#f6?!I-4&ar@>r+uCued<=8bWi(ur7`i1;1%&qRF^hf~zqU46}o_vI#J+CWF|GzR~9KHu!8}F@LaV*#23@vA$;} zh`G<)nJsY3mGI246Y|DQudCl`2&=7NlawEL-?g6ECA3^$U?6MEJ7+lkWO9OZku>M2V}CoE?gU27NYia~VZ<*IxKX#Al+8_Znoi zN;(jA`3au-Mw9Kvg?Uk$>;{bDA;qG12A^H8ps*ZhWLocKlSDKtrRs zbk{kY@Jz+E9gG46M($yG4Izs1ZLtb^cJ;>Rxe^$`X5a1QiYZL;g`cdmzEh}mLovoM z;n0l>)4=-jHA5XXdsuK{yhw2)dyIiW02{Wr=j=jRdo=TIt$j@lcJuP{s0`7@zlf14 zpfUnZ)bnqWtRlp!PEAuj21s%77ae|2MDFP6wBe;t2;}SCLcVcq-G95AI<&iq|Lt!3 zM$qoo3eE2HhlcvaEbuOL$nkwf|HNAGw4 zRkz`O!0lbYr(Esl-IRM)lS(8__cn!h`)fw^r4}KbI+Dsan{kNJ-v2 z0`YLkiAglNjG;pFjR<(dE=i9O^o-f;ay_5Xkv)q0S|*P{!OT8%n_~$(D!hbU5ph_m z%RqCQoY4Na%mK;=)oxBP;7t2nQbVP~d}4J^dp#kfcPt{4gjUspY3Eo{=NyUrc}kRg z5kh}5xbueD3=h9&P-+N+&^#NRCv(0%_*QO1(PIi`%OQnd#A*_GU}C5MhT}vP33uM^`!i}x$OoN z=bvS$QX_(WVA2T+Km4+eNMq{6dX!=(oGXEQOU3&B2-!_*$U< zsP$(h`Yg>{$GDu3!9t}gYlwi5>3vcuB~kabuR3bva+7TFc`7icc=N07T=wk(`>KPs z8#>QYht2axbIDDaX#1O<@n&4AFjaKll!s%1)G>r0aMJAkcY_@n^*>#e@TtRY>WxlX zbb23S4{A{OX&c6Jtm<5G6P)Eu-?){CC7(wqc#~;yBK{0PtGE(r;V&xDp;O_}J!P{; z7IR2VHO2+3U5Igzr6);a3o*oH-%g`x;vnoNk}-V=!17+K zwc}b>_=LrC6Xf`moj+hd)Ui9h!=7y@H$eR!O3`J9o$f-?`wF5KUZUFrf!v{h{4zqXvcv9A=uE9aa9y`}gLS3^+~xL`(Zfq~@rrC#un$g!~U{A2}Zm z^?zlCrpTrl7QC73X4NG8jW?)wevVlic>OCYT2$jci#8ABG=`<;42tMamy_e-Gme*s z&Uk%lfQxgekWPLaoesLVdAWT(Ic|mye#eN9IK{Xk4|~U#x=$O6 zyDfWPYt2Mu{I5BUInw>OMDH?Dmpx}KyVY+!+Hpbc5b_P|jlaLoXwC<5(y&}!#0a!ug7JMoy41e~;fvvv(_ z3ae+$jFkN=Uf&Ro(7vGmhpx8_iUZiTa0w(3Ji&t#T!IC632wpNAwX~jm%-g3xVu|$ zcb7qe6Wm>g0S0)Jd+x0|uU@_CU;LV4YI^tX-D|CnJ7>|N+rN6sdPkt8(D*JgiYN=( zXSTa|0MEhK93*tgsE=!sLQ&E_NZi5+BD5l}@eJDMx1&8Y;*xH3faKG$)+;(nh2U8? z5XZ)PPm+pp+)t&Fapqvtxv^CYiKcnV^WFg53SgEh9-Q(?d=xX`qtWCn_$Z-lt^2gTsic(SuvQCJm+4y8YQ~ZS z{fqMi>#XbA55-$?!GxSAfJhxFqrMtX68|b6Rqw5S%c*z^B~ zVf4jZ58&k5* z=VPgC9uf1K6hUafYDJEcM@|}eH&JQ*<%}PA3})aX2VO>t?>>m@@X6=|ZbOy@N!~mqc6!Cw z{gTG=3|kE`Z&FY$9IbGW@Y2(AQfB_Fu6Q>_6%403LElEGaP$k2gB zXmLA6T!NNA6jpwpHjM9C|;DMm_qvxa1wRT`!8`T3AT7#hDkI zNFRx7n_X0AvT}C<*tISlK78J0i)H!ab_ zh1_cTv9!T5WY#ZJC4ecNLMANhnXt!67@#pJeQ3?RHdg$Jd1+YGv<8un=axpP2J`F^ zJ6Vv##=URYG=6L7d}p~frZM&{Q|6{6B|g{Suq3v|li@C9<>de^=7aI#I_}<&avU;2 zbio%>)0fLI1pX_|?h&MkGQ^`fTZhsQe5DTgw7idwSn?X4p6M*9D6}L52HOZA0)9QA zF7G0Q63Agk>}_%NRc~No&d@eY_friy98v08y89gCFhVTiFq^ToM~AUDoQjW5x&pIE zjb^OhCX;QhdQ>;n^mM;YBiWOAT_-lD2wyztZtjr1E}cDK3Y~!OV!Iq7`K_Uc!$PiJ zPpcb1FOV1T09hF>4HIYThpmWcX74|qq`n>UrMx5##vHTjS^#BkTf1A67sKOOVxK;CGO$I-UtH5rWuJb*oN;1!X9X_gRmnPTKW$) z5S#Tz!uP9^*=SoJ&SK2e@Aemz=fJ^qk3cj$=FxbquRP3B<6?hw zx0>(zlXReQBsM_>ijZzEq7X1Hmvf{)V(+5#OXRhsB4EhzD|GpCacPoJfA=?VSlyqUXNm$wlEI(0w_OBe{r+4FSWLZ;~ zDx979qyMH?Bi!zDa~SPqzm@0-I)e>0U}ULvGmXrHMcPPnk{Ht1kJ&_(Il zMs0|gn>T%m86#|Y2)U`@K_+FRXf=bQaXJulXK0guz=h|bVEfirTKM@MqI z#|P24X_P;Y9_py$#IscC`O?>RA?&nmgZ_#cVH25C_)2jo%c*>2nR-1w^L%K5INa8% zBsQnww~!eV(hTB0BzCUh_#&9AgLuVcK0f1Dh8O^EdW#jMokw7KL*(pxnDie4>e%O5 z2Zs-YAa{MeuhrMJQc*~l`~5p6^t)PWmNN^ZsTV`3HmC+D`U^jCI5$FZ7iZX2o8DC!Pe18p@GfxiV-q*Qg1WPzh< zhX=R^VVZ@$zHlbH+L3EzmZ-Eg8sT3?J=U?PeCa&bhomoJm(KqSZhZd#1vgUu7r3zz z25vn5|9~3@{`_Kzgv*4e8Jkh9Qiicxoe8(f%G2t9Ptd)&kvtM09T9{o!h>D?`H$+F z!C*9+Ll%1-PhQvbu0x_G>TlLT7uq+xrS@uaWsgiB>w2HQ94C{6>U9`S=rx+2&9=;{ z=WUDU?c!zaPzcc@owFYNE$r-0DF`Ea8hVSZS)z}p++g7L!4H>2%;}GaqTUW(;SaLuh?XjW*Qsnrl%@fDq3x5V zw0o3q)PDhlABY`3;b90~eG=)fr84s%6v{FDnm;isZC;PYtI-(O+kqp@TBSy>nAY)m za;evZ_Yahh6)C6%0hP`3PGOA$<+M>A0dw4vtUW^abU*8Hm~?* zc%Y1$^pO@rq1QCZFkvGr5rdT_s&Gd{@ zA1k2GfUOkyHH}81^Tk7sY)O}|RrqP>l;4uD@Lt_;03$ywNiJByA=|WngcIE7 zY=Wa;hjj|0d_LeVm2jAXtDj^ePP(gx=vUqA2g}Q}07QqqCNCu-tD7Zu!o?5wJfcyf z8?08(D>=T9WHK3n(W=WLuV{8--;MZxFRWZ9nIum-G&%IiQoE;8=T?fM(DwkAwy$*; z!S~nyC7XNg)Yy#w=Wc%dA9wQxOeF8)b*1D0_Sp4}xPOve67S34_F_6*o_jNOfnI0a zCMQ~h@7l85?2p+@xwM&ELSY>nYO^^KoShnhiP3Rwwh;y{e$R;Ec?m&5LiA1FreqZ2 zG8p(plEKB^8<>sH1M_79Bv|;nc1sNIzN$|mJY*9ldeEdN1j=D+=HVcqVHcEHBpg1Q zb&?oDER8rG!gP_8->D1KW+O4fe9Wpy0|NsWt>Lu3-oGMQ39T_4!az>}NU+9q20JHM z0YpG%Fs5W`bGRw8KWLxYx&1$8OfQ%jQ@&%R8s37NJZtdGWE2c(-|%_5@_pH94kZO1 zg1dbd-DG_3Xc=LFR(#r}s4zx{P?gASPZ+nX&|rDzzf>Y%fr<|EnuPphc`^$3rwEh( zZ05G`@R$t-r}+{kx|34mE$@g2)jI8PD+x^U?V|;Ol$^l@50VdRG}z^_n%Qxk8`X9@ zbvHoTKKVFyPBAbhD~(y#_?MsEieOCkft{ZO`yCk#HzWs`g8Rqkbp+8 znU5zLX>p8Fu}-OJI4t*_O5d`{f{Os%NVLc2c|icT?YIEiBV`vKs<3*&BOl4OXj{LZ zBOsu|@yMJ6R^jdBY?pS~(cAN%p z(JRy+V`MX7-9iItUE_o9@8q-GeOrc4BQ1bBQBt=RoazVW0^KTj9JOK$CWIMc09*so zmU1Tc$0lB;m{5@MiJ_kqhw`z7`;$P7^}7SMV*)imMF40(!XaNuT5)j_A*xo26NkCH z$Yxk@^fvKWY8Wl_J&lvoltYny8e?G@Vq}mfXF(u&TM5HjyW-jd&@I%a$+ZLH+LC#z zs4vZ{?%hb}sdwrCV9}a$OH22UUvYY2Z<#QpD&cflrPA*PvOz@dE*zGTbHk9h1Xw61 ztuL}9okl;$ibvZWXJH5_3a4>Ob(fdSto69NCL74Jc%*Gsx+3e?3$-Ps#(MWV`TQ%& z$OgddU-VAZBXtPW!u-|INMJ;a(NJ zeEt|f`?LPR9gXuBNzv9@JRa)M=MYJ256xi>De+3_4mX2;o}(#zGK^@3N=q=fNFbol z8iBwcy$+DZ!xvOAHFKP{zCdB`;&7xKH*{S-tP2l>S~}#yUTw!QC$ci6&rc7DrK6~R zweTdB+AsvroSuyU18|g(RtJ8nGF|H6%)+p4?t)xH5c;muVp*6yjm`a&;m|fK+g9&y z`q3M5MvOZ5En1A|t;8G$U|>?L{WKw2=Ou{qLH*z49X9I<$2wbGMwhm5e6n1A%-(p& zTE%>x#@rxvzw}>q69g|sqwaS$2txve8*+l58drB>g@I4Cwz6J_51{T&$Y74!(>2S} z@7054rLihPU^kSp+xzM7edjCq1+(K7oOvK{0QT6wA2fs>uaZ6Wv1G0ZyC3q9T}{G^Zr7f!9oZ{n*zWac(f1jg zeGi>Fy9Zv}pRVSSws!7Pvvm6GlD=ixTo`mU9?$w zjMQ{>W?XxAoWUW2^zR`d6T`GK;$A&M9k-YQNC3XBL<|X@oB${eY~W`A1W$wf>4VF1 zIaaUhmvthuYbK2Ts&{izHMn=P8h1SE&Ej+zN_Qy3B)vwigiaAt_or_`a9|IlhifD6 zTT5gJ?7{m(XG5=zeA>>3>CkjZsh1y^6zM*e^2$6&*bMVZ5PJW7tsA)a7@|sMx8I~Q zG(6=Ep#wD0a z7x#%C(=$h3{1M3(xhk~k^zoSXFAP#xpvMbZB`;9hLAy+r+1$dQu}kXTtwju9El8M? zCXW3QPnSa6+=ABXM*U9Z{p^YpGYJdA&XKc`HF;EGW9=6{lKNneqVuVILNX2n>qw5i zdpjqtX6LRyckx!Y&5^W47tsN6)NS=>!+*3D!y~JK^JpD`TZ)_a!TjuY;V! zCbHVL7us$ucRMw`|f>iL8tqIX0A?_^S{Y= zi(q7uwyU#=Y95^WiLcWgAmp{P&I?acZI>UxnRo8kI-Y>2ONCwm!Jf z|5q`yP_!1K!rvZvkv726U2lSpF~4lJ-AHOUGeMQp0G4O1{61hs+Yt zTOk^D1zz(0vz?nW>CMZ*VgZ6V4m`=add^pg5`u^_J%aI=2~jFHg1iS{j7~Z?UHf>0a@XmsfF^TzpVqzZflXhbuU$Teu*snyh)YG#3P7W@B4==&u-feV zWGEBKLqC>t-*w+qY{OQEMLBeSWNq|UhrXn3bJ_qnOWS~?B)LKB5$r|6m zOV}|<$j5=SMNP}%1QC}VnY#HfGpAOa%^{SRh1Qm7ePf&#PBRTE5`JZ5L3iBytMjj+ zgRvb3b{LANLK7zLh;3SbIMv;E+tIDWRsU1j+6)UBYU5wY1yhYp<(L#2M8x~U`e`_e%(TOXIRd9H{r^d&#b#jayW6$?AlL&M!g_L(k< zeKd|l)qBBtU#D24jXoAzaD@4LyIUBx##&Rfn>nimI*IH!Yl!{|U4D0^dhHbO$m^~x zu%IL~MWbBDQQe7W`dK@lK>(REHW9Kdn62xs$x!%CzeRi0eBj#8LQmIJ;2>d8T_8nz zKTAOT-3jd%^=<=Ns;HCX8mq_wa5eP_CtV5W>Wo0zG3YH`>maQZJj-vAFpU9>rixV> z;Ez&G1*yXU3W0vMi~c(kA@D|o0`S|%4dZk_%$3wdLLqquK2*t(ZyLw0I2gcosA zJ3<$Ka8k=X1Q}%b2%cIe`^4jDXO&(}GQmz)k`VQViA~Il&ur zX8jGZ;_gEnmjdMXo`OaqETo?9!PG*~S!}YbSWG+;AO~wipn-eMFf%i>@pW+cO<>LS zSGK_-O{U9Bh@>547KaQ(5AN7P3_WLx{6HoT0*Z*N4&l zE5sV_O}b=^h=|fw`s&+ld?Zs7ShwcPvG;M*fk8-kt5_mG_0~W`@z`9I$z+5k3j{-g zdjB0ChgGk9oZ+)m#KQWPov=?=uP>oF-Or~Ws2WGPB928 zG-T_*+hO1-*w9uS#0~7{UgCb|qwtKh8!80NTV3_trnQF&5}xc{Zw#NTn^_=GP>na) z!=V&Rn5Xn2v-0cq=M%V4_<3^UR~JdxyBFZ<+RdEs^MxJgB@@*89Blv8w0q;oCB95k zgz3F`Z)bQl+`SD}*nmVg9|+yI9`y$fpRI;K7O1*xk9?s3-*d3A_fg6M53pdiAXdop ziPHBrcI{U+T8pOx5{J3;euybpWe)?oTQi?SvU8FEwP)-qm5D$2#+g1HpTb zql`3zyK)$N2Dr#&TUU0>*tN}Q=iAp+6>e|0O=dy{oerICW_{jfdCB*wpM_zW7u>w1 zs_-2fm63^-YG55)r_WVI_fi+JPx<^UF*BWm^epy`!(aRLiszH7dgEPC8B zGpym5)t9pPjZ*yCRhE0{KVl5t0_ceK4*QwbcURaglx;9vW+sGUlJ*ay!4+y^w79xb zwy*rrg3j&KSPfsS*c}l%Z#{jC(Yie{{Mtc%Ww(3mBP?s7F?4)9=l($)Lg{O952%_U z_L!G(=-Pq4qxX4?^PRSmUZRurJpV4PCTiz)djE2CrTAX?M_%1-ZT+3qKJPn-S*>>Zw%kTFw*a8&>6N;CSF+%Hzs`|Rrx`;Fg0l;1}pw=)pazR=!&jrGUG~jg&s&i zQPN-5%tANBq2-oB`zesPFo# z5#%(#w%s`fiip729ZCV_$Kb3yGq0GZw6i@(w|KexRgf`e%Vjbvtb&IF_${U8PLUP!NqqSlym#xJ8`Gq? zoQvqnCm%B?f)DFEPq+o?4bTOqCB%!;rI9*h(QbKZGL(RZKV$aOrBniXUPKg`>0@Og z^Lh8Jzsb^liy4b*Al4(K{6X04;8GPJqxS{`3lJ*bEDU=gVfAMo{I54xrt*LJB`pdk zl;CX*F)vOS8I`ni<9h-BM`u#*bM=|xT<9b*Vp9kU%emG7C5*uel@srXD&nqt+=`vt z={+)}U&75H&4{JXEK}{T#^-Wh))XVL;m7&5$EB{+kWRBzO&v|dLjv2bb(w9{JWu{b2ZaZ^x+2VKuZgz& z+$a0nZA4@N1Rns;!K1=|8hbF-3u4!VUSokTXXY$kM`wF1z8;Uf&Btm%Igf6_K2O1h zkYHFhcBff{E>iG}(0$*#3Tv!hnVy+eUvD*Ee{#O=!up-&*W1_Ul2zF5yS|+io8Nrf zbrzNrQ1C4L`e?ZEuY;NgVw^?VZ-A?O*Ykcu_+Rh3*MXNvz9YcC^WN3hmu}$VnFnY* zqY^4vBn+1DJ>3U<7zII3K`YG!&!I#_#RfN38w_`6XTlGO&9EM6gC{DyzrtYNUQKKm zwBi%v1DIXn5nTs2T_|l(-K{JF56*&PyK2Q6l#vIm4Q^~=X190@uQsY5z7i_q*Jf@KVgU^t?)CU>3Rr|-J1W&mly+S>3m66 zaHApVxg<)dV!M`80#J%06Yi!6PjqD{nV=r*>z1l9_@hNcpbc0R)4OI8Je`jT~lQBL8 zV>;->apaiKZ~8?Ur5jwicnK1&(wGZQ@Q#((Y6ZBy*ZDlSvN`=e^*SPPd<8@6fJm^= zl4-x5|2@6tRRYng9=cAOALjyx#g$6KSM+;$g*(BmeahlV6wa7tf~smS?1Pzjj=pS$ z14}-Inh^OTUAQM-ciUN7gmsFCh7X0@A>-bGi6Jxaid5K<0#2ATHblY|#vBK-iFy{> z1*V^>l+=wAqscit@D+*GF>}nje>{s)P}ma*^zSfF=%urV3XHqbQ5w;V=9xYm`GV~D~eb44^N;XuC`TCBCFG$A9vT;-Y zceQA0lE2)pMpBQmj2@JFJ7A+mdOAoU+H;8+)~Ih0@EDBtV6yu-%)^t^x)UfcIl7{e zT)@pBS@VrZ@OyH^^hT#bL_$eB^e_X6339ro-wgAL#A13+pQh^dBw!Ob!J#tm!Yph) z-_%HIFRAfNYl`#Nb;V(hYYG{89CYM`L^EQ=KZ=BWT-Oe>wW1-yJiH-Mk_JZK1vpMw zUGh?~?}+O|$y!qJA%2bSpMH8@o1zI2UZx83w0H*aB8U@1{HTTR@>S4=23Un^2SkV8 zDTjUoHo&+=oUnhl5R1|F1irAUCCMTBVT%7kullJEKbd6&3Dq~|uM3l@nNn|t&*eU4 z<%`)9?0!n=V>&D6d$-tTZ{&FbSybjqPuKGF@+?H#0>i|8^cCY2SA(7+a zdtaoi&+g5)(ASG^`|w{PI`l_gKh?W+o#>B8a|7$NGEMOr?(oho(IqgSV?vp`Zv*fP z)z%5{v2DXWAP(){=|A%J@o(JGCY(f%gT_~5NU7}wO?JeJkOU9?ADgI;PhPNdpu5+w z0Gw~Wzt1186J45oj*2sqVVbwtJBuTj;1$0JJ8n?kL&Hd8b5-@tMem0$Dn}&7yU(Ct zS;st;N(Hx*&GI5E6`3zTOv57lXV`*6Au;~9El*mFUUMeYg+r0;3<@M6SWN(e#qY9A zF$xcnIy{*M@YA?J!MK8EpaMId;hxDelTC%*G;UyW-q<)lQYp5R6PeH_Aom4>NWA}* z3pd^AZSztKEtu1|ZcghUGp&jBtt=fD)zqN{XPeEv9 zW|H}2BmyB9s&%v&o)aUxje|$8N{m6EzGh&rFrDFLuF;YXZH=)GuZxjv(p%zKv z3_t#S#YM}4aC#9klHTF^6OYn~H7qhjjStF}%djrM{qn$ggD|Er2`|wk{&+)SN}&0E zD%8grg*U$UqIY*&snGcgttDYs>87ANA`Hap znk|)On0V59inFGRYdN+h1P*L`_~9;#vI>gDCQaD!;qCe>UnD?W**jvi+*ibGCtXJH zlUcu9A4{H`u}$Dp?j4csFdE6iOwVnLH3;<1C3p_m>vN_kf4-!K;M3t6>bU`e;fP56X|EdDHs()N59~B2Jc)};oz@Tv zWIf7Xf_^3U&P4srJI#oH*e4g$6(BRM{15F^$*f}`+?Jj(=+hK|vJQwVrUhSfBR;)B zCwo4AY1Hi0-ySlhAZ2P(k}_!bMdBqO*CldqjpK1r$)a)UZkCZy;pdRM&n;~|ZRp3djK(gB1idGwMqb&rI=TA9Mli7|>WTqn>klL$Fao_7Va?B7`vZ>z3ehent z&&3_N2zb#~pZfR7K6pV;6XtBW*zn$G#__%x@JAz|1?7h`;D+h-h=!1P8eR2%CWiz@ zq7!V|DiQ4jB9L(m-JAF!pmRakk)p0dz3rGja?c3|mFpP1?+41ohrimN4zAX{<@fgAs(x-6Eo83z>EEew7cv|96~ zvtvHbEVPx6VrXMWNI2X`w;oLZ0N6shaQSWQz6q#x z1mbsfSQ(^RZ;Vmeq0i^z6xFXfIgb$8iE51A2Dj`t!{xW>{$6R-`$I#UpbtPX_Q))nn*uq-FS@fK z$PdB&l57_j!|lzl0mU^4Yt44whw3Y~Na;^;MIqHa+SZqBqasmHsrO26xI-!$lx>oy ziI8;V&xwL7MysZ!2(9t7V@)e6d@`?OGQ=B(kGV1PZ`aD90vYCF6Xp1Xo?j~bCQcLU zNms4DQGB*m`Kn>im(>*&tnBQ%UwMugz_uQibl-Sdy_6(e`F&)DO8+TI2C;%~)T4Eo zRzBc&AXrOo%&G8=^Gg-b_En~&*b{@;3kltpM)zx^83_>Sj)t)FB+c>xt9~stp`#CM z8UE97Cwb6aaU_Dt_L>_2%9bQtP;ej|2*;s4)}G}L(%z`zN|lr7n6BH zScO`&E;9(H`@M30yfwET_L>GEw!#ATv8G5e&rVa2ai33SPen zjka&~3nW4B?!J@uD45MSAWCW=?HAU?C$}9$4?MFJa6)GU#{XXyz;OH?i7#|&FXLL( zPRYG*Cnd*y3V_Faxh#7JJ$UWAz6=$#*&_0FaC(_f(W^TKCNfcZwlh(+?Iy@2kF)fz zUO~ZbzOVP=hR^ecUYoj{s2ipLcVjv;zq3K^)dmU+5OpSPEyI( z{hbPrj6`E;@GKhQP<42Ua!5#iO3r%6MZ%G5iPu~^0PEM#6>nKEqxoKRE2k$XqV0Q4 z_p(MR6ow~!%-VpO`H0NpEeDNh4tb$`8B8IrNBpkvnU4%YCkMHj>hJW~EcF%gIsl?4 zMw}t-82~i6cA@uH&r;mbuPXy8)Y$kwwh@ZovFG1WGm*JUO3b+gQ0WQB#tlXYljT?S zh_$edtm2FYzMDCVPp}VCg_NX7QAw+q(Jlv6v1b%0Dd2Y*Uv4sp>~Je?X=1|7w-zGL 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

--r(Pp89(2;dAywWp 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

  • v@Af5fJ9QG2#*+^%9`TF0oK$=1EqwrzAFC_2_+R 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≪)`X>1`FP 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 ej= +NPM_TOKEN= +``` + +If you check on GitHub, you’ll now see a set of labels that `auto` would like you to use. Use these to tag future pull requests. + +### Creating a release + +To create a release locally you can run the following command, otherwise the GitHub action will make the release for you. + +```sh +yarn release +``` + +That will: + +- Build and package the addon code +- Bump the version +- Push a release to GitHub and npm +- Push a changelog to GitHub diff --git a/README.md b/README.md index 97c578d3191b..06e5b27d068d 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,50 @@ # Storybook Addon Addon Onboarding -Storybook Addon Onboarding - Introduces a new onboarding experience +This addon provides a guided tour in some of Storybook's features, helping you get to know about the basics of Storybook and learn how to write stories! -### Development scripts +![](./.github/assets/onboarding-intro.png) -- `yarn start` runs tsup in watch mode and starts Storybook -- `yarn build` build and package your addon code -- `yarn storybook:watch` runs nodemon in watch mode so it reruns Storybook on changes. This is useful when testing the actual addon (as we cannot have HMR for addon changes) rather than just stories in Storybook +## Triggering the onboarding -## Release Management +This addon comes installed by default in Storybook projects and should trigger automatically. +If you want to retrigger the addon, you should make sure that your Storybook still contains the example stories that come when initializing Storybook, and you can then navigate to http://localhost:6006/?path=/onboarding after running Storybook. -### Setup +## Uninstalling -This project is configured to use [auto](https://github.com/intuit/auto) for release management. It generates a changelog and pushes it to both GitHub and npm. Therefore, you need to configure access to both: +This addon serves to provide you a guided experience on the basics of Storybook. Once you are done, the addon is therefore not needed anymore and will not get activated (unless triggered manually), so you can freely remove it. Here's how to do so: -- [`NPM_TOKEN`](https://docs.npmjs.com/creating-and-viewing-access-tokens#creating-access-tokens) Create a token with both _Read and Publish_ permissions. -- [`GH_TOKEN`](https://github.com/settings/tokens) Create a token with the `repo` scope. +### 1. Remove the dependency -Then open your `package.json` and edit the following fields: +yarn: -- `name` -- `author` -- `repository` - -#### Local - -To use `auto` locally create a `.env` file at the root of your project and add your tokens to it: - -```bash -GH_TOKEN= -NPM_TOKEN= +```zsh +yarn remove -D @storybook/addon-onboarding ``` -Lastly, **create labels on GitHub**. You’ll use these labels in the future when making changes to the package. +npm: -```bash -npx auto create-labels +```zsh +npm uninstall -D @storybook/addon-onboarding ``` -If you check on GitHub, you’ll now see a set of labels that `auto` would like you to use. Use these to tag future pull requests. - -#### GitHub Actions - -This template comes with GitHub actions already set up to publish your addon anytime someone pushes to your repository. +pnpm: -Go to `Settings > Secrets`, click `New repository secret`, and add your `NPM_TOKEN`. - -### Creating a release - -To create a release locally you can run the following command, otherwise the GitHub action will make the release for you. - -```sh -yarn release +```zsh +pnpm remove -D @storybook/addon-onboarding ``` -That will: - -- Build and package the addon code -- Bump the version -- Push a release to GitHub and npm -- Push a changelog to GitHub +### 2. Remove the addon in your `.storybook/main.js` file + +```diff +const config = { + stories: [ + "../stories/**/*.stories.mdx", + "../stories/**/*.stories.@(js|jsx|ts|tsx)", + ], + addons: [ + "@storybook/addon-essentials", +- "@storybook/addon-onboarding" + ], +}; +export default config; +``` From 004a2389197497ff918184e62b386f1b0843fede Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 13:28:06 +0200 Subject: [PATCH 122/430] fix query parameter when skipping onboarding --- src/App.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index d2f7a22da2f7..6646ed79cf5a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -25,12 +25,12 @@ export default function App({ api }: { api: API }) { const skipOnboarding = useCallback(() => { // remove onboarding query parameter from current url const url = new URL(window.location.href); - url.searchParams.delete("onboarding"); const path = decodeURIComponent(url.searchParams.get("path")); - url.search = `?path=${path}`; + url.search = `?path=${path}&onboarding=false`; history.replaceState({}, "", url.href); + api.setQueryParams({ onboarding: "false" }); setEnabled(false); - }, [setEnabled]); + }, [setEnabled, api]); useEffect(() => { let stepTimeout: number; From 35a9153cf8c229718acaa652ad0fed06661e4c52 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 13:29:30 +0200 Subject: [PATCH 123/430] change the way the addon is triggered, warn user upon completion --- src/manager.tsx | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/manager.tsx b/src/manager.tsx index 66dc60237908..fb839fac225a 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -11,31 +11,36 @@ addons.register("@storybook/addon-onboarding", async (api) => { const urlState = api.getUrlState(); const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true'; - if (!isOnboarding) { - return; - } - let hasButtonStories = false; try { const response = await fetch("./index.json"); const index = await response.json(); hasButtonStories = !!index.entries["example-button--primary"]; - } catch (e) {} - - if (hasButtonStories) { - // Add a new DOM element to document.body, where we will bootstrap our React app - const domNode = document.createElement("div"); - - domNode.id = "addon-onboarding"; - // Append the new DOM element to document.body - document.body.appendChild(domNode); - - // Render the React app - ReactDOM.render( - Loading...}> - - , - domNode - ); + } catch (e) { + hasButtonStories = !!document.getElementById('example-button--primary') + } + + if (!hasButtonStories) { + console.warn(`[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling`); + return; } + + if (!isOnboarding || window.innerWidth < 730) { + return; + } + + // Add a new DOM element to document.body, where we will bootstrap our React app + const domNode = document.createElement("div"); + + domNode.id = "addon-onboarding"; + // Append the new DOM element to document.body + document.body.appendChild(domNode); + + // Render the React app + ReactDOM.render( + Loading...}> + + , + domNode + ); }); From 3f0e1eb6cd9205836e7210d94d8151d9c4b206d3 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 8 Jun 2023 12:43:27 +0100 Subject: [PATCH 124/430] Improved confetti look and feel --- src/App.tsx | 1 + src/components/Confetti/Confetti.stories.tsx | 36 ++++++++++++++----- src/components/Confetti/Confetti.tsx | 38 +++++++++++++++----- src/features/GuidedTour/GuidedTour.tsx | 6 +++- 4 files changed, 62 insertions(+), 19 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 9bb61df97dbc..862984fc2217 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -87,6 +87,7 @@ export default function App({ api }: { api: API }) { { confetti.reset(); setShowConfetti(false); diff --git a/src/components/Confetti/Confetti.stories.tsx b/src/components/Confetti/Confetti.stories.tsx index f4a42676dc09..eb02f1451a5b 100644 --- a/src/components/Confetti/Confetti.stories.tsx +++ b/src/components/Confetti/Confetti.stories.tsx @@ -21,23 +21,41 @@ export default meta; type Story = StoryObj; -export const FullWidth: Story = {}; - -export const Positioned: Story = { +export const Default: Story = { args: { - top: 100, - left: 300, - width: 300, - height: 250, + recycle: true, + numberOfPieces: 200, + top: undefined, + left: undefined, + width: undefined, + height: undefined, + friction: 0.99, + wind: 0, + gravity: 0.1, + initialVelocityX: 4, + initialVelocityY: 10, + tweenDuration: 5000, }, }; export const OneTimeConfetti: Story = { args: { + ...Default.args, numberOfPieces: 800, recycle: false, + tweenDuration: 20000, onConfettiComplete: (confetti) => { - confetti.reset() - } + confetti.reset(); + }, + }, +}; + +export const Positioned: Story = { + args: { + ...Default.args, + top: 100, + left: 300, + width: 300, + height: 250, }, }; diff --git a/src/components/Confetti/Confetti.tsx b/src/components/Confetti/Confetti.tsx index 9a56f3dbef71..4c0696fe7c77 100644 --- a/src/components/Confetti/Confetti.tsx +++ b/src/components/Confetti/Confetti.tsx @@ -10,6 +10,9 @@ interface ConfettiProps left?: number; width?: number; height?: number; + numberOfPieces?: number; + recycle?: boolean; + colors?: string[]; } const Wrapper = styled.div<{ @@ -31,7 +34,7 @@ export function Confetti({ left = 0, width = window.innerWidth, height = window.innerHeight, - colors = ['#CA90FF', '#FC521F', '#66BF3C', '#FF4785', '#FFAE00', '#1EA7FD'], + colors = ["#CA90FF", "#FC521F", "#66BF3C", "#FF4785", "#FFAE00", "#1EA7FD"], ...confettiProps }: ConfettiProps): React.ReactPortal { const [confettiContainer] = useState(() => { @@ -55,8 +58,7 @@ export function Confetti({ return createPortal( - + , confettiContainer ); @@ -86,13 +88,31 @@ function draw(context: CanvasRenderingContext2D) { context.moveTo(-width + cornerRadius, -height); context.lineTo(width - cornerRadius, -height); - context.arcTo(width, -height, width, -height + cornerRadius, cornerRadius); + context.arcTo( + width, + -height, + width, + -height + cornerRadius, + cornerRadius + ); context.lineTo(width, height - cornerRadius); context.arcTo(width, height, width - cornerRadius, height, cornerRadius); context.lineTo(-width + cornerRadius, height); - context.arcTo(-width, height, -width, height - cornerRadius, cornerRadius); + context.arcTo( + -width, + height, + -width, + height - cornerRadius, + cornerRadius + ); context.lineTo(-width, -height + cornerRadius); - context.arcTo(-width, -height, -width + cornerRadius, -height, cornerRadius); + context.arcTo( + -width, + -height, + -width + cornerRadius, + -height, + cornerRadius + ); break; } @@ -107,7 +127,7 @@ function draw(context: CanvasRenderingContext2D) { break; } case ParticleShape.Circle: { - context.arc(0, 0, this.radius, 0, 2 * Math.PI) + context.arc(0, 0, this.radius, 0, 2 * Math.PI); break; } case ParticleShape.Triangle: { @@ -122,7 +142,7 @@ function draw(context: CanvasRenderingContext2D) { break; } } - + context.closePath(); context.fill(); -}; \ No newline at end of file +} diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index d1918da8a29b..6df0f27f9ff5 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -93,7 +93,11 @@ export function GuidedTour({ <> You've learned how to control your stories interactively. Now: let's explore how to write your first story. - + ), placement: "right", From f2bfd232506d22f4f52926f3c2b71863b8fc9d42 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 11:47:22 +0000 Subject: [PATCH 125/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8bef507d435..29ae65b47a3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# v0.0.22 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Improve confetti colors and shapes [#43](https://github.com/storybookjs/addon-onboarding/pull/43) ([@yannbf](https://github.com/yannbf) [@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 2 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.21 (Thu Jun 08 2023) #### πŸ› Bug Fix From a4f9388d365468ee1cde2cdc34cbd4e25bb37678 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 11:47:24 +0000 Subject: [PATCH 126/430] Bump version to: 0.0.22 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d89862539199..6369d7e20126 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.21", + "version": "0.0.22", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 2835e60736d419389ecb57fb495b9e8b4e32b369 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 11:51:09 +0000 Subject: [PATCH 127/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ae65b47a3f..2001f0ea0216 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# v0.0.23 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Various improvements [#44](https://github.com/storybookjs/addon-onboarding/pull/44) ([@yannbf](https://github.com/yannbf) [@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 2 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.22 (Thu Jun 08 2023) #### πŸ› Bug Fix From 43491e12807b3258b8b09f551a9b9d1ce8f83c09 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 11:51:10 +0000 Subject: [PATCH 128/430] Bump version to: 0.0.23 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6369d7e20126..ff12c127f3f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.22", + "version": "0.0.23", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From e8c20d958f6bb91f2add0f24761ba970ceda245a Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 14:24:52 +0200 Subject: [PATCH 129/430] use the correct event to detect args change --- src/features/GuidedTour/GuidedTour.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index 6df0f27f9ff5..5e5a88486ee9 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -4,7 +4,7 @@ import Joyride, { CallBackProps, STATUS, Step } from "react-joyride"; import { PulsatingEffect } from "../../components/PulsatingEffect/PulsatingEffect"; import { Confetti } from "../../components/Confetti/Confetti"; import { API } from "@storybook/manager-api"; -import { STORY_ARGS_UPDATED } from "@storybook/core-events"; +import { UPDATE_STORY_ARGS } from "@storybook/core-events"; import { Tooltip } from "./Tooltip"; type GuidedTourStep = Step & { hideNextButton?: boolean }; @@ -21,7 +21,7 @@ export function GuidedTour({ const [stepIndex, setStepIndex] = useState(); useEffect(() => { - api.once(STORY_ARGS_UPDATED, () => { + api.once(UPDATE_STORY_ARGS, () => { setStepIndex(3); }); }, []); @@ -124,9 +124,7 @@ export function GuidedTour({ floaterProps={{ styles: { floater: { - padding: 0, - paddingLeft: 8, - paddingTop: 8, + padding: "8px 0 0 8px", filter: "drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))", }, From e51e3db796967a34a09689303c6cd9793e2d2d9e Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 13:11:07 +0000 Subject: [PATCH 130/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2001f0ea0216..d44acd14bc98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.24 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Use the correct event to detect args change [#45](https://github.com/storybookjs/addon-onboarding/pull/45) ([@yannbf](https://github.com/yannbf)) + +#### Authors: 1 + +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.23 (Thu Jun 08 2023) #### πŸ› Bug Fix From 5f27441b98b21e28fdaa456d3f7fc93af151ffe6 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 13:11:09 +0000 Subject: [PATCH 131/430] Bump version to: 0.0.24 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ff12c127f3f0..d7ef251f829b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.23", + "version": "0.0.24", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 014c2ee3e2b4960c3f757ee07fd6a4af26fce96e Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 17:16:56 +0200 Subject: [PATCH 132/430] improve addon bootstrapping --- src/App.tsx | 31 ++++----- .../hooks/useGetWarningButtonStatus.tsx | 11 +++- src/manager.tsx | 64 +++++++++---------- 3 files changed, 54 insertions(+), 52 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index a068c89d1970..35c2c1fb5eb5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,13 @@ import React, { useCallback, useEffect, useState } from "react"; import { ThemeProvider, ensure, themes } from "@storybook/theming"; -import { STORY_CHANGED, CURRENT_STORY_WAS_SET } from "@storybook/core-events"; +import { STORY_CHANGED } from "@storybook/core-events"; import { addons, type API } from "@storybook/manager-api"; import { GuidedTour } from "./features/GuidedTour/GuidedTour"; import { WelcomeModal } from "./features/WelcomeModal/WelcomeModal"; import { WriteStoriesModal } from "./features/WriteStoriesModal/WriteStoriesModal"; import { Confetti } from "./components/Confetti/Confetti"; +import { PulsatingEffect } from "./components/PulsatingEffect/PulsatingEffect"; type Step = | "1:Welcome" @@ -47,20 +48,16 @@ export default function App({ api }: { api: API }) { }, [step]); useEffect(() => { - api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => { - api.setQueryParams({ onboarding: "true" }); - // make sure the initial state is set correctly: - // 1. Selected story is primary button - // 2. The addon panel is opened, in the bottom and the controls tab is selected - if (storyId !== "example-button--primary") { - api.selectStory("example-button--primary", undefined, { - ref: undefined, - }); - } - api.togglePanel(true); - api.togglePanelPosition("bottom"); - api.setSelectedPanel("addon-controls"); - }); + const storyId = api.getCurrentStoryData()?.id; + api.setQueryParams({ onboarding: "true" }); + // make sure the initial state is set correctly: + // 1. Selected story is primary button + // 2. The addon panel is opened, in the bottom and the controls tab is selected + if (storyId !== "example-button--primary") { + api.selectStory("example-button--primary", undefined, { + ref: undefined, + }); + } }, []); useEffect(() => { @@ -79,7 +76,7 @@ export default function App({ api }: { api: API }) { return ( - {showConfetti && ( + {enabled && showConfetti && ( - {(step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( + {enabled && (step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( { addonsStore diff --git a/src/manager.tsx b/src/manager.tsx index fb839fac225a..c8b2bfce74db 100644 --- a/src/manager.tsx +++ b/src/manager.tsx @@ -1,6 +1,7 @@ import ReactDOM from "react-dom"; import React, { lazy, Suspense } from "react"; import { addons } from "@storybook/manager-api"; +import { STORY_SPECIFIED } from "@storybook/core-events"; const App = lazy(() => import("./App")); @@ -11,36 +12,35 @@ addons.register("@storybook/addon-onboarding", async (api) => { const urlState = api.getUrlState(); const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true'; - let hasButtonStories = false; - try { - const response = await fetch("./index.json"); - const index = await response.json(); - hasButtonStories = !!index.entries["example-button--primary"]; - } catch (e) { - hasButtonStories = !!document.getElementById('example-button--primary') - } - - if (!hasButtonStories) { - console.warn(`[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling`); - return; - } - - if (!isOnboarding || window.innerWidth < 730) { - return; - } - - // Add a new DOM element to document.body, where we will bootstrap our React app - const domNode = document.createElement("div"); - - domNode.id = "addon-onboarding"; - // Append the new DOM element to document.body - document.body.appendChild(domNode); - - // Render the React app - ReactDOM.render( - Loading...}> - - , - domNode - ); + api.once(STORY_SPECIFIED, () => { + let hasButtonStories = !!api.getData("example-button--primary") || !!document.getElementById('example-button--primary') + + if (!hasButtonStories) { + console.warn(`[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling`); + return; + } + + if (!isOnboarding || window.innerWidth < 730) { + return; + } + + api.togglePanel(true); + api.togglePanelPosition("bottom"); + api.setSelectedPanel("addon-controls"); + + // Add a new DOM element to document.body, where we will bootstrap our React app + const domNode = document.createElement("div"); + + domNode.id = "storybook-addon-onboarding"; + // Append the new DOM element to document.body + document.body.appendChild(domNode); + + // Render the React app + ReactDOM.render( + Loading...}> + + , + domNode + ); + }) }); From 9331c8a6e4c3e3a77315df12c97fd4c746bac3c0 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 8 Jun 2023 16:29:39 +0100 Subject: [PATCH 133/430] Start removing the opening and closing anim on modal --- src/App.tsx | 31 +++++----- src/components/Modal/Modal.stories.tsx | 59 ++++++------------- src/components/Modal/Modal.styled.tsx | 14 +---- src/components/Modal/Modal.tsx | 49 +++++++-------- .../WelcomeModal/WelcomeModal.stories.tsx | 6 +- src/features/WelcomeModal/WelcomeModal.tsx | 18 +++--- .../WriteStoriesModal/WriteStoriesModal.tsx | 6 +- 7 files changed, 66 insertions(+), 117 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index a068c89d1970..39818ab8fd16 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -90,11 +90,12 @@ export default function App({ api }: { api: API }) { }} /> )} - setStep("2:StorybookTour")} - isOpen={enabled && step === "1:Welcome"} - skipOnboarding={skipOnboarding} - /> + {enabled && step === "1:Welcome" && ( + setStep("2:StorybookTour")} + skipOnboarding={skipOnboarding} + /> + )} {(step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( )} - { - api.selectStory("example-button--warning"); - setStep("4:VisitNewStory"); - }} - isOpen={enabled && step === "3:WriteYourStory"} - skipOnboarding={skipOnboarding} - /> + {enabled && step === "3:WriteYourStory" && ( + { + api.selectStory("example-button--warning"); + setStep("4:VisitNewStory"); + }} + /> + )} ); } diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 400c132ad68e..0aa4edce32e5 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { Meta, StoryObj } from "@storybook/react"; import { userEvent, within } from "@storybook/testing-library"; import { expect } from "@storybook/jest"; @@ -21,30 +21,23 @@ type Story = StoryObj; export const Default: Story = { args: { - isOpen: false, width: undefined, height: undefined, }, render: (props) => { - const [, updateArgs] = useArgs(); + const [isOpen, setOpen] = useState(false); return ( <> - updateArgs({ isOpen: !props.isOpen })} - > + {({ Close }) => (

    Hello world!
    - - - + setOpen(false)}>Close
    )} - + ); }, @@ -64,25 +57,19 @@ export const FixedWidth: Story = { width: 1024, }, render: (props) => { - const [, updateArgs] = useArgs(); + const [isOpen, setOpen] = useState(false); return ( <> - updateArgs({ isOpen: !props.isOpen })} - > + {({ Close }) => (
    Hello world!
    - - - + setOpen(false)}>Close
    )}
    - + ); }, @@ -102,25 +89,19 @@ export const FixedHeight: Story = { height: 430, }, render: (props) => { - const [, updateArgs] = useArgs(); + const [isOpen, setOpen] = useState(false); return ( <> - updateArgs({ isOpen: !props.isOpen })} - > + {({ Close }) => (
    Hello world!
    - - - + setOpen(false)}>Close
    )}
    - + ); }, @@ -141,25 +122,19 @@ export const FixedWidthAndHeight: Story = { height: 430, }, render: (props) => { - const [, updateArgs] = useArgs(); + const [isOpen, setOpen] = useState(false); return ( <> - updateArgs({ isOpen: !props.isOpen })} - > + {({ Close }) => (
    Hello world!
    - - - + setOpen(false)}>Close
    )}
    - + ); }, diff --git a/src/components/Modal/Modal.styled.tsx b/src/components/Modal/Modal.styled.tsx index cb2e0e545b80..b5ef254ab08c 100644 --- a/src/components/Modal/Modal.styled.tsx +++ b/src/components/Modal/Modal.styled.tsx @@ -1,10 +1,8 @@ import { css, styled } from "@storybook/theming"; import * as Dialog from "@radix-ui/react-dialog"; import React from "react"; -import { motion } from "framer-motion"; -import { animate, exit, initial } from "./Modal"; -export const StyledOverlay = styled(motion.div)` +export const StyledOverlay = styled.div` background-color: rgba(27, 28, 29, 0.48); position: fixed; inset: 0px; @@ -12,7 +10,7 @@ export const StyledOverlay = styled(motion.div)` height: 100%; `; -export const StyledContent = styled(motion.div)<{ +export const StyledContent = styled.div<{ width: number; height: number; }>( @@ -38,13 +36,7 @@ export const ContentWrapper = React.forwardRef< React.ComponentProps >(({ width, height, children, ...contentProps }, ref) => ( - + {children} diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index 560c2a36d561..26d31d2dbfa2 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -1,15 +1,13 @@ import React from "react"; import * as Dialog from "@radix-ui/react-dialog"; import { ContentWrapper, StyledOverlay } from "./Modal.styled"; -import { AnimatePresence } from "framer-motion"; type ContentProps = React.ComponentProps; -interface ModalProps { +interface ModalProps + extends Omit, "children"> { width?: number; height?: number; - isOpen?: boolean; - setOpen?: (open: boolean) => void; children: (props: { Title: typeof Dialog.Title; Description: typeof Dialog.Description; @@ -27,34 +25,29 @@ export function Modal({ children, width, height, - isOpen, - setOpen, onEscapeKeyDown, onInteractOutside = (ev) => ev.preventDefault(), + ...rootProps }: ModalProps) { return ( - - - {isOpen && ( - - - - - - {children({ - Title: Dialog.Title, - Description: Dialog.Description, - Close: Dialog.Close, - })} - - - )} - + + + + + + + {children({ + Title: Dialog.Title, + Description: Dialog.Description, + Close: Dialog.Close, + })} + + ); } diff --git a/src/features/WelcomeModal/WelcomeModal.stories.tsx b/src/features/WelcomeModal/WelcomeModal.stories.tsx index 7351ea7af2fc..334eef5c7f7c 100644 --- a/src/features/WelcomeModal/WelcomeModal.stories.tsx +++ b/src/features/WelcomeModal/WelcomeModal.stories.tsx @@ -16,8 +16,4 @@ export default meta; type Story = StoryObj; -export const Default: Story = { - args: { - isOpen: true, - }, -}; +export const Default: Story = {}; diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 8089285f20d4..733b92cc409d 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -17,18 +17,16 @@ import { } from "./WelcomeModal.styled"; interface WelcomeModalProps { - skipOnboarding: () => void; onProceed: () => void; - isOpen: boolean; + skipOnboarding: () => void; } export const WelcomeModal: FC = ({ - skipOnboarding, onProceed, - isOpen, + skipOnboarding, }) => { return ( - + {({ Close }) => ( @@ -42,12 +40,10 @@ export const WelcomeModal: FC = ({ Start your 3 minute tour - - - Skip tour - - - + + Skip tour + + diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index b463bfca1f2e..183b326e886c 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -38,16 +38,12 @@ interface WriteStoriesModalProps { onFinish: () => void; api: API; addonsStore: AddonStore; - skipOnboarding: () => void; - isOpen: boolean; } export const WriteStoriesModal: FC = ({ onFinish, api, addonsStore, - skipOnboarding, - isOpen, }) => { const [step, setStep] = useState< "imports" | "meta" | "story" | "args" | "customStory" @@ -94,7 +90,7 @@ export const WriteStoriesModal: FC = ({ }; return ( - + {({ Title, Description, Close }) => ( {data ? ( From e7cfba6aaa684ccaf711fe47ceb93baff4cbf2e9 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 17:34:39 +0200 Subject: [PATCH 134/430] change last step --- src/App.tsx | 19 ++++--------------- src/features/GuidedTour/GuidedTour.tsx | 16 ++++++++++------ src/features/GuidedTour/Tooltip.tsx | 9 ++++++--- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 35c2c1fb5eb5..636ebcc53627 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,7 +7,6 @@ import { GuidedTour } from "./features/GuidedTour/GuidedTour"; import { WelcomeModal } from "./features/WelcomeModal/WelcomeModal"; import { WriteStoriesModal } from "./features/WriteStoriesModal/WriteStoriesModal"; import { Confetti } from "./components/Confetti/Confetti"; -import { PulsatingEffect } from "./components/PulsatingEffect/PulsatingEffect"; type Step = | "1:Welcome" @@ -60,20 +59,6 @@ export default function App({ api }: { api: API }) { } }, []); - useEffect(() => { - const onStoryChanged = (storyId: string) => { - if (storyId === "configure-your-project--docs") { - skipOnboarding(); - } - }; - - api.on(STORY_CHANGED, onStoryChanged); - - return () => { - api.off(STORY_CHANGED, onStoryChanged); - }; - }, []); - return ( {enabled && showConfetti && ( @@ -99,6 +84,10 @@ export default function App({ api }: { api: API }) { onFirstTourDone={() => { setStep("3:WriteYourStory"); }} + onLastTourDone={() => { + api.selectStory("configure-your-project--docs"); + skipOnboarding(); + }} /> )} void; + onLastTourDone: () => void; }) { const [stepIndex, setStepIndex] = useState(); @@ -29,17 +31,19 @@ export function GuidedTour({ const steps: GuidedTourStep[] = isFinalStep ? [ { - target: "#configure-your-project--docs", - title: "Continue setting up your project", + target: "#example-button--warning", + title: "Congratulations!", content: - "You nailed the basics. Now get started writing stories for your own components.", + "You just created your first story. You nailed the basics. Continue setting up your project and start writing stories for your components.", placement: "right", disableOverlay: true, disableBeacon: true, floaterProps: { disableAnimation: true, }, - hideNextButton: true, + onNextButtonClick() { + onLastTourDone(); + }, }, ] : [ diff --git a/src/features/GuidedTour/Tooltip.tsx b/src/features/GuidedTour/Tooltip.tsx index 26af5e75cdbd..6b80a96f872d 100644 --- a/src/features/GuidedTour/Tooltip.tsx +++ b/src/features/GuidedTour/Tooltip.tsx @@ -36,8 +36,8 @@ const TooltipFooter = styled.div` margin-top: 15px; `; -type TooltipProps = TooltipRenderProps & { - step: TooltipRenderProps["step"] & { hideNextButton?: boolean }; +export type TooltipProps = TooltipRenderProps & { + step: TooltipRenderProps["step"] & { hideNextButton?: boolean; onNextButtonClick?: () => void }; }; export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { @@ -49,7 +49,10 @@ export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { {!step.hideNextButton && ( - + )} From 7f9dcc725a948932e6f26f65bfaefa06fdc31bbd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 8 Jun 2023 17:05:50 +0100 Subject: [PATCH 135/430] Skip onboarding cleanup --- src/App.tsx | 1 + src/features/WriteStoriesModal/WriteStoriesModal.tsx | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 39818ab8fd16..7d6df0c2ba54 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -113,6 +113,7 @@ export default function App({ api }: { api: API }) { api.selectStory("example-button--warning"); setStep("4:VisitNewStory"); }} + skipOnboarding={skipOnboarding} /> )} diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 183b326e886c..341beec34308 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -38,12 +38,14 @@ interface WriteStoriesModalProps { onFinish: () => void; api: API; addonsStore: AddonStore; + skipOnboarding: () => void; } export const WriteStoriesModal: FC = ({ onFinish, api, addonsStore, + skipOnboarding, }) => { const [step, setStep] = useState< "imports" | "meta" | "story" | "args" | "customStory" @@ -128,9 +130,13 @@ export const WriteStoriesModal: FC = ({ How to write a story - - - + + From c779e85f5e832899fae8f4de95b3cf196b0967b5 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 8 Jun 2023 18:59:06 +0200 Subject: [PATCH 136/430] fix writeStories story --- .../WriteStoriesModal.stories.tsx | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 7e13a739194e..1aa9896f5805 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -3,17 +3,19 @@ import { Meta, StoryObj } from "@storybook/react"; import { WriteStoriesModal } from "./WriteStoriesModal"; import { waitFor, within } from "@storybook/testing-library"; -import { expect } from "@storybook/jest"; +import { expect, jest } from "@storybook/jest"; import { STORY_INDEX_INVALIDATED, STORY_RENDERED, } from "@storybook/core-events"; +const getData = jest.fn() + const meta: Meta = { component: WriteStoriesModal, args: { api: { - getData: () => ({ some: "data" }), + getData, } as any, addonsStore: { getChannel: () => { @@ -31,15 +33,21 @@ const meta: Meta = { storyIndexInvalidatedCb = cb; } }, - off: () => {}, + off: () => { }, }), - getData: () => ({ some: "data" }), } as any, }, decorators: [ - (storyFn) => ( -
    {storyFn()}
    - ), + (storyFn, context) => { + (context.args.api.getData as typeof getData) + // do not respond to the first call, this would only return the data correctly if the story already exists + // which is not the case in this story, it only makes sense in the real scenario + .mockReturnValueOnce(null) + .mockReturnValueOnce({ some: "data" }) + return ( +
    {storyFn()}
    + ) + }, ], }; From 31de9f1ba99c34ebd5296a1335d3738a3f672b16 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 17:03:24 +0000 Subject: [PATCH 137/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d44acd14bc98..b889aaadaf52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.25 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Improve addon bootstrapping [#46](https://github.com/storybookjs/addon-onboarding/pull/46) ([@yannbf](https://github.com/yannbf)) + +#### Authors: 1 + +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.24 (Thu Jun 08 2023) #### πŸ› Bug Fix From 1395d787220b3361ade3ed45e190184b1890fb12 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 17:03:26 +0000 Subject: [PATCH 138/430] Bump version to: 0.0.25 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7ef251f829b..229879dd1fe5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.24", + "version": "0.0.25", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 69a984a127f49316c82114ae4c950ece856f0658 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Thu, 8 Jun 2023 18:04:50 +0100 Subject: [PATCH 139/430] Fix conflicts --- src/App.tsx | 52 ++++++++++--------- .../WriteStoriesModal.stories.tsx | 14 ++--- 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 636ebcc53627..34193879efbd 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,5 @@ import React, { useCallback, useEffect, useState } from "react"; import { ThemeProvider, ensure, themes } from "@storybook/theming"; -import { STORY_CHANGED } from "@storybook/core-events"; import { addons, type API } from "@storybook/manager-api"; import { GuidedTour } from "./features/GuidedTour/GuidedTour"; @@ -72,34 +71,37 @@ export default function App({ api }: { api: API }) { }} /> )} - setStep("2:StorybookTour")} - isOpen={enabled && step === "1:Welcome"} - skipOnboarding={skipOnboarding} - /> - {enabled && (step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( - setStep("2:StorybookTour")} + skipOnboarding={skipOnboarding} + /> + )} + {enabled && + (step === "2:StorybookTour" || step === "5:ConfigureYourProject") && ( + { + setStep("3:WriteYourStory"); + }} + onLastTourDone={() => { + api.selectStory("configure-your-project--docs"); + skipOnboarding(); + }} + /> + )} + {enabled && step === "3:WriteYourStory" && ( + { - setStep("3:WriteYourStory"); - }} - onLastTourDone={() => { - api.selectStory("configure-your-project--docs"); - skipOnboarding(); + addonsStore={addons} + onFinish={() => { + api.selectStory("example-button--warning"); + setStep("4:VisitNewStory"); }} + skipOnboarding={skipOnboarding} /> )} - { - api.selectStory("example-button--warning"); - setStep("4:VisitNewStory"); - }} - isOpen={enabled && step === "3:WriteYourStory"} - skipOnboarding={skipOnboarding} - /> ); } diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 1aa9896f5805..cb10e43bca56 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -9,7 +9,7 @@ import { STORY_RENDERED, } from "@storybook/core-events"; -const getData = jest.fn() +const getData = jest.fn(); const meta: Meta = { component: WriteStoriesModal, @@ -33,7 +33,7 @@ const meta: Meta = { storyIndexInvalidatedCb = cb; } }, - off: () => { }, + off: () => {}, }), } as any, }, @@ -43,10 +43,10 @@ const meta: Meta = { // do not respond to the first call, this would only return the data correctly if the story already exists // which is not the case in this story, it only makes sense in the real scenario .mockReturnValueOnce(null) - .mockReturnValueOnce({ some: "data" }) + .mockReturnValueOnce({ some: "data" }); return (
    {storyFn()}
    - ) + ); }, ], }; @@ -57,11 +57,7 @@ type Story = StoryObj; let storyIndexInvalidatedCb: () => void; -export const Default: Story = { - args: { - isOpen: true, - }, -}; +export const Default: Story = {}; export const DefaultPlayed: Story = { args: { From c142e14de2c86e5ee90010daf509646bf68109cd Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 18:03:42 +0000 Subject: [PATCH 140/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b889aaadaf52..b5f11f5908a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# v0.0.26 (Thu Jun 08 2023) + +#### πŸ› Bug Fix + +- Remove animation modal [#47](https://github.com/storybookjs/addon-onboarding/pull/47) ([@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 1 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) + +--- + # v0.0.25 (Thu Jun 08 2023) #### πŸ› Bug Fix From 247c877b4c08656e551e73ec163ec5b1a6d79a84 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" Date: Thu, 8 Jun 2023 18:03:44 +0000 Subject: [PATCH 141/430] Bump version to: 0.0.26 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 229879dd1fe5..e61275c760d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.25", + "version": "0.0.26", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 33995a82a7d29e2a331107789df83752db0dcce8 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 9 Jun 2023 12:59:54 +0200 Subject: [PATCH 142/430] add previous button to write stories modal --- src/components/Button/Button.tsx | 2 +- .../WriteStoriesModal.styled.tsx | 9 ++ .../WriteStoriesModal/WriteStoriesModal.tsx | 96 +++++++++++++------ 3 files changed, 75 insertions(+), 32 deletions(-) diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index bbefa527b6fc..10027bf8a640 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,5 +1,5 @@ +import React from "react"; import { styled } from "@storybook/theming"; -import React, { FC, forwardRef } from "react"; export interface ButtonProps { children: string; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx index 55a588094cf5..23bb4f7d4b8b 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx @@ -147,3 +147,12 @@ export const Circle3 = styled.div` animation-timing-function: ease-in-out; z-index: 4; `; + +export const ButtonsWrapper = styled.div` + box-sizing: border-box; + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + margin-top: 4px; +`; \ No newline at end of file diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 341beec34308..2abfcdd1ea88 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -5,6 +5,7 @@ import { Icons } from "@storybook/components"; import useMeasure from "react-use-measure"; import { Background, + ButtonsWrapper, Circle1, Circle2, Circle3, @@ -80,8 +81,8 @@ export const WriteStoriesModal: FC = ({ const data = isJavascript ? dataJavascript : project?.data?.framework.name === "@storybook/nextjs" - ? dataTypescriptNextjs - : dataTypescript; + ? dataTypescriptNextjs + : dataTypescript; const copyWarningStory = () => { const warningContent = data[4][0].code; @@ -102,7 +103,7 @@ export const WriteStoriesModal: FC = ({ width={480} /> ) : null} - {backdropBoundary && !warningButtonStatus?.data && ( + {step === 'customStory' && backdropBoundary && !warningButtonStatus?.data && ( + + + + )} {step === "story" && ( @@ -203,14 +212,22 @@ export const WriteStoriesModal: FC = ({ src={storyNameSidebarImg} /> - + + + + )} {step === "args" && ( @@ -229,14 +246,22 @@ export const WriteStoriesModal: FC = ({ src={argsImg} /> - + + + + )} {step === "customStory" && @@ -277,15 +302,24 @@ export const WriteStoriesModal: FC = ({ - {warningButtonStatus?.data ? ( + - ) : null} + {warningButtonStatus?.data ? ( + + ) : null} + ) : null)}
    From e9e29815c54b55477c977c6e240e95bcdf22d4ee Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Fri, 9 Jun 2023 13:32:20 +0100 Subject: [PATCH 143/430] Improve Button styling of previous --- src/components/Button/Button.tsx | 55 +++++++++-- .../WriteStoriesModal/WriteStoriesModal.tsx | 94 +++++++------------ 2 files changed, 83 insertions(+), 66 deletions(-) diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 10027bf8a640..dd20949c8276 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,13 +1,15 @@ -import React from "react"; +import React, { ComponentProps, FC } from "react"; import { styled } from "@storybook/theming"; -export interface ButtonProps { +export interface ButtonProps extends ComponentProps<"button"> { children: string; onClick?: (e: React.MouseEvent) => void; + variant?: "primary" | "secondary" | "outline"; } -export const Button = styled.button` +const StyledButton = styled.button<{ variant: ButtonProps["variant"] }>` all: unset; + box-sizing: border-box; border: 0; border-radius: 0.25rem; cursor: pointer; @@ -15,8 +17,24 @@ export const Button = styled.button` align-items: center; justify-content: center; padding: 0 0.75rem; - background: ${({ theme }) => theme.color.secondary}; - color: ${({ theme }) => theme.color.lightest}; + background: ${({ theme, variant }) => { + if (variant === "primary") return theme.color.secondary; + if (variant === "secondary") return theme.background.app; + if (variant === "outline") return "transparent"; + return theme.color.secondary; + }}; + color: ${({ theme, variant }) => { + if (variant === "primary") return theme.color.lightest; + if (variant === "secondary") return theme.darkest; + if (variant === "outline") return theme.darkest; + return theme.color.lightest; + }}; + box-shadow: ${({ variant }) => { + if (variant === "primary") return "none"; + if (variant === "secondary") return "#D9E8F2 0 0 0 1px inset"; + if (variant === "outline") return "#D9E8F2 0 0 0 1px inset"; + return "none"; + }}; height: 32px; font-size: 0.8125rem; font-weight: 700; @@ -25,10 +43,33 @@ export const Button = styled.button` text-decoration: none; &:hover { - background-color: #0b94eb; + background-color: ${({ variant }) => { + if (variant === "primary") return "#0b94eb"; + if (variant === "secondary") return "#eef4f9"; + if (variant === "outline") return "transparent"; + return "#0b94eb"; + }}; } &:focus { - box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1); + box-shadow: ${({ variant }) => { + if (variant === "primary") return "inset 0 0 0 1px rgba(0, 0, 0, 0.2)"; + if (variant === "secondary") return "inset 0 0 0 1px #0b94eb"; + if (variant === "outline") return "inset 0 0 0 1px #0b94eb"; + return "inset 0 0 0 2px rgba(0, 0, 0, 0.1)"; + }}; } `; + +export const Button: FC = ({ + children, + onClick, + variant = "primary", + ...rest +}) => { + return ( + + {children} + + ); +}; diff --git a/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 2abfcdd1ea88..ef38f24032cc 100644 --- a/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -81,8 +81,8 @@ export const WriteStoriesModal: FC = ({ const data = isJavascript ? dataJavascript : project?.data?.framework.name === "@storybook/nextjs" - ? dataTypescriptNextjs - : dataTypescript; + ? dataTypescriptNextjs + : dataTypescript; const copyWarningStory = () => { const warningContent = data[4][0].code; @@ -94,7 +94,7 @@ export const WriteStoriesModal: FC = ({ return ( - {({ Title, Description, Close }) => ( + {({ Title, Description }) => ( {data ? ( = ({ width={480} /> ) : null} - {step === 'customStory' && backdropBoundary && !warningButtonStatus?.data && ( - - )} + {step === "customStory" && + backdropBoundary && + !warningButtonStatus?.data && ( + + )}
    @@ -181,19 +181,12 @@ export const WriteStoriesModal: FC<WriteStoriesModalProps> = ({ </div> <ButtonsWrapper> <Button - onClick={() => { - setStep("imports"); - }} + variant="secondary" + onClick={() => setStep("imports")} > Previous </Button> - <Button - onClick={() => { - setStep("story"); - }} - > - Next - </Button> + <Button onClick={() => setStep("story")}>Next</Button> </ButtonsWrapper> </> )} @@ -214,19 +207,12 @@ export const WriteStoriesModal: FC<WriteStoriesModalProps> = ({ </div> <ButtonsWrapper> <Button - onClick={() => { - setStep("meta"); - }} + variant="secondary" + onClick={() => setStep("meta")} > Previous </Button> - <Button - onClick={() => { - setStep("args"); - }} - > - Next - </Button> + <Button onClick={() => setStep("args")}>Next</Button> </ButtonsWrapper> </> )} @@ -248,17 +234,12 @@ export const WriteStoriesModal: FC<WriteStoriesModalProps> = ({ </div> <ButtonsWrapper> <Button - onClick={() => { - setStep("story"); - }} + variant="secondary" + onClick={() => setStep("story")} > Previous </Button> - <Button - onClick={() => { - setStep("customStory"); - }} - > + <Button onClick={() => setStep("customStory")}> Next </Button> </ButtonsWrapper> @@ -304,18 +285,13 @@ export const WriteStoriesModal: FC<WriteStoriesModalProps> = ({ </div> <ButtonsWrapper> <Button - onClick={() => { - setStep("args"); - }} + variant="secondary" + onClick={() => setStep("args")} > Previous </Button> {warningButtonStatus?.data ? ( - <Button - onClick={() => { - onFinish(); - }} - > + <Button onClick={() => onFinish()}> Go to story </Button> ) : null} From 98a56025462ca1ada80848db723eca82db7bd3c7 Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" <runner@fv-az470-201.2lj04l1n53ee5ipyphnrpo3qcc.dx.internal.cloudapp.net> Date: Fri, 9 Jun 2023 12:40:47 +0000 Subject: [PATCH 144/430] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5f11f5908a3..2b34124c6b89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# v0.0.27 (Fri Jun 09 2023) + +#### πŸ› Bug Fix + +- Add previous button to write stories modal [#48](https://github.com/storybookjs/addon-onboarding/pull/48) ([@yannbf](https://github.com/yannbf) [@cdedreuille](https://github.com/cdedreuille)) + +#### Authors: 2 + +- Charles de Dreuille ([@cdedreuille](https://github.com/cdedreuille)) +- Yann Braga ([@yannbf](https://github.com/yannbf)) + +--- + # v0.0.26 (Thu Jun 08 2023) #### πŸ› Bug Fix From da2499ede903dc0f3c9c5b71c9f3ecce0300928f Mon Sep 17 00:00:00 2001 From: "@storybookjs/core" <runner@fv-az470-201.2lj04l1n53ee5ipyphnrpo3qcc.dx.internal.cloudapp.net> Date: Fri, 9 Jun 2023 12:40:48 +0000 Subject: [PATCH 145/430] Bump version to: 0.0.27 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e61275c760d2..743f6d1a9820 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "0.0.26", + "version": "0.0.27", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From 56231aefff201ef67e28c63dab43ca1d15cb62ad Mon Sep 17 00:00:00 2001 From: Yann Braga <yannbf@gmail.com> Date: Fri, 9 Jun 2023 18:51:57 +0200 Subject: [PATCH 146/430] fix bug where button was out of place --- src/components/Button/Button.tsx | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index dd20949c8276..886a36654d38 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,4 +1,4 @@ -import React, { ComponentProps, FC } from "react"; +import React, { ComponentProps, FC, forwardRef } from "react"; import { styled } from "@storybook/theming"; export interface ButtonProps extends ComponentProps<"button"> { @@ -61,15 +61,13 @@ const StyledButton = styled.button<{ variant: ButtonProps["variant"] }>` } `; -export const Button: FC<ButtonProps> = ({ - children, - onClick, - variant = "primary", - ...rest -}) => { - return ( - <StyledButton onClick={onClick} variant={variant} {...rest}> - {children} - </StyledButton> - ); -}; +export const Button: FC<ButtonProps> = forwardRef<HTMLButtonElement, ButtonProps>( + ({ children, onClick, variant = 'primary', ...rest }, ref) => { + return ( + <StyledButton ref={ref} onClick={onClick} variant={variant} {...rest}> + {children} + </StyledButton> + ); + } +); + From 5c830ee90933abf70deaa8664b80a0cdc3cf924f Mon Sep 17 00:00:00 2001 From: Yann Braga <yannbf@gmail.com> Date: Fri, 9 Jun 2023 18:56:08 +0200 Subject: [PATCH 147/430] improve texts --- .../SyntaxHighlighter/SyntaxHighlighter.stories.tsx | 3 ++- src/features/GuidedTour/GuidedTour.tsx | 9 ++++++--- src/features/WelcomeModal/WelcomeModal.tsx | 2 +- src/features/WriteStoriesModal/WriteStoriesModal.tsx | 6 +++--- src/features/WriteStoriesModal/code/javascript.tsx | 2 +- .../WriteStoriesModal/code/nextjs-typescript.tsx | 2 +- src/features/WriteStoriesModal/code/typescript.tsx | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index d16e88fe4032..d12e6b52e807 100644 --- a/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -58,8 +58,9 @@ export default meta;`, export const Warning: Story = { args: { + primary: true, + label: 'Delete now', backgroundColor: 'red', - label: 'Delete now' } };`, }, diff --git a/src/features/GuidedTour/GuidedTour.tsx b/src/features/GuidedTour/GuidedTour.tsx index 171c2b71f4e9..be860c14a370 100644 --- a/src/features/GuidedTour/GuidedTour.tsx +++ b/src/features/GuidedTour/GuidedTour.tsx @@ -34,7 +34,10 @@ export function GuidedTour({ target: "#example-button--warning", title: "Congratulations!", content: - "You just created your first story. You nailed the basics. Continue setting up your project and start writing stories for your components.", + <> + You just created your first story. You nailed the basics. <br/> + Continue setting up your project and start writing stories for your components. + </>, placement: "right", disableOverlay: true, disableBeacon: true, @@ -95,8 +98,8 @@ export function GuidedTour({ title: "Congratulations!", content: ( <> - You've learned how to control your stories interactively. Now: - let's explore how to write your first story. + You've learned how to control your stories interactively.<br/> + Now: let's explore how to write your first story. <Confetti numberOfPieces={800} recycle={false} diff --git a/src/features/WelcomeModal/WelcomeModal.tsx b/src/features/WelcomeModal/WelcomeModal.tsx index 733b92cc409d..17fa6752b25c 100644 --- a/src/features/WelcomeModal/WelcomeModal.tsx +++ b/src/features/WelcomeModal/WelcomeModal.tsx @@ -33,7 +33,7 @@ export const WelcomeModal: FC<WelcomeModalProps> = ({ <StorybookLogo /> <Title>Welcome to Storybook - Storybook helps you develop UI components. Learn the basics in a + Storybook helps you develop UI components faster. Learn the basics in a few simple steps. diff --git a/code/addons/onboarding/src/components/Confetti/Confetti.tsx b/code/addons/onboarding/src/components/Confetti/Confetti.tsx index 4c0696fe7c77..8d6af0938065 100644 --- a/code/addons/onboarding/src/components/Confetti/Confetti.tsx +++ b/code/addons/onboarding/src/components/Confetti/Confetti.tsx @@ -1,11 +1,10 @@ -import ReactConfetti from "react-confetti"; -import React, { useEffect } from "react"; -import { styled } from "@storybook/theming"; -import { createPortal } from "react-dom"; -import { useState } from "react"; +import ReactConfetti from 'react-confetti'; +import React, { useEffect } from 'react'; +import { styled } from '@storybook/theming'; +import { createPortal } from 'react-dom'; +import { useState } from 'react'; -interface ConfettiProps - extends Omit, "drawShape"> { +interface ConfettiProps extends Omit, 'drawShape'> { top?: number; left?: number; width?: number; @@ -25,8 +24,8 @@ const Wrapper = styled.div<{ height: `${height}px`, left: `${left}px`, top: `${top}px`, - position: "relative", - overflow: "hidden", + position: 'relative', + overflow: 'hidden', })); export function Confetti({ @@ -34,15 +33,15 @@ export function Confetti({ left = 0, width = window.innerWidth, height = window.innerHeight, - colors = ["#CA90FF", "#FC521F", "#66BF3C", "#FF4785", "#FFAE00", "#1EA7FD"], + colors = ['#CA90FF', '#FC521F', '#66BF3C', '#FF4785', '#FFAE00', '#1EA7FD'], ...confettiProps }: ConfettiProps): React.ReactPortal { const [confettiContainer] = useState(() => { - const container = document.createElement("div"); - container.setAttribute("id", "confetti-container"); + const container = document.createElement('div'); + container.setAttribute('id', 'confetti-container'); container.setAttribute( - "style", - "position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;" + 'style', + 'position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;' ); return container; @@ -88,31 +87,13 @@ function draw(context: CanvasRenderingContext2D) { context.moveTo(-width + cornerRadius, -height); context.lineTo(width - cornerRadius, -height); - context.arcTo( - width, - -height, - width, - -height + cornerRadius, - cornerRadius - ); + context.arcTo(width, -height, width, -height + cornerRadius, cornerRadius); context.lineTo(width, height - cornerRadius); context.arcTo(width, height, width - cornerRadius, height, cornerRadius); context.lineTo(-width + cornerRadius, height); - context.arcTo( - -width, - height, - -width, - height - cornerRadius, - cornerRadius - ); + context.arcTo(-width, height, -width, height - cornerRadius, cornerRadius); context.lineTo(-width, -height + cornerRadius); - context.arcTo( - -width, - -height, - -width + cornerRadius, - -height, - cornerRadius - ); + context.arcTo(-width, -height, -width + cornerRadius, -height, cornerRadius); break; } diff --git a/code/addons/onboarding/src/components/List/List.stories.tsx b/code/addons/onboarding/src/components/List/List.stories.tsx index dcfdb640fe3b..eeac1614f256 100644 --- a/code/addons/onboarding/src/components/List/List.stories.tsx +++ b/code/addons/onboarding/src/components/List/List.stories.tsx @@ -1,10 +1,10 @@ -import React, { useState } from "react"; -import type { Meta, StoryObj } from "@storybook/react"; -import { userEvent, waitFor, within } from "@storybook/testing-library"; -import { expect } from "@storybook/jest"; +import React, { useState } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { userEvent, waitFor, within } from '@storybook/testing-library'; +import { expect } from '@storybook/test'; -import { List } from "./List"; -import { ListItem } from "./ListItem/ListItem"; +import { List } from './List'; +import { ListItem } from './ListItem/ListItem'; const meta: Meta = { component: List, @@ -38,14 +38,12 @@ export const Default: StoryObj = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByText("Complete"); + const button = canvas.getByText('Complete'); - await expect(canvas.getAllByLabelText("complete")).toHaveLength(1); + await expect(canvas.getAllByLabelText('complete')).toHaveLength(1); await userEvent.click(button); - await waitFor(() => - expect(canvas.getAllByLabelText("complete")).toHaveLength(2) - ); + await waitFor(() => expect(canvas.getAllByLabelText('complete')).toHaveLength(2)); }, }; diff --git a/code/addons/onboarding/src/components/List/List.styled.tsx b/code/addons/onboarding/src/components/List/List.styled.tsx index d75395a65467..79d91e96dc41 100644 --- a/code/addons/onboarding/src/components/List/List.styled.tsx +++ b/code/addons/onboarding/src/components/List/List.styled.tsx @@ -1,8 +1,8 @@ -import { styled } from "@storybook/theming"; +import { styled } from '@storybook/theming'; export const ListWrapper = styled.ul(() => ({ - display: "flex", - flexDirection: "column", + display: 'flex', + flexDirection: 'column', rowGap: 16, padding: 0, margin: 0, diff --git a/code/addons/onboarding/src/components/List/List.tsx b/code/addons/onboarding/src/components/List/List.tsx index f443ec992f1b..0b9640f7d909 100644 --- a/code/addons/onboarding/src/components/List/List.tsx +++ b/code/addons/onboarding/src/components/List/List.tsx @@ -1,5 +1,5 @@ -import React from "react"; -import { ListWrapper } from "./List.styled"; +import React from 'react'; +import { ListWrapper } from './List.styled'; interface ListProps { children: React.ReactNode; diff --git a/code/addons/onboarding/src/components/List/ListItem/ListItem.styled.tsx b/code/addons/onboarding/src/components/List/ListItem/ListItem.styled.tsx index 168e7fd1ff47..cf37aed81893 100644 --- a/code/addons/onboarding/src/components/List/ListItem/ListItem.styled.tsx +++ b/code/addons/onboarding/src/components/List/ListItem/ListItem.styled.tsx @@ -1,8 +1,8 @@ -import { styled } from "@storybook/theming"; +import { styled } from '@storybook/theming'; export const ListItemWrapper = styled.li(() => ({ - display: "flex", - alignItems: "flex-start", + display: 'flex', + alignItems: 'flex-start', columnGap: 12, })); @@ -16,15 +16,15 @@ export const ListItemContentWrapper = styled.div` export const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>( ({ isCompleted, theme }) => ({ - display: "flex", - alignItems: "center", - justifyContent: "center", - border: `1px solid ${!isCompleted ? theme.color.medium : "transparent"}`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + border: `1px solid ${!isCompleted ? theme.color.medium : 'transparent'}`, width: 20, height: 20, flexShrink: 0, - borderRadius: "50%", - backgroundColor: isCompleted ? theme.color.green : "white", + borderRadius: '50%', + backgroundColor: isCompleted ? theme.color.green : 'white', fontFamily: theme.typography.fonts.base, fontSize: 10, fontWeight: 600, diff --git a/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx b/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx index 629321191309..38f56d499f3c 100644 --- a/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx +++ b/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx @@ -1,10 +1,6 @@ -import React from "react"; -import { - ListItemContentWrapper, - ListItemIndexWrapper, - ListItemWrapper, -} from "./ListItem.styled"; -import { CheckIcon } from "@storybook/icons"; +import React from 'react'; +import { ListItemContentWrapper, ListItemIndexWrapper, ListItemWrapper } from './ListItem.styled'; +import { CheckIcon } from '@storybook/icons'; interface ListItemProps { children: React.ReactNode; @@ -16,14 +12,10 @@ export const ListItem = ({ children, index, isCompleted }: ListItemProps) => { return ( - {isCompleted ? ( - - ) : ( - index - )} + {isCompleted ? : index} {children} diff --git a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx index 67327841c227..0adfcb514120 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx @@ -1,17 +1,13 @@ -import React, { useState } from "react"; -import { Meta, StoryObj } from "@storybook/react"; -import { userEvent, within } from "@storybook/testing-library"; -import { expect } from "@storybook/jest"; +import React, { useState } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { userEvent, within } from '@storybook/testing-library'; +import { expect } from '@storybook/test'; -import { Modal } from "./Modal"; +import { Modal } from './Modal'; const meta: Meta = { component: Modal, - decorators: [ - (storyFn) => ( -
    {storyFn()}
    - ), - ], + decorators: [(storyFn) =>
    {storyFn()}
    ], }; export default meta; @@ -42,11 +38,9 @@ export const Default: Story = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByText("Open modal"); + const button = canvas.getByText('Open modal'); await userEvent.click(button); - await expect( - canvas.findByText("Hello world!") - ).resolves.toBeInTheDocument(); + await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); }, }; @@ -74,11 +68,9 @@ export const FixedWidth: Story = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByText("Open modal"); + const button = canvas.getByText('Open modal'); await userEvent.click(button); - await expect( - canvas.findByText("Hello world!") - ).resolves.toBeInTheDocument(); + await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); }, }; @@ -106,11 +98,9 @@ export const FixedHeight: Story = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByText("Open modal"); + const button = canvas.getByText('Open modal'); await userEvent.click(button); - await expect( - canvas.findByText("Hello world!") - ).resolves.toBeInTheDocument(); + await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); }, }; @@ -139,10 +129,8 @@ export const FixedWidthAndHeight: Story = { }, play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByText("Open modal"); + const button = canvas.getByText('Open modal'); await userEvent.click(button); - await expect( - canvas.findByText("Hello world!") - ).resolves.toBeInTheDocument(); + await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); }, }; diff --git a/code/addons/onboarding/src/components/Modal/Modal.styled.tsx b/code/addons/onboarding/src/components/Modal/Modal.styled.tsx index 39957c4d328c..42cf6537dd36 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.styled.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.styled.tsx @@ -1,6 +1,6 @@ -import { css, styled } from "@storybook/theming"; -import * as Dialog from "@radix-ui/react-dialog"; -import React from "react"; +import { css, styled } from '@storybook/theming'; +import * as Dialog from '@radix-ui/react-dialog'; +import React from 'react'; export const StyledOverlay = styled.div` background-color: rgba(27, 28, 29, 0.48); @@ -24,7 +24,7 @@ export const StyledContent = styled.div<{ left: 50%; transform: translate(-50%, -50%); width: ${width ?? 740}px; - height: ${height ? `${height}px` : "auto"}; + height: ${height ? `${height}px` : 'auto'}; max-width: calc(100% - 40px); max-height: 85vh; overflow: hidden; @@ -38,12 +38,13 @@ export const StyledContent = styled.div<{ export const ContentWrapper = React.forwardRef< HTMLDivElement, - React.ComponentProps & - React.ComponentProps ->(({ width, height, children, ...contentProps }, ref) => ( - - - {children} - - -)); + React.ComponentProps & React.ComponentProps +>(function ContentWrapper({ width, height, children, ...contentProps }, ref) { + return ( + + + {children} + + + ); +}); diff --git a/code/addons/onboarding/src/components/Modal/Modal.tsx b/code/addons/onboarding/src/components/Modal/Modal.tsx index 26d31d2dbfa2..749a371ec5a8 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.tsx @@ -1,11 +1,10 @@ -import React from "react"; -import * as Dialog from "@radix-ui/react-dialog"; -import { ContentWrapper, StyledOverlay } from "./Modal.styled"; +import React from 'react'; +import * as Dialog from '@radix-ui/react-dialog'; +import { ContentWrapper, StyledOverlay } from './Modal.styled'; type ContentProps = React.ComponentProps; -interface ModalProps - extends Omit, "children"> { +interface ModalProps extends Omit, 'children'> { width?: number; height?: number; children: (props: { @@ -13,8 +12,8 @@ interface ModalProps Description: typeof Dialog.Description; Close: typeof Dialog.Close; }) => React.ReactNode; - onEscapeKeyDown?: ContentProps["onEscapeKeyDown"]; - onInteractOutside?: ContentProps["onInteractOutside"]; + onEscapeKeyDown?: ContentProps['onEscapeKeyDown']; + onInteractOutside?: ContentProps['onInteractOutside']; } export const initial = { opacity: 0 }; diff --git a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx index d3b08bfc8f3f..266afc4cef5a 100644 --- a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx +++ b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx @@ -1,13 +1,13 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { PulsatingEffect } from "./PulsatingEffect"; -import React from "react"; -import { within } from "@storybook/testing-library"; -import { expect } from "@storybook/jest"; +import type { Meta, StoryObj } from '@storybook/react'; +import { PulsatingEffect } from './PulsatingEffect'; +import React from 'react'; +import { within } from '@storybook/testing-library'; +import { expect } from '@storybook/test'; const meta: Meta = { component: PulsatingEffect, parameters: { - layout: "centered", + layout: 'centered', chromatic: { disableSnapshot: true, }, @@ -26,7 +26,7 @@ export const Default: Story = { id="the-button" style={{ borderRadius: 20, - border: "1px solid #c9c9ff", + border: '1px solid #c9c9ff', padding: 6, }} > @@ -36,9 +36,9 @@ export const Default: Story = { ), play: async ({ canvasElement }) => { const canvas = within(canvasElement.parentElement); - const button = canvas.getByRole("button"); + const button = canvas.getByRole('button'); await expect(button).toHaveStyle( - "animation: 3s ease-in-out 0s infinite normal none running pulsate" + 'animation: 3s ease-in-out 0s infinite normal none running pulsate' ); }, }; diff --git a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx index 73b5bd45830a..5aad7252639e 100644 --- a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx +++ b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx @@ -1,17 +1,13 @@ -import { useEffect } from "react"; +import { useEffect } from 'react'; -export function PulsatingEffect({ - targetSelector, -}: { - targetSelector: string; -}): JSX.Element { +export function PulsatingEffect({ targetSelector }: { targetSelector: string }): JSX.Element { useEffect(() => { const element = document.querySelector(targetSelector); if (element) { - element.style.animation = "pulsate 3s infinite"; - element.style.transformOrigin = "center"; - element.style.animationTimingFunction = "ease-in-out"; + element.style.animation = 'pulsate 3s infinite'; + element.style.transformOrigin = 'center'; + element.style.animationTimingFunction = 'ease-in-out'; const keyframes = ` @keyframes pulsate { @@ -26,23 +22,21 @@ export function PulsatingEffect({ } } `; - const style = document.createElement("style"); - style.id = "sb-onboarding-pulsating-effect"; + const style = document.createElement('style'); + style.id = 'sb-onboarding-pulsating-effect'; style.innerHTML = keyframes; document.head.appendChild(style); } return () => { - const styleElement = document.querySelector( - "#sb-onboarding-pulsating-effect" - ); + const styleElement = document.querySelector('#sb-onboarding-pulsating-effect'); if (styleElement) { styleElement.remove(); } if (element) { - element.style.animation = "auto"; + element.style.animation = 'auto'; } }; }, [targetSelector]); diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx index 6d216cbbea8b..57a22c42d5d8 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx @@ -1,5 +1,5 @@ -import { styled } from "@storybook/theming"; -import { motion } from "framer-motion"; +import { styled } from '@storybook/theming'; +import { motion } from 'framer-motion'; export const SnippetWrapper = styled(motion.div)` position: relative; diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.tsx index 2fc17d99b69d..82f5c94bbeea 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/Snippet/Snippet.tsx @@ -1,8 +1,8 @@ -import { motion } from "framer-motion"; -import { Fragment, forwardRef } from "react"; -import { SnippetWrapper } from "./Snippet.styled"; -import React from "react"; -import { SyntaxHighlighter as StorybookSyntaxHighlighter } from "@storybook/components"; +import { motion } from 'framer-motion'; +import { Fragment, forwardRef } from 'react'; +import { SnippetWrapper } from './Snippet.styled'; +import React from 'react'; +import { SyntaxHighlighter as StorybookSyntaxHighlighter } from '@storybook/components'; interface Props { content: { snippet: string; toggle?: boolean }[]; @@ -12,69 +12,64 @@ interface Props { const wrapperVariants = { default: { - filter: "grayscale(1)", + filter: 'grayscale(1)', opacity: 0.5, }, active: { - filter: "grayscale(0)", + filter: 'grayscale(0)', opacity: 1, }, }; -export const Snippet = forwardRef( - ({ active, content, open }, ref) => { - const customStyle = { - fontSize: "0.8125rem", - lineHeight: "1.1875rem", - }; +export const Snippet = forwardRef(function Snippet( + { active, content, open }, + ref +) { + const customStyle = { + fontSize: '0.8125rem', + lineHeight: '1.1875rem', + }; - return ( - - {content.map(({ toggle, snippet }, i) => ( - - {toggle === undefined && ( - - {snippet} - - )} + return ( + + {content.map(({ toggle, snippet }, i) => ( + + {toggle === undefined && ( + + {snippet} + + )} + + {toggle && !open && ( + + {` // ...`} + + )} - {toggle && !open && ( + {toggle && open && ( + - {` // ...`} + {snippet} - )} - - {toggle && open && ( - - - {snippet} - - - )} - - ))} - - ); - } -); + + )} + + ))} + + ); +}); diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx index 1e8763e3a5c8..5d29d4a42c22 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.stories.tsx @@ -1,7 +1,7 @@ -import { Meta, StoryObj } from "@storybook/react"; -import { SyntaxHighlighter } from "./SyntaxHighlighter"; -import React from "react"; -import { CodeSnippets } from "../../features/WriteStoriesModal/code/types"; +import type { Meta, StoryObj } from '@storybook/react'; +import { SyntaxHighlighter } from './SyntaxHighlighter'; +import React from 'react'; +import type { CodeSnippets } from '../../features/WriteStoriesModal/code/types'; const meta: Meta = { component: SyntaxHighlighter, @@ -14,7 +14,7 @@ export default meta; type Story = StoryObj; -const data: CodeSnippets["code"] = [ +const data: CodeSnippets['code'] = [ [ { snippet: `import type { Meta, StoryObj } from '@storybook/react'; @@ -68,11 +68,7 @@ export const Default: Story = {
    - @@ -83,6 +79,6 @@ export const Default: Story = { data: data, activeStep: 0, width: 480, - filename: "Button.stories.tsx", + filename: 'Button.stories.tsx', }, }; diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx index 9dd22fa053b6..29beed376ed0 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx @@ -1,5 +1,5 @@ -import { styled } from "@storybook/theming"; -import { motion } from "framer-motion"; +import { styled } from '@storybook/theming'; +import { motion } from 'framer-motion'; export const Code = styled(motion.div)` position: relative; @@ -28,9 +28,9 @@ export const Container = styled.div<{ width: number }>` padding-left: 15px; padding-right: 15px; padding-top: 4px; - border-left: ${({ theme }) => (theme.base === "dark" ? 1 : 0)}px solid #fff2; - border-bottom: ${({ theme }) => (theme.base === "dark" ? 1 : 0)}px solid #fff2; - border-top: ${({ theme }) => (theme.base === "dark" ? 1 : 0)}px solid #fff2; + border-left: ${({ theme }) => (theme.base === 'dark' ? 1 : 0)}px solid #fff2; + border-bottom: ${({ theme }) => (theme.base === 'dark' ? 1 : 0)}px solid #fff2; + border-top: ${({ theme }) => (theme.base === 'dark' ? 1 : 0)}px solid #fff2; border-radius: 6px 0 0 6px; overflow: hidden; diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index 66a0587fdd10..c85bad9a257c 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,20 +1,14 @@ -import React, { - createRef, - useCallback, - useLayoutEffect, - useMemo, - useState, -} from "react"; +import React, { createRef, useCallback, useLayoutEffect, useMemo, useState } from 'react'; import { Backdrop, Code, Container, SnippetWrapper, SnippetWrapperFirst, -} from "./SyntaxHighlighter.styled"; -import { Snippet } from "./Snippet/Snippet"; -import { ThemeProvider, ensure, themes } from "@storybook/theming"; -import { SyntaxHighlighter as StorybookSyntaxHighlighter } from "@storybook/components"; +} from './SyntaxHighlighter.styled'; +import { Snippet } from './Snippet/Snippet'; +import { ThemeProvider, ensure, themes } from '@storybook/theming'; +import { SyntaxHighlighter as StorybookSyntaxHighlighter } from '@storybook/components'; type SyntaxHighlighterProps = { data: { snippet: string; toggle?: boolean }[][]; @@ -38,10 +32,7 @@ export const SyntaxHighlighter = ({ }: SyntaxHighlighterProps) => { const [steps, setSteps] = useState([]); - const refs = useMemo( - () => data.map(() => createRef()), - [data] - ); + const refs = useMemo(() => data.map(() => createRef()), [data]); const getYPos = (idx: number) => { let yPos = 0; @@ -94,8 +85,8 @@ export const SyntaxHighlighter = ({ }, []); const customStyle = { - fontSize: "0.8125rem", - lineHeight: "1.1875rem", + fontSize: '0.8125rem', + lineHeight: '1.1875rem', }; return ( @@ -103,14 +94,11 @@ export const SyntaxHighlighter = ({ - - {"// " + filename} + + {'// ' + filename} {data.map((content, idx: number) => ( @@ -118,11 +106,7 @@ export const SyntaxHighlighter = ({ key={idx} ref={refs[idx]} active={steps[activeStep]?.index === idx} - open={ - steps[activeStep]?.index > idx - ? true - : steps[activeStep]?.open ?? false - } + open={steps[activeStep]?.index > idx ? true : steps[activeStep]?.open ?? false} content={content} /> ))} @@ -131,7 +115,7 @@ export const SyntaxHighlighter = ({ diff --git a/code/addons/onboarding/src/constants.ts b/code/addons/onboarding/src/constants.ts index 18ca7a62b332..f81e55b4cf93 100644 --- a/code/addons/onboarding/src/constants.ts +++ b/code/addons/onboarding/src/constants.ts @@ -1,2 +1 @@ -export const STORYBOOK_ADDON_ONBOARDING_CHANNEL = - "STORYBOOK_ADDON_ONBOARDING_CHANNEL"; +export const STORYBOOK_ADDON_ONBOARDING_CHANNEL = 'STORYBOOK_ADDON_ONBOARDING_CHANNEL'; diff --git a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.styled.tsx b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.styled.tsx index 99e441497d10..5f666ab74aae 100644 --- a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.styled.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.styled.tsx @@ -1,20 +1,20 @@ -import { type Theme } from "@storybook/theming"; +import { type Theme } from '@storybook/theming'; export const getStyles = (theme: Theme) => ({ border: 0, - borderRadius: "0.25rem", - cursor: "pointer", - display: "inline-flex", - alignItems: "center", - justifyContent: "center", - padding: "0 0.75rem", + borderRadius: '0.25rem', + cursor: 'pointer', + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + padding: '0 0.75rem', background: theme.color.secondary, - color: "#FFF", + color: '#FFF', height: 32, - fontSize: "0.8125rem", + fontSize: '0.8125rem', fontWeight: 700, fontFamily: theme.typography.fonts.base, - transition: "all 0.16s ease-in-out", - textDecoration: "none", - outline: "none", + transition: 'all 0.16s ease-in-out', + textDecoration: 'none', + outline: 'none', }); diff --git a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx index 69c77c821b97..3fd3f58cec5b 100644 --- a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx @@ -1,16 +1,18 @@ -import React, { useEffect, useMemo, useState } from "react"; -import Joyride, { CallBackProps, STATUS, Step } from "react-joyride"; -import { API } from "@storybook/manager-api"; -import { UPDATE_STORY_ARGS } from "@storybook/core-events"; -import { useTheme } from "@storybook/theming"; +import React, { useEffect, useMemo, useState } from 'react'; +import type { CallBackProps } from 'react-joyride'; +import Joyride, { STATUS, Step } from 'react-joyride'; +import type { API } from '@storybook/manager-api'; +import { UPDATE_STORY_ARGS } from '@storybook/core-events'; +import { useTheme } from '@storybook/theming'; -import { PulsatingEffect } from "../../components/PulsatingEffect/PulsatingEffect"; -import { Confetti } from "../../components/Confetti/Confetti"; -import { Tooltip, TooltipProps } from "./Tooltip"; -import { SpanHighlight } from "../WriteStoriesModal/WriteStoriesModal.styled"; -import { CodeSnippets } from "../WriteStoriesModal/code/types"; +import { PulsatingEffect } from '../../components/PulsatingEffect/PulsatingEffect'; +import { Confetti } from '../../components/Confetti/Confetti'; +import type { TooltipProps } from './Tooltip'; +import { Tooltip } from './Tooltip'; +import { SpanHighlight } from '../WriteStoriesModal/WriteStoriesModal.styled'; +import type { CodeSnippets } from '../WriteStoriesModal/code/types'; -type GuidedTourStep = TooltipProps["step"]; +type GuidedTourStep = TooltipProps['step']; export function GuidedTour({ api, @@ -34,126 +36,120 @@ export function GuidedTour({ }); }, []); - const storyPlaygroundElement = useMemo(() => { - return (document.querySelector("#root div[role=main]") || document.querySelector("#storybook-panel-root")) as HTMLElement - }, []) + return (document.querySelector('#root div[role=main]') || + document.querySelector('#storybook-panel-root')) as HTMLElement; + }, []); const steps: GuidedTourStep[] = isFinalStep ? [ - { - target: "#example-button--warning", - title: "Congratulations!", - content: ( - <> - You just created your first story. Continue setting up your - project to write stories for your own components. - - ), - placement: "right", - disableOverlay: true, - disableBeacon: true, - floaterProps: { - disableAnimation: true, - }, - onNextButtonClick() { - onLastTourDone(); + { + target: '#example-button--warning', + title: 'Congratulations!', + content: ( + <> + You just created your first story. Continue setting up your project to write stories + for your own components. + + ), + placement: 'right', + disableOverlay: true, + disableBeacon: true, + floaterProps: { + disableAnimation: true, + }, + onNextButtonClick() { + onLastTourDone(); + }, }, - }, - ] + ] : [ - { - target: "#storybook-explorer-tree > div", - title: "Storybook is built from stories", - content: ( - <> - Storybook stories represent the key states of each of your - components. -
    -
    - {codeSnippets?.filename && ( - <> - We automatically added four stories for this Button component - in this example file: -
    - {codeSnippets.filename} - - )} - - ), - placement: "right", - disableBeacon: true, - styles: { - spotlight: { - transform: "translateY(30px)", + { + target: '#storybook-explorer-tree > div', + title: 'Storybook is built from stories', + content: ( + <> + Storybook stories represent the key states of each of your components. +
    +
    + {codeSnippets?.filename && ( + <> + We automatically added four stories for this Button component in this example + file: +
    + {codeSnippets.filename} + + )} + + ), + placement: 'right', + disableBeacon: true, + styles: { + spotlight: { + transform: 'translateY(30px)', + }, + }, + floaterProps: { + disableAnimation: true, }, }, - floaterProps: { - disableAnimation: true, - }, - }, - { - target: "#storybook-preview-iframe", - title: "Storybook previews are interactive", - content: - "Whenever you modify code or stories, Storybook automatically updates how it previews your components.", - placement: "bottom", - styles: { - spotlight: { - borderRadius: 0, + { + target: '#storybook-preview-iframe', + title: 'Storybook previews are interactive', + content: + 'Whenever you modify code or stories, Storybook automatically updates how it previews your components.', + placement: 'bottom', + styles: { + spotlight: { + borderRadius: 0, + }, }, }, - }, - { - target: storyPlaygroundElement, - title: "Interactive story playground", - content: ( - <> - See how a story renders with different data and state without - touching code. -
    -
    - Try it out by pressing this button. - - - ), - placement: "right", - spotlightClicks: true, - floaterProps: { - target: "#control-primary", - options: { - preventOverflow: { - boundariesElement: "window", + { + target: storyPlaygroundElement, + title: 'Interactive story playground', + content: ( + <> + See how a story renders with different data and state without touching code. +
    +
    + Try it out by pressing this button. + + + ), + placement: 'right', + spotlightClicks: true, + floaterProps: { + target: '#control-primary', + options: { + preventOverflow: { + boundariesElement: 'window', + }, }, }, + hideNextButton: true, }, - hideNextButton: true, - }, - { - target: "#control-primary", - title: "Congratulations!", - content: ( - <> - You learned how to control your stories interactively. Now let's - explore how to write your first story. - - - ), - placement: "right", - floaterProps: { - options: { - preventOverflow: { - boundariesElement: "window", + { + target: '#control-primary', + title: 'Congratulations!', + content: ( + <> + You learned how to control your stories interactively. Now let's explore how to write + your first story. + + + ), + placement: 'right', + floaterProps: { + options: { + preventOverflow: { + boundariesElement: 'window', + }, }, }, + disableOverlay: true, }, - disableOverlay: true, - }, - ]; + ]; return ( diff --git a/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx b/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx index 4dd38bae6853..9fcc32d06dee 100644 --- a/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx @@ -1,11 +1,11 @@ -import React from "react"; -import { styled } from "@storybook/theming"; -import { Step, TooltipRenderProps } from "react-joyride"; -import { Button } from "../../components/Button/Button"; +import React from 'react'; +import { styled } from '@storybook/theming'; +import type { Step, TooltipRenderProps } from 'react-joyride'; +import { Button } from '../../components/Button/Button'; const TooltipBody = styled.div` background: ${({ theme }) => { - return theme.base === "dark" ? "#292A2C" : theme.color.lightest; + return theme.base === 'dark' ? '#292A2C' : theme.color.lightest; }}; width: 260px; padding: 15px; @@ -45,8 +45,8 @@ export type TooltipProps = { hideNextButton?: boolean; onNextButtonClick?: () => void; }; - primaryProps: TooltipRenderProps["primaryProps"] - tooltipProps: TooltipRenderProps["tooltipProps"] + primaryProps: TooltipRenderProps['primaryProps']; + tooltipProps: TooltipRenderProps['tooltipProps']; }; export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { @@ -61,9 +61,7 @@ export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { - )} + {step === 'customStory' && backdropBoundary && !warningButtonStatus?.data && ( + + )}
    @@ -139,7 +131,7 @@ export const WriteStoriesModal: FC<WriteStoriesModalProps> = ({ = ({
    - {step === "imports" && ( + {step === 'imports' && ( <>

    Imports

    {isJavascript ? ( -

    - Import a component. In this case, the Button - component. -

    +

    Import a component. In this case, the Button component.

    ) : ( <>

    - First, import Meta{" "} - and StoryObj for type - safety and autocompletion in TypeScript stories. -

    -

    - Next, import a component. In this case, the Button - component. + First, import Meta and{' '} + StoryObj for type safety and + autocompletion in TypeScript stories.

    +

    Next, import a component. In this case, the Button component.

    )}
    )} - {step === "meta" && ( + {step === 'meta' && ( <>

    Meta

    - The default export, Meta, contains metadata about this - component's stories. The title field (optional) controls - where stories appear in the sidebar. + The default export, Meta, contains metadata about this component's stories. + The title field (optional) controls where stories appear in the sidebar.

    = ({ />
    - - + )} - {step === "story" && ( + {step === 'story' && ( <>

    Story

    - Each named export is a story. Its contents specify how - the story is rendered in addition to other configuration - options. + Each named export is a story. Its contents specify how the story is rendered + in addition to other configuration options.

    = ({ />
    - - + )} - {step === "args" && ( + {step === 'args' && ( <>

    Args

    - Args are inputs that are passed to the component, which - Storybook uses to render the component in different - states. In React, args = props. They also specify the - initial control values for the story. + Args are inputs that are passed to the component, which Storybook uses to + render the component in different states. In React, args = props. They also + specify the initial control values for the story.

    Args mapped to their controls in Storybook = ({ />
    - - + )} - {step === "customStory" && + {step === 'customStory' && (!warningButtonStatus?.error ? ( <>

    Create your first story

    - Now it's your turn. See how easy it is to create your - first story by following these steps below. + Now it's your turn. See how easy it is to create your first story by + following these steps below.

    Copy the Warning story. - + - Open the Button story in your current working - directory. + Open the Button story in your current working directory. {buttonPath?.data && ( // Replace '/' by '/' to properly break line - {buttonPath.data - .replaceAll("/", "/​") - .replaceAll("\\", "\\​")} + {buttonPath.data.replaceAll('/', '/​').replaceAll('\\', '\\​')} )} - + Paste it at the bottom of the file and save.
    - {warningButtonStatus?.data ? ( - + ) : null} diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/code/javascript.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/code/javascript.tsx index f963f46a2f38..2a91a7972e14 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/code/javascript.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/code/javascript.tsx @@ -1,8 +1,8 @@ import type { CodeSnippets } from './types'; const data: CodeSnippets = { - filename: "Button.stories.js", - language: "typescript", + filename: 'Button.stories.js', + language: 'typescript', code: [ [ { diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/code/types.ts b/code/addons/onboarding/src/features/WriteStoriesModal/code/types.ts index b98caff78e3c..130b4428f390 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/code/types.ts +++ b/code/addons/onboarding/src/features/WriteStoriesModal/code/types.ts @@ -1,6 +1,6 @@ export type CodeSnippets = { framework?: string; - language: "javascript" | "typescript"; + language: 'javascript' | 'typescript'; filename: string; code: { snippet: string; toggle?: boolean }[][]; }; diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/code/typescript.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/code/typescript.tsx index 158d28f24b73..45a578d8c6bd 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/code/typescript.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/code/typescript.tsx @@ -1,8 +1,8 @@ import type { CodeSnippets } from './types'; const data: CodeSnippets = { - filename: "Button.stories.ts", - language: "typescript", + filename: 'Button.stories.ts', + language: 'typescript', code: [ [ { @@ -53,4 +53,4 @@ const data: CodeSnippets = { ], }; -export default data; \ No newline at end of file +export default data; diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx index 0be06ee440cf..b4a5a5fdd8ab 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; // get an element and return its boundary. It accepts a classname as argument export const useGetBackdropBoundary = (className: string, active: boolean) => { diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx index fdc7ee542744..9521d3d74b20 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx @@ -1,5 +1,5 @@ -import { useEffect, useState } from "react"; -import { Response } from "../../../types/response"; +import { useEffect, useState } from 'react'; +import type { Response } from '../../../types/response'; export function useGetButtonPath() { const [buttonPath, setButtonPath] = useState>(null); @@ -7,11 +7,11 @@ export function useGetButtonPath() { useEffect(() => { const getButtonPath = async () => { try { - const response = await fetch("/index.json"); + const response = await fetch('/index.json'); const json = await response.json(); - const buttonPath = json.entries["example-button--primary"].importPath; + const buttonPathInner = json.entries['example-button--primary'].importPath; setButtonPath({ - data: buttonPath, + data: buttonPathInner, error: null, }); } catch (e) { diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx index 89c081a4a415..58b55a474796 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx @@ -1,11 +1,11 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState } from 'react'; -import dataJavascript from "../code/javascript"; -import dataTypescript from "../code/typescript"; -import { CodeSnippets } from "../code/types"; +import dataJavascript from '../code/javascript'; +import dataTypescript from '../code/typescript'; +import type { CodeSnippets } from '../code/types'; type Project = { - language: "javascript" | "typescript"; + language: 'javascript' | 'typescript'; framework: { name: string; }; @@ -20,9 +20,9 @@ export function useGetProject() { useEffect(() => { const getProject = async () => { try { - const response = await fetch("/project.json"); - const project = await response.json() as Project; - const data = project?.language === "javascript" ? dataJavascript : dataTypescript; + const response = await fetch('/project.json'); + const projectInner = (await response.json()) as Project; + const data = projectInner?.language === 'javascript' ? dataJavascript : dataTypescript; setProject({ data, @@ -31,7 +31,7 @@ export function useGetProject() { } catch (e) { setProject({ data: null, - error: e, + error: e as any, }); } }; diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx index b48f20d4ec31..01bd7fe91176 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx @@ -1,23 +1,16 @@ -import { useState, useEffect } from "react"; -import { Response } from "../../../types/response"; -import { API, AddonStore } from "@storybook/manager-api"; -import { - STORY_INDEX_INVALIDATED, - STORY_RENDERED, -} from "@storybook/core-events"; +import { useState, useEffect } from 'react'; +import type { Response } from '../../../types/response'; +import type { API, AddonStore } from '@storybook/manager-api'; +import { STORY_INDEX_INVALIDATED, STORY_RENDERED } from '@storybook/core-events'; -export const useGetWarningButtonStatus = ( - active: boolean, - api: API, - addonsStore: AddonStore -) => { +export const useGetWarningButtonStatus = (active: boolean, api: API, addonsStore: AddonStore) => { const [status, setStatus] = useState>(null); useEffect(() => { if (active) { const getWarningButtonStatus = () => { addonsStore.getChannel().once(STORY_RENDERED, () => { - const out = api.getData("example-button--warning"); + const out = api.getData('example-button--warning'); if (out) { setStatus({ data: true, error: null }); @@ -27,14 +20,13 @@ export const useGetWarningButtonStatus = ( }); }; - const addonStoreChannel: ReturnType = - addonsStore.getChannel - ? addonsStore.getChannel() - : // TODO: Remove getServerChannel once we drop support for Storybook < 8 - (addonsStore as any).getServerChannel(); + const addonStoreChannel: ReturnType = addonsStore.getChannel + ? addonsStore.getChannel() + : // TODO: Remove getServerChannel once we drop support for Storybook < 8 + (addonsStore as any).getServerChannel(); // If the story already exists, we don't need to listen to any events - if (api.getData("example-button--warning")) { + if (api.getData('example-button--warning')) { setStatus({ data: true, error: null }); } else { addonStoreChannel.on(STORY_INDEX_INVALIDATED, getWarningButtonStatus); diff --git a/code/addons/onboarding/src/helpers/textContentMatcher.tsx b/code/addons/onboarding/src/helpers/textContentMatcher.tsx index ece935b6157a..46865bb3e6e9 100644 --- a/code/addons/onboarding/src/helpers/textContentMatcher.tsx +++ b/code/addons/onboarding/src/helpers/textContentMatcher.tsx @@ -12,7 +12,7 @@ */ export function textContentMatcher(textMatch: string | RegExp) { const hasText = - typeof textMatch === "string" + typeof textMatch === 'string' ? (node: Element) => node.textContent === textMatch : (node: Element) => textMatch.test(node.textContent); diff --git a/code/addons/onboarding/src/manager.tsx b/code/addons/onboarding/src/manager.tsx index c8b2bfce74db..a93fdbbe7469 100644 --- a/code/addons/onboarding/src/manager.tsx +++ b/code/addons/onboarding/src/manager.tsx @@ -1,22 +1,27 @@ -import ReactDOM from "react-dom"; -import React, { lazy, Suspense } from "react"; -import { addons } from "@storybook/manager-api"; -import { STORY_SPECIFIED } from "@storybook/core-events"; +import ReactDOM from 'react-dom'; +import React, { lazy, Suspense } from 'react'; +import { addons } from '@storybook/manager-api'; +import { STORY_SPECIFIED } from '@storybook/core-events'; -const App = lazy(() => import("./App")); +const App = lazy(() => import('./App')); // The addon is enabled only when: // 1. The onboarding query parameter is present // 2. The example button stories are present -addons.register("@storybook/addon-onboarding", async (api) => { +addons.register('@storybook/addon-onboarding', async (api) => { const urlState = api.getUrlState(); - const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true'; + const isOnboarding = + urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true'; api.once(STORY_SPECIFIED, () => { - let hasButtonStories = !!api.getData("example-button--primary") || !!document.getElementById('example-button--primary') + const hasButtonStories = + !!api.getData('example-button--primary') || + !!document.getElementById('example-button--primary'); if (!hasButtonStories) { - console.warn(`[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling`); + console.warn( + `[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling` + ); return; } @@ -25,22 +30,23 @@ addons.register("@storybook/addon-onboarding", async (api) => { } api.togglePanel(true); - api.togglePanelPosition("bottom"); - api.setSelectedPanel("addon-controls"); + api.togglePanelPosition('bottom'); + api.setSelectedPanel('addon-controls'); // Add a new DOM element to document.body, where we will bootstrap our React app - const domNode = document.createElement("div"); + const domNode = document.createElement('div'); - domNode.id = "storybook-addon-onboarding"; + domNode.id = 'storybook-addon-onboarding'; // Append the new DOM element to document.body document.body.appendChild(domNode); // Render the React app + // eslint-disable-next-line react/no-deprecated ReactDOM.render( Loading...
    }> , domNode ); - }) + }); }); diff --git a/code/addons/onboarding/src/preset.ts b/code/addons/onboarding/src/preset.ts index f60451b319b7..7a01574f39ac 100644 --- a/code/addons/onboarding/src/preset.ts +++ b/code/addons/onboarding/src/preset.ts @@ -1,44 +1,34 @@ -import { CoreConfig, Options } from "@storybook/types"; -import type { Channel } from "@storybook/channels"; -import { STORYBOOK_ADDON_ONBOARDING_CHANNEL } from "./constants"; -import { telemetry } from "@storybook/telemetry"; -import fs from "fs"; +import type { CoreConfig, Options } from '@storybook/types'; +import type { Channel } from '@storybook/channels'; +import { STORYBOOK_ADDON_ONBOARDING_CHANNEL } from './constants'; +import { telemetry } from '@storybook/telemetry'; +import fs from 'fs'; type Event = { - type: "telemetry"; + type: 'telemetry'; step: string; payload?: any; }; -export const experimental_serverChannel = async ( - channel: Channel, - options: Options -) => { - const { disableTelemetry } = await options.presets.apply( - "core", - {} - ); +// eslint-disable-next-line @typescript-eslint/naming-convention +export const experimental_serverChannel = async (channel: Channel, options: Options) => { + const { disableTelemetry } = await options.presets.apply('core', {}); if (!disableTelemetry) { - const packageJsonPath = require.resolve( - "@storybook/addon-onboarding/package.json" - ); + const packageJsonPath = require.resolve('@storybook/addon-onboarding/package.json'); const { version: addonVersion } = JSON.parse( - fs.readFileSync(packageJsonPath, { encoding: "utf-8" }) + fs.readFileSync(packageJsonPath, { encoding: 'utf-8' }) ); - channel.on( - STORYBOOK_ADDON_ONBOARDING_CHANNEL, - ({ type, ...event }: Event) => { - if (type === "telemetry") { - telemetry("addon-onboarding" as any, { - ...event, - addonVersion, - }); - } + channel.on(STORYBOOK_ADDON_ONBOARDING_CHANNEL, ({ type, ...event }: Event) => { + if (type === 'telemetry') { + telemetry('addon-onboarding' as any, { + ...event, + addonVersion, + }); } - ); + }); } return channel; diff --git a/code/addons/onboarding/src/stories/Button.stories.ts b/code/addons/onboarding/src/stories/Button.stories.ts index 0e8efae07656..b064ba3f0f41 100644 --- a/code/addons/onboarding/src/stories/Button.stories.ts +++ b/code/addons/onboarding/src/stories/Button.stories.ts @@ -1,19 +1,19 @@ -import type { Meta, StoryObj } from "@storybook/react"; +import type { Meta, StoryObj } from '@storybook/react'; -import { Button } from "./Button"; +import { Button } from './Button'; // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export const meta: Meta = { - title: "Example/Button", + title: 'Example/Button', component: Button, // More on argTypes: https://storybook.js.org/docs/react/api/argtypes argTypes: { - backgroundColor: { control: "color" }, + backgroundColor: { control: 'color' }, }, parameters: { - layout: "centered", + layout: 'centered', }, - tags: ["autodocs"], + tags: ['autodocs'], }; export default meta; @@ -24,26 +24,26 @@ export const Primary: Story = { // More on args: https://storybook.js.org/docs/react/writing-stories/args args: { primary: true, - label: "Button", + label: 'Button', }, }; export const Secondary: Story = { args: { - label: "Button", + label: 'Button', }, }; export const Large: Story = { args: { - size: "large", - label: "Button", + size: 'large', + label: 'Button', }, }; export const Small: Story = { args: { - size: "small", - label: "Button", + size: 'small', + label: 'Button', }, }; diff --git a/code/addons/onboarding/src/stories/Header.stories.ts b/code/addons/onboarding/src/stories/Header.stories.ts index b1091d53a99b..c49a9b7a4e01 100644 --- a/code/addons/onboarding/src/stories/Header.stories.ts +++ b/code/addons/onboarding/src/stories/Header.stories.ts @@ -1,12 +1,12 @@ -import type { Meta, StoryObj } from "@storybook/react"; -import { Header } from "./Header"; +import type { Meta, StoryObj } from '@storybook/react'; +import { Header } from './Header'; const meta: Meta = { - title: "Example/Header", + title: 'Example/Header', component: Header, parameters: { // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout - layout: "fullscreen", + layout: 'fullscreen', }, }; @@ -16,7 +16,7 @@ type Story = StoryObj; export const LoggedIn: Story = { args: { user: { - name: "Jane Doe", + name: 'Jane Doe', }, }, }; diff --git a/code/addons/onboarding/src/types.d.ts b/code/addons/onboarding/src/types.d.ts index cbfbd10d0a4f..dd84df40a488 100644 --- a/code/addons/onboarding/src/types.d.ts +++ b/code/addons/onboarding/src/types.d.ts @@ -1,4 +1,4 @@ -declare module "*.png" { +declare module '*.png' { const content: any; export default content; } diff --git a/code/addons/onboarding/tsconfig.json b/code/addons/onboarding/tsconfig.json index 85bdced47842..a4429176e35f 100644 --- a/code/addons/onboarding/tsconfig.json +++ b/code/addons/onboarding/tsconfig.json @@ -1,18 +1,7 @@ { + "extends": "../../tsconfig.json", "compilerOptions": { - "allowSyntheticDefaultImports": true, - "baseUrl": ".", - "esModuleInterop": true, - "experimentalDecorators": true, - "incremental": false, - "isolatedModules": true, - "jsx": "react", - "lib": ["es2021", "dom"], - "module": "commonjs", - "noImplicitAny": true, - "rootDir": "./src", - "skipLibCheck": true, - "target": "ES2020" + "strict": true }, "include": ["src/**/*"] } diff --git a/code/addons/onboarding/tsup.config.ts b/code/addons/onboarding/tsup.config.ts deleted file mode 100644 index 9672ebadb376..000000000000 --- a/code/addons/onboarding/tsup.config.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { defineConfig, type Options } from "tsup"; -import { readFile } from "fs/promises"; -import { globalPackages as globalManagerPackages } from "@storybook/manager/globals"; -import { globalPackages as globalPreviewPackages } from "@storybook/preview/globals"; - -// The current browsers supported by Storybook v7 -const BROWSER_TARGET: Options["target"] = [ - "chrome100", - "safari15", - "firefox91", -]; -const NODE_TARGET: Options["target"] = ["node16"]; - -type BundlerConfig = { - bundler?: { - exportEntries?: string[]; - nodeEntries?: string[]; - managerEntries?: string[]; - previewEntries?: string[]; - }; -}; - -export default defineConfig(async (options) => { - // reading the three types of entries from package.json, which has the following structure: - // { - // ... - // "bundler": { - // "exportEntries": ["./src/index.ts"], - // "managerEntries": ["./src/manager.ts"], - // "previewEntries": ["./src/preview.ts"], - // "nodeEntries": ["./src/preset.ts"] - // } - // } - const packageJson = (await readFile("./package.json", "utf8").then( - JSON.parse, - )) as BundlerConfig; - const { - bundler: { - exportEntries = [], - managerEntries = [], - previewEntries = [], - nodeEntries = [], - } = {}, - } = packageJson; - - const commonConfig: Options = { - splitting: false, - minify: !options.watch, - treeshake: true, - sourcemap: true, - clean: true, - }; - - const configs: Options[] = []; - - // export entries are entries meant to be manually imported by the user - // they are not meant to be loaded by the manager or preview - // they'll be usable in both node and browser environments, depending on which features and modules they depend on - if (exportEntries.length) { - configs.push({ - ...commonConfig, - entry: exportEntries, - dts: { - resolve: true, - }, - format: ["esm", "cjs"], - target: [...BROWSER_TARGET, ...NODE_TARGET], - platform: "neutral", - external: [...globalManagerPackages, ...globalPreviewPackages], - }); - } - - // manager entries are entries meant to be loaded into the manager UI - // they'll have manager-specific packages externalized and they won't be usable in node - // they won't have types generated for them as they're usually loaded automatically by Storybook - if (managerEntries.length) { - configs.push({ - ...commonConfig, - entry: managerEntries, - format: ["esm"], - target: BROWSER_TARGET, - platform: "browser", - external: globalManagerPackages, - esbuildOptions(options) { - options.conditions = ["module"]; - options.loader = { - ...options.loader, - ".png": "dataurl", - }; - }, - }); - } - - // preview entries are entries meant to be loaded into the preview iframe - // they'll have preview-specific packages externalized and they won't be usable in node - // they won't have types generated for them as they're usually loaded automatically by Storybook - if (previewEntries.length) { - configs.push({ - ...commonConfig, - entry: previewEntries, - format: ["esm"], - target: BROWSER_TARGET, - platform: "browser", - external: globalPreviewPackages, - }); - } - - if (nodeEntries.length > 0) { - configs.push({ - ...commonConfig, - entry: nodeEntries, - format: ["cjs"], - target: NODE_TARGET, - platform: "node", - external: globalPreviewPackages, - }); - } - - return configs; -}); diff --git a/code/addons/onboarding/vitest.config.ts b/code/addons/onboarding/vitest.config.ts new file mode 100644 index 000000000000..622642938f21 --- /dev/null +++ b/code/addons/onboarding/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig, mergeConfig } from 'vitest/config'; +import { sep, posix } from 'path'; +import { vitestCommonConfig } from '../../vitest.workspace'; + +export default mergeConfig( + vitestCommonConfig, + defineConfig({ + test: { + environment: 'jsdom', + name: __dirname.split(sep).slice(-2).join(posix.sep), + }, + }) +); diff --git a/code/yarn.lock b/code/yarn.lock index 07c7d2bd6b0e..c9d927c87563 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -2543,6 +2543,15 @@ __metadata: languageName: node linkType: hard +"@emotion/is-prop-valid@npm:^0.8.2": + version: 0.8.8 + resolution: "@emotion/is-prop-valid@npm:0.8.8" + dependencies: + "@emotion/memoize": "npm:0.7.4" + checksum: f6be625f067c7fa56a12a4edaf090715616dc4fc7803c87212831f38c969350107b9709b1be54100e53153b18d9fa068eb4bf4f9ac66a37a8edf1bac9b64e279 + languageName: node + linkType: hard + "@emotion/is-prop-valid@npm:^1.2.1": version: 1.2.1 resolution: "@emotion/is-prop-valid@npm:1.2.1" @@ -2552,6 +2561,13 @@ __metadata: languageName: node linkType: hard +"@emotion/memoize@npm:0.7.4": + version: 0.7.4 + resolution: "@emotion/memoize@npm:0.7.4" + checksum: b2376548fc147b43afd1ff005a80a1a025bd7eb4fb759fdb23e96e5ff290ee8ba16628a332848d600fb91c3cdc319eee5395fa33d8875e5d5a8c4ce18cddc18e + languageName: node + linkType: hard + "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -2905,6 +2921,39 @@ __metadata: languageName: node linkType: hard +"@gilbarbara/deep-equal@npm:^0.1.1": + version: 0.1.2 + resolution: "@gilbarbara/deep-equal@npm:0.1.2" + checksum: ef441034a34d3e3a2fdcdd473b1082c4e8a324682c8a35cea100d60b5341fecb7249ae043eecf2ea9bdf736a1fe582b294a347095c3d48a1d9d04d7d6e4ad16a + languageName: node + linkType: hard + +"@gilbarbara/deep-equal@npm:^0.3.1": + version: 0.3.1 + resolution: "@gilbarbara/deep-equal@npm:0.3.1" + checksum: 009584aa912f13c59e98b35c3ebf99ff7fc7c5658d5394fd56d58570da61d68cbc6f7ec082ad2ef009ff72873cc1bd8b9b9fda9e39f7e6594fd643a915e0bc94 + languageName: node + linkType: hard + +"@gilbarbara/helpers@npm:^0.9.2": + version: 0.9.2 + resolution: "@gilbarbara/helpers@npm:0.9.2" + dependencies: + "@gilbarbara/types": "npm:^0.2.2" + is-lite: "npm:^1.2.1" + checksum: 18aa7c59b412d3b76e84aa745595a76cba0d505af3c1bfc109993f1da99655769539296993cc2db5f78b3db260907020895bb6adec4f9ea4486532b9a255c290 + languageName: node + linkType: hard + +"@gilbarbara/types@npm:^0.2.2": + version: 0.2.2 + resolution: "@gilbarbara/types@npm:0.2.2" + dependencies: + type-fest: "npm:^4.1.0" + checksum: c998bfb41ff84b5640fcb0cd47d2bdf963c7d36792673edddc469d5a1752a5f7105697e79d34db69062562ae3506283c2474ca14785af652610d8abe17ddbef3 + languageName: node + linkType: hard + "@gitbeaker/core@npm:^35.8.1": version: 35.8.1 resolution: "@gitbeaker/core@npm:35.8.1" @@ -3489,6 +3538,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/schemas@npm:28.1.3" + dependencies: + "@sinclair/typebox": "npm:^0.24.1" + checksum: 8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -4431,6 +4489,39 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-dialog@npm:^1.0.5": + version: 1.0.5 + resolution: "@radix-ui/react-dialog@npm:1.0.5" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/primitive": "npm:1.0.1" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-context": "npm:1.0.1" + "@radix-ui/react-dismissable-layer": "npm:1.0.5" + "@radix-ui/react-focus-guards": "npm:1.0.1" + "@radix-ui/react-focus-scope": "npm:1.0.4" + "@radix-ui/react-id": "npm:1.0.1" + "@radix-ui/react-portal": "npm:1.0.4" + "@radix-ui/react-presence": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-slot": "npm:1.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.0.1" + aria-hidden: "npm:^1.1.1" + react-remove-scroll: "npm:2.5.5" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: c5b3069397379e79857a3203f3ead4d12d87736b59899f02a63e620a07dd1e6704e15523926cdf8e39afe1c945a7ff0f2533c5ea5be1e17c3114820300a51133 + languageName: node + linkType: hard + "@radix-ui/react-direction@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-direction@npm:1.0.1" @@ -4446,6 +4537,103 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-dismissable-layer@npm:1.0.5": + version: 1.0.5 + resolution: "@radix-ui/react-dismissable-layer@npm:1.0.5" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/primitive": "npm:1.0.1" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + "@radix-ui/react-use-escape-keydown": "npm:1.0.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 7e4308867aecfb07b506330c1964d94a52247ab9453725613cd326762aa13e483423c250f107219c131b0449600eb8d1576ce3159c2b96e8c978f75e46062cb2 + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-focus-guards@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-focus-scope@npm:1.0.4" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 2fce0bafcab4e16cf4ed7560bda40654223f3d0add6b231e1c607433030c14e6249818b444b7b58ee7a6ff6bbf8e192c9c81d22c3a5c88c2daade9d1f881b5be + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-layout-effect": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-portal@npm:1.0.4" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-primitive": "npm:1.0.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: fed32f8148b833fe852fb5e2f859979ffdf2fb9a9ef46583b9b52915d764ad36ba5c958a64e61d23395628ccc09d678229ee94cd112941e8fe2575021f820c29 + languageName: node + linkType: hard + "@radix-ui/react-presence@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-presence@npm:1.0.1" @@ -4546,6 +4734,38 @@ __metadata: languageName: node linkType: hard +"@radix-ui/react-use-controllable-state@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad + languageName: node + linkType: hard + "@radix-ui/react-use-layout-effect@npm:1.0.1": version: 1.0.1 resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" @@ -4739,6 +4959,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.24.1": + version: 0.24.51 + resolution: "@sinclair/typebox@npm:0.24.51" + checksum: 458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -5075,6 +5302,39 @@ __metadata: languageName: unknown linkType: soft +"@storybook/addon-onboarding@workspace:addons/onboarding": + version: 0.0.0-use.local + resolution: "@storybook/addon-onboarding@workspace:addons/onboarding" + dependencies: + "@radix-ui/react-dialog": "npm:^1.0.5" + "@storybook/addon-essentials": "workspace:*" + "@storybook/addon-interactions": "workspace:*" + "@storybook/addon-links": "workspace:*" + "@storybook/blocks": "workspace:*" + "@storybook/channels": "workspace:*" + "@storybook/components": "workspace:*" + "@storybook/core-events": "workspace:*" + "@storybook/icons": "npm:^1.2.5" + "@storybook/jest": "npm:^0.2.3" + "@storybook/manager": "workspace:*" + "@storybook/manager-api": "workspace:*" + "@storybook/preview": "workspace:*" + "@storybook/react": "workspace:*" + "@storybook/react-vite": "workspace:*" + "@storybook/telemetry": "workspace:*" + "@storybook/testing-library": "npm:^0.2.2" + "@storybook/theming": "workspace:*" + "@storybook/types": "workspace:*" + framer-motion: "npm:^11.0.3" + react: "npm:^18.2.0" + react-confetti: "npm:^6.1.0" + react-dom: "npm:^18.2.0" + react-joyride: "npm:^2.7.2" + react-use-measure: "npm:^2.1.1" + typescript: "npm:^5.3.2" + languageName: unknown + linkType: soft + "@storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": version: 0.0.0-use.local resolution: "@storybook/addon-outline@workspace:addons/outline" @@ -5827,6 +6087,15 @@ __metadata: languageName: node linkType: hard +"@storybook/expect@npm:storybook-jest": + version: 28.1.3-5 + resolution: "@storybook/expect@npm:28.1.3-5" + dependencies: + "@types/jest": "npm:28.1.3" + checksum: ea912b18e1353cdd3bbdf93667ffebca7f843fa28a01e647429bffa6cb074afd4401d13eb2ecbfc9714e100e128ec1fe2686bded52e9e378ce44774889563558 + languageName: node + linkType: hard + "@storybook/global@npm:^5.0.0": version: 5.0.0 resolution: "@storybook/global@npm:5.0.0" @@ -5900,6 +6169,18 @@ __metadata: languageName: unknown linkType: soft +"@storybook/jest@npm:^0.2.3": + version: 0.2.3 + resolution: "@storybook/jest@npm:0.2.3" + dependencies: + "@storybook/expect": "npm:storybook-jest" + "@testing-library/jest-dom": "npm:^6.1.2" + "@types/jest": "npm:28.1.3" + jest-mock: "npm:^27.3.0" + checksum: a2c367649ae53d9385b16f49bd73d5a928a2c3b9e64c2efcc1bbfc081b3b75972293bbe0e1828b67c94f0c2ed96341e0fae0ad5e30484a0ed4715724bbbf2c76 + languageName: node + linkType: hard + "@storybook/linter-config@npm:4.0.0, @storybook/linter-config@npm:^4.0.0": version: 4.0.0 resolution: "@storybook/linter-config@npm:4.0.0" @@ -6745,6 +7026,17 @@ __metadata: languageName: unknown linkType: soft +"@storybook/testing-library@npm:^0.2.2": + version: 0.2.2 + resolution: "@storybook/testing-library@npm:0.2.2" + dependencies: + "@testing-library/dom": "npm:^9.0.0" + "@testing-library/user-event": "npm:^14.4.0" + ts-dedent: "npm:^2.2.0" + checksum: 3179c74148c92267ea449068ce9fb00bf960dbf06654354de7869428415d16dc730a0d58b5adca7619d21e5a058ae0bf713e34c09be8bca574388ec0106c5068 + languageName: node + linkType: hard + "@storybook/testing-library@npm:next": version: 0.2.2-next.0 resolution: "@storybook/testing-library@npm:0.2.2-next.0" @@ -7000,6 +7292,39 @@ __metadata: languageName: node linkType: hard +"@testing-library/jest-dom@npm:^6.1.2": + version: 6.4.2 + resolution: "@testing-library/jest-dom@npm:6.4.2" + dependencies: + "@adobe/css-tools": "npm:^4.3.2" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/bun": "*" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/bun": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: e7eba527b34ce30cde94424d2ec685bdfed51daaafb7df9b68b51aec6052e99a50c8bfe654612dacdf857a1eb81d68cf294fc89de558ee3a992bf7a6019fffcc + languageName: node + linkType: hard + "@testing-library/jest-dom@npm:^6.1.4, @testing-library/jest-dom@npm:^6.4.0": version: 6.4.0 resolution: "@testing-library/jest-dom@npm:6.4.0" @@ -7619,6 +7944,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:28.1.3": + version: 28.1.3 + resolution: "@types/jest@npm:28.1.3" + dependencies: + jest-matcher-utils: "npm:^28.0.0" + pretty-format: "npm:^28.0.0" + checksum: d295db8680b5c230698345d6caae621ea9fa8720309027e2306fabfd8769679b4bd7474b4f6e03788905c934eff62105bc0a3e3f1e174feee51b4551d49ac42a + languageName: node + linkType: hard + "@types/js-yaml@npm:^4.0.5": version: 4.0.9 resolution: "@types/js-yaml@npm:4.0.9" @@ -9608,6 +9943,15 @@ __metadata: languageName: node linkType: hard +"aria-hidden@npm:^1.1.1": + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" + dependencies: + tslib: "npm:^2.0.0" + checksum: 46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d + languageName: node + linkType: hard + "aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" @@ -12536,6 +12880,13 @@ __metadata: languageName: node linkType: hard +"debounce@npm:^1.2.1": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.1.3, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.8": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -12624,6 +12975,13 @@ __metadata: languageName: node linkType: hard +"deep-diff@npm:^1.0.2": + version: 1.0.2 + resolution: "deep-diff@npm:1.0.2" + checksum: cc3e315ba95963eba4bbb79ed88d0a37d80ba19bd3b0039b79d2ad0e19e48b0e15c692b49bcd617bbe0dcc7358d40464c993889313dd8bf806bb25978b12375d + languageName: node + linkType: hard + "deep-eql@npm:^4.1.3": version: 4.1.3 resolution: "deep-eql@npm:4.1.3" @@ -12917,6 +13275,13 @@ __metadata: languageName: node linkType: hard +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -12964,6 +13329,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^28.1.1": + version: 28.1.1 + resolution: "diff-sequences@npm:28.1.1" + checksum: 26f29fa3f6b8c9040c3c6f6dab85413d90a09c8e6cb17b318bbcf64f225d7dcb1fb64392f3a9919a90888b434c4f6c8a4cc4f807aad02bbabae912c5d13c31f7 + languageName: node + linkType: hard + "diff-sequences@npm:^29.4.3, diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -15522,6 +15894,27 @@ __metadata: languageName: node linkType: hard +"framer-motion@npm:^11.0.3": + version: 11.0.6 + resolution: "framer-motion@npm:11.0.6" + dependencies: + "@emotion/is-prop-valid": "npm:^0.8.2" + tslib: "npm:^2.4.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependenciesMeta: + "@emotion/is-prop-valid": + optional: true + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: ba987848120847157eb2d8c7669808aa04081b753002c7d57b2adfca92da5de50470117a73e377476b3eec42d13b4c91456f649b97b7900dcc72cb980262af48 + languageName: node + linkType: hard + "fresh@npm:0.5.2, fresh@npm:^0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" @@ -15886,6 +16279,13 @@ __metadata: languageName: node linkType: hard +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 + languageName: node + linkType: hard + "get-npm-tarball-url@npm:^2.0.3": version: 2.1.0 resolution: "get-npm-tarball-url@npm:2.1.0" @@ -17748,6 +18148,20 @@ __metadata: languageName: node linkType: hard +"is-lite@npm:^0.8.2": + version: 0.8.2 + resolution: "is-lite@npm:0.8.2" + checksum: ed4b99d47ff12d0bf9730994cec8bcdee20bf46d68810f55e9e041797c76da664ab6d48a9ed2e7fb3aa52843a48ac4a083561a2235311a046551542504d995fd + languageName: node + linkType: hard + +"is-lite@npm:^1.2.0, is-lite@npm:^1.2.1": + version: 1.2.1 + resolution: "is-lite@npm:1.2.1" + checksum: 53acb0f6329f0aba96fef4d883d42f3d9aabf2c42baba45821407d14b1782b9c6bea42c3eef72b37788be1acc95d6cf2df8a6b8424cb9f6eb12c08d5a7d81288 + languageName: node + linkType: hard + "is-map@npm:^2.0.1, is-map@npm:^2.0.2": version: 2.0.2 resolution: "is-map@npm:2.0.2" @@ -18192,6 +18606,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-diff@npm:28.1.3" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^28.1.1" + jest-get-type: "npm:^28.0.2" + pretty-format: "npm:^28.1.3" + checksum: 17a101ceb7e8f25c3ef64edda15cb1a259c2835395637099f3cc44f578fbd94ced7a13d11c0cbe8c5c1c3959a08544f0a913bec25a305b6dfc9847ce488e7198 + languageName: node + linkType: hard + "jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -18204,6 +18630,13 @@ __metadata: languageName: node linkType: hard +"jest-get-type@npm:^28.0.2": + version: 28.0.2 + resolution: "jest-get-type@npm:28.0.2" + checksum: f64a40cfa10d79a56b383919033d35c8c4daee6145a1df31ec5ef2283fa7e8adbd443c6fcb4cfd0f60bbbd89f046c2323952f086b06e875cbbbc1a7d543a6e5e + languageName: node + linkType: hard + "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -18234,6 +18667,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^28.0.0": + version: 28.1.3 + resolution: "jest-matcher-utils@npm:28.1.3" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^28.1.3" + jest-get-type: "npm:^28.0.2" + pretty-format: "npm:^28.1.3" + checksum: 026fbe664cfdaed5a5c9facfc86ccc9bed3718a7d1fe061e355eb6158019a77f74e9b843bc99f9a467966cbebe60bde8b43439174cbf64997d4ad404f8f809d0 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -18263,7 +18708,7 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^27.0.6": +"jest-mock@npm:^27.0.6, jest-mock@npm:^27.3.0": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" dependencies: @@ -23117,7 +23562,7 @@ __metadata: languageName: node linkType: hard -"popper.js@npm:^1.14.4": +"popper.js@npm:^1.14.4, popper.js@npm:^1.16.0": version: 1.16.1 resolution: "popper.js@npm:1.16.1" checksum: 1c1a826f757edb5b8c2049dfd7a9febf6ae1e9d0e51342fc715b49a0c1020fced250d26484619883651e097c5764bbcacd2f31496e3646027f079dd83e072681 @@ -23425,6 +23870,18 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": + version: 28.1.3 + resolution: "pretty-format@npm:28.1.3" + dependencies: + "@jest/schemas": "npm:^28.1.3" + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f + languageName: node + linkType: hard + "pretty-format@npm:^29.5.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" @@ -23996,6 +24453,17 @@ __metadata: languageName: node linkType: hard +"react-confetti@npm:^6.1.0": + version: 6.1.0 + resolution: "react-confetti@npm:6.1.0" + dependencies: + tween-functions: "npm:^1.2.0" + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 + checksum: 5b4eb23eef564695f6db1d25b294ed31d5fa21ff4092c6a38e641f85cd10e3e0b50014366e3ac0f7cf772e73faaecd14614e5b11a5531336fa769dda8068ab59 + languageName: node + linkType: hard + "react-docgen-typescript@npm:^2.2.2": version: 2.2.2 resolution: "react-docgen-typescript@npm:2.2.2" @@ -24096,6 +24564,22 @@ __metadata: languageName: node linkType: hard +"react-floater@npm:^0.7.9": + version: 0.7.9 + resolution: "react-floater@npm:0.7.9" + dependencies: + deepmerge: "npm:^4.3.1" + is-lite: "npm:^0.8.2" + popper.js: "npm:^1.16.0" + prop-types: "npm:^15.8.1" + tree-changes: "npm:^0.9.1" + peerDependencies: + react: 15 - 18 + react-dom: 15 - 18 + checksum: 3fa58e968a405fb95a004897ed19c87b4991e52ebd45d837b8577eb9175ddc1dfab223bb653a0fa73ffc22fc2b2a30f2d07e924f41f41a040299793e4d2decd4 + languageName: node + linkType: hard + "react-github-button@npm:^0.1.11": version: 0.1.11 resolution: "react-github-button@npm:0.1.11" @@ -24121,6 +24605,16 @@ __metadata: languageName: node linkType: hard +"react-innertext@npm:^1.1.5": + version: 1.1.5 + resolution: "react-innertext@npm:1.1.5" + peerDependencies: + "@types/react": ">=0.0.0 <=99" + react: ">=0.0.0 <=99" + checksum: 45335918ac83334133a9fa0df4ce109e0d4a45d54b783a8eaec88811b36dd5c3bbb5d9a6af2da1eed518a6f325a6ffae4be7bd30878596e0ec1760b231a8e0ee + languageName: node + linkType: hard + "react-inspector@npm:^6.0.0": version: 6.0.2 resolution: "react-inspector@npm:6.0.2" @@ -24158,6 +24652,29 @@ __metadata: languageName: node linkType: hard +"react-joyride@npm:^2.7.2": + version: 2.7.3 + resolution: "react-joyride@npm:2.7.3" + dependencies: + "@gilbarbara/deep-equal": "npm:^0.3.1" + "@gilbarbara/helpers": "npm:^0.9.2" + deep-diff: "npm:^1.0.2" + deepmerge: "npm:^4.3.1" + is-lite: "npm:^1.2.1" + react-floater: "npm:^0.7.9" + react-innertext: "npm:^1.1.5" + react-is: "npm:^16.13.1" + scroll: "npm:^3.0.1" + scrollparent: "npm:^2.1.0" + tree-changes: "npm:^0.11.2" + type-fest: "npm:^4.10.2" + peerDependencies: + react: 15 - 18 + react-dom: 15 - 18 + checksum: cd68fde2ba82b771179220f5594bb145ef25e29e6a07cfd182d21cbfaf87c59a374601cf9c96f3990e992ed2e81d47ecbae37a9a5d28f387dda83da723e94332 + languageName: node + linkType: hard + "react-lifecycles-compat@npm:^3.0.0": version: 3.0.4 resolution: "react-lifecycles-compat@npm:3.0.4" @@ -24252,6 +24769,41 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.3": + version: 2.3.5 + resolution: "react-remove-scroll-bar@npm:2.3.5" + dependencies: + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 21b2b02818b04f2c755c5062c90385420adb244107ac90ec87d43cd338760d3cc1cae6eeb59ab198bbc9e388e1a5909551e0b8a708b0d87ce221cf50951bb1fc + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.5": + version: 2.5.5 + resolution: "react-remove-scroll@npm:2.5.5" + dependencies: + react-remove-scroll-bar: "npm:^2.3.3" + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.1.0" + use-callback-ref: "npm:^1.3.0" + use-sidecar: "npm:^1.1.2" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 + languageName: node + linkType: hard + "react-resize-detector@npm:^7.1.2": version: 7.1.2 resolution: "react-resize-detector@npm:7.1.2" @@ -24288,6 +24840,23 @@ __metadata: languageName: node linkType: hard +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: "npm:^1.0.0" + invariant: "npm:^2.2.4" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad + languageName: node + linkType: hard + "react-syntax-highlighter@npm:^15.4.5, react-syntax-highlighter@npm:^15.5.0": version: 15.5.0 resolution: "react-syntax-highlighter@npm:15.5.0" @@ -24331,6 +24900,18 @@ __metadata: languageName: node linkType: hard +"react-use-measure@npm:^2.1.1": + version: 2.1.1 + resolution: "react-use-measure@npm:2.1.1" + dependencies: + debounce: "npm:^1.2.1" + peerDependencies: + react: ">=16.13" + react-dom: ">=16.13" + checksum: 77b035189dbd613f50014ae56cbfc1363a4eba5104f68f3bc09cbdd20719ae7fb42884e53328175c30b238215c5b8064c60098d70b3fa9b8d902db6ffb07c6a3 + languageName: node + linkType: hard + "react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -25694,6 +26275,20 @@ __metadata: languageName: node linkType: hard +"scroll@npm:^3.0.1": + version: 3.0.1 + resolution: "scroll@npm:3.0.1" + checksum: 5b0c98089be0edb43444c7604a4866a0a4c457ac6c3c559b23b9c19e48bb9f977a5876bfeba8e567740b70c05dab75a01cef1a935faf47fdb6a505b538b413ed + languageName: node + linkType: hard + +"scrollparent@npm:^2.1.0": + version: 2.1.0 + resolution: "scrollparent@npm:2.1.0" + checksum: b377ec5a461f6ed8021f0c3c6b0c76317341c33838f047e91387cdfe0ba4c28aa2a3855240458f9bcf1e18e6c8718540075eb1215fc094496300114f295b2e6b + languageName: node + linkType: hard + "secure-compare@npm:3.0.1": version: 3.0.1 resolution: "secure-compare@npm:3.0.1" @@ -27703,6 +28298,26 @@ __metadata: languageName: node linkType: hard +"tree-changes@npm:^0.11.2": + version: 0.11.2 + resolution: "tree-changes@npm:0.11.2" + dependencies: + "@gilbarbara/deep-equal": "npm:^0.3.1" + is-lite: "npm:^1.2.0" + checksum: bcdcf9b5503c32020abdcaa74dbd6bf83d7c7e991e15f3178138261f40da0f4b373556d3cd2a6cbbecc8bcdcd773d4bab050526e8a730102c81b40f68fa37e97 + languageName: node + linkType: hard + +"tree-changes@npm:^0.9.1": + version: 0.9.3 + resolution: "tree-changes@npm:0.9.3" + dependencies: + "@gilbarbara/deep-equal": "npm:^0.1.1" + is-lite: "npm:^0.8.2" + checksum: e7a38ed3c22ed1195a78e800a8f08a01d44cd8f4abac421b2be6ae34f991dfbd60ce4235be4e002882f3debef95b8e0f7e027b3b758325e9b4bda905c34d3d8f + languageName: node + linkType: hard + "tree-kill@npm:1.2.2, tree-kill@npm:^1.2.2": version: 1.2.2 resolution: "tree-kill@npm:1.2.2" @@ -27926,6 +28541,13 @@ __metadata: languageName: node linkType: hard +"tween-functions@npm:^1.2.0": + version: 1.2.0 + resolution: "tween-functions@npm:1.2.0" + checksum: 7e59295b8b0ee4132ed2fe335f56a9db5c87056dad6b6fd3011be72239fd20398003ddb4403bc98ad9f5c94468890830f64016edbbde35581faf95b32cda8305 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -28641,6 +29263,21 @@ __metadata: languageName: node linkType: hard +"use-callback-ref@npm:^1.3.0": + version: 1.3.1 + resolution: "use-callback-ref@npm:1.3.1" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6666cd62e13053d03e453b5199037cb8f6475a8f55afd664ff488bd8f2ee2ede4da3b220dd7e60f5ecd4926133364fbf4b1aed463eeb8203e7c5be3b1533b59b + languageName: node + linkType: hard + "use-composed-ref@npm:^1.3.0": version: 1.3.0 resolution: "use-composed-ref@npm:1.3.0" @@ -28688,6 +29325,22 @@ __metadata: languageName: node linkType: hard +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: "npm:^1.1.0" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 + languageName: node + linkType: hard + "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" From 45caf9f70649144485a1d9e911665ab687ee373f Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Fri, 23 Feb 2024 13:57:57 +0100 Subject: [PATCH 332/430] Add todo comment --- code/lib/codemod/src/transforms/mdx-to-csf.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/lib/codemod/src/transforms/mdx-to-csf.ts b/code/lib/codemod/src/transforms/mdx-to-csf.ts index ed95f433a2ce..765331e40b2e 100644 --- a/code/lib/codemod/src/transforms/mdx-to-csf.ts +++ b/code/lib/codemod/src/transforms/mdx-to-csf.ts @@ -56,6 +56,8 @@ export default async function jscodeshift(info: FileInfo) { } } +// The JSCodeshift CLI doesn't return a list of files that were transformed or skipped. +// This is a workaround to rename the files after the transformation, which we can remove after we switch from jscodeshift to another solution. process.on('exit', () => { renameList.forEach((file) => { fs.renameSync(file.original, `${file.baseName}.mdx`); From 596f3d989301ec5a1faf3a06dce5bab8074a9c23 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 15:11:27 +0100 Subject: [PATCH 333/430] update CLI with new package version --- code/lib/cli/src/generators/NEXTJS/index.ts | 3 +- code/lib/cli/src/generators/REACT/index.ts | 3 +- .../cli/src/generators/REACT_SCRIPTS/index.ts | 5 +- .../cli/src/generators/WEBPACK_REACT/index.ts | 3 +- code/lib/core-common/src/versions.ts | 1 + code/yarn.lock | 134 +----------------- 6 files changed, 11 insertions(+), 138 deletions(-) diff --git a/code/lib/cli/src/generators/NEXTJS/index.ts b/code/lib/cli/src/generators/NEXTJS/index.ts index fe6672b669a7..48d00d92bb2a 100644 --- a/code/lib/cli/src/generators/NEXTJS/index.ts +++ b/code/lib/cli/src/generators/NEXTJS/index.ts @@ -3,6 +3,7 @@ import { existsSync } from 'fs'; import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; +import { versions } from '@storybook/core-common'; const generator: Generator = async (packageManager, npmOptions, options) => { let staticDir; @@ -15,7 +16,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { 'react', { staticDir, - extraAddons: ['@storybook/addon-onboarding@^1.0.0'], + extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], webpackCompiler: ({ builder }) => undefined, }, 'nextjs' diff --git a/code/lib/cli/src/generators/REACT/index.ts b/code/lib/cli/src/generators/REACT/index.ts index 967ed7b5531b..61ce924803d1 100644 --- a/code/lib/cli/src/generators/REACT/index.ts +++ b/code/lib/cli/src/generators/REACT/index.ts @@ -1,3 +1,4 @@ +import { versions } from '@storybook/core-common'; import { detectLanguage } from '../../detect'; import { CoreBuilder, SupportedLanguage } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; @@ -11,7 +12,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { await baseGenerator(packageManager, npmOptions, options, 'react', { extraPackages, webpackCompiler: ({ builder }) => (builder === CoreBuilder.Webpack5 ? 'swc' : undefined), - extraAddons: ['@storybook/addon-onboarding@^1.0.0'], + extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], }); }; diff --git a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts index 97a8c906d526..e28da35f86c7 100644 --- a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts +++ b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts @@ -47,10 +47,9 @@ const generator: Generator = async (packageManager, npmOptions, options) => { // Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode extraPackages.push('prop-types'); - const version = versions['@storybook/preset-create-react-app']; const extraAddons = [ - `@storybook/preset-create-react-app@${version}`, - '@storybook/addon-onboarding', + `@storybook/preset-create-react-app@${versions['@storybook/preset-create-react-app']}`, + `@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`, ]; await baseGenerator( diff --git a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts index a6f0293248f4..223e07554efc 100644 --- a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts +++ b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts @@ -1,10 +1,11 @@ +import { versions } from '@storybook/core-common'; import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { await baseGenerator(packageManager, npmOptions, options, 'react', { - extraAddons: ['@storybook/addon-onboarding@^1.0.0'], + extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], webpackCompiler: ({ builder }) => (builder === CoreBuilder.Webpack5 ? 'swc' : undefined), }); }; diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 011e54bc40c1..d64008e1affb 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -12,6 +12,7 @@ export default { '@storybook/addon-links': '8.0.0-beta.4', '@storybook/addon-mdx-gfm': '8.0.0-beta.4', '@storybook/addon-measure': '8.0.0-beta.4', + '@storybook/addon-onboarding': '8.0.0-beta.4', '@storybook/addon-outline': '8.0.0-beta.4', '@storybook/addon-storysource': '8.0.0-beta.4', '@storybook/addon-themes': '8.0.0-beta.4', diff --git a/code/yarn.lock b/code/yarn.lock index c9d927c87563..a44af1e3deed 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -3538,15 +3538,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/schemas@npm:28.1.3" - dependencies: - "@sinclair/typebox": "npm:^0.24.1" - checksum: 8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -4959,13 +4950,6 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.51 - resolution: "@sinclair/typebox@npm:0.24.51" - checksum: 458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 - languageName: node - linkType: hard - "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -5315,13 +5299,13 @@ __metadata: "@storybook/components": "workspace:*" "@storybook/core-events": "workspace:*" "@storybook/icons": "npm:^1.2.5" - "@storybook/jest": "npm:^0.2.3" "@storybook/manager": "workspace:*" "@storybook/manager-api": "workspace:*" "@storybook/preview": "workspace:*" "@storybook/react": "workspace:*" "@storybook/react-vite": "workspace:*" "@storybook/telemetry": "workspace:*" + "@storybook/test": "workspace:*" "@storybook/testing-library": "npm:^0.2.2" "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" @@ -6087,15 +6071,6 @@ __metadata: languageName: node linkType: hard -"@storybook/expect@npm:storybook-jest": - version: 28.1.3-5 - resolution: "@storybook/expect@npm:28.1.3-5" - dependencies: - "@types/jest": "npm:28.1.3" - checksum: ea912b18e1353cdd3bbdf93667ffebca7f843fa28a01e647429bffa6cb074afd4401d13eb2ecbfc9714e100e128ec1fe2686bded52e9e378ce44774889563558 - languageName: node - linkType: hard - "@storybook/global@npm:^5.0.0": version: 5.0.0 resolution: "@storybook/global@npm:5.0.0" @@ -6169,18 +6144,6 @@ __metadata: languageName: unknown linkType: soft -"@storybook/jest@npm:^0.2.3": - version: 0.2.3 - resolution: "@storybook/jest@npm:0.2.3" - dependencies: - "@storybook/expect": "npm:storybook-jest" - "@testing-library/jest-dom": "npm:^6.1.2" - "@types/jest": "npm:28.1.3" - jest-mock: "npm:^27.3.0" - checksum: a2c367649ae53d9385b16f49bd73d5a928a2c3b9e64c2efcc1bbfc081b3b75972293bbe0e1828b67c94f0c2ed96341e0fae0ad5e30484a0ed4715724bbbf2c76 - languageName: node - linkType: hard - "@storybook/linter-config@npm:4.0.0, @storybook/linter-config@npm:^4.0.0": version: 4.0.0 resolution: "@storybook/linter-config@npm:4.0.0" @@ -7292,39 +7255,6 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.1.2": - version: 6.4.2 - resolution: "@testing-library/jest-dom@npm:6.4.2" - dependencies: - "@adobe/css-tools": "npm:^4.3.2" - "@babel/runtime": "npm:^7.9.2" - aria-query: "npm:^5.0.0" - chalk: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.6.3" - lodash: "npm:^4.17.15" - redent: "npm:^3.0.0" - peerDependencies: - "@jest/globals": ">= 28" - "@types/bun": "*" - "@types/jest": ">= 28" - jest: ">= 28" - vitest: ">= 0.32" - peerDependenciesMeta: - "@jest/globals": - optional: true - "@types/bun": - optional: true - "@types/jest": - optional: true - jest: - optional: true - vitest: - optional: true - checksum: e7eba527b34ce30cde94424d2ec685bdfed51daaafb7df9b68b51aec6052e99a50c8bfe654612dacdf857a1eb81d68cf294fc89de558ee3a992bf7a6019fffcc - languageName: node - linkType: hard - "@testing-library/jest-dom@npm:^6.1.4, @testing-library/jest-dom@npm:^6.4.0": version: 6.4.0 resolution: "@testing-library/jest-dom@npm:6.4.0" @@ -7944,16 +7874,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:28.1.3": - version: 28.1.3 - resolution: "@types/jest@npm:28.1.3" - dependencies: - jest-matcher-utils: "npm:^28.0.0" - pretty-format: "npm:^28.0.0" - checksum: d295db8680b5c230698345d6caae621ea9fa8720309027e2306fabfd8769679b4bd7474b4f6e03788905c934eff62105bc0a3e3f1e174feee51b4551d49ac42a - languageName: node - linkType: hard - "@types/js-yaml@npm:^4.0.5": version: 4.0.9 resolution: "@types/js-yaml@npm:4.0.9" @@ -13329,13 +13249,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^28.1.1": - version: 28.1.1 - resolution: "diff-sequences@npm:28.1.1" - checksum: 26f29fa3f6b8c9040c3c6f6dab85413d90a09c8e6cb17b318bbcf64f225d7dcb1fb64392f3a9919a90888b434c4f6c8a4cc4f807aad02bbabae912c5d13c31f7 - languageName: node - linkType: hard - "diff-sequences@npm:^29.4.3, diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -18606,18 +18519,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-diff@npm:28.1.3" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^28.1.1" - jest-get-type: "npm:^28.0.2" - pretty-format: "npm:^28.1.3" - checksum: 17a101ceb7e8f25c3ef64edda15cb1a259c2835395637099f3cc44f578fbd94ced7a13d11c0cbe8c5c1c3959a08544f0a913bec25a305b6dfc9847ce488e7198 - languageName: node - linkType: hard - "jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -18630,13 +18531,6 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^28.0.2": - version: 28.0.2 - resolution: "jest-get-type@npm:28.0.2" - checksum: f64a40cfa10d79a56b383919033d35c8c4daee6145a1df31ec5ef2283fa7e8adbd443c6fcb4cfd0f60bbbd89f046c2323952f086b06e875cbbbc1a7d543a6e5e - languageName: node - linkType: hard - "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -18667,18 +18561,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^28.0.0": - version: 28.1.3 - resolution: "jest-matcher-utils@npm:28.1.3" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^28.1.3" - jest-get-type: "npm:^28.0.2" - pretty-format: "npm:^28.1.3" - checksum: 026fbe664cfdaed5a5c9facfc86ccc9bed3718a7d1fe061e355eb6158019a77f74e9b843bc99f9a467966cbebe60bde8b43439174cbf64997d4ad404f8f809d0 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -18708,7 +18590,7 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^27.0.6, jest-mock@npm:^27.3.0": +"jest-mock@npm:^27.0.6": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" dependencies: @@ -23870,18 +23752,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": - version: 28.1.3 - resolution: "pretty-format@npm:28.1.3" - dependencies: - "@jest/schemas": "npm:^28.1.3" - ansi-regex: "npm:^5.0.1" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f - languageName: node - linkType: hard - "pretty-format@npm:^29.5.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" From 6827ee02173a7fee93bb9f5f472c07184c603113 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 15:41:01 +0100 Subject: [PATCH 334/430] add to root, fix typos --- code/addons/onboarding/package.json | 4 ++-- code/package.json | 1 + code/yarn.lock | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 739c731c4590..7e23f05f9cee 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -78,10 +78,10 @@ }, "bundler": { "exportEntries": [ - "src/index.ts" + "./src/index.ts" ], "managerEntries": [ - "src/manager.tsx" + "./src/manager.tsx" ], "nodeEntries": [ "./src/preset.ts" diff --git a/code/package.json b/code/package.json index 1d6e075439ea..02fa42bc4bc9 100644 --- a/code/package.json +++ b/code/package.json @@ -100,6 +100,7 @@ "@storybook/addon-links": "workspace:*", "@storybook/addon-mdx-gfm": "workspace:*", "@storybook/addon-measure": "workspace:*", + "@storybook/addon-onboarding": "workspace:*", "@storybook/addon-outline": "workspace:*", "@storybook/addon-storysource": "workspace:*", "@storybook/addon-toolbars": "workspace:*", diff --git a/code/yarn.lock b/code/yarn.lock index a44af1e3deed..9e958c385c15 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5286,7 +5286,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-onboarding@workspace:addons/onboarding": +"@storybook/addon-onboarding@workspace:*, @storybook/addon-onboarding@workspace:addons/onboarding": version: 0.0.0-use.local resolution: "@storybook/addon-onboarding@workspace:addons/onboarding" dependencies: @@ -6668,6 +6668,7 @@ __metadata: "@storybook/addon-links": "workspace:*" "@storybook/addon-mdx-gfm": "workspace:*" "@storybook/addon-measure": "workspace:*" + "@storybook/addon-onboarding": "workspace:*" "@storybook/addon-outline": "workspace:*" "@storybook/addon-storysource": "workspace:*" "@storybook/addon-toolbars": "workspace:*" From bdff5a277262f09d64c689c0379019d55d32bf23 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 18:01:07 +0100 Subject: [PATCH 335/430] fix react-confetti & add safety catches --- code/addons/onboarding/package.json | 2 +- code/addons/onboarding/src/App.tsx | 25 ++- .../src/components/Confetti/Confetti.tsx | 2 +- code/yarn.lock | 163 ++---------------- 4 files changed, 35 insertions(+), 157 deletions(-) diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 7e23f05f9cee..0e396d88f6a4 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -62,7 +62,7 @@ "@storybook/react-vite": "workspace:*", "@storybook/telemetry": "workspace:*", "@storybook/test": "workspace:*", - "@storybook/testing-library": "^0.2.2", + "@storybook/testing-library": "next", "@storybook/theming": "workspace:*", "@storybook/types": "workspace:*", "framer-motion": "^11.0.3", diff --git a/code/addons/onboarding/src/App.tsx b/code/addons/onboarding/src/App.tsx index e463bf8ac754..a8bdf855c57e 100644 --- a/code/addons/onboarding/src/App.tsx +++ b/code/addons/onboarding/src/App.tsx @@ -71,9 +71,13 @@ export default function App({ api }: { api: API }) { // 1. Selected story is primary button // 2. The addon panel is opened, in the bottom and the controls tab is selected if (storyId !== 'example-button--primary') { - api.selectStory('example-button--primary', undefined, { - ref: undefined, - }); + try { + api.selectStory('example-button--primary', undefined, { + ref: undefined, + }); + } catch (e) { + // + } } }, []); @@ -89,7 +93,7 @@ export default function App({ api }: { api: API }) { recycle={false} tweenDuration={20000} onConfettiComplete={(confetti) => { - confetti.reset(); + confetti?.reset(); setShowConfetti(false); }} /> @@ -119,7 +123,11 @@ export default function App({ api }: { api: API }) { }} codeSnippets={codeSnippets} onLastTourDone={() => { - api.selectStory('configure-your-project--docs'); + try { + api.selectStory('configure-your-project--docs'); + } catch (e) { + // + } api.emit(STORYBOOK_ADDON_ONBOARDING_CHANNEL, { step: '6:FinishedOnboarding', type: 'telemetry', @@ -134,7 +142,12 @@ export default function App({ api }: { api: API }) { codeSnippets={codeSnippets} addonsStore={addons} onFinish={() => { - api.selectStory('example-button--warning'); + try { + api.selectStory('example-button--primary'); + } catch (e) { + // + } + setStep('4:VisitNewStory'); }} skipOnboarding={skipOnboarding} diff --git a/code/addons/onboarding/src/components/Confetti/Confetti.tsx b/code/addons/onboarding/src/components/Confetti/Confetti.tsx index 8d6af0938065..371212ff7403 100644 --- a/code/addons/onboarding/src/components/Confetti/Confetti.tsx +++ b/code/addons/onboarding/src/components/Confetti/Confetti.tsx @@ -1,4 +1,4 @@ -import ReactConfetti from 'react-confetti'; +import { ReactConfetti } from 'react-confetti/src/ReactConfetti'; import React, { useEffect } from 'react'; import { styled } from '@storybook/theming'; import { createPortal } from 'react-dom'; diff --git a/code/yarn.lock b/code/yarn.lock index 9e958c385c15..42df605ead34 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -444,30 +444,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": - version: 7.23.7 - resolution: "@babel/core@npm:7.23.7" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.23.7" - "@babel/parser": "npm:^7.23.6" - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.7" - "@babel/types": "npm:^7.23.6" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 38c9934973d384ed83369712978453eac91dc3f22167404dbdb272b64f602e74728a6f37012c53ee57e521b8ae2da60097f050497d9b6a212d28b59cdfb2cd1d - languageName: node - linkType: hard - -"@babel/core@npm:^7.23.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": version: 7.23.9 resolution: "@babel/core@npm:7.23.9" dependencies: @@ -752,18 +729,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.2, @babel/helpers@npm:^7.23.7": - version: 7.23.8 - resolution: "@babel/helpers@npm:7.23.8" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.7" - "@babel/types": "npm:^7.23.6" - checksum: d9fce49278a31aaa017a40c1fcdaa450999c49e33582cce8138058c58b1acbe3a2d2488f010f28e91dedf0d35795ea32f0ee18745bbb6c7f54052ae0fd7e6a3f - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.23.9": +"@babel/helpers@npm:^7.23.2, @babel/helpers@npm:^7.23.9": version: 7.23.9 resolution: "@babel/helpers@npm:7.23.9" dependencies: @@ -785,16 +751,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": - version: 7.23.6 - resolution: "@babel/parser@npm:7.23.6" - bin: - parser: ./bin/babel-parser.js - checksum: 6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e - languageName: node - linkType: hard - -"@babel/parser@npm:^7.23.9": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": version: 7.23.9 resolution: "@babel/parser@npm:7.23.9" bin: @@ -2252,18 +2209,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" - dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/parser": "npm:^7.22.15" - "@babel/types": "npm:^7.22.15" - checksum: 9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 - languageName: node - linkType: hard - -"@babel/template@npm:^7.23.9": +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.23.9": version: 7.23.9 resolution: "@babel/template@npm:7.23.9" dependencies: @@ -2274,25 +2220,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.7, @babel/traverse@npm:^7.4.5": - version: 7.23.7 - resolution: "@babel/traverse@npm:7.23.7" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: e32fceb4249beec2bde83968ddffe17444221c1ee5cd18c543a2feaf94e3ca83f2a4dfbc2dcca87cf226e0105973e0fe3717063a21e982a9de9945615ab3f3f5 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.23.9": +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.9, @babel/traverse@npm:^7.4.5": version: 7.23.9 resolution: "@babel/traverse@npm:7.23.9" dependencies: @@ -2310,18 +2238,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": - version: 7.23.6 - resolution: "@babel/types@npm:7.23.6" - dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 - languageName: node - linkType: hard - -"@babel/types@npm:^7.23.9": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": version: 7.23.9 resolution: "@babel/types@npm:7.23.9" dependencies: @@ -5306,7 +5223,7 @@ __metadata: "@storybook/react-vite": "workspace:*" "@storybook/telemetry": "workspace:*" "@storybook/test": "workspace:*" - "@storybook/testing-library": "npm:^0.2.2" + "@storybook/testing-library": "npm:next" "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" framer-motion: "npm:^11.0.3" @@ -6990,17 +6907,6 @@ __metadata: languageName: unknown linkType: soft -"@storybook/testing-library@npm:^0.2.2": - version: 0.2.2 - resolution: "@storybook/testing-library@npm:0.2.2" - dependencies: - "@testing-library/dom": "npm:^9.0.0" - "@testing-library/user-event": "npm:^14.4.0" - ts-dedent: "npm:^2.2.0" - checksum: 3179c74148c92267ea449068ce9fb00bf960dbf06654354de7869428415d16dc730a0d58b5adca7619d21e5a058ae0bf713e34c09be8bca574388ec0106c5068 - languageName: node - linkType: hard - "@storybook/testing-library@npm:next": version: 0.2.2-next.0 resolution: "@storybook/testing-library@npm:0.2.2-next.0" @@ -7316,16 +7222,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:^14.4.0, @testing-library/user-event@npm:^14.4.3": - version: 14.5.1 - resolution: "@testing-library/user-event@npm:14.5.1" - peerDependencies: - "@testing-library/dom": ">=7.21.4" - checksum: 1e00d6ead23377885b906db6e46e259161a0efb4138f7527481d7435f3c8f65cb7e3eab2900e2ac1886fa6dd03416e773a3a60dea87a9a2086a7127dee315f6f - languageName: node - linkType: hard - -"@testing-library/user-event@npm:^14.5.2": +"@testing-library/user-event@npm:^14.4.0, @testing-library/user-event@npm:^14.4.3, @testing-library/user-event@npm:^14.5.2": version: 14.5.2 resolution: "@testing-library/user-event@npm:14.5.2" peerDependencies: @@ -8191,18 +8088,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^18.0.37": - version: 18.2.43 - resolution: "@types/react@npm:18.2.43" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10477a50fbd3c0cc5b8a2ade679f442717f68fb27c8460b2aa1d3256cd18c48f742bbe5b9ee37a8c4c5f832ffa37b3a23c09fd96dd880a8e3182d8929c05e803 - languageName: node - linkType: hard - -"@types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0": +"@types/react@npm:*, @types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0, @types/react@npm:^18.0.37": version: 18.2.55 resolution: "@types/react@npm:18.2.55" dependencies: @@ -8839,7 +8725,7 @@ __metadata: languageName: node linkType: hard -"@vitest/spy@npm:1.1.3, @vitest/spy@npm:^1.1.3": +"@vitest/spy@npm:1.1.3": version: 1.1.3 resolution: "@vitest/spy@npm:1.1.3" dependencies: @@ -8848,7 +8734,7 @@ __metadata: languageName: node linkType: hard -"@vitest/spy@npm:1.2.2": +"@vitest/spy@npm:1.2.2, @vitest/spy@npm:^1.1.3": version: 1.2.2 resolution: "@vitest/spy@npm:1.2.2" dependencies: @@ -9529,14 +9415,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": - version: 8.3.1 - resolution: "acorn-walk@npm:8.3.1" - checksum: a23d2f7c6b6cad617f4c77f14dfeb062a239208d61753e9ba808d916c550add92b39535467d2e6028280761ac4f5a904cc9df21530b84d3f834e3edef74ddde5 - languageName: node - linkType: hard - -"acorn-walk@npm:^8.3.2": +"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2": version: 8.3.2 resolution: "acorn-walk@npm:8.3.2" checksum: 7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 @@ -11468,14 +11347,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": - version: 1.0.30001570 - resolution: "caniuse-lite@npm:1.0.30001570" - checksum: e47230d2016edea56e002fa462a5289f697b48dcfbf703fb01aecc6c98ad4ecaf945ab23c253cb7af056c2d05f266e4e4cbebf45132100e2c9367439cb95b95b - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001579": +"caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565, caniuse-lite@npm:^1.0.30001579": version: 1.0.30001581 resolution: "caniuse-lite@npm:1.0.30001581" checksum: 34b048156514eab5932212807428905cbecdef918f7c3d2153d5e8b6885d929e5c0b649f9e135cb1e03e413fbad8e00d1f24ed04cbcca52adc660ef98cad9032 @@ -17671,14 +17543,7 @@ __metadata: languageName: node linkType: hard -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: 8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 - languageName: node - linkType: hard - -"ip@npm:^2.0.1": +"ip@npm:^2.0.0, ip@npm:^2.0.1": version: 2.0.1 resolution: "ip@npm:2.0.1" checksum: cab8eb3e88d0abe23e4724829621ec4c4c5cb41a7f936a2e626c947128c1be16ed543448d42af7cca95379f9892bfcacc1ccd8d09bc7e8bea0e86d492ce33616 From a10c9e478a8ec480196306f47b5e9f5bf3d5c70c Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 15 Feb 2024 21:57:33 -0700 Subject: [PATCH 336/430] Fix heading levels --- docs/api/doc-block-useof.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/api/doc-block-useof.md b/docs/api/doc-block-useof.md index 4499478aef5e..613ee99016cb 100644 --- a/docs/api/doc-block-useof.md +++ b/docs/api/doc-block-useof.md @@ -56,18 +56,20 @@ import * as ButtonStories from './Button.stories'; ## useOf -## Signature +### Type + ```ts -useOf = ( +( moduleExportOrType: ModuleExport | 'story' | 'meta' | 'component', validTypes?: Array<'story' | 'meta' | 'component'> -): EnhancedResolvedModuleExportType +) => EnhancedResolvedModuleExportType ``` + -## Parameters +### Parameters -### `moduleExportOrType` +#### `moduleExportOrType` (**Required**) @@ -81,29 +83,29 @@ When the custom block is in an [attached doc](./doc-block-meta.md#attached-vs-un - `useOf('meta')` returns the annotated meta in attached mode; error in unattached mode - `useOf('component')` returns the annotated component specified in the meta in attached mode; error in unattached mode -### `validTypes` +#### `validTypes` Type: `Array<'story' | 'meta' | 'component'>` Optionally specify an array of valid types that your block accepts. Passing anything other than the valid type(s) will result in an error. For example, the [`Canvas`](./doc-block-canvas.md) block uses `useOf(of, ['story'])`, which ensures it only accepts a reference to a story, not a meta or component. -## Return +### Return The return value depends on the matched type: -### `EnhancedResolvedModuleExportType['type'] === 'story'` +#### `EnhancedResolvedModuleExportType['type'] === 'story'` Type: `{ type: 'story', story: PreparedStory }` For stories, annotated stories are returned as is. They are prepared, meaning that they are already merged with project and meta annotations. -### `EnhancedResolvedModuleExportType['type'] === 'meta'` +#### `EnhancedResolvedModuleExportType['type'] === 'meta'` Type: `{ type: 'meta', csfFile: CSFFile, preparedMeta: PreparedMeta }` For meta, the parsed CSF file is returned, along with prepared annotated meta. That is, project annotations merged with meta annotations, but no story annotations. -### `EnhancedResolvedModuleExportType['type'] === 'component'` +#### `EnhancedResolvedModuleExportType['type'] === 'component'` Type: `{ type: 'component', component: Component, projectAnnotations: NormalizedProjectAnnotations }` From 9a98e0bbd9df1e316819e43b616ce70831c0d213 Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Fri, 23 Feb 2024 21:03:56 +0000 Subject: [PATCH 337/430] Docs: Polish Addon migration guide --- docs/addons/addon-migration-guide.md | 46 +++++++++++-------- .../storybook-addon-panel-example.js.mdx | 4 +- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/docs/addons/addon-migration-guide.md b/docs/addons/addon-migration-guide.md index 269c615fe42d..67c8bf7d9b45 100644 --- a/docs/addons/addon-migration-guide.md +++ b/docs/addons/addon-migration-guide.md @@ -2,7 +2,7 @@ title: Addon migration guide for Storybook 8.0 --- -We deeply appreciate the dedication and effort addon creators put into keeping the Storybook ecosystem vibrant and up-to-date. As Storybook evolves to version 8.0, bringing new features and improvements, this guide is here to assist you in migrating your addons from 7.x to 8.0. If you need to migrate your addon from an earlier version of Storybook, please first refer to the [Addon migration guide for Storybook 7.0](https://storybook.js.org/docs/7.6/addons/addon-migration-guide). +We sincerely appreciate the dedication and effort addon creators put into keeping the Storybook ecosystem vibrant and up-to-date. As Storybook evolves to version 8.0, bringing new features and improvements, this guide is here to assist you in migrating your addons from 7.x to 8.0. If you need to migrate your addon from an earlier version of Storybook, please first refer to the [Addon migration guide for Storybook 7.0](https://storybook.js.org/docs/7.6/addons/addon-migration-guide). @@ -14,7 +14,7 @@ As we gather feedback from the community, we’ll update this page. We also have Begin by updating your Storybook dependencies. Use the `next` tag for pre-release versions, `latest` for the most recent stable release, or specify the version directly. -```json +```jsonc { "dependencies": { "@storybook/client-logger": "next" // or "latest", or "^8.0.0" @@ -24,7 +24,7 @@ Begin by updating your Storybook dependencies. Use the `next` tag for pre-releas ## Key changes for addons -Here are the essential changes in version 8.0 that impact addon development. Please check the [full migration note](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) for an exhaustive list of changes in 8.0. +Here are the essential changes in version 8.0 that impact addon development. Please check the [complete migration note](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) for an exhaustive list of changes in 8.0. ### Node.js 16 support dropped @@ -32,26 +32,26 @@ Please upgrade your addon to Node.js 18, as support for Node.js 16 has ended. ### React 18 for manager UI -UI injected into panels, tools, etc. by addons is now rendered with React 18. Also note that the `key` prop is no longer passed to the render function. +UI-based addons (e.g., [panels](../addons/addon-types.md#panels), [toolbars](../addons/addon-types.md#toolbars), [tabs](../addons/addon-types.md#tabs)) rely on React 18 to render their elements in the Storybook UI. Also, note that the `key` prop is no longer passed to the render function. ### React peer dependency is no longer required -To remove your addon's peer dependency on React, and reduce its install size, do the following: +To remove your addon's peer dependency on React and reduce its install size, do the following: -1. Move `react`, `react-dom` and the globalized Storybook packages from `peerDependencies` to `devDependencies` -2. Add the list of globalized packages to the `externals` property in the `tsup` configuration, to ensure they are not part of the bundle. +1. Move `react`, `react-dom`, and the globalized Storybook packages from `peerDependencies` to `devDependencies` +2. Add the list of globalized packages to the `externals` property in the `tsup` configuration to ensure they are not part of the bundle. -For an example, see [the updates we've made to the addon-kit](https://github.com/storybookjs/addon-kit/pull/60/files#diff-8fed899bdbc24789a7bb4973574e624ed6207c6ce572338bc3c3e117672b2a20). These changes are optional but recommended. +For an example, see [the updates we've made to the Addon Kit](https://github.com/storybookjs/addon-kit/pull/60/files#diff-8fed899bdbc24789a7bb4973574e624ed6207c6ce572338bc3c3e117672b2a20). These changes are optional but recommended. - + -This assumes your addon is using tsup for bundling. If your addon was built with an older version of addon-kit that uses Babel for bundling, you have to first switch to tsup. For guidance, explore these [older changes implemented in the addon-kit](https://github.com/storybookjs/addon-kit/pull/45/files). +This assumes your addon uses [tsup](https://tsup.egoist.dev/) for bundling. If your addon was built with an older version of the Addon Kit that uses Babel for bundling, you must first switch to tsup. For guidance, explore these older changes implemented in the Addon Kit [repository](https://github.com/storybookjs/addon-kit/pull/45/files). ### @storybook/components deprecations -`Icons` component from `@storybook/components` is now deprecated in favor of [`@storybook/icons`](https://github.com/storybookjs/icons). Additionally, various `Button` component props are also deprecated, with alternatives provided. +The `Icons` component from `@storybook/components` is now deprecated in favor of [`@storybook/icons`](https://github.com/storybookjs/icons). Additionally, various `Button` component props are also deprecated, with alternatives provided. ### Storybook layout state API changes @@ -59,19 +59,27 @@ If you're customizing the Storybook UI configuration with `addons.setConfig({... ### Removal of deprecated features -Deprecated packages and APIs from 7.0 are now removed in 8.0.Consult the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecations-which-are-now-removed) for details. Most notably for addons, the removal of the `@storybook/addons` now necessitates a switch to `@storybook/preview-api` and `@storybook/manager-api`. +Deprecated packages and APIs from 7.0 are now removed in 8.0. Consult the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecations-which-are-now-removed) for details. Most notably, for addons, the removal of the `@storybook/addons` package requires you to switch to `@storybook/preview-api` and `@storybook/manager-api` for the same functionality. -### Babel-loader removed from webpack +### Babel-loader removed from Webpack Storybook 8 [removes babel-loader from the webpack5 builder](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removed-babelcore-and-babel-loader-from-storybookbuilder-webpack5). If your addon's preset overrides the `babel()` method, it will break if your users are using SWC to compile their files (which is the new default for Webpack 5-based Storybook projects). -To solve for both Babel and SWC, the most robust approach is to create an [unplugin](https://github.com/unjs/unplugin) that will work with both Webpack and Vite builders. That will give you full control to run Babel (or whatever you want) on stories and components as they are loaded. +To ensure your addon supports both Babel and SWC, you can build a custom bundling plugin using [Unplugin](https://unplugin.vercel.app/) that will work with both Webpack and Vite builders, giving you complete control to run Babel (or whatever you want) on stories and components as they are loaded. -As a workaround, update your documentation to tell users to opt-in to Babel support. This should fix your addon in their project, at the cost of performance: +As a workaround, update your documentation to tell users to opt-in to Babel support. This should fix your addon in their project at the cost of performance: -```sh -npx storybook@latest add @storybook/addon-webpack5-compiler-babel -``` + + + + + ## Migration Example @@ -89,7 +97,7 @@ If you migrate your addon to support ESM, you can safely remove any `manager.js` ## Releasing -Release a new major version of your addon for Storybook 8.0. We recommend you to continue supporting 7.x with minor or patch versions. We also recommend releasing your own addon using the `next` tag to test it out in projects. +To support Storybook 8.0, we encourage you to release a new major version of your addon and continue supporting 7.x with minor or patch versions. For experimental features or testing, opt for the `next` tag. This will allow you to test your addon in projects and gather feedback before releasing a stable version. ## Support diff --git a/docs/snippets/common/storybook-addon-panel-example.js.mdx b/docs/snippets/common/storybook-addon-panel-example.js.mdx index d326d027390b..30070e4543a4 100644 --- a/docs/snippets/common/storybook-addon-panel-example.js.mdx +++ b/docs/snippets/common/storybook-addon-panel-example.js.mdx @@ -12,8 +12,8 @@ addons.register('my/panel', () => { title: 'Example Storybook panel', //πŸ‘‡ Sets the type of UI element in Storybook type: types.PANEL, - render: ({ active, key }) => ( - + render: ({ active }) => ( +

    I'm a panel addon in Storybook

    ), From 937cff21fed05d187eab7822903042a3828720f7 Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Fri, 23 Feb 2024 22:55:19 +0100 Subject: [PATCH 338/430] feat(vue): improve displayed types for array, union and intersection --- code/frameworks/vue3-vite/src/types.ts | 43 +- .../src/argTypes/docgen/utils/docgenInfo.ts | 4 +- .../extractArgTypes.test.ts.snap | 677 +++-- .../vue3/src/docs/extractArgTypes.test.ts | 314 ++- .../vue3/src/docs/extractArgTypes.ts | 369 ++- .../tests-meta-components/meta-components.ts | 2222 +++++++++-------- 6 files changed, 2176 insertions(+), 1453 deletions(-) diff --git a/code/frameworks/vue3-vite/src/types.ts b/code/frameworks/vue3-vite/src/types.ts index c6ee52bf144a..4b77d28e7a94 100644 --- a/code/frameworks/vue3-vite/src/types.ts +++ b/code/frameworks/vue3-vite/src/types.ts @@ -1,9 +1,16 @@ import type { BuilderOptions, StorybookConfigVite } from '@storybook/builder-vite'; import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { ComponentMeta } from 'vue-component-meta'; +import type { ComponentDoc } from 'vue-docgen-api'; type FrameworkName = '@storybook/vue3-vite'; type BuilderName = '@storybook/builder-vite'; +/** + * Available docgen plugins for vue. + */ +export type VueDocgenPlugin = 'vue-docgen-api' | 'vue-component-meta'; + export type FrameworkOptions = { builder?: BuilderOptions; /** @@ -14,7 +21,7 @@ export type FrameworkOptions = { * "vue-component-meta" will become the new default in the future and "vue-docgen-api" will be removed. * @default "vue-docgen-api" */ - docgen?: 'vue-docgen-api' | 'vue-component-meta'; + docgen?: VueDocgenPlugin; }; type StorybookConfigFramework = { @@ -43,3 +50,37 @@ export type StorybookConfig = Omit< > & StorybookConfigVite & StorybookConfigFramework; + +/** + * Gets the type of a single array element. + */ +type ArrayElement = T extends readonly (infer A)[] ? A : never; + +/** + * Type of "__docgenInfo" depending on the used docgenPlugin. + */ +export type VueDocgenInfo = T extends 'vue-component-meta' + ? ComponentMeta + : ComponentDoc; + +/** + * Single prop/event/slot/exposed entry of "__docgenInfo" depending on the used docgenPlugin. + * + * @example + * ```ts + * type PropInfo = VueDocgenInfoEntry<"vue-component-meta", "props">; + * ``` + */ +export type VueDocgenInfoEntry< + T extends VueDocgenPlugin, + TKey extends 'props' | 'events' | 'slots' | 'exposed' | 'expose' = + | 'props' + | 'events' + | 'slots' + | 'exposed' + | 'expose', +> = ArrayElement< + T extends 'vue-component-meta' + ? VueDocgenInfo<'vue-component-meta'>[Exclude] + : VueDocgenInfo<'vue-docgen-api'>[Exclude] +>; diff --git a/code/lib/docs-tools/src/argTypes/docgen/utils/docgenInfo.ts b/code/lib/docs-tools/src/argTypes/docgen/utils/docgenInfo.ts index 70084ed8ed91..6d1a7005ca0c 100644 --- a/code/lib/docs-tools/src/argTypes/docgen/utils/docgenInfo.ts +++ b/code/lib/docs-tools/src/argTypes/docgen/utils/docgenInfo.ts @@ -3,7 +3,9 @@ import type { Component } from '../../types'; import { str } from './string'; -export function hasDocgen(component: Component): boolean { +export function hasDocgen( + component: Component +): component is object & { __docgenInfo: T } { return !!component.__docgenInfo; } diff --git a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap index b4a5c410991a..6df158abb06c 100644 --- a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap +++ b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap @@ -1,71 +1,147 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`extractArgTypes > should extract events for Vue component 1`] = ` +exports[`extractArgTypes (vue-docgen-api) > should extract events for component 1`] = ` { "bar": { + "control": { + "disabled": true, + }, + "description": "Test description bar", + "name": "bar", + "table": { + "category": "events", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "{ year: number; title?: any }", + }, + }, + "type": { + "name": "other", + "required": false, + "value": "{ year: number; title?: any }", + }, + }, + "baz": { + "control": { + "disabled": true, + }, + "description": "Test description baz", + "name": "baz", + "table": { + "category": "events", + "defaultValue": null, + "jsDocTags": undefined, + "type": undefined, + }, + "type": { + "name": "other", + "required": false, + "value": "", + }, + }, +} +`; + +exports[`extractArgTypes (vue-docgen-api) > should extract expose for component 1`] = ` +{ + "count": { + "control": { + "disabled": true, + }, + "description": "a count number", + "name": "count", + "table": { + "category": "expose", + "defaultValue": null, + "jsDocTags": undefined, + "type": undefined, + }, + "type": { + "name": "other", + "value": "", + }, + }, + "label": { + "control": { + "disabled": true, + }, + "description": "a label string", + "name": "label", + "table": { + "category": "expose", + "defaultValue": null, + "jsDocTags": undefined, + "type": undefined, + }, + "type": { + "name": "other", + "value": "", + }, + }, +} +`; + +exports[`extractArgTypes (vue-docgen-api) > should extract props for component 1`] = ` +{ + "array": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, + "description": "description required array object", + "name": "array", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedProps[]", + }, }, - "description": "", + "type": { + "name": "other", + "required": true, + "value": "Array([object Object])", + }, + }, + "arrayOptional": { + "control": { + "disabled": false, + }, + "description": "description optional array object", + "name": "arrayOptional", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedProps[]", + }, + }, + "type": { + "name": "other", + "required": false, + "value": "Array([object Object])", + }, + }, + "bar": { + "control": { + "disabled": false, + }, + "description": "description bar is optional number", "name": "bar", "table": { "category": "props", "defaultValue": { - "summary": undefined, + "summary": "1", }, - "jsDocTags": [], + "jsDocTags": undefined, "type": { - "summary": "[value: { year: number; title?: any; }]", + "summary": "number", }, }, "type": { - "name": [ - { - "kind": "object", - "schema": { - "title": { - "declarations": [ - { - "file": "/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue", - "range": [ - 269, - 280, - ], - }, - ], - "description": "", - "global": false, - "name": "title", - "required": false, - "schema": "any", - "tags": [], - "type": "any", - }, - "year": { - "declarations": [ - { - "file": "/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue", - "range": [ - 255, - 268, - ], - }, - ], - "description": "", - "global": false, - "name": "year", - "required": true, - "schema": "number", - "tags": [], - "type": "number", - }, - }, - "type": "{ year: number; title?: any; }", - }, - ], + "name": "number", "required": false, }, }, @@ -73,204 +149,483 @@ exports[`extractArgTypes > should extract events for Vue component 1`] = ` "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, - "description": "", + "description": "description baz is required boolean", "name": "baz", "table": { "category": "props", - "defaultValue": { - "summary": undefined, + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "boolean", }, - "jsDocTags": [], + }, + "type": { + "name": "boolean", + "required": true, + }, + }, + "enumValue": { + "control": { + "disabled": false, + }, + "description": "description enum value", + "name": "enumValue", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, "type": { - "summary": "[]", + "summary": "MyEnum", }, }, "type": { - "name": [], - "required": false, + "name": "other", + "required": true, + "value": "MyEnum", }, }, "foo": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, - "description": "", + "description": "string foo", "name": "foo", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "string", + }, + }, + "type": { + "name": "string", + "required": true, + }, + }, + "inlined": { + "control": { + "disabled": false, + }, + "description": undefined, + "name": "inlined", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "{ foo: string }", + }, + }, + "type": { + "name": "other", + "required": true, + "value": "{ foo: string }", + }, + }, + "literalFromContext": { + "control": { + "disabled": false, + }, + "description": "description literal type alias that require context", + "name": "literalFromContext", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyCategories", + }, + }, + "type": { + "name": "other", + "required": true, + "value": "MyCategories", + }, + }, + "nested": { + "control": { + "disabled": false, + }, + "description": "description nested is required nested object", + "name": "nested", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedProps", + }, + }, + "type": { + "name": "other", + "required": true, + "value": "MyNestedProps", + }, + }, + "nestedIntersection": { + "control": { + "disabled": false, + }, + "description": "description required nested object with intersection", + "name": "nestedIntersection", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedProps & { + /** + * description required additional property + */ + additionalProp: string; +}", + }, + }, + "type": { + "name": "other", + "required": true, + "value": "intersection([object Object],[object Object])", + }, + }, + "nestedOptional": { + "control": { + "disabled": false, + }, + "description": "description optional nested object", + "name": "nestedOptional", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedProps | MyIgnoredNestedProps", + }, + }, + "type": { + "name": "union", + "required": false, + "value": [ + { + "name": "other", + "value": "MyNestedProps", + }, + { + "name": "other", + "value": "MyIgnoredNestedProps", + }, + ], + }, + }, + "recursive": { + "control": { + "disabled": false, + }, + "description": undefined, + "name": "recursive", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "MyNestedRecursiveProps", + }, + }, + "type": { + "name": "other", + "required": false, + "value": "MyNestedRecursiveProps", + }, + }, + "stringArray": { + "control": { + "disabled": false, + }, + "description": "description stringArray is string array", + "name": "stringArray", "table": { "category": "props", "defaultValue": { - "summary": undefined, + "summary": "() => ['foo', 'bar']", }, - "jsDocTags": [], + "jsDocTags": undefined, "type": { - "summary": "[data?: { foo: string; }]", + "summary": "string[]", + }, + }, + "type": { + "name": "other", + "required": false, + "value": "Array([object Object])", + }, + }, + "union": { + "control": { + "disabled": false, + }, + "description": "description union is required union type", + "name": "union", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "string | number", }, }, "type": { - "name": [ + "name": "union", + "required": true, + "value": [ { - "kind": "enum", - "schema": [ - "undefined", - { - "kind": "object", - "schema": { - "foo": { - "declarations": [ - { - "file": "/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue", - "range": [ - 207, - 218, - ], - }, - ], - "description": "", - "global": false, - "name": "foo", - "required": true, - "schema": "string", - "tags": [], - "type": "string", - }, - }, - "type": "{ foo: string; }", - }, - ], - "type": "{ foo: string; } | undefined", + "name": "string", + }, + { + "name": "number", }, ], + }, + }, + "unionOptional": { + "control": { + "disabled": false, + }, + "description": "description unionOptional is optional union type", + "name": "unionOptional", + "table": { + "category": "props", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "string | number | boolean", + }, + }, + "type": { + "name": "union", "required": false, + "value": [ + { + "name": "string", + }, + { + "name": "number", + }, + { + "name": "boolean", + }, + ], }, }, } `; -exports[`extractArgTypes > should extract slots type for Vue component 1`] = ` +exports[`extractArgTypes (vue-docgen-api) > should extract slots for component 1`] = ` { "default": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, - "description": "", + "description": undefined, "name": "default", "table": { - "category": "props", - "defaultValue": { - "summary": undefined, + "category": "slots", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "{ num: unknown }", }, - "jsDocTags": [], + }, + "type": { + "name": "other", + "required": false, + "value": "{ num: unknown }", + }, + }, + "named": { + "control": { + "disabled": false, + }, + "description": undefined, + "name": "named", + "table": { + "category": "slots", + "defaultValue": null, + "jsDocTags": undefined, "type": { - "summary": "{ num: number; }", + "summary": "{ str: unknown }", }, }, "type": { - "name": "object", + "name": "other", "required": false, - "value": { - "num": { - "name": "number", - "required": true, - }, + "value": "{ str: unknown }", + }, + }, + "no-bind": { + "control": { + "disabled": false, + }, + "description": undefined, + "name": "no-bind", + "table": { + "category": "slots", + "defaultValue": null, + "jsDocTags": undefined, + "type": undefined, + }, + "type": { + "name": "other", + "required": false, + "value": "", + }, + }, + "vbind": { + "control": { + "disabled": false, + }, + "description": undefined, + "name": "vbind", + "table": { + "category": "slots", + "defaultValue": null, + "jsDocTags": undefined, + "type": { + "summary": "{ num: unknown, str: unknown }", }, }, + "type": { + "name": "other", + "required": false, + "value": "{ num: unknown, str: unknown }", + }, }, - "named": { +} +`; + +exports[`extractArgTypes > should extract events for Vue component 1`] = ` +{ + "bar": { + "control": { + "disabled": true, + }, + "description": "", + "name": "bar", + "table": { + "category": "events", + "type": { + "summary": "[value: { year: number; title?: any; }]", + }, + }, + "type": { + "name": "other", + "value": "[value: { year: number; title?: any; }]", + }, + }, + "baz": { + "control": { + "disabled": true, + }, + "description": "", + "name": "baz", + "table": { + "category": "events", + "type": { + "summary": "[]", + }, + }, + "type": { + "name": "other", + "value": "[]", + }, + }, + "foo": { + "control": { + "disabled": true, + }, + "description": "", + "name": "foo", + "table": { + "category": "events", + "type": { + "summary": "[data?: { foo: string; }]", + }, + }, + "type": { + "name": "other", + "value": "[data?: { foo: string; } | undefined]", + }, + }, +} +`; + +exports[`extractArgTypes > should extract slots type for Vue component 1`] = ` +{ + "default": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, + "description": "", + "name": "default", + "table": { + "category": "slots", + "type": { + "summary": "{ num: number; }", + }, + }, + "type": { + "name": "other", + "value": "{ num: number; }", + }, + }, + "named": { + "control": { + "disabled": false, }, "description": "", "name": "named", "table": { - "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "category": "slots", "type": { "summary": "{ str: string; }", }, }, "type": { - "name": "object", - "required": false, - "value": { - "str": { - "name": "string", - "required": true, - }, - }, + "name": "other", + "value": "{ str: string; }", }, }, "no-bind": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, "description": "", "name": "no-bind", "table": { - "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "category": "slots", "type": { "summary": "{}", }, }, "type": { - "name": "object", - "required": false, - "value": {}, + "name": "other", + "value": "{}", }, }, "vbind": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, "description": "", "name": "vbind", "table": { - "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "category": "slots", "type": { "summary": "{ num: number; str: string; }", }, }, "type": { - "name": "object", - "required": false, - "value": { - "num": { - "name": "number", - "required": true, - }, - "str": { - "name": "string", - "required": true, - }, - }, + "name": "other", + "value": "{ num: number; str: string; }", }, }, } diff --git a/code/renderers/vue3/src/docs/extractArgTypes.test.ts b/code/renderers/vue3/src/docs/extractArgTypes.test.ts index 2c978af54dd0..118e5273bb65 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.test.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.test.ts @@ -9,9 +9,17 @@ import { referenceTypeEvents, referenceTypeProps, templateSlots, + vueDocgenMocks, } from './tests-meta-components/meta-components'; -vitest.mock('@storybook/docs-tools'); +vitest.mock('@storybook/docs-tools', async (importOriginal) => { + const module: Record = await importOriginal(); + return { + ...module, + extractComponentProps: vi.fn(), + hasDocgen: vi.fn(), + }; +}); describe('extractArgTypes', () => { beforeEach(() => { @@ -19,16 +27,19 @@ describe('extractArgTypes', () => { }); it('should return null if component does not contain docs', () => { - (hasDocgen as Mock).mockReturnValueOnce(false); + (hasDocgen as unknown as Mock).mockReturnValueOnce(false); (extractComponentProps as Mock).mockReturnValueOnce([] as any); expect(extractArgTypes({} as any)).toBeNull(); }); - it('should extract arg types for component', () => { + it('should extract props for component', () => { const component = referenceTypeProps; - (hasDocgen as Mock).mockReturnValueOnce(true); - (extractComponentProps as Mock).mockReturnValue(mockExtractComponentPropsReturn); + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'props' ? mockExtractComponentPropsReturn : []; + }); const argTypes = extractArgTypes(component); @@ -38,17 +49,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description required array object", "name": "array", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedProps[]", }, @@ -72,17 +78,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description optional array object", "name": "arrayOptional", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedProps[]", }, @@ -116,7 +117,6 @@ describe('extractArgTypes', () => { "defaultValue": { "summary": "1", }, - "jsDocTags": [], "type": { "summary": "number", }, @@ -130,17 +130,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description baz is required boolean", "name": "baz", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "boolean", }, @@ -154,17 +149,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description enum value", "name": "enumValue", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyEnum", }, @@ -183,34 +173,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "@default: "rounded"
    @since: v1.0.0
    @see: https://vuejs.org/
    @deprecated: v1.1.0

    string foo", "name": "foo", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [ - { - "name": "default", - "text": ""rounded"", - }, - { - "name": "since", - "text": "v1.0.0", - }, - { - "name": "see", - "text": "https://vuejs.org/", - }, - { - "name": "deprecated", - "text": "v1.1.0", - }, - ], + "defaultValue": undefined, "type": { "summary": "string", }, @@ -224,17 +192,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "", "name": "inlined", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "{ foo: string; }", }, @@ -254,17 +217,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description literal type alias that require context", "name": "literalFromContext", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": ""Uncategorized" | "Content" | "Interaction" | "Display" | "Forms" | "Addons"", }, @@ -286,17 +244,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description nested is required nested object", "name": "nested", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedProps", }, @@ -316,17 +269,12 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description required nested object with intersection", "name": "nestedIntersection", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedProps & { additionalProp: string; }", }, @@ -350,79 +298,53 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description optional nested object", "name": "nestedOptional", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedProps | MyIgnoredNestedProps", }, }, "type": { - "name": { - "kind": "enum", - "schema": [ - "undefined", - { - "kind": "object", - "schema": { - "nestedProp": { - "declarations": [], - "description": "nested prop documentation", - "global": false, - "name": "nestedProp", - "required": true, - "schema": "string", - "tags": [], - "type": "string", - }, + "name": "union", + "required": false, + "value": [ + { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, }, - "type": "MyNestedProps", }, - { - "kind": "object", - "schema": { - "nestedProp": { - "declarations": [], - "description": "", - "global": false, - "name": "nestedProp", - "required": true, - "schema": "string", - "tags": [], - "type": "string", - }, + }, + { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, }, - "type": "MyIgnoredNestedProps", }, - ], - "type": "MyNestedProps | MyIgnoredNestedProps | undefined", - }, - "required": false, + }, + ], }, }, "recursive": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "", "name": "recursive", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "MyNestedRecursiveProps", }, @@ -432,8 +354,9 @@ describe('extractArgTypes', () => { "required": false, "value": { "recursive": { - "name": "MyNestedRecursiveProps", + "name": "other", "required": true, + "value": "MyNestedRecursiveProps", }, }, }, @@ -452,7 +375,6 @@ describe('extractArgTypes', () => { "defaultValue": { "summary": "["foo", "bar"]", }, - "jsDocTags": [], "type": { "summary": "string[]", }, @@ -470,48 +392,62 @@ describe('extractArgTypes', () => { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description union is required union type", "name": "union", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "string | number", }, }, "type": { - "name": "string", + "name": "union", "required": true, + "value": [ + { + "name": "string", + "required": false, + }, + { + "name": "number", + "required": false, + }, + ], }, }, "unionOptional": { "control": { "disabled": false, }, - "defaultValue": { - "summary": undefined, - }, + "defaultValue": undefined, "description": "description unionOptional is optional union type", "name": "unionOptional", "table": { "category": "props", - "defaultValue": { - "summary": undefined, - }, - "jsDocTags": [], + "defaultValue": undefined, "type": { "summary": "string | number | boolean", }, }, "type": { - "name": "string", + "name": "union", "required": false, + "value": [ + { + "name": "string", + "required": false, + }, + { + "name": "number", + "required": false, + }, + { + "name": "boolean", + "required": false, + }, + ], }, }, } @@ -520,8 +456,10 @@ describe('extractArgTypes', () => { it('should extract events for Vue component', () => { const component = referenceTypeEvents; - (hasDocgen as Mock).mockReturnValueOnce(true); - (extractComponentProps as Mock).mockReturnValue(mockExtractComponentEventsReturn); + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'events' ? mockExtractComponentEventsReturn : []; + }); const argTypes = extractArgTypes(component); @@ -530,8 +468,68 @@ describe('extractArgTypes', () => { it('should extract slots type for Vue component', () => { const component = templateSlots; - (hasDocgen as Mock).mockReturnValueOnce(true); - (extractComponentProps as Mock).mockReturnValue(mockExtractComponentSlotsReturn); + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'slots' ? mockExtractComponentSlotsReturn : []; + }); + + const argTypes = extractArgTypes(component); + + expect(argTypes).toMatchSnapshot(); + }); +}); + +describe('extractArgTypes (vue-docgen-api)', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + it('should extract props for component', async () => { + const component = vueDocgenMocks.props.component; + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'props' ? vueDocgenMocks.props.extractedProps : []; + }); + + const argTypes = extractArgTypes(component); + + expect(argTypes).toMatchSnapshot(); + }); + + it('should extract events for component', async () => { + const component = vueDocgenMocks.events.component; + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'events' ? vueDocgenMocks.events.extractedProps : []; + }); + + const argTypes = extractArgTypes(component); + + expect(argTypes).toMatchSnapshot(); + }); + + it('should extract slots for component', async () => { + const component = vueDocgenMocks.slots.component; + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'slots' ? vueDocgenMocks.slots.extractedProps : []; + }); + + const argTypes = extractArgTypes(component); + + expect(argTypes).toMatchSnapshot(); + }); + + it('should extract expose for component', async () => { + const component = vueDocgenMocks.expose.component; + (hasDocgen as unknown as Mock).mockReturnValueOnce(true); + + (extractComponentProps as Mock).mockImplementation((_, section) => { + return section === 'expose' ? vueDocgenMocks.expose.extractedProps : []; + }); const argTypes = extractArgTypes(component); diff --git a/code/renderers/vue3/src/docs/extractArgTypes.ts b/code/renderers/vue3/src/docs/extractArgTypes.ts index 5a535d40599c..a5e8d516dfb1 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.ts @@ -1,60 +1,49 @@ -import type { SBType, StrictArgTypes } from '@storybook/types'; - +import type { ExtractedProp } from '@storybook/docs-tools'; import { + convert, extractComponentProps, - convert as genericConvert, hasDocgen, type ArgTypesExtractor, - type DocgenInfo, } from '@storybook/docs-tools'; +import type { SBType, StrictArgTypes, StrictInputType } from '@storybook/types'; +import type { VueDocgenInfo, VueDocgenInfoEntry, VueDocgenPlugin } from '@storybook/vue3-vite'; -type Schema = { kind: string; schema: [] | object; type?: string } | string; -type MetaDocgenInfo = DocgenInfo & { - type: string | { name: string; value: string[] }; - default: string; - global: boolean; - name: string; - schema?: Schema; - tags?: { name: string; text: string }[]; -}; +type PropertyMetaSchema = VueDocgenInfoEntry<'vue-component-meta', 'props'>['schema']; // "exposed" is used by the vue-component-meta plugin while "expose" is used by vue-docgen-api const ARG_TYPE_SECTIONS = ['props', 'events', 'slots', 'exposed', 'expose'] as const; export const extractArgTypes: ArgTypesExtractor = (component) => { - if (!hasDocgen(component)) { + if (!hasDocgen>(component)) { return null; } + const usedDocgenPlugin: VueDocgenPlugin = + // eslint-disable-next-line no-underscore-dangle + 'exposed' in component.__docgenInfo ? 'vue-component-meta' : 'vue-docgen-api'; + const argTypes: StrictArgTypes = {}; ARG_TYPE_SECTIONS.forEach((section) => { const props = extractComponentProps(component, section); props.forEach((extractedProp) => { - const docgenInfo = extractedProp.docgenInfo as MetaDocgenInfo; + let argType: StrictInputType | undefined; - if (argTypes[docgenInfo.name] || docgenInfo.global) { - return; // skip duplicate and global props + if (usedDocgenPlugin === 'vue-docgen-api') { + const docgenInfo = + extractedProp.docgenInfo as unknown as VueDocgenInfoEntry<'vue-docgen-api'>; + argType = extractFromVueDocgenApi(docgenInfo, section, extractedProp); + } else { + const docgenInfo = + extractedProp.docgenInfo as unknown as VueDocgenInfoEntry<'vue-component-meta'>; + argType = extractFromVueComponentMeta(docgenInfo, section); } - const type = - typeof docgenInfo.type === 'string' ? docgenInfo.type : docgenInfo.type?.name ?? ''; - const sbType = section === 'props' ? convertPropType(docgenInfo) : ({ name: type } as SBType); - - const defaultValue = { summary: docgenInfo.default }; - - argTypes[docgenInfo.name] = { - name: docgenInfo.name, - description: formatDescriptionWithTags(docgenInfo.description, docgenInfo.tags), - defaultValue, - type: sbType, - table: { - type: { summary: type.replace(' | undefined', '') }, - jsDocTags: docgenInfo.tags ?? [], - defaultValue, - category: section, - }, + // skip duplicate and global props + if (!argType || argTypes[argType.name]) return; + argTypes[argType.name] = { + ...argType, control: { disabled: !['props', 'slots'].includes(section) }, }; }); @@ -64,81 +53,293 @@ export const extractArgTypes: ArgTypesExtractor = (component) => { }; /** - * Converts the given prop type into a SBType so it can be correctly displayed in the UI (controls etc.). + * Extracts the argType for a prop/event/slot/expose generated with "vue-docgen-api". + * + * @param docgenInfo __docgenInfo from "vue-docgen-api" + * @param section Whether the arg is a prop, event, slot or expose + * @param extractedProp Extracted prop, needed when "section" is "slots" */ -export const convertPropType = (propInfo: MetaDocgenInfo): SBType => { - const schema = propInfo.schema; - const required = propInfo.required ?? false; - const fallbackSbType = { name: schema, required } as SBType; +export const extractFromVueDocgenApi = ( + docgenInfo: VueDocgenInfoEntry<'vue-docgen-api'>, + section: (typeof ARG_TYPE_SECTIONS)[number], + extractedProp?: ExtractedProp +): StrictInputType => { + let type: string | undefined; + let sbType: SBType | undefined; - if (!schema) return genericConvert(propInfo) ?? fallbackSbType; - if (typeof schema === 'string') return fallbackSbType; + if (section === 'events') { + const eventInfo = docgenInfo as VueDocgenInfoEntry<'vue-docgen-api', 'events'>; + type = eventInfo.type?.names.join(); + sbType = { name: 'other', value: type ?? '', required: false }; + } - // convert enum schemas (e.g. union or enum type to corresponding SBType) - // so the enum values can be selected via radio/dropdown in the UI - if (schema.kind === 'enum' && Array.isArray(schema.schema)) { - // filter out empty or "undefined" for optional props - const definedValues = schema.schema.filter((item) => item != null && item !== 'undefined'); + if (section === 'slots') { + const slotInfo = docgenInfo as VueDocgenInfoEntry<'vue-docgen-api', 'slots'>; - if (definedValues.length === 1 && typeof definedValues[0] === 'object') { - return convertPropType({ schema: definedValues[0] } as MetaDocgenInfo); - } + const slotParams = slotInfo.bindings + ?.filter((binding) => !!binding.name) + .map((binding) => { + return `${binding.name}: ${binding.type?.name ?? 'unknown'}`; + }) + .join(', '); - const values = definedValues - .filter((item: Schema) => typeof item === 'string') - .map((item: Schema) => (typeof item !== 'string' ? item.schema.toString() : item)) - .map((item: string) => item.replace(/'/g, '"')); + type = slotParams ? `{ ${slotParams} }` : undefined; + sbType = { name: 'other', value: type ?? '', required: false }; + } - if (values.length === 0) return fallbackSbType; + if (section === 'props') { + const propInfo = docgenInfo as VueDocgenInfoEntry<'vue-docgen-api', 'props'>; - const isBoolean = values.length === 2 && values.includes('true') && values.includes('false'); - if (isBoolean) return { name: 'boolean', required }; + type = propInfo.type?.name; + sbType = extractedProp ? convert(extractedProp.docgenInfo) : { name: 'other', value: type }; - const isLateralUnion = - values.length > 1 && values.every((item) => item.startsWith('"') && item.endsWith('"')); - const isEnum = - !isLateralUnion && - values.length > 1 && - values.every((item) => typeof item === 'string' && item.includes('.')); + // try to get more specific types for array, union and intersection + if ( + propInfo.type && + 'elements' in propInfo.type && + Array.isArray(propInfo.type.elements) && + propInfo.type.elements.length > 0 + ) { + const elements = (propInfo.type.elements as { name: string }[]).map((i) => i.name); - if (isLateralUnion || isEnum) { - const valuesWithoutQuotes = values.map((item: string) => item.replace(/"/g, '')); - return { name: 'enum', value: valuesWithoutQuotes, required }; - } + if (type === 'Array') { + const arrayElements = elements.length === 1 ? elements[0] : `(${elements.join(' | ')})`; + type = `${arrayElements}[]`; + } + + if (type === 'union') { + type = elements.join(' | '); + } - return { name: values[0], required } as SBType; + if (type === 'intersection') { + type = elements.join(' & '); + } + } } - // recursively convert object properties to SBType - if (schema.kind === 'object' && typeof schema.schema === 'object') { - const schemaObject = schema.schema as Record; + return { + name: docgenInfo.name, + description: docgenInfo.description, + type: sbType + ? { + ...sbType, + required: 'required' in docgenInfo ? docgenInfo.required ?? false : false, + } + : { name: 'other', value: type ?? '' }, + table: { + type: type ? { summary: type } : undefined, + defaultValue: extractedProp?.propDef.defaultValue, + jsDocTags: extractedProp?.propDef.jsDocTags, + category: section, + }, + }; +}; + +/** + * Extracts the argType for a prop/event/slot/exposed generated with "vue-component-meta". + + * @param docgenInfo __docgenInfo from "vue-component-meta" + * @param section Whether the arg is a prop, event, slot or exposed + */ +export const extractFromVueComponentMeta = ( + docgenInfo: VueDocgenInfoEntry<'vue-component-meta'>, + section: (typeof ARG_TYPE_SECTIONS)[number] +): StrictInputType | undefined => { + if ('global' in docgenInfo && docgenInfo.global) return; + + const tableType = { summary: docgenInfo.type.replace(' | undefined', '') }; + + if (section === 'props') { + const propInfo = docgenInfo as VueDocgenInfoEntry<'vue-component-meta', 'props'>; + const defaultValue = propInfo.default ? { summary: propInfo.default } : undefined; return { - name: 'object', - required, - value: Object.entries(schemaObject).reduce>((obj, [key, value]) => { - obj[key] = convertPropType(value); - return obj; - }, {}), + name: propInfo.name, + description: formatDescriptionWithTags(propInfo.description, propInfo.tags), + defaultValue, + type: getStorybookTypeFromVueComponentMeta(propInfo), + table: { + type: tableType, + defaultValue, + category: section, + }, }; - } - - if (schema.kind === 'array' && Array.isArray(schema.schema)) { + } else { return { - name: 'array', - value: convertPropType({ schema: schema.schema[0] } as MetaDocgenInfo), - required, + name: docgenInfo.name, + description: 'description' in docgenInfo ? docgenInfo.description : '', + type: { name: 'other', value: docgenInfo.type }, + table: { + type: tableType, + category: section, + }, }; } +}; + +/** + * Converts the given prop info that was generated with "vue-component-meta" into a SBType. + */ +export const getStorybookTypeFromVueComponentMeta = ( + propInfo: Pick, 'schema' | 'required' | 'type'> +): SBType => { + const schema = propInfo.schema; + const required = propInfo.required; + const fallbackSbType: SBType = { name: 'other', value: propInfo.type, required }; + + const KNOWN_SCHEMAS = ['string', 'number', 'function', 'boolean', 'symbol'] as const; + type KnownSchema = (typeof KNOWN_SCHEMAS)[number]; + + if (typeof schema === 'string') { + if (KNOWN_SCHEMAS.includes(schema as KnownSchema)) { + return { name: schema as KnownSchema, required }; + } + return fallbackSbType; + } + + switch (schema.kind) { + case 'enum': { + // filter out empty or "undefined" for optional props + let definedSchemas = schema.schema?.filter((item) => item !== 'undefined') ?? []; + + if (isBooleanSchema(definedSchemas)) { + return { name: 'boolean', required }; + } + + if (isLiteralUnionSchema(definedSchemas) || isEnumSchema(definedSchemas)) { + // remove quotes from literals + const literals = definedSchemas.map((literal) => literal.replace(/"/g, '')); + return { name: 'enum', value: literals, required }; + } + + if (definedSchemas.length === 1) { + return getStorybookTypeFromVueComponentMeta({ + schema: definedSchemas[0], + type: propInfo.type, + required, + }); + } + + // for union types like "string | number | boolean", + // the schema will be "string | number | true | false" + // so we need to replace "true | false" with boolean + if ( + definedSchemas.length > 2 && + definedSchemas.includes('true') && + definedSchemas.includes('false') + ) { + definedSchemas = definedSchemas.filter((i) => i !== 'true' && i !== 'false'); + definedSchemas.push('boolean'); + } + + return { + name: 'union', + value: definedSchemas.map((i) => { + if (typeof i === 'object') { + return getStorybookTypeFromVueComponentMeta({ + schema: i, + type: i.type, + required: false, + }); + } else { + return getStorybookTypeFromVueComponentMeta({ schema: i, type: i, required: false }); + } + }), + required, + }; + } + + case 'array': { + // filter out empty or "undefined" for optional props + const definedSchemas = schema.schema?.filter((item) => item !== 'undefined') ?? []; + if (definedSchemas.length === 0) return fallbackSbType; + + if (definedSchemas.length === 1) { + return { + name: 'array', + value: getStorybookTypeFromVueComponentMeta({ + schema: definedSchemas[0], + type: propInfo.type, + required: false, + }), + required, + }; + } + + return { + name: 'union', + value: definedSchemas.map((i) => { + if (typeof i === 'object') { + return getStorybookTypeFromVueComponentMeta({ + schema: i, + type: i.type, + required: false, + }); + } else { + return getStorybookTypeFromVueComponentMeta({ schema: i, type: i, required: false }); + } + }), + required, + }; + } - return fallbackSbType; + case 'object': + return { + name: 'object', + value: Object.entries(schema.schema ?? {}).reduce>( + (obj, [propName, propSchema]) => { + obj[propName] = getStorybookTypeFromVueComponentMeta(propSchema); + return obj; + }, + {} + ), + required, + }; + + default: + return fallbackSbType; + } }; /** * Adds the descriptions for the given tags if available. */ -const formatDescriptionWithTags = (description: string, tags: MetaDocgenInfo['tags']): string => { +const formatDescriptionWithTags = ( + description: string, + tags: VueDocgenInfoEntry<'vue-component-meta', 'props'>['tags'] +): string => { if (!tags?.length || !description) return description ?? ''; const tagDescriptions = tags.map((tag) => `@${tag.name}: ${tag.text}`).join('
    '); return `${tagDescriptions}

    ${description}`; }; + +/** + * Checks whether the given schemas are all literal union schemas. + * + * @example "foo" | "bar" | "baz" + */ +const isLiteralUnionSchema = (schemas: PropertyMetaSchema[]): schemas is `"${string}"`[] => { + return schemas.every( + (schema) => typeof schema === 'string' && schema.startsWith('"') && schema.endsWith('"') + ); +}; + +/** + * Checks whether the given schemas are all enums. + * + * @example [MyEnum.Foo, MyEnum.Bar] + */ +const isEnumSchema = (schemas: PropertyMetaSchema[]): schemas is string[] => { + return schemas.every((schema) => typeof schema === 'string' && schema.includes('.')); +}; + +/** + * Checks whether the given schemas are representing a boolean. + * + * @example [true, false] + */ +const isBooleanSchema = ( + schemas: PropertyMetaSchema[] +): schemas is ['true', 'false'] | ['false', 'true'] => { + return schemas.length === 2 && schemas.includes('true') && schemas.includes('false'); +}; diff --git a/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts b/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts index 085b59a1e9ae..043244a8fd3b 100644 --- a/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts +++ b/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts @@ -1,8 +1,11 @@ -export const referenceTypeProps = { - __name: 'component', +import type { ExtractedProp } from '@storybook/docs-tools'; +import { TypeSystem } from '@storybook/docs-tools'; +import type { VueDocgenInfo } from 'frameworks/vue3-vite/src'; + +type TestComponent = { __docgenInfo: VueDocgenInfo<'vue-component-meta'> }; + +export const referenceTypeProps: TestComponent = { __docgenInfo: { - exportName: 'default', - displayName: 'component', type: 1, props: [ { @@ -468,380 +471,167 @@ export const referenceTypeProps = { ], events: [], slots: [], - exposed: [ - { - name: 'foo', - type: 'string', - description: 'string foo', - declarations: [], - schema: 'string', + exposed: [], + }, +}; + +export const mockExtractComponentPropsReturn = [ + { + propDef: { + name: 'bar', + type: {}, + required: false, + description: 'description bar is optional number', + defaultValue: null, + sbType: { + name: 'other', }, - { - name: 'bar', - type: 'number', - description: 'description bar is optional number', - declarations: [], - schema: 'number', + }, + docgenInfo: { + name: 'bar', + global: false, + description: 'description bar is optional number', + tags: [], + required: false, + type: 'number | undefined', + declarations: [], + schema: { + kind: 'enum', + type: 'number | undefined', + schema: ['undefined', 'number'], }, - { - name: 'baz', - type: 'boolean', - description: 'description baz is required boolean', - declarations: [], - schema: { - kind: 'enum', - type: 'boolean', - schema: ['false', 'true'], - }, + default: '1', + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'stringArray', + type: {}, + required: false, + description: 'description stringArray is string array', + defaultValue: null, + sbType: { + name: 'other', }, - { - name: 'stringArray', - type: 'string[]', - description: 'description stringArray is string array', - declarations: [], - schema: { - kind: 'array', - type: 'string[]', - schema: ['string'], - }, + }, + docgenInfo: { + name: 'stringArray', + global: false, + description: 'description stringArray is string array', + tags: [], + required: false, + type: 'string[] | undefined', + declarations: [], + schema: { + kind: 'enum', + type: 'string[] | undefined', + schema: [ + 'undefined', + { + kind: 'array', + type: 'string[]', + schema: ['string'], + }, + ], }, - { - name: 'union', - type: 'string | number', - description: 'description union is required union type', - declarations: [], - schema: { - kind: 'enum', - type: 'string | number', - schema: ['string', 'number'], - }, + default: '["foo", "bar"]', + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'key', + type: {}, + required: false, + description: '', + defaultValue: null, + sbType: { + name: 'other', }, - { - name: 'unionOptional', - type: 'string | number | boolean | undefined', - description: 'description unionOptional is optional union type', - declarations: [], - schema: { - kind: 'enum', - type: 'string | number | boolean | undefined', - schema: ['undefined', 'string', 'number', 'false', 'true'], - }, + }, + docgenInfo: { + name: 'key', + global: true, + description: '', + tags: [], + required: false, + type: 'string | number | symbol | undefined', + declarations: [], + schema: { + kind: 'enum', + type: 'string | number | symbol | undefined', + schema: ['undefined', 'string', 'number', 'symbol'], }, - { - name: 'nested', - type: 'MyNestedProps', - description: 'description nested is required nested object', - declarations: [], - schema: { - kind: 'object', - type: 'MyNestedProps', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: 'nested prop documentation', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'ref', + type: {}, + required: false, + description: '', + defaultValue: null, + sbType: { + name: 'other', }, - { - name: 'nestedIntersection', - type: 'MyNestedProps & { additionalProp: string; }', - description: 'description required nested object with intersection', - declarations: [], - schema: { - kind: 'object', - type: 'MyNestedProps & { additionalProp: string; }', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: 'nested prop documentation', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - additionalProp: { - name: 'additionalProp', - global: false, - description: 'description required additional property', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, + }, + docgenInfo: { + name: 'ref', + global: true, + description: '', + tags: [], + required: false, + type: 'VNodeRef | undefined', + declarations: [], + schema: { + kind: 'enum', + type: 'VNodeRef | undefined', + schema: [ + 'undefined', + 'string', + 'Ref', + { + kind: 'event', + type: '(ref: Element | ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase, {}, {}> | null, refs: Record<...>): void', + schema: [], }, - }, + ], }, - { - name: 'nestedOptional', - type: 'MyNestedProps | MyIgnoredNestedProps | undefined', - description: 'description optional nested object', - declarations: [], - schema: { - kind: 'enum', - type: 'MyNestedProps | MyIgnoredNestedProps | undefined', - schema: [ - 'undefined', - { - kind: 'object', - type: 'MyNestedProps', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: 'nested prop documentation', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, - { - kind: 'object', - type: 'MyIgnoredNestedProps', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: '', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, - ], - }, - }, - { - name: 'array', - type: 'MyNestedProps[]', - description: 'description required array object', - declarations: [], - schema: { - kind: 'array', - type: 'MyNestedProps[]', - schema: [ - { - kind: 'object', - type: 'MyNestedProps', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: 'nested prop documentation', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, - ], - }, - }, - { - name: 'arrayOptional', - type: 'MyNestedProps[] | undefined', - description: 'description optional array object', - declarations: [], - schema: { - kind: 'enum', - type: 'MyNestedProps[] | undefined', - schema: [ - 'undefined', - { - kind: 'array', - type: 'MyNestedProps[]', - schema: [ - { - kind: 'object', - type: 'MyNestedProps', - schema: { - nestedProp: { - name: 'nestedProp', - global: false, - description: 'nested prop documentation', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, - ], - }, - ], - }, - }, - { - name: 'enumValue', - type: 'MyEnum', - description: 'description enum value', - declarations: [], - schema: { - kind: 'enum', - type: 'MyEnum', - schema: ['MyEnum.Small', 'MyEnum.Medium', 'MyEnum.Large'], - }, - }, - { - name: 'literalFromContext', - type: '"Uncategorized" | "Content" | "Interaction" | "Display" | "Forms" | "Addons"', - description: 'description literal type alias that require context', - declarations: [], - schema: { - kind: 'enum', - type: '"Uncategorized" | "Content" | "Interaction" | "Display" | "Forms" | "Addons"', - schema: [ - '"Uncategorized"', - '"Content"', - '"Interaction"', - '"Display"', - '"Forms"', - '"Addons"', - ], - }, - }, - { - name: 'inlined', - type: '{ foo: string; }', - description: '', - declarations: [], - schema: { - kind: 'object', - type: '{ foo: string; }', - schema: { - foo: { - name: 'foo', - global: false, - description: '', - tags: [], - required: true, - type: 'string', - declarations: [], - schema: 'string', - }, - }, - }, - }, - { - name: 'recursive', - type: 'MyNestedRecursiveProps | undefined', - description: '', - declarations: [], - schema: { - kind: 'enum', - type: 'MyNestedRecursiveProps | undefined', - schema: [ - 'undefined', - { - kind: 'object', - type: 'MyNestedRecursiveProps', - schema: { - recursive: { - name: 'recursive', - global: false, - description: '', - tags: [], - required: true, - type: 'MyNestedRecursiveProps', - declarations: [], - schema: 'MyNestedRecursiveProps', - }, - }, - }, - ], - }, - }, - ], - sourceFiles: - '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3_vue3-vite-default-ts/component-meta/reference-type-props/component.vue', - }, -}; - -export const mockExtractComponentPropsReturn = [ - { - propDef: { - name: 'bar', - type: {}, - required: false, - description: 'description bar is optional number', - defaultValue: null, - sbType: { - name: 'other', - }, - }, - docgenInfo: { - name: 'bar', - global: false, - description: 'description bar is optional number', - tags: [], - required: false, - type: 'number | undefined', - declarations: [], - schema: { - kind: 'enum', - type: 'number | undefined', - schema: ['undefined', 'number'], - }, - default: '1', }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { - name: 'stringArray', + name: 'ref_for', type: {}, required: false, - description: 'description stringArray is string array', + description: '', defaultValue: null, sbType: { name: 'other', }, }, docgenInfo: { - name: 'stringArray', - global: false, - description: 'description stringArray is string array', + name: 'ref_for', + global: true, + description: '', tags: [], required: false, - type: 'string[] | undefined', + type: 'boolean | undefined', declarations: [], schema: { kind: 'enum', - type: 'string[] | undefined', - schema: [ - 'undefined', - { - kind: 'array', - type: 'string[]', - schema: ['string'], - }, - ], + type: 'boolean | undefined', + schema: ['undefined', 'false', 'true'], }, - default: '["foo", "bar"]', }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { - name: 'key', + name: 'ref_key', type: {}, required: false, description: '', @@ -851,24 +641,24 @@ export const mockExtractComponentPropsReturn = [ }, }, docgenInfo: { - name: 'key', + name: 'ref_key', global: true, description: '', tags: [], required: false, - type: 'string | number | symbol | undefined', + type: 'string | undefined', declarations: [], schema: { kind: 'enum', - type: 'string | number | symbol | undefined', - schema: ['undefined', 'string', 'number', 'symbol'], + type: 'string | undefined', + schema: ['undefined', 'string'], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { - name: 'ref', + name: 'class', type: {}, required: false, description: '', @@ -878,33 +668,20 @@ export const mockExtractComponentPropsReturn = [ }, }, docgenInfo: { - name: 'ref', + name: 'class', global: true, description: '', tags: [], required: false, - type: 'VNodeRef | undefined', + type: 'unknown', declarations: [], - schema: { - kind: 'enum', - type: 'VNodeRef | undefined', - schema: [ - 'undefined', - 'string', - 'Ref', - { - kind: 'event', - type: '(ref: Element | ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase, {}, {}> | null, refs: Record<...>): void', - schema: [], - }, - ], - }, + schema: 'unknown', }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { - name: 'ref_for', + name: 'style', type: {}, required: false, description: '', @@ -914,100 +691,23 @@ export const mockExtractComponentPropsReturn = [ }, }, docgenInfo: { - name: 'ref_for', + name: 'style', global: true, description: '', tags: [], required: false, - type: 'boolean | undefined', + type: 'unknown', declarations: [], - schema: { - kind: 'enum', - type: 'boolean | undefined', - schema: ['undefined', 'false', 'true'], - }, + schema: 'unknown', }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { - name: 'ref_key', + name: 'foo', type: {}, - required: false, - description: '', - defaultValue: null, - sbType: { - name: 'other', - }, - }, - docgenInfo: { - name: 'ref_key', - global: true, - description: '', - tags: [], - required: false, - type: 'string | undefined', - declarations: [], - schema: { - kind: 'enum', - type: 'string | undefined', - schema: ['undefined', 'string'], - }, - }, - typeSystem: 'JavaScript', - }, - { - propDef: { - name: 'class', - type: {}, - required: false, - description: '', - defaultValue: null, - sbType: { - name: 'other', - }, - }, - docgenInfo: { - name: 'class', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [], - schema: 'unknown', - }, - typeSystem: 'JavaScript', - }, - { - propDef: { - name: 'style', - type: {}, - required: false, - description: '', - defaultValue: null, - sbType: { - name: 'other', - }, - }, - docgenInfo: { - name: 'style', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [], - schema: 'unknown', - }, - typeSystem: 'JavaScript', - }, - { - propDef: { - name: 'foo', - type: {}, - required: true, - description: 'string foo', + required: true, + description: 'string foo', defaultValue: null, sbType: { name: 'other', @@ -1040,7 +740,7 @@ export const mockExtractComponentPropsReturn = [ declarations: [], schema: 'string', }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1067,7 +767,7 @@ export const mockExtractComponentPropsReturn = [ schema: ['false', 'true'], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1094,7 +794,7 @@ export const mockExtractComponentPropsReturn = [ schema: ['string', 'number'], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1121,7 +821,7 @@ export const mockExtractComponentPropsReturn = [ schema: ['undefined', 'string', 'number', 'false', 'true'], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1159,7 +859,7 @@ export const mockExtractComponentPropsReturn = [ }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1207,7 +907,7 @@ export const mockExtractComponentPropsReturn = [ }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1268,7 +968,7 @@ export const mockExtractComponentPropsReturn = [ ], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1312,7 +1012,7 @@ export const mockExtractComponentPropsReturn = [ ], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1363,7 +1063,7 @@ export const mockExtractComponentPropsReturn = [ ], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1390,7 +1090,7 @@ export const mockExtractComponentPropsReturn = [ schema: ['MyEnum.Small', 'MyEnum.Medium', 'MyEnum.Large'], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1424,7 +1124,7 @@ export const mockExtractComponentPropsReturn = [ ], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1462,7 +1162,7 @@ export const mockExtractComponentPropsReturn = [ }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1507,147 +1207,20 @@ export const mockExtractComponentPropsReturn = [ ], }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, ]; -export const referenceTypeEvents = { - __name: 'component', - emits: ['foo', 'bar', 'baz'], - __hmrId: '3a8b03b5', - __file: - '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', +export const referenceTypeEvents: TestComponent = { __docgenInfo: { - exportName: 'default', - displayName: 'component', - props: [ - { - name: 'key', - global: true, - description: '', - tags: [], - required: false, - type: 'string | number | symbol | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47082, 47113], - }, - ], - schema: { - kind: 'enum', - type: 'string | number | symbol | undefined', - schema: ['undefined', 'string', 'number', 'symbol'], - }, - }, - { - name: 'ref', - global: true, - description: '', - tags: [], - required: false, - type: 'VNodeRef | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47118, 47133], - }, - ], - schema: { - kind: 'enum', - type: 'VNodeRef | undefined', - schema: [ - 'undefined', - 'string', - 'Ref', - { - kind: 'event', - type: '(ref: Element | ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase, {}, {}> | null, refs: Record<...>): void', - schema: [], - }, - ], - }, - }, - { - name: 'ref_for', - global: true, - description: '', - tags: [], - required: false, - type: 'boolean | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47138, 47156], - }, - ], - schema: { - kind: 'enum', - type: 'boolean | undefined', - schema: ['undefined', 'false', 'true'], - }, - }, - { - name: 'ref_key', - global: true, - description: '', - tags: [], - required: false, - type: 'string | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47161, 47178], - }, - ], - schema: { - kind: 'enum', - type: 'string | undefined', - schema: ['undefined', 'string'], - }, - }, - { - name: 'class', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [52888, 52904], - }, - ], - schema: 'unknown', - }, - { - name: 'style', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [52909, 52925], - }, - ], - schema: 'unknown', - }, - ], + type: 1, + props: [], events: [ { name: 'foo', type: '[data?: { foo: string; } | undefined]', signature: '(event: "foo", data?: { foo: string; } | undefined): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [ { kind: 'enum', @@ -1665,12 +1238,7 @@ export const referenceTypeEvents = { tags: [], required: true, type: 'string', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [207, 218], - }, - ], + declarations: [], schema: 'string', }, }, @@ -1683,12 +1251,7 @@ export const referenceTypeEvents = { name: 'bar', type: '[value: { year: number; title?: any; }]', signature: '(event: "bar", value: { year: number; title?: any; }): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [ { kind: 'object', @@ -1701,12 +1264,7 @@ export const referenceTypeEvents = { tags: [], required: true, type: 'number', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [255, 268], - }, - ], + declarations: [], schema: 'number', }, title: { @@ -1716,12 +1274,7 @@ export const referenceTypeEvents = { tags: [], required: false, type: 'any', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [269, 280], - }, - ], + declarations: [], schema: 'any', }, }, @@ -1732,140 +1285,12 @@ export const referenceTypeEvents = { name: 'baz', type: '[]', signature: '(event: "baz"): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [], }, ], slots: [], - exposed: [ - { - name: 'onFoo', - type: '((data?: { foo: string; } | undefined) => any) | undefined', - description: '', - declarations: [], - schema: { - kind: 'enum', - type: '((data?: { foo: string; } | undefined) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(data?: { foo: string; } | undefined): any', - schema: [ - { - kind: 'enum', - type: '{ foo: string; } | undefined', - schema: [ - 'undefined', - { - kind: 'object', - type: '{ foo: string; }', - schema: { - foo: { - name: 'foo', - global: false, - description: '', - tags: [], - required: true, - type: 'string', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [207, 218], - }, - ], - schema: 'string', - }, - }, - }, - ], - }, - ], - }, - ], - }, - }, - { - name: 'onBar', - type: '((value: { year: number; title?: any; }) => any) | undefined', - description: '', - declarations: [], - schema: { - kind: 'enum', - type: '((value: { year: number; title?: any; }) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(value: { year: number; title?: any; }): any', - schema: [ - { - kind: 'object', - type: '{ year: number; title?: any; }', - schema: { - year: { - name: 'year', - global: false, - description: '', - tags: [], - required: true, - type: 'number', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [255, 268], - }, - ], - schema: 'number', - }, - title: { - name: 'title', - global: false, - description: '', - tags: [], - required: false, - type: 'any', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [269, 280], - }, - ], - schema: 'any', - }, - }, - }, - ], - }, - ], - }, - }, - { - name: 'onBaz', - type: '(() => any) | undefined', - description: '', - declarations: [], - schema: { - kind: 'enum', - type: '(() => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(): any', - schema: [], - }, - ], - }, - }, - ], - sourceFiles: - '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', + exposed: [], }, }; @@ -1883,12 +1308,7 @@ export const mockExtractComponentEventsReturn = [ name: 'foo', type: '[data?: { foo: string; } | undefined]', signature: '(event: "foo", data?: { foo: string; } | undefined): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [ { kind: 'enum', @@ -1906,12 +1326,7 @@ export const mockExtractComponentEventsReturn = [ tags: [], required: true, type: 'string', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [207, 218], - }, - ], + declarations: [], schema: 'string', }, }, @@ -1920,7 +1335,7 @@ export const mockExtractComponentEventsReturn = [ }, ], }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1935,12 +1350,7 @@ export const mockExtractComponentEventsReturn = [ name: 'bar', type: '[value: { year: number; title?: any; }]', signature: '(event: "bar", value: { year: number; title?: any; }): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [ { kind: 'object', @@ -1953,12 +1363,7 @@ export const mockExtractComponentEventsReturn = [ tags: [], required: true, type: 'number', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [255, 268], - }, - ], + declarations: [], schema: 'number', }, title: { @@ -1968,19 +1373,14 @@ export const mockExtractComponentEventsReturn = [ tags: [], required: false, type: 'any', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/reference-type-events/component.vue', - range: [269, 280], - }, - ], + declarations: [], schema: 'any', }, }, }, ], }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -1995,142 +1395,17 @@ export const mockExtractComponentEventsReturn = [ name: 'baz', type: '[]', signature: '(event: "baz"): void', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [4468, 4503], - }, - ], + declarations: [], schema: [], }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, ]; -export const templateSlots = { - __hmrId: 'c8033161', - __file: - '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', +export const templateSlots: TestComponent = { __docgenInfo: { - exportName: 'default', - displayName: 'component', - props: [ - { - name: 'key', - global: true, - description: '', - tags: [], - required: false, - type: 'string | number | symbol | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47082, 47113], - }, - ], - schema: { - kind: 'enum', - type: 'string | number | symbol | undefined', - schema: ['undefined', 'string', 'number', 'symbol'], - }, - }, - { - name: 'ref', - global: true, - description: '', - tags: [], - required: false, - type: 'VNodeRef | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47118, 47133], - }, - ], - schema: { - kind: 'enum', - type: 'VNodeRef | undefined', - schema: [ - 'undefined', - 'string', - 'Ref', - { - kind: 'event', - type: '(ref: Element | ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase, {}, {}> | null, refs: Record<...>): void', - schema: [], - }, - ], - }, - }, - { - name: 'ref_for', - global: true, - description: '', - tags: [], - required: false, - type: 'boolean | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47138, 47156], - }, - ], - schema: { - kind: 'enum', - type: 'boolean | undefined', - schema: ['undefined', 'false', 'true'], - }, - }, - { - name: 'ref_key', - global: true, - description: '', - tags: [], - required: false, - type: 'string | undefined', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [47161, 47178], - }, - ], - schema: { - kind: 'enum', - type: 'string | undefined', - schema: ['undefined', 'string'], - }, - }, - { - name: 'class', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [52888, 52904], - }, - ], - schema: 'unknown', - }, - { - name: 'style', - global: true, - description: '', - tags: [], - required: false, - type: 'unknown', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [52909, 52925], - }, - ], - schema: 'unknown', - }, - ], + type: 1, + props: [], events: [], slots: [ { @@ -2204,12 +1479,7 @@ export const templateSlots = { tags: [], required: true, type: 'number', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', - range: [153, 161], - }, - ], + declarations: [], schema: 'number', }, str: { @@ -2219,123 +1489,14 @@ export const templateSlots = { tags: [], required: true, type: 'string', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', - range: [163, 173], - }, - ], - schema: 'string', - }, - }, - }, - }, - ], - exposed: [ - { - name: '$slots', - type: 'Readonly & { "no-bind"?(_: {}): any; default?(_: { num: number; }): any; named?(_: { str: string; }): any; vbind?(_: { num: number; str: string; }): any; }', - description: '', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/node_modules/@vue/runtime-core/dist/runtime-core.d.ts', - range: [8406, 8433], - }, - ], - schema: { - kind: 'object', - type: 'Readonly & { "no-bind"?(_: {}): any; default?(_: { num: number; }): any; named?(_: { str: string; }): any; vbind?(_: { num: number; str: string; }): any; }', - schema: { - 'no-bind': { - name: 'no-bind', - global: false, - description: '', - tags: [], - required: false, - type: '((_: {}) => any) | undefined', - declarations: [], - schema: { - kind: 'enum', - type: '((_: {}) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(_: {}): any', - schema: [], - }, - ], - }, - }, - default: { - name: 'default', - global: false, - description: '', - tags: [], - required: false, - type: '((_: { num: number; }) => any) | undefined', - declarations: [], - schema: { - kind: 'enum', - type: '((_: { num: number; }) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(_: { num: number; }): any', - schema: [], - }, - ], - }, - }, - named: { - name: 'named', - global: false, - description: '', - tags: [], - required: false, - type: '((_: { str: string; }) => any) | undefined', - declarations: [], - schema: { - kind: 'enum', - type: '((_: { str: string; }) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(_: { str: string; }): any', - schema: [], - }, - ], - }, - }, - vbind: { - name: 'vbind', - global: false, - description: '', - tags: [], - required: false, - type: '((_: { num: number; str: string; }) => any) | undefined', declarations: [], - schema: { - kind: 'enum', - type: '((_: { num: number; str: string; }) => any) | undefined', - schema: [ - 'undefined', - { - kind: 'event', - type: '(_: { num: number; str: string; }): any', - schema: [], - }, - ], - }, + schema: 'string', }, }, }, }, ], - sourceFiles: - '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', + exposed: [], }, }; @@ -2361,7 +1522,7 @@ export const mockExtractComponentSlotsReturn = [ schema: {}, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -2395,7 +1556,7 @@ export const mockExtractComponentSlotsReturn = [ }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -2429,7 +1590,7 @@ export const mockExtractComponentSlotsReturn = [ }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, { propDef: { @@ -2457,12 +1618,7 @@ export const mockExtractComponentSlotsReturn = [ tags: [], required: true, type: 'number', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', - range: [153, 161], - }, - ], + declarations: [], schema: 'number', }, str: { @@ -2472,17 +1628,987 @@ export const mockExtractComponentSlotsReturn = [ tags: [], required: true, type: 'string', - declarations: [ - { - file: '/storybook/sandbox/vue3-vite-default-ts/src/stories/renderers/vue3/component-meta/template-slots/component.vue', - range: [163, 173], - }, - ], + declarations: [], schema: 'string', }, }, }, }, - typeSystem: 'JavaScript', + typeSystem: TypeSystem.JAVASCRIPT, }, ]; + +export const vueDocgenMocks = { + props: { + component: { + __docgenInfo: { + description: '', + tags: {}, + props: [ + { + name: 'foo', + description: 'string foo', + tags: { + default: [ + { + description: '"rounded"', + title: 'default', + }, + ], + since: [ + { + description: 'v1.0.0', + title: 'since', + }, + ], + see: [ + { + description: 'https://vuejs.org/', + title: 'see', + }, + ], + deprecated: [ + { + description: 'v1.1.0', + title: 'deprecated', + }, + ], + }, + required: true, + type: { + name: 'string', + }, + }, + { + name: 'bar', + description: 'description bar is optional number', + required: false, + type: { + name: 'number', + }, + defaultValue: { + func: false, + value: '1', + }, + }, + { + name: 'baz', + description: 'description baz is required boolean', + required: true, + type: { + name: 'boolean', + }, + }, + { + name: 'stringArray', + description: 'description stringArray is string array', + required: false, + type: { + name: 'Array', + elements: [ + { + name: 'string', + }, + ], + }, + defaultValue: { + func: false, + value: "() => ['foo', 'bar']", + }, + }, + { + name: 'union', + description: 'description union is required union type', + required: true, + type: { + name: 'union', + elements: [ + { + name: 'string', + }, + { + name: 'number', + }, + ], + }, + }, + { + name: 'unionOptional', + description: 'description unionOptional is optional union type', + required: false, + type: { + name: 'union', + elements: [ + { + name: 'string', + }, + { + name: 'number', + }, + { + name: 'boolean', + }, + ], + }, + }, + { + name: 'nested', + description: 'description nested is required nested object', + required: true, + type: { + name: 'MyNestedProps', + }, + }, + { + name: 'nestedIntersection', + description: 'description required nested object with intersection', + required: true, + type: { + name: 'intersection', + elements: [ + { + name: 'MyNestedProps', + }, + { + name: '{\n /**\n * description required additional property\n */\n additionalProp: string;\n}', + }, + ], + }, + }, + { + name: 'nestedOptional', + description: 'description optional nested object', + required: false, + type: { + name: 'union', + elements: [ + { + name: 'MyNestedProps', + }, + { + name: 'MyIgnoredNestedProps', + }, + ], + }, + }, + { + name: 'array', + description: 'description required array object', + required: true, + type: { + name: 'Array', + elements: [ + { + name: 'MyNestedProps', + }, + ], + }, + }, + { + name: 'arrayOptional', + description: 'description optional array object', + required: false, + type: { + name: 'Array', + elements: [ + { + name: 'MyNestedProps', + }, + ], + }, + }, + { + name: 'enumValue', + description: 'description enum value', + required: true, + type: { + name: 'MyEnum', + }, + }, + { + name: 'literalFromContext', + description: 'description literal type alias that require context', + required: true, + type: { + name: 'MyCategories', + }, + }, + { + name: 'inlined', + required: true, + type: { + name: '{ foo: string }', + }, + }, + { + name: 'recursive', + required: false, + type: { + name: 'MyNestedRecursiveProps', + }, + }, + ], + }, + }, + extractedProps: [ + { + propDef: { + name: 'foo', + type: { + summary: 'string', + }, + required: true, + description: 'string foo', + defaultValue: null, + sbType: { + name: 'string', + }, + }, + docgenInfo: { + name: 'foo', + description: 'string foo', + tags: { + default: [ + { + description: '"rounded"', + title: 'default', + }, + ], + since: [ + { + description: 'v1.0.0', + title: 'since', + }, + ], + see: [ + { + description: 'https://vuejs.org/', + title: 'see', + }, + ], + deprecated: [ + { + description: 'v1.1.0', + title: 'deprecated', + }, + ], + }, + required: true, + type: { + name: 'string', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'bar', + type: { + summary: 'number', + }, + required: false, + description: 'description bar is optional number', + defaultValue: { + summary: '1', + }, + sbType: { + name: 'number', + }, + }, + docgenInfo: { + name: 'bar', + description: 'description bar is optional number', + required: false, + type: { + name: 'number', + }, + defaultValue: { + func: false, + value: '1', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'baz', + type: { + summary: 'boolean', + }, + required: true, + description: 'description baz is required boolean', + defaultValue: null, + sbType: { + name: 'boolean', + }, + }, + docgenInfo: { + name: 'baz', + description: 'description baz is required boolean', + required: true, + type: { + name: 'boolean', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'stringArray', + type: { + summary: 'Array', + }, + required: false, + description: 'description stringArray is string array', + defaultValue: { + summary: "() => ['foo', 'bar']", + }, + sbType: { + name: 'other', + value: 'Array([object Object])', + }, + }, + docgenInfo: { + name: 'stringArray', + description: 'description stringArray is string array', + required: false, + type: { + name: 'Array', + elements: [ + { + name: 'string', + }, + ], + value: [ + { + name: 'string', + }, + ], + }, + defaultValue: { + func: false, + value: "() => ['foo', 'bar']", + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'union', + type: { + summary: 'union', + }, + required: true, + description: 'description union is required union type', + defaultValue: null, + sbType: { + name: 'union', + value: [ + { + name: 'string', + }, + { + name: 'number', + }, + ], + }, + }, + docgenInfo: { + name: 'union', + description: 'description union is required union type', + required: true, + type: { + name: 'union', + elements: [ + { + name: 'string', + }, + { + name: 'number', + }, + ], + value: [ + { + name: 'string', + }, + { + name: 'number', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'unionOptional', + type: { + summary: 'union', + }, + required: false, + description: 'description unionOptional is optional union type', + defaultValue: null, + sbType: { + name: 'union', + value: [ + { + name: 'string', + }, + { + name: 'number', + }, + { + name: 'boolean', + }, + ], + }, + }, + docgenInfo: { + name: 'unionOptional', + description: 'description unionOptional is optional union type', + required: false, + type: { + name: 'union', + elements: [ + { + name: 'string', + }, + { + name: 'number', + }, + { + name: 'boolean', + }, + ], + value: [ + { + name: 'string', + }, + { + name: 'number', + }, + { + name: 'boolean', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'nested', + type: { + summary: 'MyNestedProps', + }, + required: true, + description: 'description nested is required nested object', + defaultValue: null, + sbType: { + name: 'other', + value: 'MyNestedProps', + }, + }, + docgenInfo: { + name: 'nested', + description: 'description nested is required nested object', + required: true, + type: { + name: 'MyNestedProps', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'nestedIntersection', + type: { + summary: 'intersection', + }, + required: true, + description: 'description required nested object with intersection', + defaultValue: null, + sbType: { + name: 'other', + value: 'intersection([object Object],[object Object])', + }, + }, + docgenInfo: { + name: 'nestedIntersection', + description: 'description required nested object with intersection', + required: true, + type: { + name: 'intersection', + elements: [ + { + name: 'MyNestedProps', + }, + { + name: '{\n /**\n * description required additional property\n */\n additionalProp: string;\n}', + }, + ], + value: [ + { + name: 'MyNestedProps', + }, + { + name: '{\n /**\n * description required additional property\n */\n additionalProp: string;\n}', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'nestedOptional', + type: { + summary: 'union', + }, + required: false, + description: 'description optional nested object', + defaultValue: null, + sbType: { + name: 'union', + value: [ + { + name: 'other', + value: 'MyNestedProps', + }, + { + name: 'other', + value: 'MyIgnoredNestedProps', + }, + ], + }, + }, + docgenInfo: { + name: 'nestedOptional', + description: 'description optional nested object', + required: false, + type: { + name: 'union', + elements: [ + { + name: 'MyNestedProps', + }, + { + name: 'MyIgnoredNestedProps', + }, + ], + value: [ + { + name: 'MyNestedProps', + }, + { + name: 'MyIgnoredNestedProps', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'array', + type: { + summary: 'Array', + }, + required: true, + description: 'description required array object', + defaultValue: null, + sbType: { + name: 'other', + value: 'Array([object Object])', + }, + }, + docgenInfo: { + name: 'array', + description: 'description required array object', + required: true, + type: { + name: 'Array', + elements: [ + { + name: 'MyNestedProps', + }, + ], + value: [ + { + name: 'MyNestedProps', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'arrayOptional', + type: { + summary: 'Array', + }, + required: false, + description: 'description optional array object', + defaultValue: null, + sbType: { + name: 'other', + value: 'Array([object Object])', + }, + }, + docgenInfo: { + name: 'arrayOptional', + description: 'description optional array object', + required: false, + type: { + name: 'Array', + elements: [ + { + name: 'MyNestedProps', + }, + ], + value: [ + { + name: 'MyNestedProps', + }, + ], + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'enumValue', + type: { + summary: 'MyEnum', + }, + required: true, + description: 'description enum value', + defaultValue: null, + sbType: { + name: 'other', + value: 'MyEnum', + }, + }, + docgenInfo: { + name: 'enumValue', + description: 'description enum value', + required: true, + type: { + name: 'MyEnum', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'literalFromContext', + type: { + summary: 'MyCategories', + }, + required: true, + description: 'description literal type alias that require context', + defaultValue: null, + sbType: { + name: 'other', + value: 'MyCategories', + }, + }, + docgenInfo: { + name: 'literalFromContext', + description: 'description literal type alias that require context', + required: true, + type: { + name: 'MyCategories', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'inlined', + type: { + summary: '{ foo: string }', + }, + required: true, + defaultValue: null, + sbType: { + name: 'other', + value: '{ foo: string }', + }, + }, + docgenInfo: { + name: 'inlined', + required: true, + type: { + name: '{ foo: string }', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'recursive', + type: { + summary: 'MyNestedRecursiveProps', + }, + required: false, + defaultValue: null, + sbType: { + name: 'other', + value: 'MyNestedRecursiveProps', + }, + }, + docgenInfo: { + name: 'recursive', + required: false, + type: { + name: 'MyNestedRecursiveProps', + }, + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + ], + }, + events: { + component: { + __docgenInfo: { + exportName: 'default', + displayName: 'component', + description: '', + tags: {}, + events: [ + { + name: 'bar', + type: { + names: ['{ year: number; title?: any }'], + }, + description: 'Test description bar', + }, + { + name: 'baz', + description: 'Test description baz', + }, + ], + }, + }, + extractedProps: [ + { + propDef: { + name: 'bar', + type: {}, + description: 'Test description bar', + defaultValue: null, + sbType: { + name: 'other', + }, + }, + docgenInfo: { + name: 'bar', + type: { + names: ['{ year: number; title?: any }'], + }, + description: 'Test description bar', + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + { + propDef: { + name: 'baz', + type: null, + description: 'Test description baz', + defaultValue: null, + sbType: null, + }, + docgenInfo: { + name: 'baz', + description: 'Test description baz', + }, + typeSystem: TypeSystem.JAVASCRIPT, + }, + ], + }, + slots: { + component: { + __docgenInfo: { + displayName: 'component', + exportName: 'default', + description: '', + tags: {}, + slots: [ + { + name: 'no-bind', + }, + { + name: 'default', + scoped: true, + bindings: [ + { + name: 'num', + title: 'binding', + }, + ], + }, + { + name: 'named', + scoped: true, + bindings: [ + { + name: 'str', + title: 'binding', + }, + ], + }, + { + name: 'vbind', + scoped: true, + bindings: [ + { + name: 'num', + title: 'binding', + }, + { + name: 'str', + title: 'binding', + }, + ], + }, + ], + }, + }, + extractedProps: [ + { + propDef: { + name: 'no-bind', + type: { + summary: 'unknown', + }, + defaultValue: null, + }, + docgenInfo: { + name: 'no-bind', + }, + typeSystem: TypeSystem.UNKNOWN, + }, + { + propDef: { + name: 'default', + type: { + summary: 'unknown', + }, + defaultValue: null, + }, + docgenInfo: { + name: 'default', + scoped: true, + bindings: [ + { + name: 'num', + title: 'binding', + }, + ], + }, + typeSystem: TypeSystem.UNKNOWN, + }, + { + propDef: { + name: 'named', + type: { + summary: 'unknown', + }, + defaultValue: null, + }, + docgenInfo: { + name: 'named', + scoped: true, + bindings: [ + { + name: 'str', + title: 'binding', + }, + ], + }, + typeSystem: TypeSystem.UNKNOWN, + }, + { + propDef: { + name: 'vbind', + type: { + summary: 'unknown', + }, + defaultValue: null, + }, + docgenInfo: { + name: 'vbind', + scoped: true, + bindings: [ + { + name: 'num', + title: 'binding', + }, + { + name: 'str', + title: 'binding', + }, + ], + }, + typeSystem: TypeSystem.UNKNOWN, + }, + ], + }, + expose: { + component: { + __docgenInfo: { + exportName: 'default', + displayName: 'component', + description: '', + tags: {}, + expose: [ + { + name: 'label', + description: 'a label string', + }, + { + name: 'count', + description: 'a count number', + }, + ], + }, + }, + extractedProps: [ + { + propDef: { + name: 'label', + type: { + summary: 'unknown', + }, + description: 'a label string', + defaultValue: null, + }, + docgenInfo: { + name: 'label', + description: 'a label string', + }, + typeSystem: TypeSystem.UNKNOWN, + }, + { + propDef: { + name: 'count', + type: { + summary: 'unknown', + }, + description: 'a count number', + defaultValue: null, + }, + docgenInfo: { + name: 'count', + description: 'a count number', + }, + typeSystem: TypeSystem.UNKNOWN, + }, + ], + }, +} satisfies Record< + string, + { component: { __docgenInfo: VueDocgenInfo<'vue-docgen-api'> }; extractedProps: ExtractedProp[] } +>; From b2caeba335b61f76ea27b51680943f60b286054b Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 23:08:52 +0100 Subject: [PATCH 339/430] typescript fixes / workarounds --- code/addons/onboarding/src/App.tsx | 6 ++-- .../src/components/Button/Button.tsx | 2 +- .../components/Confetti/Confetti.stories.tsx | 2 +- .../src/components/Confetti/Confetti.tsx | 2 +- .../src/components/List/List.stories.tsx | 2 +- .../src/components/List/ListItem/ListItem.tsx | 2 +- .../src/components/Modal/Modal.stories.tsx | 8 ++--- .../onboarding/src/components/Modal/Modal.tsx | 4 +-- .../PulsatingEffect.stories.tsx | 2 +- .../PulsatingEffect/PulsatingEffect.tsx | 6 +++- .../SyntaxHighlighter/SyntaxHighlighter.tsx | 8 +---- .../src/features/GuidedTour/GuidedTour.tsx | 6 ++-- .../src/features/GuidedTour/Tooltip.tsx | 30 +++++++++++++++---- .../WriteStoriesModal.stories.tsx | 2 +- .../WriteStoriesModal/WriteStoriesModal.tsx | 8 +++-- .../src/helpers/textContentMatcher.tsx | 2 +- scripts/package.json | 2 +- scripts/yarn.lock | 18 +++++------ 18 files changed, 65 insertions(+), 47 deletions(-) diff --git a/code/addons/onboarding/src/App.tsx b/code/addons/onboarding/src/App.tsx index a8bdf855c57e..909038799b1c 100644 --- a/code/addons/onboarding/src/App.tsx +++ b/code/addons/onboarding/src/App.tsx @@ -27,7 +27,7 @@ export default function App({ api }: { api: API }) { const skipOnboarding = useCallback(() => { // remove onboarding query parameter from current url const url = new URL(window.location.href); - const path = decodeURIComponent(url.searchParams.get('path')); + const path = decodeURIComponent(url.searchParams.get('path') as any); url.search = `?path=${path}&onboarding=false`; history.replaceState({}, '', url.href); api.setQueryParams({ onboarding: 'false' }); @@ -121,7 +121,7 @@ export default function App({ api }: { api: API }) { onFirstTourDone={() => { setStep('3:WriteYourStory'); }} - codeSnippets={codeSnippets} + codeSnippets={codeSnippets as any} onLastTourDone={() => { try { api.selectStory('configure-your-project--docs'); @@ -139,7 +139,7 @@ export default function App({ api }: { api: API }) { {enabled && step === '3:WriteYourStory' && ( { try { diff --git a/code/addons/onboarding/src/components/Button/Button.tsx b/code/addons/onboarding/src/components/Button/Button.tsx index 442225ef4711..622359c4e31a 100644 --- a/code/addons/onboarding/src/components/Button/Button.tsx +++ b/code/addons/onboarding/src/components/Button/Button.tsx @@ -1,4 +1,4 @@ -import type { ComponentProps, FC } from 'react'; +import type { ComponentProps } from 'react'; import React, { forwardRef } from 'react'; import { styled } from '@storybook/theming'; diff --git a/code/addons/onboarding/src/components/Confetti/Confetti.stories.tsx b/code/addons/onboarding/src/components/Confetti/Confetti.stories.tsx index 6a06856d142d..80b01c7e31d8 100644 --- a/code/addons/onboarding/src/components/Confetti/Confetti.stories.tsx +++ b/code/addons/onboarding/src/components/Confetti/Confetti.stories.tsx @@ -45,7 +45,7 @@ export const OneTimeConfetti: Story = { recycle: false, tweenDuration: 20000, onConfettiComplete: (confetti) => { - confetti.reset(); + confetti?.reset(); }, }, }; diff --git a/code/addons/onboarding/src/components/Confetti/Confetti.tsx b/code/addons/onboarding/src/components/Confetti/Confetti.tsx index 371212ff7403..5f0658dc462b 100644 --- a/code/addons/onboarding/src/components/Confetti/Confetti.tsx +++ b/code/addons/onboarding/src/components/Confetti/Confetti.tsx @@ -76,7 +76,7 @@ function getRandomInt(min: number, max: number) { return Math.floor(Math.random() * (max - min)) + min; } -function draw(context: CanvasRenderingContext2D) { +function draw(this: any, context: CanvasRenderingContext2D) { this.shape = this.shape || getRandomInt(1, 6); switch (this.shape) { diff --git a/code/addons/onboarding/src/components/List/List.stories.tsx b/code/addons/onboarding/src/components/List/List.stories.tsx index eeac1614f256..380fd07ca4cc 100644 --- a/code/addons/onboarding/src/components/List/List.stories.tsx +++ b/code/addons/onboarding/src/components/List/List.stories.tsx @@ -37,7 +37,7 @@ export const Default: StoryObj = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByText('Complete'); await expect(canvas.getAllByLabelText('complete')).toHaveLength(1); diff --git a/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx b/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx index 38f56d499f3c..e8a9945c0bbe 100644 --- a/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx +++ b/code/addons/onboarding/src/components/List/ListItem/ListItem.tsx @@ -13,7 +13,7 @@ export const ListItem = ({ children, index, isCompleted }: ListItemProps) => { {isCompleted ? : index} diff --git a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx index 0adfcb514120..51d19c49b4f5 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx @@ -37,7 +37,7 @@ export const Default: Story = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByText('Open modal'); await userEvent.click(button); await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); @@ -67,7 +67,7 @@ export const FixedWidth: Story = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByText('Open modal'); await userEvent.click(button); await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); @@ -97,7 +97,7 @@ export const FixedHeight: Story = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByText('Open modal'); await userEvent.click(button); await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); @@ -128,7 +128,7 @@ export const FixedWidthAndHeight: Story = { ); }, play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByText('Open modal'); await userEvent.click(button); await expect(canvas.findByText('Hello world!')).resolves.toBeInTheDocument(); diff --git a/code/addons/onboarding/src/components/Modal/Modal.tsx b/code/addons/onboarding/src/components/Modal/Modal.tsx index 749a371ec5a8..4c8bd9bec66d 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.tsx @@ -35,8 +35,8 @@ export function Modal({ diff --git a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx index 266afc4cef5a..67b31843dc45 100644 --- a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx +++ b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx @@ -35,7 +35,7 @@ export const Default: Story = { ), play: async ({ canvasElement }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const button = canvas.getByRole('button'); await expect(button).toHaveStyle( 'animation: 3s ease-in-out 0s infinite normal none running pulsate' diff --git a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx index 5aad7252639e..23cb853d7856 100644 --- a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx +++ b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.tsx @@ -1,6 +1,10 @@ import { useEffect } from 'react'; -export function PulsatingEffect({ targetSelector }: { targetSelector: string }): JSX.Element { +export function PulsatingEffect({ + targetSelector, +}: { + targetSelector: string; +}): JSX.Element | null { useEffect(() => { const element = document.querySelector(targetSelector); diff --git a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx index c85bad9a257c..a1038465b926 100644 --- a/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx +++ b/code/addons/onboarding/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx @@ -1,11 +1,5 @@ import React, { createRef, useCallback, useLayoutEffect, useMemo, useState } from 'react'; -import { - Backdrop, - Code, - Container, - SnippetWrapper, - SnippetWrapperFirst, -} from './SyntaxHighlighter.styled'; +import { Backdrop, Code, Container, SnippetWrapperFirst } from './SyntaxHighlighter.styled'; import { Snippet } from './Snippet/Snippet'; import { ThemeProvider, ensure, themes } from '@storybook/theming'; import { SyntaxHighlighter as StorybookSyntaxHighlighter } from '@storybook/components'; diff --git a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx index 3fd3f58cec5b..4e228ae9e794 100644 --- a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx @@ -1,18 +1,18 @@ +import type { ComponentProps } from 'react'; import React, { useEffect, useMemo, useState } from 'react'; import type { CallBackProps } from 'react-joyride'; -import Joyride, { STATUS, Step } from 'react-joyride'; +import Joyride, { STATUS } from 'react-joyride'; import type { API } from '@storybook/manager-api'; import { UPDATE_STORY_ARGS } from '@storybook/core-events'; import { useTheme } from '@storybook/theming'; import { PulsatingEffect } from '../../components/PulsatingEffect/PulsatingEffect'; import { Confetti } from '../../components/Confetti/Confetti'; -import type { TooltipProps } from './Tooltip'; import { Tooltip } from './Tooltip'; import { SpanHighlight } from '../WriteStoriesModal/WriteStoriesModal.styled'; import type { CodeSnippets } from '../WriteStoriesModal/code/types'; -type GuidedTourStep = TooltipProps['step']; +type GuidedTourStep = ComponentProps['step']; export function GuidedTour({ api, diff --git a/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx b/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx index 9fcc32d06dee..c58fcbe1ad7f 100644 --- a/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/Tooltip.tsx @@ -1,3 +1,4 @@ +import type { FC } from 'react'; import React from 'react'; import { styled } from '@storybook/theming'; import type { Step, TooltipRenderProps } from 'react-joyride'; @@ -40,16 +41,33 @@ const TooltipFooter = styled.div` margin-top: 15px; `; -export type TooltipProps = { - step: Step & { - hideNextButton?: boolean; - onNextButtonClick?: () => void; - }; +type TooltipProps = { + step: Partial< + Pick< + // this only seems to happen during the check task, nos in vsCode.. + // this seems to be 'any' in vsCode because of it? + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore (hide property 'input' circularly references itself in mapped type) + Step, + | 'title' + | 'content' + | 'target' + | 'placement' + | 'disableOverlay' + | 'disableBeacon' + | 'floaterProps' + | 'spotlightClicks' + | 'styles' + > & { + hideNextButton: boolean; + onNextButtonClick: () => void; + } + >; primaryProps: TooltipRenderProps['primaryProps']; tooltipProps: TooltipRenderProps['tooltipProps']; }; -export const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => { +export const Tooltip: FC = ({ step, primaryProps, tooltipProps }) => { return ( diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index 6cd50dd77d77..cd229875b446 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -57,7 +57,7 @@ export const DefaultPlayed: Story = { ...Default.args, }, play: async ({ canvasElement, step }) => { - const canvas = within(canvasElement.parentElement); + const canvas = within(canvasElement.parentElement!); const importsText = await canvas.findByText('Imports'); await step('Wait for modal to be visible', async () => { const modal = await canvas.findByRole('dialog'); diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 0697d4cb93e8..1601fc2ecde4 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -245,12 +245,14 @@ export const WriteStoriesModal: FC = ({

    Copy the Warning story. - + Open the Button story in your current working directory. @@ -261,7 +263,7 @@ export const WriteStoriesModal: FC = ({ )} - + Paste it at the bottom of the file and save. diff --git a/code/addons/onboarding/src/helpers/textContentMatcher.tsx b/code/addons/onboarding/src/helpers/textContentMatcher.tsx index 46865bb3e6e9..c1f6dcc6e0c6 100644 --- a/code/addons/onboarding/src/helpers/textContentMatcher.tsx +++ b/code/addons/onboarding/src/helpers/textContentMatcher.tsx @@ -14,7 +14,7 @@ export function textContentMatcher(textMatch: string | RegExp) { const hasText = typeof textMatch === 'string' ? (node: Element) => node.textContent === textMatch - : (node: Element) => textMatch.test(node.textContent); + : (node: Element) => textMatch.test(node.textContent!); const matcher = (_content: string, node: Element) => { if (!hasText(node)) { diff --git a/scripts/package.json b/scripts/package.json index 01818aa20d40..52d2013ec288 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -176,7 +176,7 @@ "ts-dedent": "^2.0.0", "tsup": "^6.7.0", "type-fest": "~2.19", - "typescript": "~5.2.2", + "typescript": "^5.3.2", "util": "^0.12.4", "uuid": "^9.0.0", "vitest": "^1.2.2", diff --git a/scripts/yarn.lock b/scripts/yarn.lock index 180d2bf8f179..625a8978d952 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -2837,7 +2837,7 @@ __metadata: ts-loader: "npm:^9.4.2" tsup: "npm:^6.7.0" type-fest: "npm:~2.19" - typescript: "npm:~5.2.2" + typescript: "npm:^5.3.2" util: "npm:^0.12.4" uuid: "npm:^9.0.0" verdaccio: "npm:^5.19.1" @@ -14989,23 +14989,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~5.2.2": - version: 5.2.2 - resolution: "typescript@npm:5.2.2" +"typescript@npm:^5.3.2": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 91ae3e6193d0ddb8656d4c418a033f0f75dec5e077ebbc2bd6d76439b93f35683936ee1bdc0e9cf94ec76863aa49f27159b5788219b50e1cd0cd6d110aa34b07 + checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~5.2.2#optional!builtin": - version: 5.2.2 - resolution: "typescript@patch:typescript@npm%3A5.2.2#optional!builtin::version=5.2.2&hash=f3b441" +"typescript@patch:typescript@npm%3A^5.3.2#optional!builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 062c1cee1990e6b9419ce8a55162b8dc917eb87f807e4de0327dbc1c2fa4e5f61bc0dd4e034d38ff541d1ed0479b53bcee8e4de3a4075c51a1724eb6216cb6f5 + checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 languageName: node linkType: hard From a1af0bcf89f7e4d2095caea9831240c80c2740c7 Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Fri, 23 Feb 2024 22:26:14 +0000 Subject: [PATCH 340/430] Docs: Fix Visual tests --- docs/writing-tests/visual-testing.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/writing-tests/visual-testing.md b/docs/writing-tests/visual-testing.md index 5c37a8d3614f..1ade3cdbcf34 100644 --- a/docs/writing-tests/visual-testing.md +++ b/docs/writing-tests/visual-testing.md @@ -50,17 +50,17 @@ Select a project from your project list to finish setup. If you're setting up th ### Configure -The addon includes configuration options covering most use cases by default. You can also fine-tune theΒ addon configurationΒ to match your project's requirements via the [`./chromatic.config.json`](https://www.chromatic.com/docs/cli#configuration) file. Below are the available options and examples of how to use them. +The addon includes configuration options covering most use cases by default. You can also fine-tune theΒ addon configurationΒ to match your project's requirements via the [`./chromatic.config.json`](https://www.chromatic.com/docs/visual-tests-addon/#configure) file. Below are the available options and examples of how to use them. -| Option | Description | -| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| `projectId` | Automatically configured. Sets the value for the project identifier
    `options: { projectId: 'Project:64cbcde96f99841e8b007d75' }` | -| `buildScriptName` | Optional. Defines the custom Storybook build script
    `options: { buildScriptName: 'deploy-storybook' }` | -| `debug` | Optional. Output verbose debugging information to the console.
    `options: { debug: true }` | -| `zip` | Optional. Recommended for large projects. Configures the addon to deploy your Storybook to Chromatic as a zip file.
    `options: { zip: true }` | +| Option | Description | +| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| `projectId` | Automatically configured. Sets the value for the project identifier
    `"projectId": "Project:64cbcde96f99841e8b007d75"` | +| `buildScriptName` | Optional. Defines the custom Storybook build script
    `"buildScriptName": "deploy-storybook"` | +| `debug` | Optional. Output verbose debugging information to the console.
    `"debug": true` | +| `zip` | Optional. Recommended for large projects. Configures the addon to deploy your Storybook to Chromatic as a zip file.
    `"zip": true` | ```jsonc -// .storybook/chromatic.config.json +// ./chromatic.config.json { "buildScriptName": "deploy-storybook", "debug": true, From 50c3157132309b2502f2c883e53d8b972d87dc65 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 23:34:05 +0100 Subject: [PATCH 341/430] cleanup --- code/addons/onboarding/package.json | 7 - .../onboarding/src/stories/Configure.mdx | 360 ------------------ code/yarn.lock | 7 - scripts/yarn.lock | 33 +- 4 files changed, 3 insertions(+), 404 deletions(-) delete mode 100644 code/addons/onboarding/src/stories/Configure.mdx diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 0e396d88f6a4..919a8e4792f8 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -47,19 +47,12 @@ }, "devDependencies": { "@radix-ui/react-dialog": "^1.0.5", - "@storybook/addon-essentials": "workspace:*", - "@storybook/addon-interactions": "workspace:*", - "@storybook/addon-links": "workspace:*", - "@storybook/blocks": "workspace:*", "@storybook/channels": "workspace:*", "@storybook/components": "workspace:*", "@storybook/core-events": "workspace:*", "@storybook/icons": "^1.2.5", - "@storybook/manager": "workspace:*", "@storybook/manager-api": "workspace:*", - "@storybook/preview": "workspace:*", "@storybook/react": "workspace:*", - "@storybook/react-vite": "workspace:*", "@storybook/telemetry": "workspace:*", "@storybook/test": "workspace:*", "@storybook/testing-library": "next", diff --git a/code/addons/onboarding/src/stories/Configure.mdx b/code/addons/onboarding/src/stories/Configure.mdx deleted file mode 100644 index 031405d2ea02..000000000000 --- a/code/addons/onboarding/src/stories/Configure.mdx +++ /dev/null @@ -1,360 +0,0 @@ -import { Meta } from "@storybook/blocks"; - -import Github from "./assets/github.svg"; -import Discord from "./assets/discord.svg"; -import Youtube from "./assets/youtube.svg"; -import Tutorials from "./assets/tutorials.svg"; -import Chevron from './assets/chevron.svg'; -import Styling from "./assets/styling.png"; -import Context from "./assets/context.png"; -import Assets from "./assets/assets.png"; -import Docs from "./assets/docs.png"; -import Share from "./assets/share.png"; -import FigmaPlugin from "./assets/figma-plugin.png"; -import Testing from "./assets/testing.png"; -import Accessibility from "./assets/accessibility.png"; -import Theming from "./assets/theming.png"; -import AddonLibrary from "./assets/addon-library.png"; - - - -
    -
    -
    - # Do more with Storybook - - Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. -
    - -
    -
    -
    - A screenshot showing the autodocs tag being set, pointing a docs page being generated -

    Autodocs

    -

    Auto-generate living, - interactive reference documentation from your components and stories.

    - Learn more -
    -
    - A browser window showing a Storybook being published to a chromatic.com URL -

    Publish to Chromatic

    -

    Publish your Storybook to review and collaborate with your entire team.

    - Learn more -
    -
    - Windows showing the Storybook plugin in Figma -

    Figma Plugin

    -

    Embed your stories into Figma to cross-reference the design and live - implementation in one place.

    - Learn more -
    -
    - Screenshot of tests passing and failing -

    Testing

    -

    Use stories to test a component in all its variations, no matter how - complex.

    - Learn more -
    -
    - Screenshot of accessibility tests passing and failing -

    Accessibility

    -

    Automatically test your components for a11y issues as you develop.

    - Learn more -
    -
    - Screenshot of Storybook in light and dark mode -

    Theming

    -

    Theme Storybook's UI to personalize it to your project.

    - Learn more -
    -
    -
    -
    -
    -
    -

    Addons

    -

    Integrate your tools with Storybook to connect workflows.

    - Discover all addons -
    -
    - Integrate your tools with Storybook to connect workflows. -
    -
    - -
    -
    - Github logo - Join our contributors building the future of UI development. - - Star on GitHub -
    -
    - Discord logo -
    - Get support and chat with frontend developers. - - Join Discord server -
    -
    -
    - Youtube logo -
    - Watch tutorials, feature previews and interviews. - - Watch on YouTube -
    -
    -
    - A book -

    Follow guided walkthroughs on for key workflows.

    - - Discover tutorials -
    -
    - - diff --git a/code/yarn.lock b/code/yarn.lock index 1f56a7b54219..429270332cdd 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5208,19 +5208,12 @@ __metadata: resolution: "@storybook/addon-onboarding@workspace:addons/onboarding" dependencies: "@radix-ui/react-dialog": "npm:^1.0.5" - "@storybook/addon-essentials": "workspace:*" - "@storybook/addon-interactions": "workspace:*" - "@storybook/addon-links": "workspace:*" - "@storybook/blocks": "workspace:*" "@storybook/channels": "workspace:*" "@storybook/components": "workspace:*" "@storybook/core-events": "workspace:*" "@storybook/icons": "npm:^1.2.5" - "@storybook/manager": "workspace:*" "@storybook/manager-api": "workspace:*" - "@storybook/preview": "workspace:*" "@storybook/react": "workspace:*" - "@storybook/react-vite": "workspace:*" "@storybook/telemetry": "workspace:*" "@storybook/test": "workspace:*" "@storybook/testing-library": "npm:next" diff --git a/scripts/yarn.lock b/scripts/yarn.lock index 625a8978d952..fd8ab47be372 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -361,16 +361,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.4, @babel/parser@npm:^7.7.0": - version: 7.23.5 - resolution: "@babel/parser@npm:7.23.5" - bin: - parser: ./bin/babel-parser.js - checksum: 3356aa90d7bafb4e2c7310e7c2c3d443c4be4db74913f088d3d577a1eb914ea4188e05fd50a47ce907a27b755c4400c4e3cbeee73dbeb37761f6ca85954f5a20 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.23.6": +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.4, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.7.0": version: 7.23.9 resolution: "@babel/parser@npm:7.23.9" bin: @@ -1481,18 +1472,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": - version: 7.23.5 - resolution: "@babel/types@npm:7.23.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 7dd5e2f59828ed046ad0b06b039df2524a8b728d204affb4fc08da2502b9dd3140b1356b5166515d229dc811539a8b70dcd4bc507e06d62a89f4091a38d0b0fb - languageName: node - linkType: hard - -"@babel/types@npm:^7.23.6": +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": version: 7.23.9 resolution: "@babel/types@npm:7.23.9" dependencies: @@ -3051,14 +3031,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*": - version: 1.0.4 - resolution: "@types/estree@npm:1.0.4" - checksum: de2abd990fb9b36583ab25d6a5898938eac076cf3e47f11ffc8cf9e3fdca1245807e0f166b6bf0924c7dab0676cc314ca8f749679ee5ea8a45771466ded25dd1 - languageName: node - linkType: hard - -"@types/estree@npm:^1.0.0": +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d From 390888239bc6aa99b0d646ad9c5066b7c3e8368c Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Fri, 23 Feb 2024 23:34:27 +0100 Subject: [PATCH 342/430] fix slot type separator --- .../vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap | 4 ++-- code/renderers/vue3/src/docs/extractArgTypes.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap index 6df158abb06c..aa8863e3c1c6 100644 --- a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap +++ b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap @@ -490,13 +490,13 @@ exports[`extractArgTypes (vue-docgen-api) > should extract slots for component 1 "defaultValue": null, "jsDocTags": undefined, "type": { - "summary": "{ num: unknown, str: unknown }", + "summary": "{ num: unknown; str: unknown }", }, }, "type": { "name": "other", "required": false, - "value": "{ num: unknown, str: unknown }", + "value": "{ num: unknown; str: unknown }", }, }, } diff --git a/code/renderers/vue3/src/docs/extractArgTypes.ts b/code/renderers/vue3/src/docs/extractArgTypes.ts index a5e8d516dfb1..3522ee7915a4 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.ts @@ -81,7 +81,7 @@ export const extractFromVueDocgenApi = ( .map((binding) => { return `${binding.name}: ${binding.type?.name ?? 'unknown'}`; }) - .join(', '); + .join('; '); type = slotParams ? `{ ${slotParams} }` : undefined; sbType = { name: 'other', value: type ?? '', required: false }; From 25ee02dec5b123a627a54130d836f717ae5ac0f2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 23 Feb 2024 23:40:29 +0100 Subject: [PATCH 343/430] remove stories that are unused --- .../onboarding/src/stories/Button.stories.ts | 49 ------------ code/addons/onboarding/src/stories/Button.tsx | 48 ------------ .../onboarding/src/stories/Header.stories.ts | 24 ------ code/addons/onboarding/src/stories/Header.tsx | 56 -------------- .../onboarding/src/stories/Page.stories.ts | 29 ------- code/addons/onboarding/src/stories/Page.tsx | 73 ------------------ .../src/stories/assets/accessibility.png | Bin 42336 -> 0 bytes .../src/stories/assets/addon-library.png | Bin 467366 -> 0 bytes .../onboarding/src/stories/assets/assets.png | Bin 3899 -> 0 bytes .../onboarding/src/stories/assets/chevron.svg | 8 -- .../onboarding/src/stories/assets/context.png | Bin 6119 -> 0 bytes .../onboarding/src/stories/assets/discord.svg | 15 ---- .../onboarding/src/stories/assets/docs.png | Bin 27875 -> 0 bytes .../src/stories/assets/figma-plugin.png | Bin 44246 -> 0 bytes .../onboarding/src/stories/assets/github.svg | 3 - .../onboarding/src/stories/assets/share.png | Bin 40767 -> 0 bytes .../onboarding/src/stories/assets/styling.png | Bin 7237 -> 0 bytes .../onboarding/src/stories/assets/testing.png | Bin 49313 -> 0 bytes .../onboarding/src/stories/assets/theming.png | Bin 44374 -> 0 bytes .../src/stories/assets/tutorials.svg | 12 --- .../onboarding/src/stories/assets/youtube.svg | 4 - code/addons/onboarding/src/stories/button.css | 30 ------- code/addons/onboarding/src/stories/header.css | 32 -------- code/addons/onboarding/src/stories/page.css | 69 ----------------- 24 files changed, 452 deletions(-) delete mode 100644 code/addons/onboarding/src/stories/Button.stories.ts delete mode 100644 code/addons/onboarding/src/stories/Button.tsx delete mode 100644 code/addons/onboarding/src/stories/Header.stories.ts delete mode 100644 code/addons/onboarding/src/stories/Header.tsx delete mode 100644 code/addons/onboarding/src/stories/Page.stories.ts delete mode 100644 code/addons/onboarding/src/stories/Page.tsx delete mode 100644 code/addons/onboarding/src/stories/assets/accessibility.png delete mode 100644 code/addons/onboarding/src/stories/assets/addon-library.png delete mode 100644 code/addons/onboarding/src/stories/assets/assets.png delete mode 100644 code/addons/onboarding/src/stories/assets/chevron.svg delete mode 100644 code/addons/onboarding/src/stories/assets/context.png delete mode 100644 code/addons/onboarding/src/stories/assets/discord.svg delete mode 100644 code/addons/onboarding/src/stories/assets/docs.png delete mode 100644 code/addons/onboarding/src/stories/assets/figma-plugin.png delete mode 100644 code/addons/onboarding/src/stories/assets/github.svg delete mode 100644 code/addons/onboarding/src/stories/assets/share.png delete mode 100644 code/addons/onboarding/src/stories/assets/styling.png delete mode 100644 code/addons/onboarding/src/stories/assets/testing.png delete mode 100644 code/addons/onboarding/src/stories/assets/theming.png delete mode 100644 code/addons/onboarding/src/stories/assets/tutorials.svg delete mode 100644 code/addons/onboarding/src/stories/assets/youtube.svg delete mode 100644 code/addons/onboarding/src/stories/button.css delete mode 100644 code/addons/onboarding/src/stories/header.css delete mode 100644 code/addons/onboarding/src/stories/page.css diff --git a/code/addons/onboarding/src/stories/Button.stories.ts b/code/addons/onboarding/src/stories/Button.stories.ts deleted file mode 100644 index b064ba3f0f41..000000000000 --- a/code/addons/onboarding/src/stories/Button.stories.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; - -import { Button } from './Button'; - -// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export -const meta: Meta = { - title: 'Example/Button', - component: Button, - // More on argTypes: https://storybook.js.org/docs/react/api/argtypes - argTypes: { - backgroundColor: { control: 'color' }, - }, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], -}; - -export default meta; -type Story = StoryObj; - -// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args -export const Primary: Story = { - // More on args: https://storybook.js.org/docs/react/writing-stories/args - args: { - primary: true, - label: 'Button', - }, -}; - -export const Secondary: Story = { - args: { - label: 'Button', - }, -}; - -export const Large: Story = { - args: { - size: 'large', - label: 'Button', - }, -}; - -export const Small: Story = { - args: { - size: 'small', - label: 'Button', - }, -}; diff --git a/code/addons/onboarding/src/stories/Button.tsx b/code/addons/onboarding/src/stories/Button.tsx deleted file mode 100644 index c33be6ec52c4..000000000000 --- a/code/addons/onboarding/src/stories/Button.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import './button.css'; - -interface ButtonProps { - /** - * Is this the principal call to action on the page? - */ - primary?: boolean; - /** - * What background color to use - */ - backgroundColor?: string; - /** - * How large should the button be? - */ - size?: 'small' | 'medium' | 'large'; - /** - * Button contents - */ - label: string; - /** - * Optional click handler - */ - onClick?: () => void; -} - -/** - * Primary UI component for user interaction - */ -export const Button = ({ - primary = false, - size = 'medium', - backgroundColor, - label, - ...props -}: ButtonProps) => { - const mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary'; - return ( - - ); -}; diff --git a/code/addons/onboarding/src/stories/Header.stories.ts b/code/addons/onboarding/src/stories/Header.stories.ts deleted file mode 100644 index c49a9b7a4e01..000000000000 --- a/code/addons/onboarding/src/stories/Header.stories.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { Header } from './Header'; - -const meta: Meta = { - title: 'Example/Header', - component: Header, - parameters: { - // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout - layout: 'fullscreen', - }, -}; - -export default meta; -type Story = StoryObj; - -export const LoggedIn: Story = { - args: { - user: { - name: 'Jane Doe', - }, - }, -}; - -export const LoggedOut: Story = {}; diff --git a/code/addons/onboarding/src/stories/Header.tsx b/code/addons/onboarding/src/stories/Header.tsx deleted file mode 100644 index dc3f3c19c31a..000000000000 --- a/code/addons/onboarding/src/stories/Header.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; - -import { Button } from './Button'; -import './header.css'; - -type User = { - name: string; -}; - -interface HeaderProps { - user?: User; - onLogin: () => void; - onLogout: () => void; - onCreateAccount: () => void; -} - -export const Header = ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => ( -
    -
    -
    - - - - - - - -

    Acme

    -
    -
    - {user ? ( - <> - - Welcome, {user.name}! - -
    -
    -
    -); diff --git a/code/addons/onboarding/src/stories/Page.stories.ts b/code/addons/onboarding/src/stories/Page.stories.ts deleted file mode 100644 index 52c4cb406233..000000000000 --- a/code/addons/onboarding/src/stories/Page.stories.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { within, userEvent } from '@storybook/testing-library'; - -import { Page } from './Page'; - -const meta: Meta = { - title: 'Example/Page', - component: Page, - parameters: { - // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout - layout: 'fullscreen', - }, -}; - -export default meta; -type Story = StoryObj; - -export const LoggedOut: Story = {}; - -// More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing -export const LoggedIn: Story = { - play: async ({ canvasElement }) => { - const canvas = within(canvasElement); - const loginButton = await canvas.getByRole('button', { - name: /Log in/i, - }); - await userEvent.click(loginButton); - }, -}; diff --git a/code/addons/onboarding/src/stories/Page.tsx b/code/addons/onboarding/src/stories/Page.tsx deleted file mode 100644 index 885f2b41f1ee..000000000000 --- a/code/addons/onboarding/src/stories/Page.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; - -import { Header } from './Header'; -import './page.css'; - -type User = { - name: string; -}; - -export const Page: React.FC = () => { - const [user, setUser] = React.useState(); - - return ( -
    -
    setUser({ name: 'Jane Doe' })} - onLogout={() => setUser(undefined)} - onCreateAccount={() => setUser({ name: 'Jane Doe' })} - /> - -
    -

    Pages in Storybook

    -

    - We recommend building UIs with a{' '} - - component-driven - {' '} - process starting with atomic components and ending with pages. -

    -

    - Render pages with mock data. This makes it easy to build and review page states without - needing to navigate to them in your app. Here are some handy patterns for managing page - data in Storybook: -

    -
      -
    • - Use a higher-level connected component. Storybook helps you compose such data from the - "args" of child component stories -
    • -
    • - Assemble data in the page component from your services. You can mock these services out - using Storybook. -
    • -
    -

    - Get a guided tutorial on component-driven development at{' '} - - Storybook tutorials - - . Read more in the{' '} - - docs - - . -

    -
    - Tip Adjust the width of the canvas with the{' '} - - - - - - Viewports addon in the toolbar -
    -
    -
    - ); -}; diff --git a/code/addons/onboarding/src/stories/assets/accessibility.png b/code/addons/onboarding/src/stories/assets/accessibility.png deleted file mode 100644 index 6ffe6feabdc17f715771b69fd7f33ec2c57e7c30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42336 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

    V}AC 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 diff --git a/code/addons/onboarding/src/stories/assets/addon-library.png b/code/addons/onboarding/src/stories/assets/addon-library.png deleted file mode 100644 index 95deb38a88de416671e20ebc28dcd397d6910331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467366 zcmY(pWmp?s)HMtgDJ}^PEgqy$oZ#*dBv8CiifeEvP~4?JC>q?oSkYp^OL2<3Lvbip z;NyOt_p|vk*U33ES$mze_MYralqN(GABPGD1qB6PSxHVC1%(8Lf`UEw^2PHf)^0V7 zC@3#bG}UzEpNErsw;Q#}zkk#YE&j33oH^|^Lk{&lH4%PQ3E|}vx9E_dW8&V(%VcAh zni!trNf;+20xph?pJd2@zAXQq+knq5-F5T56V8ko&mNSJG5*<3P`N#3S3X_%^n5(u zAH<=%bo97)^FTpCfnIh%&%iKW^K{v+{8)`bM$O3_`t;N(#`(&ZgM;Hue48Al^7Wj~ zPa$yNTs}Zh@=4HP%p&7y3^iRwLsV3BIN?b*T~Td&Z}V7EY3XGkDGpM+j`s{dV0K@;FN>bu025@kbl~*-ww1qejk0yBOozi z`gcU@K^pUEdgCdrwS4aDG6whK1UC}ptwZ1A=½zy!j8k^D_+Xmby+9Nl|wWphp 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

      wyQuQbqeDC?b4FVon9>0iW}N&#hIJCuHi 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

      dk-)duz~D_SQhJOz!_4iA-bxFdQMD2V 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%0D8UB5C69Q~b=MLW-x{a!p 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


      61#osMoUDN;g&I5i2>jx!~^YnweY`Mk-ISn1mks z@SlV+=3Do~xG!Kpi3Ln7tXAT?=j=RgK!O87w?&}p$@C3P^3=P@e zpz5DWIix*2^f70U)F(8sh>m0ta^p;fC4EogkR-lBquY>4@9U@ci#*s`kHkyLndC>J zk#Cv!xIndw&K}H$C$=7#CLrq0&m-En0HQ=6k1Z4Mht>7 zEZMNxysR1rNwm=WfIjzMV*;qnEL6mH@!vh? zPUUQ!F_ZzeI|}#C{bY?AX>4xBZvqfn*v5iGe|hvDm}8ALa~RPriheXp57X|aaolR1 zW>6v=_vc)2`Jh64?@Yt@v=382YPlQ}$Jl}nJU164nvt)ge+-V<4gU{^Bs)s2r9zPW zr?2<_nfPh4J{TxcWU40JR=sPUdHyc&=A0HIy5hPDfzda81hM%kiq~0KCi};L zkF@6xHVV+fOyv*X7h(o#*js;^yXX6DlYBxPEhI+m_D2CU?~(YV#_)E;B%gPhRcRo> z7MS7yO)uP{`1yPhvnE&55T;s*GTQu{8PQgDDt0ZBegl#~zw9CAjmdR5CNeJN1@v{9 zb|$6&&o5cnxwzuKsBZTR5hGDK+E>n88@`LZiE@gn-Z*@n$B5W|#fY8~aw9ZI!J&Yb z_$R#0I)Ir5|L%|Kw?;VUKOhS6cXwy)E=-B(qGqDYmBQQdc5F5Tt(BxmFKoO!t{3=Z+opf2PY(ol0E>x(jfl2tIzbA9K5kjfC{CnqBm2 zyA|`#Feh{^_c$xj-vM-K4R4`KxV+B364&k(WTfjoW9^xJVpttty=M}r%D;Evk2`e~ z>}|ofneoBTQ*jE-dVjHDxbh1g#c?=0`S)R)e@I(SDU@Ok25SOY(Lsn_ghsdEUQvL) zp9`_dFNW^dmqX@?{Z`Jrkp=uGdErXmW z7%u{I*Da^t!%3YbQ$x4+%2zBk@srY|eFxPAdbvdbF-K1w$sBC9wyk}@iV9c09(IFU5@fx~>n)v*j;Q)H8}ZCkouo4{0wdJlb_=0I(aan%(V zn^;FFOSY+Q-UaXC95rpa?#cX%0;?P!jhD~kNwc3(X>RGWa(ordEro^lf4&YU2b9xB zaDcoqH1owL&ILnvefkTF^`IaLs7axVIG#rn`GsTJ^W@XTNoR3}Wd^mjHUZP~^*_*s zW8;XsRI6`1PDx|>h6E!oeKxS-s*0R6@EUK7nC#c;GvGg#*8RHwcuQ!s;rH=zDZI7S z;Ng?GGuQO_HPPnpm;}wPCuypn?{QFX*M|%)@RRvb0Kp*w+Xb@&-n>Qe>?WT62G=KE zfoRQHZV#xE=jrzCHdLFo!LK^VIpIy(Ab_DU41H^R9F{ioGN^zHl#1EvAxeG_bB2!H zkW_3S;!Cjva)Hn9YM&9bq&F#1?c9+^?`_UcV6Ra>jbo^{C{CEX`LS^P2bWjd%#Oi_ zD8$5$uPR~k@nd;XpD_D32lb18px_>f8q`Dw8=*cVK*9nn|NCm-X;$BtyTP?v7eZsR zx~nY(FJ@_s1~I^AEZ06yGdMN6=`2bN$Bs1t9j%57G*OJ z2kJ=E(|h<^zNm<@ahZN!RXy7!P#TIT$*e}ht|FSLWMBc-G^DT~!o=lFjBou56olqv zg!3`gl=cQJ*UolJ*qMJ<95gD6!rh~jP8ykS$rJPDVFm#$fP3TH3UX8bnM2pN)3_sP zwUc+Uf&Us^xaUHvibPWvxuLo^NpBDcF&V#VlFPg;6mc*3LkHijG zRC+#2$gOEhp(;u4Z}3WVdMC=f2N97WgqSEmq5+8>PFNPUKMJR0xB`mu0ILKyiY*Cf zDW#(QY3W@Dh4N*+!N(?CX^La&aFgd!L zto*3NJnv7%ZOi(uO^J(m??Mu!%C=O7GMB1Defq(fhc`gjYwafSUKW8qHLFp$AP7P@_z z+r3d|cy{Kas{W&%A!`=_S%~Rez;ZN>)FPaBI;q?(6Rsu?{*ap;Y-;+_c6DU>t7_)O zfoPa?-+UiO+EofB`-fd-P2R(@P|p{}PSjzKa}4R5_ca+djZM(Jdb!H*vxAdMouOdj zibP`Bqa1$EQ6EO9FHsR~7rTe)(7K{=+R_A(0A&?ZHZX`rY^3&@q0!{b$hy%c=RI@1 zgIl|j8KKYn1jaV6mhC1ZutfD%t$9( zPnS8jM_dQ0u9TfHxqX88>Ga8TC3QHY~ExWl|Ns^EupH1X(eV zd$~>dg?Ze1HL5L(wDP^NP^Q-XhYbTd{jVnexa+}RcRsJBvPUkwyV2?Oljea4>OiY> zzQTz4*9Q4!LmhTc3CFouZ70$FZ+&biJD^e4db@VZHQo1qEHK^oa6Ybg@NIR{_*aP; z>!~YI)phUP2@Sgaeau18y~2bGCaT=sjmo~hl!n3&NXPn9f(puCP|dEn<4j;b1_*5>}|2_rv%X`Ng- zIWg$CB|X^Cw%G8kb%8x^-&p9i>d`}bxGO>A?|k~D1- z@ZpGgpGYqS5TWKH3dsR1&grKqD}IV!bo=K9r*y;^r^ zS1pWz9h~Q3&(OEy*&4=p4ozqN~4YEi~#+Sh+?`>_R1*0935hgb*@VY zIL}@x)FbhJ;IfH(f{Yr}L(GoCd3ajUi8a=FG*5HT!rK;H?!h088z+qqVkJkn|H_=+*}LY%IhoY`0X|*iL5;GYr{ZAAMDV#3ScR!NkK6 zu2TUpIts=Or8nHftVvjun_rra#&IQ7Hn^^wGej(q{8j@Km!pg5k=CgAm-Q0RsdfJU zpS|C&p6tc{OGdc#GCQCBU}@kWOs-U_3f#XewOJ0|^L&SJiM8J|P&5N6Nbu2ZCn@#nF-ra=j{J9<(m9aa4QbzliKeuB@nn{xPQp$d z&U)dYECtwNpQR;|{hn@_>JwEzCJ~kMLT&wl0#iOAc=j0)efW5|zBQ-KDR_kw#C>>B znYJCidWw%t6Kww(%!;PyAzuBP5U!`#1`kZ*7s1yLIR?(aJbX<^o{j}jox1|Pl(jY? z9Cw-7(ZZj6-D?LjYszJiTKS~VV=0=%1x;7hxCiml+PwdNj9$O9px~A;8HKw^EC2Xz zP;8Gns7??sxI2K<_ZzD*;G7~j@WPfK@!sVGDJ4aqCS~daJN!~!Ob5gA8(rB2Mzkmi zaF{ETRSoHImu6zz%-wNo_omph%QqTTuQj!?j{MF>#b~0a`R}ngsoNRHx<4RC8`8mZ zsz@71$9oKHsK~q=T$V~TOJ%gd&cbg)8mqY}!3MT}(39Db1|m26dL6V?!FT?&lm_GI}Pro50(E}*wN~3bc=ERydly(S{nT=0QdH3T+Hwq(R&5SSU(VpEx z6{Hu>qD>z@dM$SrHxswZbU(Meuv}(|TbbKiTX*5Ie0Ib~?-1;m@$92(`LP|SVF^g2 z?-|DoLbH9L;;oc0lh=)2E`ImR%(#svc&85fJexL z!A2l=-LH@kRVF(-BkWwhSh?S(GVX^rWtBurVq?=&3^O)Js7pX`I2}P0OqH|_NMXmdsT%hpC zZb;zOr=z>uyCYw6=YH5*(-3{P)>aZFBiPx+LkNIfB69;ZO%3|_gP#$zI;P%>0nlQJ4P z_#%qH@GBwV7$tDA0)q<2IeCXEC&n~92P8Vjl6g}n{K!BNFVa7jCWCV*ON^=vL(xS|c8d;eC#kpn&K4o!&FsMQ1TK2ESoNZT2Ect42qG zm(D`5W{Wu?ng=GaM5^YWrEMAIX(8V%Q!MI>+eio{Xz|C^RYjE26A!z6iG}gGELi9E zU_lD>iQ(qu2ZYa|wqzh$X;x8AZ*s!cL>BMKQ^o?%RIaV1x4JdcH<4ALplKurydgss zw@Db#jBT?ej4ltp?2Q~K?I%tzv;DS@L^d(UQgG1Y7%lS(gfdg7F0dv`jF8Ujgzpnd zq8;Ysm?E54`Jv4(b2S!O>q&`U4lapp zbNlpU1wkVwn<$xDD|dzh|;514(lZr zd3Xf@nsnLdjbRpeT*i3SXv*Y|i$%j>?qLya=P!eiTP5yzojMWlyAmO}qbd!9$mW#c17m~! zG_YYM(9MoI%N;p|d2hqx_`&J0yz5X#rP{ujFafnhSXdjt35{b(b+FpfPwl-!J=tt8 z)^(;9MavMaUN;z+|5|hw@3KXgLk3m3SmONt{m{7&-~7&AY8RX+teh%@`T)ARcoJAx zC;VN!QQ}*_U02;LG6?S&v071G-n!X*5FcT3gB|eCUmKjdEtdQpy;M|D=_>a{E*z(F zxP)TUH+WN+uF;ypN$3+M%;JtoK*Q78v^DB9cPUV_?A8Q2&m6Q$H$jo7RPTxM?E4mj zbE5o`S{s%#T4I2s`j*yc!7MHKe00TLa6-;)%|5;=iaj=6RTCKx3&7RCPFX{xjgkEd zcNsA$a46X``l~JV9E*`bsRcFMl;)4W7A#X96XcH(X|ddtv5Zl=C=RUNfJmBpjv&%p z^HgExSSix12GLu8BJ1#vSBrnPNom3)V(}@@zHnnMw}2XI=~sE^jaXb_!mfNqgV`^y z*IjJ9*FNsnmop?Ui64Z1bf#f|2IFVM-3%t*OK1kX_NrI~AaRoVYv3(9?WzsYGGyq* zBi&fsrG;8G+Zd?YNy&FDDDvlvFPF{mw}z%DX{u(CT5#|AQ7d;W5hnb(DVg``-o-OYbemj0hmAez;U0 zs0|aAAx85&@DP`*d{fNx_2o+Ld0>hb`&rugIAS1#XU-6u3?8F^Z=7=-@4Q0Rxw)ri{=ORD*AH1?o1#2;sP;g~y%QaC4*f z2TdLo=&#h*aD3sQh<9YRckkJoF%1gz{r?OwN5h;e^Sqwpmv&LtH(|KDmo$?2K)8e8 zUFWj7#O#SY>PLzMuU&lhp|a~O&wMQkG%^`$;4dw)qObod=Lg-vxm0!3?6p0^%_v?wI>qcj&h#a zU8rEc2-xD#kg0GCB21s#+kWl%!lLXN&mWI+@q*oM9?Hv3-T8$oBoVg9FNOt1?rGBD1Z~cgdq@LZw=YiFG zEkru#(+aH*HOT7zRs3(blMpI`Js}-#GI8`-7^0vB{qI^~=I~R?yRSm-e)bRQh~iF) zM!LN2&^W(Iat4$yzB0if!O-{0@M!5G+F71#Z%Xhjpo?$d!4hBi#h2TXylbbwtd8Zv zeS!H5_eirWo@>K4k>g?AX*OD<>uea}t%~$Ce)1a1rox3{VyJ@gL*1tf8!$d_B**-U zw|!9#=nuSLVZYsfBz$dHjM#rG-uLQH0?Cl#EH^8T_h^cXA+*k)6ZRL2EF6GnfB)mH z>k!+OzcLhXk|`)D-&JDmqHX4(F(Do4^S>wpEjhb0n$gGM+wR%{3x^%^zusUaW-DH# zN-Na&zv0yt@T@rLVSW#O#gY^vAa}6_oLGY<3z0WXEVP|1pSXcM!?T6N@$|!sSMZ{r!~=zg?z1m$#^s9Tdqu!RG!0noCe~?1H_1*Niqa0)cQbVG zlT^SLuX7mx3U;{{6ZaIaXg}r#os5K_&k?}yGbNH0PQ^RS***PxSL~+vwCiA1jFqHM z3RdFwe;$WpN90*`X^Q-Lm!CE_@O>jh%U-Q>%SmZ%^4}7W!%nYg8@#af6jY$*AU9wD z^jT5x5gYx2S*ITx$gK+SB-fk^M;c)bVvYHBMb2j2Ocuz%+-JWKkx;LM2DABuq9;q} z!hSX41uR+NxN!Z>jykj{d+uf#wM(y}BHvXa4iYIE+|7EOXXJ~R$-TDFBk9{D3D{0< zxTc<#@BTKlHy~}5jfjlr_0^e?W_6pLNMpHUk$FkfiM58>>lFKBPY6Zvz1D-nO(#j} zr)jknDR+J+^UryJniK&Gp(;g$Jex}McC03;S)kLk0f}CE>#twVYvKEY)H2nuIjAfk z(LA3+042nVHNXmwUq@#4>ReOV8E(Lts_7+TD9CsET!4X-asE9z&#o1zE4vX+p1HK$;+;d2N2^Ztq$j z?>#zxK9~40!%anNg#5gTY~ymh+l+@Uev%z{;c-j&)7tPtLm~XlCRo2j@G`{`Ri3Vo z3Mrk7@#3J?4Bugtq?Pi1T=cdq@3!Pp2>C+et=f8h!NI(wS?AS@fU4HM!eht!9--M5 z<=M-N3<=dqQ2O?A=h=II1p~j&A05_*MANg4#SU2GH1od?u^@1HLFdr?q2E?1L8&~b zgNR9p&70YUT<+~v-+uAJb|GT1iVW(oBm>ET)p0u^r>;`rgqn&YJ|O&%RJf#Cqnb8X zRWkEXv2*d6sJ%)BzKi2?0=#0+4lkiU+*$p2!FL5!e32Zmqy!vqef}bQnI08H6N%Fa zLMB2sSDX#~a0w|$K2U}Bt3M6vbK?D9l#wvM$JI1w1^|lE_j_BvFi?4dp;8I?vTE?y zE|?0bjYUq}7Z~+uJ_54DlhOm?)XfAhvJ|sc|#g#Z%r}ZzD z%??`7WMuR*H^?=hq9Ai>eQJAqR~Y(532Jz+q9Q~dYu|e*-AfiI06@5(a>-#KWTOjNHQ=r>}nZ5IOu3!V^Pn3ndklYCECg1HyxDV z%c1OEiQm#{bQ*tNzyjF$1GAk}$-y&9lnohbSWfYQVo0W^mM~m~5!ELD=i0)}`G%HM z78W#TDv|-PeZkH?_VvGhYGJv@h{QMQrr)j7<{2>`ia6{w-EF8(F{=Aa6GB zf3S|4RN-NMW_MLJJ(xsv9vPf_RKy@n052kYL^f)QPiMsYsFI+mcxr{13;Z0Pu!A0e%+j<;a^r@!gC zXL*O^lolk^f5UMX4irDALHP6@Lx9IUi6OJ!U9^ya0@Vg=3-d`jH=W+DO(X$-H`v-6 zZ(ue~2mg}pwfu<>JQgN_CWqsNJFC(~L;f6+p}T3|F@N1{9?nwDIM~$p&SXp&`Dr?T zdve`4I3giJ*|U7A#f7fg1jdj(Qx{jq z-tl4LbK2skOdm{-vgV<9vo7?vIA<8f+Ng|Rf?u^bVdDogd*h$YeC(Ul*TBo07>vfq zZPNj|{V6(=X+J2!Z2a~r`E`R>*sRg;W^@3XbNECs8_}Zok0}Gz znFjChJ)8JUpp;W3Esy@@1(<&j735cO(&xO+WbqJh0W>%}mJj&43$BpqrL)>f+%kL*LX`(sqeUseQMLpaglJdt9rQE| z25XsO4U@HHKl(i@5HY@Pbl;*@8pN#kLgVqI=!rK^$Cbp*7^^3M4eXYhq zl6=d>T`YNxRj%t7T`=Q)k!r1}dhHd1rTU3Fg1s0Kl+YQP+Fe0}Z1QhRX?O-&)K{HE zw}n5ReY%OGRyq9FNFl5#*5}~Sj$ix*^c3=>odQ*v^3PgJ7|}jjMp!BVKbaw_HFBxp zYh-}I?I@#}By3#aoALce`Bvm)2?bZ|Kld31m83haaG^F|@Zv?Dyh0WGMt2&lo433+ z_NM;Nk|m6wg8JLfvBtY@_K{F0*+J}~&(ahdN62~qmVRT?lgWp*klqA!Fi`>A|12o4 zlO~Chp@gO$+jC$jD=K^cKDJL~Z}#F^KTy7wViEv)6WBQGG$If2^utz~T=9xN6N38U z7^AJ%YNW50RsPlfsa1QoezW##o}^ zT{Buw7#qa&#L$n$%f5^c?6ggD=tCLMs1#|fXO%~(Xym`_cJ9U+L~u-~mzHf`7r8Ui z_Qdy>X3o*ga)YL0RWJ~Iy7NG$Lzi0&E`4z4z2;Dv+oBka896{d@3UOvQSgBk8vM1f zs}$$9e-2&xskTSAk_&YR0aF)%H-7WaQa)9GgF5IXK=1iaxeo4jStP0>|D*awav;vB zGOl~b6F-@8BKW}3r8+m=rx` z{U804o!LUgsFfbvPo+V)p@QaKrAy*bb%D{hvD83e_xWij&I2>e$j9Yrt%GVJqHjza zwz0$}a)eXLIsR)-pFT}!s>N!NLkz#N?wmJgxI@e=RJ*=_G`6GxLt*Gs3OJT~%dc|# z`^LGOi$ou*sYFqJw|GqPwNHOI;TOy>X3Hd=NnBIo6>VeZ55?B3o+d1Ehou)@HI5gH z^7_*6RUy+COiyd4eR*%t=EsDYCr5uE z(L7ElMM@l(W-$Ot@9&k(Jx*c<_f>X6OIebzh)?P=Y4Ih>HOEwDNzM0)i=4B7xF+dW=sePCcg-%igUzP<^a*r$fW{$87%=n>vY zVY(sOr7_4DNDb|p?!@Er7N+0uqJ~#JH(#l>O{k6Ugps+sVuu9IiPn!4%#xW~4Mn6e zU@;yfeI`R=P7&>=JNBI_I_LJMidQsH6x{ZI&$ZoUi}gr1+O)9CD8Ge>0Ux7$T?4#k zDcIbz)u{&UcP9rJey+kuqboi5LHS1dkb_=Yi75dky;#_9IxO)oC7k7PkJbx5mLkGK zW+pfJ3}>dC_X92HIx#=M>k)uAAD)cLFGWa1;>zWK5Z4i-%u~a>2uC*$w$9=B=SZ}^ z>_U3T(tEK9z03RYefg#madzJY%WD zu)Xz75DTmKR`-uCTqn>$r=&cS5X#$yy@>*(C|VTw`E`>EMbT}*`Z(&^P_(Hq8Jr@K zt}Knpi-YUiW7ou_Qyye0oEx=1MBt|Yl`oVDt_(^g70+{n5j7MPaNckvBOmCIvqEjs zO93wXKXcv0LU=dtSe4%o!4!^%_Az4JCeLi_JuAQBCp&r#J`B<;r^xEIT`+npe{MGo zfuv*+1b7v^k7eu7D`)fI&8GVSe75O6$3k| zL1ap!Gu+oFVMorJ+r3L;s;{#+FZ6h^M|E9NWn1Hrl&Id!`!BmDDp4`V<am?67+ogNw0 zy-Par>11#P^SajoX_3ZWHwlo@1O3z3`MfdI!ypsL?OAyG6VY*t$?<%% zjS}k09peT~1;pHK@%Wm?s!_r*DNFfx2Q?uG-qmF`sV^c&$8y1zL@Mal@21rE5s&h8 zTIa=*UQLz>cVqk_|H-{gOf;7l_j=m5(_wk-`x;a|TwA^EgF-)VRjb~qOKi1XXLX5X zAtjJRc)AZs!pwf~fK_lS{`;m9YV-0xsIxNeMjtj<_-De)cX>Kn4Zr7)IzNW}&2ej( zvcHnOm}AUYrCRx&fhI-|KPmeUF>Lw_8&hhQz_6*t0=;@ecQ8NqyUmiHXsY_al!ffJrfVfFZiI&?xxv<1W<&o?Qi zD@-vl14&;Cb9TR;|K@Y~@?C~a0nNn{Em)3m?k*r={?_22e0`Z`>ME)Z3@ds1Mq4Iz zz^-TYnYDss^Flv+-pCz}!Dr$h*5xQ^K{0d{7!I_Ki;gbz^iJ?ZSJ2&^&`Et6KATU0 zu4Y3oQowDID)$g9+ZM5Vs)4YSeHjDj2b#i@R1Q)3uMR1B1=wMhyZwP-vyJrN_N85i z#Uk;0v3}qOAQULD7D_>;Y0DjQS^ZXB6!quaXD^u58<-@w#aO~r7K+pp!cer!%ya? zwL!755%5n=4AoYiS1T}ug#JVNV;$wML+diG)pewoVC7M4yUTy4&ZKzXEQ|HWX!rxa zFD@MuEOa}0`A}+aTP!pLA=VAC>jNxS7yT@AfV?ACo^Yh*e_Cl_k7BrM+I*(Z+fbEg zLkraf(7&m!i9FDk-21%vfS_moup~QQA0B4AnL`22@?@rP+*=#CBOqNCP602varGSZ zP}J?mM)T1*sYif&)eUTXwOZ_x?a=mg#a>FVKr7p$xSWNyxmQ97SeROUVi$|EP2f1j$4BIhqQ*IWt9ge(cNBvO#L)YO4r;6U=T3@) zc$K}JYn&~kkj>#p?Eos-PJqX7`tt|9CC}kcf)-L=vM8VxvoQF+m@b4*jF6m~^d$o% z^kJlz#mt4!VQk7=Da9TbJPX>NRN8t$SjiMK+ii{^_1f>H&WQ{fh`cX<-7fLv9hsO! zQxvD+)3M+`w7Gp>sUmSLw;IU-@_N&hbJ4mtUqEl`F2J6)X8$tb4T(UyVA(Rx-{|#y z{3H9S^W6|Rn_s{M7ZpX?9dwxC!@0jN$Dx$!1~y-Wqd%H45~51&HnAuZ6pmRN!|{ z*jOJX{Sx|2H5SIw(x+93yJZKUkUKQ!_u=UWhr9)Vp`6I{7shDgY|O8OOoLRw>OfmY zsxxvF6_lr<_~47$r`%&nU&Z-_w0ngTKfk|sRO99Guw_9bMdL{&?*$4FN1auYd+`$m ze44>GA@7raRX{2-vsDPS`TC!ej3-*()-*SSW;2#ZvN=l&IV81(vB0y1YSl2Rrg^cC zFyZO1Ab}UP%7=d5GlCag6-f4Ef*=y5zYTgPwGXdRt?q!6(j2q@8PJ$89FuyouF{7_ z61HW3Ih6-*)NbZ9bV`ip^F7qA5(z2r^+vuY96Q{tv3Wrd`86QV*Js9}MddR6NHk7C zY|CH7dg4QG*U#HAeSc=W<38$;wyT$k8~D(WJwFm7Lo-}X=N-G;{^7&Xk9(WdF+PFWsOgsn;=^E()Xx(@cPu9!$pfq7f(8 zxw3*(!5dCMUNRQ*f(b4|a$%dqNg}Bz*PFmLuY>FH)wPw(q$5>`SPa=XSw2$|-5>Q9rbt{W{>e~Yj5N;Cqt3k3*NTTs@K7zLEr zU`&&{lxe4#BaN*i-SLOn(B;2&ri4qFGrlDB-N+Llwwm5)e*e31-lEY@v7erN4eoasJ<9}v z&saB6Y&xZpIX;OnNCcK z48iRQE5sdmeRN?)MI7eC3yhUE9JnRKU;T0$tjbF1rDv1vUuK;kY`+c1Wp8~65QC(4 z^w4B*r=Tpp`MUlO0P|?fz{g$E3xzFrVo3To>4#UeuI*`h$X(tr?DNjJXV6P3mF4MO zaLS7$!+HO;osxy@;pNVKx_MWp2X@Y=;VFZrx)fa|xSH6+}% zmJ@r2^#1%9;%7eR&pd{{Sl&xSTsUhu0=}^VFX&&M2W<5oBYoAMzS-2y2_`!;c;l1~ za`q_T6>pPvTH$pX8evisRa1+7z#B!gy|8oAo7#6Pcl>7QcM z!;Bk`Lm89_lo~Q^xBOz$6Rcmv(f5C}G8`^YejZR8l>=;~^J&x<;>wWKY|PmUvl zpO{FbjR~B8bKt_%pRD>Y77x)Q=T=MmCzPIMr)_@ue!`*kp z4u!$SU6uw>`f<3;s?O{NIxI#$8G4Uydjb^c zdgw@McE~p!S#E+!%z!(oSAyhwuNwgS;iulJ;mB-WJD7?Vx>+Tafk{@gPRDk?MJjQoyf#`ZySd zWWgWzYR#$T08h;p3}N5S0pWjqQVD(WFseacdVa?n^RChUzaz^yd4Nu1h@kT$tulAn z!9eHcAVLy`puFO)o$If1WhWUf;`BdAzHixg@mgaRLU842& zQ(PYfEUjF+mj5>f^)lre;gQXo(&{>!yeiC8UeGt~^RDba&zXBSesq1zo6{@N)o@2) zDdRlQdjF4VLloAzpiViu$+k6PSAz*)z7;|V*308F$N_^WMgk_yh6~?o$yBJL5}zsV%ye6qU8ymoh4%Zrm}~^QA>ik0lYoYn~@yiJLP=})sdr*XrSUE zM3G?=laT8YV(r!N|AY$nTBOI>l@|H^VOd+I*d{NE!qsIDb^2Lu@GNh?_)gf($2IGy zo)5{K{6HsS4P{QmtMwS*(;>hbsm-Y--SZ8i-WkI58ls{B)!Sx14U@29$$!YMQ5~ zmzfu%5L@0P2xO4>xx)vWOS7*{)+KfYae7XKycg3+F_uT%fXfpa$c7R=fO+9F@Ynl7 z!tn%O7B35mfui^*Rz8q)QxZKDm6f`|brHxEb*->U@Vw}^I#FLgB;U(SB7+8E0xU(( zgF~WMK=qSHI0`cK@@3U{sV?vN>6w6^*Aid)zETA7_*stgvd>L!G|x+V=##t3K3$!|vaw?O>)^GV^1wD%CFeMJBw=NX_@HWM z_p{9~zn%kv`SjA1l@9~-+7fOV4}UKs8B*e55>j3VKg{eR`nh?uRd8}6nZ7BP>}38Z zDurB%n~w{bRR%ZEg=;VV4oXsSt>VmmZtnXt(v|B%zzQ*_N2D1MCmFpZ~z=$8~ZmF1^@=vKj}st-%YOTOt?EhWW8kRTH9W%XH{KsehJ z#RMCarxT;Z8ypI%aneVhRDk<|fV}HGoPp4#E19#ha2yj>Lik2aAJx-6|H)_xZkk5h zd&4D2cy?jmfL_>VCxSDyj{ydp$Q`+E_^h#`cSj59Xu)c7mC;FUP4d}Z!J8I=ck=%~ zJ1Ivo4X0`UgG+oHi~<+i0eenE_CS5-&(8P#Aa3mpr)RP4QZ!bT@2H@{9oOg!z})b8 zn=kfPZj3}aawBn2m?$^_qox$yPtlXRWVku83fz21jos?t`rEg;>$I9rCjFw}b9hBA zFoXoWvaf0#M&qoi4X|p-w2s*<`!djy1{Y+D6B z`y#QVxFq}f?|M!_HU#H7fZ-f49bH;(7YDz{vc$F8>|Gria_k~y+U#LK{c1q}H4vv9 zG2Kpzdk>3*Up>B-Qi8P_H)7K6H#vV?)ja8P;Tk0)!=Q6zJ`k#-nR%*W_<+XpIb6w+@x0fm+Y0K+H2BRq( zhostJ`fKh%ZL6MSv!Zhq-|LHJjbyC_7>)Rl^HApb!H8&7;oBoc=lAlZ zSJjlmAK8*$yYWi8gigQXQzLYr8@i7X{M`|$X%{JbIp?#8b3n$2cfOvt$y=8LW#!UH zaVl+z(VBHiEKL4KmC%e=AfC|wI<|a>ANS&81^XX9Iw~+gmDV%Ik;(I?x52byb?^TR z)5N&2|Kpf^R)hfizww6D|BCSO3!cqe1r{a$3prddwfMox-AH^P;bDplF1z{U*23H4?h+cK^+jXqGIQK$#J7u1C+^YgaC% zg+5S3>^aStDC}hfia#4@R(;@%@jL~Nnw4)3J&#s+htAGO-aUfzCd)iFV(Q#KBT*hP z;9_j6Sdj9M%P{%j+NUv?(32uX%kP|DWvN=rzTuA}+)g97@A?KvkFb*BP`n+Ju|HSN zA0%nkf8X-XE^iwve^AL4iTy+S_lh8MpgD?Aty#!%!U!^Emp||UqR8L+C&3fo%ck{N z7mEvC-y~+7J$vnj^^s|Uns27-_2N-EoU5HHE;T^v0fn}C@GR!zHgr||0Jt%+GU6A& zJ7Y|ayRsvmn#cIgdBHU9iXy^cDBTZ=KMPnI}i8$k1I7VEyog_Llby@_%wFbKht{T zW)w;2dY$mL0{^)zK0d$l_p^-BpQu->`>CYB$*aHj);V7hO#7g}SbR+9xQpftu!S-(7v(O!ewq8=8s_Mo~-juw1zSX_e zOV*kXfKQtS>wY=wJ|PzcoQCKf$Y%X2&0PrHqIIkLy~BDpGZjpqh+J|W%-$@gYjc%^ z8j47eDArlO05A2M-X8Ve+bXJV>2suq`Cu-18YjWm=r5zjiDQ>z5)s7q77a-{RA^l6 zsO<>#V!H@0Yr4aA~+QVt9Wse`w z3cD#-w@U2YC0pbv%hxz>?Gsv=V`~WYZ~p$L$)?O-?%`~mwYOQ`_cloj-cv)yy&u%H zY!(Mpzlsa)rCk0MV?UuE`%cZEdf#trnK<$x+FCZ97(s@6^~4E)-Df3cn&~@U@seZ$ z8_h|O2O8kTXQ1=7bAXn90IEj5B0zluZMossi?Fzhp6gjPt&>ykAUf`E4RXCJ$rOB= z=O2<*XzC8sjKN7=U?C)lme|9PbBQ}|euNa3R zr93w8_oyYCFZYBAYI4Px3dHj+=9#iid>k&y&#L@sW%EFaBa)y1U4@Z=bxZW%^MjkA zYhl#L+&&e|gBKIz`EwWtd)Sg#Lz$svjyVNo$UP@z9)^jeYo3je{w5Ta#q8?f6%7!q zO-7&0TA689J3VQ1fG#~5K`zs|+E+EN?0sh0TH;?Nz7}WwE*er4Ob9v>o;Ib9N7Vt! zhK zh5y}%zrt`@&YDk1ThUO1mkiVouuSVYQGLG7Rirp-s7hEBPz!(>XBJv-jyJleZ^T{G zo%O3-A>YbsZr2uwBxu&zx|`)~wMnwvoTFe{M5~9J`=bQ{Xl#XF8U?YK-f5%~$ZQ_a zmlX2PV+F$~A?hKE$1?h`uCfrXHXPI^Wi?hq1`DyN!0y@jU3L)T#C+cV6Oz6yK5Q1q z6zZ|IXOk`bMP44zhkE=Z$)T2KK#nk8DsTzI91OSZZD)Wy~<;Uq}qcOy5l3Pko6 z=B%laUzP{TxBV3P_GOc-^zAZcKl%`g7?2ETpgl+Q%=oO&qu z2|Z8Ctf;iAIGB8>TlzW|t)WYDqs4tWsn2G1B;~3)NWn`qfz>v8d$BMg^11jU33^dj zIZ<~TyTOVl)JT?%il%s`cW;z@Lpa3L504%(v4RvTEe1}6*f`>dD9cjtXi70-eZ3bc^)`-139rq@w~L2UFvn2x>vp1{6JOVpu=pP4H*!AKj=#H zRSKE(tNZaUt&Wb}VY78OZ|KbB>*sAviZ$!6jwHzMF!#GYL>@H*_)OWGgmzf-s$Sid zQF@TXiGm8OfAzDUE6V7tDt8~lt+hmYHHn*P)Rx&1I`Bv=9a_Q7=i(hhF7&O}pBH$Q zj(1>yze4h*Py0YA|9I-xISBAEVfLYP~1jgnX{;NNr)bj;v5(>Xa$jra=(4Rh(3(RbVP401i z5gt{FC#1d{>v}@M<35#|?p+;nj*ZI~e8q2LvZCJ}B3?JrK!&5|UUx{hkTZ5lEKM}f zJXu9Y-%C6kQ68S(k8L)Kz-EoLN%HYT{GNZOc+$%~@sZEkd3WrsxP_+%2h`s6AH1x| zkxfhH1%rcT)Sdj68!wI-!HJ7kRw_Cof%JrW9oLbjN)HQP;rJld4IFeknPG!fPbEe2 zljB}(w!!!j?WO>hiG|Jse|fH(={UzJX^znvx*l?)7=E=jpwKgejii))Jw-XQwG^Z`Oh|*^ZI?9RW3BvCcX=3Jj4& z$Fe;zL%DrErULDqU!uk?r4j6Zr#6n|xdtTk^eHK5PRmiH0xK9P8 zfK!|PA`^N7im~TKJo*SQLTS=*y%Vl*wYWC<#k< zQ;ZqTi$V)WnU)uh{;Jq4;YWlM%9`1tQ*{5( zVwfp1c8%MBuRNLXi(4;85EtSDu_p__oqty9T3lw9)!(q+?3ePBgNM<+gLjx`1uA9k z4m~<0Z>B;TC80bEO}}|LoF8v{Z}+SnDnP}||Jf@Yz&B8!s_Py!@MC1#%+_!$<*S!+ z57eJTQ63}kq*=)}7it^8Vyh{QEactlh#7zH<@XKJf(iYG`P=$kp&7LcKTcFb_s0xXn1ntBvE?Qc;pY2KLANL;^; z5$rj57Z5?l{`So`J?1yNyge|r^Aw$zrFEt0*ctoxXj{Z3q8A32KAS24slSH2W}336 z!#7W5$30ZW$F<(>bU$3Wzbg6!ZTSv%Fp^TUEW_??Ns6=S(`fl&eHG4%d{`*Xb4PoP z#-g3ZCq9J4@>Rv;8H;TB5xA9hp2${Gni_tFF+7rDvSB?eNh&Mm#Aasqcr zaU-S0vc5#W)8D_`2?s0Dy=7G|^Y!aiw;954D$$gn32;Wee^rh+B1_DC`ArozDK>WF z>J^%o?Qm)Y)5`62*0?hBN>!N6F_BU?%({>H59bTI+cO+TN&cB#Sya||w z#bPB8&GdX%#UdnAfyCO3S5g_O9IWas@j*#cRe(&=!5Js33g_`c9ZaseKFcHvn^yyVTFVo%X-PtX~p zNJHeSr>X{=>MO&-86-lugjhnU7Q5bXuqe$1tL_&gx`$oM=4#c!TRWEcm97s7(#j9R zeza)Xjo@8_7GF;|aWc6{ITWTA+*B2GW%~cPjsbRn~bW&CX zB(pUk3NmJXy&-1MKSD&KdTbwE2da`<&g5^MZB7L}JPD{5n4hA+?J#9o3ng3yHbUqS zl2PKyiO4yv-(b~l1J~ih-z5Rr?vQsLDl`^ zgW|+YtL5BFUaK7!Rby45?l!?tox|?=?kS$5s~nX5=Fpj{M|Vkz0sRVNdZ>AS%rZb>~{?^O3V6(?XI= zOLNPZ4o!1gDl2RO3w&Gp)u-!$wA7n&6=qs`oyVh9{9^a(X9}t;mmyg~&3=u}FQRHC zMqgSRcT21=iXhbmT45wZKd|`dq0dISdjqJ1PGeU24=2RIyQL_&zCb{XiJsooFRq26Un>NOCH@c?JhE*V6nR{n&XYi{ zup$_aJ8h&6eek))^&R)LB?9_*DUiHU6=7gfdeVb9l&;zIv~H~evbC+HsoG-9iMYV# z*%+YxQ7@>I98|$mKy+YmwH2ClEyId5Vkht5W@}p~_x&0hEoC}H1}38*l9Vnv-8=fqUCCYhoR?GUER46)akoX>D>UlR z_`U2aTXdpZuya-iG**J2+s7&rqnKK0Cx&w}eHv-Wkc01MEQxh*n>`!fb%y&zjrWzl zsHUv+_%A=Dq1Uc`HII)asGMC5+?cI~QJ?SK0g z@<1wzkTcx%%KDs^oJ#kJ1F4ZAP)Q+{b`ctko<(=FigN8lk;o>Um%|m}E0&BN4)<@y z)|#Ow;N7{moG6AQSRdi!~91R zpwqZJWg?a!D^s+7%b3jc&lTL%2TX2I5SCZRl|`%+N`?+~(BziI%Z;(qe#4gUC7pXI z5L#`L#WvJ$>2Uj7f7&13avFX2$U}^a4zxxHl+QgAi zK-IK4ylBq!Zf@B=1t0X8x0MZ4XcJ57gU$v!Eo-iu8+Gsmj}({C@4m>sdsR2T^}-E& z?^U3;fGDiePh)5lKSHVSrQcM!10eHG)kf3mbE}UypPS{C=HB#a>AD0W z1lL)1ojIWO6N~N>`r!IANPM}60&()p`}nFg>d)uxR_c|P6QnKR3UsrnPP+E51)BY_H^vrxeBFC4X&rl=W|^>C}*Q z{Fz(@h;;>{dS@_1jUhZQlgAZ9ZtBPvI&zO@BIfl$gX*a2;`%B*&N`M5R-S0SlDK56 z#JwwLMe*GP1*9aq{|u<&Mu6AVpMN%ZZw@@+njLZA6$tnms>Y7&RWP>#J^?T5i@l5= z&(uUdfeHj+P2+0yJkZD*{7PhF-?4PWE-fql?I2Zb-tsGW?!DT@?AG7Q$e^&+)Z zko>G!%56RrV4_M?YV=F_UadHfac?R6to+^#&k~9D7GJ1GN=GH?MT3^@1y2(h5lA z7LKo`;DG5KXKsHDSRI6BgJ?F6OAP@;EG?qU#B6#3L!h`7>fI#3@?R5jJ=(3n z=;t^?EoCK)4Br1)praSyDE++Xn|K5zDK3&|+Wh%3^aPw~$rA|RWDodvuTlcmG;w&2rox+T$Y@v0G04IEgHHte9V0CE}p2RMrww-uSA!gZcd4 z?79i@P(9k=VI>Ur<-*Z#wEul@n@rXQ2E0WAH}so!Hp*K$-i`Zr3UJB(YsX$+wZCTM z@+YVPB2JxLS+qE-)#EQTL_eg-hy}9qjp<(KNUR^>i?4B(6|qjO4h7hKgXq^Q48Erf zkBgmNO>%tuB>{tFH&XX8QEIelty$R^ z+IQlhvHzTY1huD!+sF_p@TPuu+GQGqJEQ8H!8Zv+Q`IJFglI~%0xIo!!tC z4CA16p7XUndMt*WL1N2#$mQxZExz|o>cx=6bE`^t@}&(pdOTGClA#w#%YP@Oi2SB% zmqia$prcJHdjU_g%4Zy#XoQI?xDlNSuWeInKO+>^>0}zxOhdaFAC@XnLu_lZkG$P}t&>N}2l99KXXF zk)u;Qd_Z%ZlKHmJS8@aT&)2Lz@ISm2SYc}fz%ajklkbTh-+i$VVOz&mDhXz(fz#>c zo?X4*oPdM!?1&d}q`>M8YFY#=$=SbG{NH8v#mAZTua~XX8*;QjXDw2oW$C=3K87&Q zxgcKmY7m+btKBR)^AXLC{9-}068qIZx%%T7v7^W`$D~eL{IToTXR1DPe z{mOc8_T{qfYDkHG$2<*!Ko>cCGN;f6Ro&n~K1wFM z4-&#{h=e67AB+DR-#73Tzg|O`f!na8^79o=&u9p{zoElM^fNXIa^Sm672ge^x^p9k z7I$1~4OsUvWtqP7k&+wWf&n{cac3{JA=M($G`(!@iKdOd{;7zb`hd5bQwNSznNg%t zLm^7bN579(oc~_(ul2a&{XSiDiF(|B(3OftWuF&TKCAc#X;T*Db618P;fq`? zj%4wwPi((s6(`f;oQI%^ZC;InUZ|_b7^-3<(vnKTy?<{lDPS8`xIz zrBG}YbsM)#74`G`8q?X8)U=Ub&r4Y_{keNN7J3W8f3LnMM&`wJi{+EJnV(D0V71|h zL_k;XGJ;8>`InhX1A0y1f*ex*=URO(dW6 z@8Xh@2~pmxbVFR-b@spxqwnmy_m%7+AE*6-u2_Xx0b>0ZAu*GAlYmHfs_Uu;j3SxW zprLDgIy@p^<20ok&Txf$-eh7heO*iphGU(Buv^jebfj_*C&6PMoav> zo$N5U=S;?e)s8Jatqp5Y_xzLtwW8XD9q(9vYtRl|tE0tn$@t5$A-*T4D^A^)Gz31z z$w|`TzP#FAF+WYlHtc`COA7C>y#W3cIOGT}^d{bQdFC|{JmWz3FZnc<1!@RYuq4Ce zQ;RyRfKub`G)P#mJMOOm2mibYJZv_l(B;xDnZHoNmstCFin*V4Q|3|JpY$woB_*~= zp-i2qi+Da|D_P4g^=Q7~k9@1QF3$qkk&TNTDYLg(Sj;Gac*d>WvS*rn1s7p8M~9pK6Z7zsMS*|q_`06lS9efa$X%vA zgv)oq=G;M#kcePC|L>AbOB-E4Ey7N1W3OpEI@6=#*o-&=N6w?>w|w!=;DX5Su`4Sm z=r39nRgkkmwmw;ez4f6Bf$V1kVljW|A`W6Tjoo<9HTAY&-L&2`GHV+Mpl1SntVrpi zYZOdWOy0BtjrekOLh)n-nv23d#m+{Y-Yrnld_m0e}IzRn7 zozz`AjO77^v^+VhLYG|{lyDQ!3ZaXIkwZKqLau$^s}hIMb6(1=9PhWe5ht=9b!4WH z6+|_9+wW}(Jm9%itQR&=aKxh*i>jfA#$^WH(xmrEVq7Vcmd%fQ@d__#t)QbW3W_5z z?OGlTwM8mt*|fOEa_G->nMRAIuLIVz52j*QusaQlwv(V26+>*mci453W5g`oibnHoU_c zsA`yzN$|RdBu}#>AAef?WMh@$FQ-{q0dE$CmX-ji=ee@WJ9CAQHV|YuNT2!Y?yRG- z>*FUvOcADQMfeI?DETfgk1=fN;uD?Y9zgS8aO*uEw4pbcF<9j)bFW#`U;I6f!o_ZOU52Y2{f;0FRUH8}CwBO8e zc-K$2o$1akXK>u-A?9EBsB$M%c||$?FFiozz|%SVt#gKpWyh+MY*UecnQS0U7KSrI zntZcBdbMqr1rV-Dfq&N-u6=_jE=~L>U8eXH&2vzU?Tn0t-%+cD*M`c=E|xFfiv2{; zPWV%QDN7RMnl6?7_8I*>;wsq$;bLfge2g)W(u&$oCX7}T`y_Z6mft_OThGGJK&Sd?RJnssTu>`7STR!cG z=DhE_^HpFHn>XuURyDUE`o-^$G=vQY>&JB7zaG@VyYwGuy?nL~C4gBdB|d1e-?2KUb@$I#84JwS|y9@u#J5s23`@(0oLAXYV&{3iv_PA`8!5?y|SmoZ{CxN>f9}aRZ{~M@B=PVi| zk!oMC;tEJk$8=SdmRqr?O2-I46QHUm7rQ9R)ekmT+;6r5Vxickzx>W?E|QS!9A{RV z=au{YjPdbXdanw_+lTM(`DMHrv|O#i)8z1-CV{LbmoV1(eWoQ{bTnz8ih4&yJ{o^S zv)Qe*{Z$0V+v(uLEaN}F!@jZXMo;tD2j2*@`IxDS{nIG$*pf8czG=QV+_dczL2! z$&p`T;U}MV#lQ7Zl_tNrcCjCG^yUT6HN5lo+crAi2-Q_te`O4O<=(<1%w({Vk+dV2 zM8886rX)c z+|E6{RV9ZP`L(=U9)vcRHS-n|?oZl4TJ>Mf zus$|#dgB?aH*&4fI2Lt0ECtTp-a>Zs`R7(QNDiu|{LB-4L`sKve@g27CIer{dW)UY zFF|w%n(COY+Y-SnVqm_`F;$=D7l&%WU^TWcA5*9`D(CsUB{u@z%v5Mx=)D7m)zkXu zLK%xJ&6n1%xjACSo%&zKfGvyuP%;i)A<3x9tq;NeEx!lS24RSN-Wgx_Nd=sn$r@xN zHfT-Tok(Cup0_1*&+Ux<>7j-$2PFp*xK1{A^)M8l)I0jz@T+A^&G`j>@y&V<4|y89 z1j*^5QW)+gezjNeDtDt`ydc|lC<$Kzn&%;+Qb&GO>8Ve2?6&BGhgJYg2!;GUK`{N7 zCnkh12!$UD@D7^>U9YD_EM5q8el>ZC*?_34@M`vujn_bdAzf^xm_02ci;8DrRU(L9 zG(XCUO?D-EVIm+#W7xp>o~~d_m%G5$j~^zG?CBBR$KKz`8$mD3mh<^y(T)0Mn{Z9% z+4BW7IF|&p@yFahro=8l>$jpK^ga2$tbZO!#gvl|+lD^^2r{PnlzrRQ_HzkzfX|22 z!oc4oEc`5V73Y6A>_Of7l*dM>j}vLNa~xU>bh%bdUszJ0U_t&me{Uo{ce5;tnP_$X zfi8xi%}$S~8X81S#@5ngPx#3|j8|yh>1bO9hR0eD>V( zb}Tl4OJKXoBi_zf@gd2BglVP^&$ZgXdCGISMy}WwiMKAVL9Ywa(X-9Zo>R(D&ZSmX z@Av~}2Gl|MpOdk;li|V-Q2#&n`BOsL;>mbh0$M7oK@jg+z|Q{+)GSJ3N9SAv9Nz}3 zQ3!*^1}Eu-=t{)OPREot_#wbW;i$bExOTD zNUFDuQ{lVc`{rc38|q+O<5j+62b)R5_;o+iuZ2DnS1<$(L12L`-{)rvBj%Sl3(_!b zZ4vZJ_T=GUL3S!|UII31eXRkRpvJ0+013!j*13^;&u(0RrUqq!Ro)WE%krLy~`!6Cdes z`N)kW0qJvm_NP)75sng|?AY{Xc4#kb0PwNvyx~A4f=~4Mu%A;E>Rn^nA@U!%5Le?d zC`yX7mW^xHmVYs{$`nwe#r@=OV}9TtsBYyMD}t9~6b6UytmRIn5WStopR?Y^!099# z`dfm-FzaM=JVdtc=5wdcrG9&yyJeq?RF6@v+!c?c!P%bXH(HGwS04At2CUU%;6|MC z5x)LxBJ=y~{E{!^AYq-~M!2Iqx7@6P!3?4QdJl)3$MJ7Ty;y?RO`$hltVAoRzO?hP zs4A9^*0_}~0nu`6Kms}`iU#Kw7NLafQr6OTnJ3JC$&iPF1-B?{b2VV$a`3AgPE zUVp!*g|3f?fd*OPVcqI1gU!6z57BfMA7s0rlEa7g8d58T;H_2e%}Vsk*n70N@#zJ; zZ1vZ#$;Hl-@kh0o|8XBa`q8C@P3yK@@yX06#u9g+PI{tM_x9hG!hIBQRZ6K*7Y>FFNLQ)C}7kk$e7O&x2oVu&q-uUromyt zfEBMko!LxXJdDp$r!idm=2ucxZOt{Z9PIEDczs~xv~t>Q)&48fs6e3b*D`I6r~8pP z*Sy`@OCMSrE+o?j^u~KK3M^-Br{(I7(l8_I-+ak~;5ZS2VQoon^_ z=Cdj^VVY(S_$bH1_$P}EfX@1>c`Es7VcI|L#Rax-R1#L?VTgO6UMAMLt9PYL^l!Mo zktj6zOFZJ%isAcH-^4T+#@x$fv@SCjB ze37lWUD@bedE{~Z5?Qav{6cZ=+}~L5EW#)}qZ0;m&ZDm=Khu2idI;~``)QA|)-)vN z%D+BS4XGW{Y)j!ZK0Z%PpuwRbms$MzrnMr)p%yfUy~ZapeR^xw=hLlUWYB156Xhn% zIN|(SDVW1BI_caGsoH2!@Fxs9!2kyOJE?JSL2gEGrQHR!xQO4_y5062jm3UX;x(tZS?yB`JI z!ms)=2x$8*kI2mLZ@#!3_%-_t%l|B*BF(3gqj@!SPw*N4c|xC4kp#B09}4}mJ6kh8 zlT<|#^kyW%bY5od#!pB&R$;=XheVZ>$~uCpkG(@B%Td+4QHEHO*GGXy&|H_J@pCtF=QC9@k* z1vU6zi}Qkkm&(zzof;#<+cWKnHhTQS&K@A4Y_q$fdzKHZ$wHUQaS|f)uA4S9EZ}|2d26EJM(ITDdfw&j~ z{PKf8r~CUqeYi)|*^U><@YxFh3C@E2xF%AfA!@nf7e}~zB(5&lly^Y@WeD*nTFqtMz;Z4#CCl8pUNHxx%)*Zjc zG7oSP%%S=ftF%}&JF?>Q@OZyQ#SVw{QrN$DH<0j<7FprzbDkQ}KID`2Mq$%$>)2Ag+DJQWx(gFDSm;W^N2Yt+Bdx+b|I!IkNK&X@D}+iPPI3Pi?`R`dwX6LT&@WVZ5+lBwo8dC zO|CP}(_Y=wjmFatIZ{VGRXZ_kpyi^dX@dlCup9KC>E?az$n#BXWe*cwTXnQ1QcRTp z3Fddu=!F*IXe2for9_DlFI5h(kQ%RoVdf6KNU~?^!S&7I~jRH9$4=l zEb|X{Inu}*Im9CMggf7+#i~D*AGI7hq7g5|3gRQzVd9~0NUpzB;pd<(QhR2*DoFM zLzk$)A0|L>K*V5e4JO&e6h$*tyJ_zu-4ov5IvOj%rE(EYY2V5M?TQJhNsM*=-bTH0 zQGm@}^xgKX5@B&IHTSOX-yq8L#r<^q+ae46uG2J< zQ(i(B4UO^!E5cxJD;H!-NdsYGyj+PqzG^oKU}ppq^TLpQ|7+gXr+gd<=b6DNLEfYG z-tn33Y$sM4WCb%A*5laLYlOCZ@TtDZTh~F5U-+c$P`BaXJvKvrcaBF$5eL!$pp+Vs z%BFkJukf2U`bk5xZ}mvtkN2m&?|v;pQyco&b@SaWqNSK`2m%edDw{E=y%@feFDB&e zlI+n~CY#WXEl$}l=R|?n>lAlO>FDpt$T2Jzd=8Cf&HDDC*JyL%#)T>QzyE=2YI@)~w7u zOqL2JETNy`pe2<5g*1k%z4v#fdcWn*p1j5@59WG?eQJ7T0hzJ1Q&(*nRUu$8NzhDL z5Mck;hJV^CPVinJ10V!E69S$vgX$v4hn(79&hO(!e8jHl3_-%I(k#IV;D|^^u&;^V zPa_>O?!+W$D8M@1Q?xM+@?6W+ZtFBTr47+P95;Bn#3*oIqr8{Bf(fwybC11(fL1N< z(5FkxprsHHytA=7uoa6^qJtrSw!EMIRX+4(({p=SxEhl6I2`?~`1f!pvq$M{ABo&RPl9TtxfEcqq^yKS^us zOqfvqgB$N})wl~wOvnio@!Hmb!8zUmr_nK7(Cq4gW?263u=*&;tUllT1$sWiA?%C5 zjB;jhpxvnD)ae`5%r6%`Pa9zU1xQPatRfFwY-n0#_+Psc0+ge|UBqK%GilpkFN;&)Zm}#>P*LE>(kY?WcSo!NI^+(geGX*7Qa$vpNDL{08jhSU zm`N+WUkU^~TTA*dZ+n=~J%kNRF%wDAzOcU}mZg)TVub?o@m6Qs=xg9Ak{R?hc#Pv=25B#G&>+1Yn{u@GcF$}#EuD+Taz~?t+Ee~;a5VG<^WiL8b%8AAm*+PZzr`ioWcKs4dmE8Yf&uc+IO8(1E?Zz1{G&G_B1$sqzRCwilKGgJhaW(AKG zNPN5vhL56rN_pRhfppVEQOm8bp7-CmLclZ#_n;VPkd(r76bRKG@!Z*wiPq-9x%=Nu z82)-Vd;tzN7K>>F+vip@D4hkaEvWtq7OJ_bPCQ8bIHY_15-jm8R41XmJuLIaZtm)S5rVZ);SNzlbxig4+`OeCWZP2Vl3P3Y1Q zt!Qe7G@ALn6&M3tm6zk*Kiren?1<12dYvAK@mXx033WnG2*hg~CXCN_)d6mrqogdIgdV1vgx}h&}kA4WvLx)_mw}A6+kA$p)ekZ%C)3H;Q zNB9mc-x5@4^AL0H;1D-h$y(_uPK9G&rHDcCMBhOh>j}~$`D5Utw8*Xt$BEgew~h$` zr-RC2GkTsn)_YjC0$g6FX^-aQMmIaMo1dq8=f$0hp7N&E3;uNvCpTeBEtI&2)dKna zq2m?PTH0E-3YLXPsBoGXx17Xw*BFZS+03}xTwn(Ce|8WXO<1R&M=B-#I2$hK(!5aC zu^09M_@!C1&R^Jv|Th)(u#bdBH8VN$0S~JtrtF;03!N;Ab>fyTEQ1fwl z*)ymVzrsw9bft-FmxM*h0m1Z0D+!=wBGRv6vTBt+yWNsCobMHnx>=0XXAl0#=bR0GS0|g?FY%PNoO>u0?_eCeEeU*=yBnHK=r~K*TY@KfO zZM3nz96i#A2Gibq4_&0t-rMrzdlR2iVMk1vwx9j$p59FrKYQpoG*$ zp2$z`c`hV_giX2FC7H|uOV!5GYSR}LXXv^;m)4ck0?Q*tn*Ynw-puZs;9Ttn&^DE} zdP;Jy8vGVF@p~f$JNMqd34V76I?_sILSBw38u?MmsFV#9Q>*53ZXQ`t;TkF0W;5f> zO%>$<&&PsX;4m|N42qQunrqAjmYbu8dr3&kOh0gN#V$8I(oY&#H{afx&uZM69eJr( zb-k-3@4$R*D`ai!K`hFX>^8bj|Nj^3@i`WyHkakk=lm$s$ELi~a+ek3`8i+zu)Ghc zDiD_B@P93dU^1N5%I~oW?B!QHlT*%1u$9RU=BL zsqMqq|Jut}xS;h*+(Q@R$`EqH z@Avy&-{+6#I`_HGbw1}g&vl>czVGYY=hT!^g&9$RG5rOL6BsKvyrLXvz8{#l5*motmZx!y$J1MeiC5%1Kq=FqJVMFy6W=KVn$$kbaOr=Q2#U=LS zujm8%2bMFR#BAnPc+FqgR(H*vgfx~I%SXo@$+b@L;Uw_2KyiX$B{6I^bF#i;FsE_! z_0Uo=LuD@CqBktB%c`I&n$IokaLVsYMuYuc^Dv}VUtG*P;(|+>DYK8JoFHcF4C!F=i4t2^{q}C$v}_zUO9?^K7+P5_k2L=)fi>3_(Mo-mX zfE$`|M;5G8QhCmNiiA+_NPN&rP6nV!p)I(En@EO06!ld} zcs|KUJl+cY9@2=Mf-q#XQ?O%R_1?uu{`S0zaH<9r*;@Q{$iVr!pgPVn!Bwq27V>eR`> zSrd9<^p|UH95TR<>qC0xb8d{R3MLsKN)Bf}M}JJ_k^!{-C6~ zuRdt_G8M=I)*(1nDAM8t$YRC7g3_!NO0q@Jj+9;Y+-^!j^_9yk8=qwu zV~x$zyTsmqy)Y%qIPc!QC}CIc{E0{L8gXXN$qI&8_1(x6fR$QLIxFC|mm-LoT?kzG~ORh{(*61$ujviSg( zxmX)&$+j>%u%#!ijP?LzEey6ISTd_LbQu77|ET?csME^mOYv5MQD&DfSR|Pi=Fp6W ziH}Gf>>kl?I~to$z_Jj&kDv)AQhe}1Uf)LqInFgmMp5g+RerSI=G9#IL_7_pbk1AN zV^_GQd?@mUuY!evYBcL_esu4!q(xZ0CR5m7!;)5usunwamr$(+43hvbI(nOU7u7d7 zei9w| zWoNhcZG)4KIP4UDHXYRL5YxnDF#MN>GymhuRf{mZgwB?M;x2med*Ic+O~ z?hiS-!_5e0mZKj33Hy5Ig`Ymk))z{E z3?YxiNkW>BzT+{yc$YWJ-CybWw{?XhTE^$-n=P(TzK9Xc^qy4c#34sFMLO!K+}L~G zCC0fRHHYK)Ipq@yz@~bce=<+Qo9fon2I%gv2xJa zxjNq7)_Rcn4A=fFIPK`-_XcUnJJ4Xh{Rrj!?z6=Yn-^Qx)qbojly*~OaqNcmjRNhh z%~?t-Nt4uCF?-xul~#Yx!0JBt$4sSHQmxv0Q7!Q9G>}26)!Y9iX{JRB28rd}#Iqxp zp$+O4$<0QD&;X}Az=Fy6W>!cMZuWElW$`@xhvuBv-u3wzxy5;oHtK!Q z{ma9mFg-~Snu_A*&c9k?@;_3i$#D&x=&QS zHg|gaFDdqnY+iWb{7>&$CeVmTppv;7iuUy=<_e<1sbnZ(DK$`{y{zX)?^rVU;qEI7 z!@ph*RXY8OCB=$y=%TO9N}qnHl~Nu$=T;~$vl%c}m^xs@01&GZ+YRJS`)L=mtI8{3 z=dxS0aI(u7WZ=JR8acei#~|OBPn}>G{W?ob3w#Q_a&Uiyx2cv-Dl7hh_-`qJN^O3s zoX#ZLl4{j8`ixpqhFRX9HkqpC9eH%SzTl!6nCZ(dRjq-_JpUOV*XFlaS~^_J2nHpGaRFR#2kf>y%ma zN4s4sDTuyk=cwFeP;q3IM&;!6Ywf95=wGFXRK_Kj+A;lT4T|jWfVQ|j&gIy!q}oRi z`!c{TObBN|3stM}Y*>zE_9!wODXTti&hZ%%R3*J^Az{3+H}R?8I7ug=nVzN=^m;ZDv5ngVWwlx ziDGG1j2|ZqJw0w7rqiYwLur%$h~kywZa^#q3tcqC^wX_?ub7$&15*Q@%aKGSr+JSmTOr z1RJj>H|b_rhoHY*toa|sRM5rYLjL5y{4_?P^e%We2o)FD95hSx&yctlLo-MNr_of4 z7`5`mJ*U@S=}l{n_$dJqu3YKA9$uzh=<9p_Q|YrC;4F-C%waQXHm%*|csINETr1cVYwc-&U5Bn1u=FfeE!vc=r~P;aLng z&B}C!^)rO_56c&KRe~Z%@rQm_tAHg+lcX(KUV8-v2)sDMGN&89h5V6Dlb_X_@Uys) zT`TrjaSP#(8S!JA+mjWB?&5>ldSGP%ae?=i3Y>8+`?A7>yml`opf}LcXgcz5pb#aX zPChYN(d&J0PQ}cn^xK)(34uyj|4xb`M9hEJc;%g%jT%5ppxvp9=wdOdD*qi-(tOWe zWAk5I!I8A*M?OOa|J(ki4z3}y1zGe9 zb~ksokfERH?k3`}Yeov-nH;yZu8=}P1VWh5u~s;9Z&DkQ1ZMZ<`+hS7Y`1i^(gPQcW`zdvWxDn~T?)`nx?(6V(Z8IHhFfH#Mt1z~ysS zJF$kd=)_4n2YIC^9jrgo)suo}@b!Fd?9S7_sZqis6#|k= zbS70E=VTq80QM8?^G|GJAG%&c@*_#WoGtrR7ZMiJ*-p zxqC3`fda-w^a=@Bu(vgF76dD0iJ{E24Xb2OZd_5$5>w9Fylm~JttL8uO|b-H_KjCg z_)Qs)+>1Vk(_Z5gn#`$5`3B3eG+fDjsgy2(xv6ZYk`9tu=#Y-^5Vg}Y6p3~h6*e$5 zYCq2-&1c!u0J<~-(Jw!lg!}m&KYd2Wc%w@-Cakb!L8>H`{^Wj^!u^nfA!xb;65_x3 zm^J^4+g~>a-&+$}MkC@MH2I4J?JttKJfpZDe%UwYDq?Ntcd3L-qMHxN?>CX?sgq-A z4-K}FhYE4J!0;UMFV-Yn+gqiv^#2>V<*i&)49^C~Ow9TcG^F5kJ%#BOgYm|+!gbI* zjvV@it5Tv768E9pRDxMxn0I;)U=KgCzlS9L5Tc`BTvwmE2^X>D{I(xBdOnSHa*_T9 z1OKpepYxb{MCZ?TY0-KSUfs87S2%s^q4t4~-ZAyTG&ONU23{|8b?1W|OWe;Wu^-PG z*313LCjt6^rJ&hndX!Z0q+;>RNlp zD441BdfZv3r$RszVZpzjDdCcTex_!;Vvq11f+7j!{l$3!Q$%M~zH&p2kqWuCWZsqn zRnHnh=03;)*M)=4f~3Zgi+Q7c#BkTekWo|HtxO;Q0d=3>iXC7brF^XBe&RbZBYo?x z^xf0lGMOqtj_#EeUm-EkM=r+Rooo#wT9y}1hg@$xAmCc2dvm+aZb!qMnLbr>9yRsd2sg~U_IIa)OyC~XOl5_z+qhR~6!S|3X-SPqMW#KJKqKwp$ zibKw#VGb+;N21)K!X|SM#N@cM(AieNR)|&lrw8B_{QYdy+oi4}5uU$r=ilIfx1L|{ zm$(Lk5LuR_8Tdko)aj6pbbNxltpmZ|8|vyk)*|P9Czy_uT9nr8Ut%SqmB(_MEenKw zov>O&*2qBzly}%)ZVsKSU%f6ndq4kJRXv=Gdyj~yb+|rtMZ?B^C8w<$-raPlu_OVq zn^daCm$d-f>I)%pLkHPf(YL0u-bkv^&|IC=CFcUepO$wE!M8rN7)XD#w>9%OUYZJ6 z#U)SRFS)3$2^134#Q9##=#lHtKj^YSD;2_v4pR|N_wrU22#yp7J0gq8O1ylI<+XJp zOA}^aNG_}wKm8GRdF|=velSV*WRUlYv3xKrEpC)QgXrTu(P-wxrW2+@atjU{**q3~Ph5$L3p3moe&iS6}T;Fr9v%R=tspb@M5g8E#0wHdE60$@f z_#p&>4~Y`sAsY$b(s@lM)zq5IYpW*()$f)tj4}TAg3|7rR|* zjz9dyXqx;vG2HA@XwUfovzTUqZt0SwcKbOBl-Cf}= z=iLW5&jyoArl)f!C+64I);HD@xFhV@`pmK4^x>g_rQY6!_OX?b&UyCS+VsTg?+-Jq zx%IX7x#ptL?7rn?`~GiGPgmft!8>0(>*i)X>J7`rp55;W_o#>d8BD&xb_{w?tDh|4 zEOq4#J;>q2)y~b?^?$FZ8-B~%n25inxfNodFxYYWa}pI@U;11bfshb2hDg@IeG|R? zR~QCpgNrG|$YPYk!MKACf;mk%7KyX@ROZcBP6@F>RqikjUi^DM z;@IT2bB-F9{V|R?_9K(Xa}y7AtAx=%7GOADhP31=2-J5o^AV&sy`(5yrfHM`gaqk& zAU{Bo2X4UGiLe3GMuBi37Z0L=1pt6it1t>eM*Mdg)AehFUuoBoOA7FmJY=0{=Du&I zG&wC4y5<>AF)B>)g~+atR!GKVpQkdk{*Hc)m&4>AV-T zkqJZ{(9Z}kvi|F3^uQb)>jW)UpL3oup%QG5fA=5}^5Gc03qRLGD<5d9tvtJqdt#si z#NXzBk*5KiUP(*7LwAFSL-VKK5R-euJ7$yD9lJUAC57k+vFSyBN%Lf+u&zRcUcFW)5lDD%LwJ;^ubcd7r;1&`+K9oY6tleWWx>rTs& zHu>F|BFDt5fzl^aE8J{qDVLk`8iIHgMZ zlc6^1w`tC?r5m5Yr?NGeW5X@c8V3uFfm8!q zC?$c0=Q^4L&%a>WQI^SfgZT-4cR|aTJ+z&lc3D9!N%+Ip(R@fuvdRQ(<5;ni{6yp!)0SYL0$SdbqY0Vv zRDt9kAU!O9^)xjU+UfjxLN$*2WUT`~m(Rm54!TyNG`xS*%vTIxJzVUKPl0TKa|{XOSIXiRR~uQ zE8jjnIr6tRJr0=l5`tR`~1EGzRt(;?y2Ydx=t zV3#2Aar10>ir*nwC@Eu7o^8;BRb`sJ?p|}j*1?CzE7CqTbiuo#aQ5_2JA>*$xhk2x zqtYnRSKy1i;`!1R+RRT!jBz$_lc6 zL>tf)d7PBM{We92%Zpcz@{RuTOHp}7ancFZv?yDGO`9S-rBf z(O)L$P4aaa{zQ3b6fn4Vkn_v%G#*`g0?xgEClQB00TQA)gj4A# zn2u0@-&q<^pF4IkJKrq*jeNR~ZD1Bw6qNa^XJKi%L#QdebwU68PgORurlV-bs3G-v z=A>@(`6D}Ht(Sf+pE&ER&zu-pP(~w#oe2fxQ{1Y1Ma+7zi zx&>#MSk^)J)|=e7{qTZZ#&P`}-|j?K?=Tas!RdVT=;$oM(l$m#l^wypq4;2IyB#-k z*RAYCLH#B7y^V?eCu~5g*tX6$GVSx;+Tm)MFAo8i^?i?2YqIeYDb_B*-sC(sNrY*ZLpx%9{a61$9&mT~-E=p2soU z_A=9JS9|PhvL2hWyGYt#iQrqbuw6^Un+zBpd2UjL>}JOTB*yD%6TP%N74Zn>(DDK_h;>L@q8ESxZ4$nARjsJD1806u-QAja;zfftGC>f?Gii*JpoDSd0;D8krOyy2joQTu!*Bk z!2`^<67_(BLO03fwF-Uf{P#G?Iq$vp0I(GrgkMp4E0zrID9VBH_4Rp-habjJ1q^TK zT+BGG_=@~=(dYb%=;~ka3siH=h3H4dCg$$>yy4)%rytmqyOC8vx)}RfmJf6~TC_MI zN!DGceCtltk87=h6DMs>cy8UkD1*f#ADk>#EafQ~yh*YRQ+_>RO|4k@0ngNDKaQNg z*lp@&Tbs2tO6-pf$!uTiUR3yk~tJHw9up zcRMLVe&|CU?-<-dpw)3)hGEi@P>7C}{AEDb8`?~wIM0sYBTupT4sWWjUizT_hqi?F z#|(fS4njvmG_og-G@#Q1lI~K(TmenKcV+OwJjVCk5~M~?J=SRA?lU#7_{9c5oo?0& zp`4xjg}QKegW+Xxk)c*s2CImXm7cj6qT4eQ&lInSsq{AX^NUS`Cph8OSUNY4k+;Xh zs@z0rTpSlHMWeXsXjHIs+0+GVy_Im|3!(hTX;7r;#21VPvYoYZP8X|XG62ujCM2G5 zY^j0OZWcHbZEiE(3ch5O9k%%VpUm`M9jA^ovpezk;nE8 z%L*2FrVfTIMK$3;zH)nIOtb&tC4Of&|GDDu(QiWP0v^=FkSEQlqtW5<@F$&bc=*LBnu_g2N((_aRxt$q-hm#MGN z666)>GX)7{1(0@pt`z2>C}nl>ojl*{NoOkoyNbXK1%3SnqMbm4j~q?iJ9Pd~tKR$Z z^m$ppLExbc=&5&AoOB$RG!giofr|l$uEoUmc}69*A)5EWIVcUJkKq)twsaVK2y@X> zOJHEOfme;Wg!A~-hJz - - \ No newline at end of file diff --git a/code/addons/onboarding/src/stories/assets/context.png b/code/addons/onboarding/src/stories/assets/context.png deleted file mode 100644 index e5cd249a2d3adb58bd4c557405c9c1c0a4c340ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6119 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 - - - - - - - - - - - - - - diff --git a/code/addons/onboarding/src/stories/assets/docs.png b/code/addons/onboarding/src/stories/assets/docs.png deleted file mode 100644 index a749629df9ef3b4e20b86ab1a2482040df3ce8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27875 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

      hxL-UTbgFOs%C>cNb?R-MvpJYh!+yR< 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 TCS{<%00000NkvXXu0mjfa^c^P diff --git a/code/addons/onboarding/src/stories/assets/figma-plugin.png b/code/addons/onboarding/src/stories/assets/figma-plugin.png deleted file mode 100644 index 8f79b08cdf28f568a9bfc9d2fee39bd85d4831e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44246 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 isSD^m{OQ5>%G^J3Sw0|FW7|9c0000 - - diff --git a/code/addons/onboarding/src/stories/assets/share.png b/code/addons/onboarding/src/stories/assets/share.png deleted file mode 100644 index 8097a370777a782bbe52082a338584d04e62e796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40767 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 MsOkXq$~KYz50#aYqW}N^ diff --git a/code/addons/onboarding/src/stories/assets/testing.png b/code/addons/onboarding/src/stories/assets/testing.png deleted file mode 100644 index d4ac39a0ced924068b7625735c9bccac7b17f45d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49313 zcmbqYWm6nXvn5Ed0Kt863mQm*F0R2LI4r?~yDjeS3GVLhun^qcZE;vE*e((R+~@rb z_e)px>8dl`GiRixqtsO7aIh$_kdTmY6y&8fkdRQoNJz*S7%2ZCc<=2#{pZlDDSeaq z&)q#f-#t3pJ3jl*?i`)&9G-1&U;YQ~A6@*1Y#*HL9-X|tzW%v=xVX80ettf`zB{`@ zSoVtSAD_QUBb{BspPrsh{@lVYZVnF*udlC< JACFEikIt@6Pfrg{{#;&Oa(xoW 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�B6};G&Xp9}-Hnlio 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

      -ℹ️ Migrating from Storybook 6.x? + -We recommend first upgrading to Storybook 7, then upgrading to Storybook 8. +**Migrating from Storybook 6.x?** -To upgrade your project to Storybook 7, run: +We have a dedicated [migration guide for Storybook 6 to 8](./from-older-version.md). - - - - - - -Then reference the [Storybook 7 migration guide](../../release-7-6/docs/migration-guide) to ensure you address any relevant breaking changes or manual migrations. - -
      + ## Major breaking changes @@ -52,7 +37,9 @@ The rest of this guide will help you upgrade successfully, either automatically - [Svelte 4+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-svelte-4-and-up) - [Yarn 1 is no longer supported](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-yarn-1) -If any of these apply to your project, please read through the the linked migration notes before continuing. If any of these new requirements or changes do not fit your project, you should probably stick with Storybook 7.x. +If any of these changes apply to your project, please read through the linked migration notes before continuing. + +If any of these new requirements or changes are blockers for your project, we recommend to continue using Storybook 7.x. You may wish to read the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) before migrating. Or you can follow the instructions below and we’ll try to take care of everything for you! @@ -74,8 +61,10 @@ To upgrade your Storybook: This will: -1. Upgrade your Storybook dependencies to the latest version -2. Run a collection of _automigrations_, which will: +1. Determine that none of the [breaking changes](#major-breaking-changes) apply to your project + - If they do, you will receive instructions on how to resolve them before continuing +2. Upgrade your Storybook dependencies to the latest version +3. Run a collection of _automigrations_, which will: - Check for common upgrade tasks - Explain the necessary changes with links to more information - Ask for approval, then perform the task on your behalf @@ -119,13 +108,13 @@ Storybook architecture is focused on performance and now needs code that is stat -This will transform your stories into [CSF 1](/blog/component-story-format/) stories, which are story functions that don't accept [args](./writing-stories/args.md). These are fully supported in Storybook 8, and will continue to be for the foreseeable future. +This will transform your stories into [CSF 1](/blog/component-story-format/) stories, which are story functions that don't accept [args](../writing-stories/args.md). These are fully supported in Storybook 8, and will continue to be for the foreseeable future. -However, we recommend [writing all **new** stories in CSF 3](./writing-stories/index.md), which are story objects that are easier to write, reuse, and maintain. +However, we recommend [writing all **new** stories in CSF 3](../writing-stories/index.md), which are story objects that are easier to write, reuse, and maintain. ### `storiesOf` to dynamically created stories -If you are using `storiesOf` for its ability to dynamically create stories, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](/docs/api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. +If you are using `storiesOf` for its ability to dynamically create stories, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. ### `*.stories.mdx` to MDX+CSF @@ -151,7 +140,7 @@ You’ll also need to update your stories glob in `.storybook/main.js` to includ The automatic upgrade should get your Storybook into a working state. If you encounter an error running Storybook after upgrading, here’s what to do: -1. Try running the [`doctor` command](./api/cli-options.md#doctor) to check for common issues (such as duplicate dependencies, incompatible addons, or mismatched versions) and see suggestions for fixing them. +1. Try running the [`doctor` command](../api/cli-options.md#doctor) to check for common issues (such as duplicate dependencies, incompatible addons, or mismatched versions) and see suggestions for fixing them. 2. If you’re running `storybook` with the `dev` command, try using the `build` command instead. Sometimes `build` errors are more legible than `dev` errors! 3. Check [the full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800), which contains an exhaustive list of noteworthy changes in Storybook 8. Many of these are already handled by automigrations when you upgrade, but not all are. It’s also possible that you’re experiencing a corner case that we’re not aware of. 4. Search [Storybook issues on GitHub](https://github.com/storybookjs/storybook/issues). If you’re seeing a problem, there’s a good chance other people are too. If so, upvote the issue, try out any workarounds described in the comments, and comment back if you have useful info to contribute. diff --git a/docs/toc.js b/docs/toc.js index 601adf1c9218..b7ee152fb8c6 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -753,9 +753,16 @@ module.exports = { type: 'link', }, { - title: 'Migrate to 8.0', pathSegment: 'migration-guide', - type: 'link', + title: 'Migrate to 8.0', + type: 'heading', + children: [ + { + title: 'Migrate from 6.x to 8.0', + pathSegment: 'from-older-version', + type: 'link', + }, + ], }, ], }; From de94881b928d585ee949dab42fdefa2535b86d61 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Sat, 24 Feb 2024 12:03:12 +0100 Subject: [PATCH 350/430] bump --- code/package.json | 1 + code/yarn.lock | 674 ++++++++++++++++++++++++++-------------------- 2 files changed, 388 insertions(+), 287 deletions(-) diff --git a/code/package.json b/code/package.json index 2952f0062c92..065499ca7dbe 100644 --- a/code/package.json +++ b/code/package.json @@ -78,6 +78,7 @@ "resolutions": { "@playwright/test": "1.36.0", "@storybook/theming": "workspace:*", + "@types/node": "^18.0.0", "@vitest/expect@1.1.3": "patch:@vitest/expect@npm%3A1.1.3#~/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch", "esbuild": "^0.18.0", "playwright": "1.36.0", diff --git a/code/yarn.lock b/code/yarn.lock index 62a12fbdb66a..c0338dabe0c4 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -4281,9 +4281,9 @@ __metadata: linkType: hard "@pkgr/core@npm:^0.1.0": - version: 0.1.0 - resolution: "@pkgr/core@npm:0.1.0" - checksum: 8f4a0aa6cc1c445fec4f5f12157047e8a05e30b5c03441156f40203d6430f84d15135e8f1a6886e6c9800ff0e4a75d9d3419a43dbcd7490683f2882375a3b99a + version: 0.1.1 + resolution: "@pkgr/core@npm:0.1.1" + checksum: 3f7536bc7f57320ab2cf96f8973664bef624710c403357429fbf680a5c3b4843c1dbd389bb43daa6b1f6f1f007bb082f5abcb76bb2b5dc9f421647743b71d3d8 languageName: node linkType: hard @@ -7845,11 +7845,11 @@ __metadata: linkType: hard "@types/mdast@npm:^3.0.0": - version: 3.0.13 - resolution: "@types/mdast@npm:3.0.13" + version: 3.0.15 + resolution: "@types/mdast@npm:3.0.15" dependencies: "@types/unist": "npm:^2" - checksum: b328d1622075a67db1d8eac78dcbd55aefb4adaf63206b58abfce902c0ce5232a2674bd0bf961696c9a3765d5fcf145378ce03075bd1690a25adc617650f1228 + checksum: fcbf716c03d1ed5465deca60862e9691414f9c43597c288c7d2aefbe274552e1bbd7aeee91b88a02597e88a28c139c57863d0126fcf8416a95fdc681d054ee3d languageName: node linkType: hard @@ -7932,15 +7932,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:>=10.0.0, @types/node@npm:^20.0.0": - version: 20.11.1 - resolution: "@types/node@npm:20.11.1" - dependencies: - undici-types: "npm:~5.26.4" - checksum: f665cdce28b0b6e57338d1f74e0599ee9b10eac74cff729921c8f473807398e9aba2f8cf74c74a4d3dfbc2d616c73267da7de3003ed3c8152ea366bf4c96a91a - languageName: node - linkType: hard - "@types/node@npm:^18.0.0": version: 18.19.3 resolution: "@types/node@npm:18.19.3" @@ -8146,9 +8137,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0, @types/semver@npm:^7.5.6": - version: 7.5.6 - resolution: "@types/semver@npm:7.5.6" - checksum: 196dc32db5f68cbcde2e6a42bb4aa5cbb100fa2b7bd9c8c82faaaf3e03fbe063e205dbb4f03c7cdf53da2edb70a0d34c9f2e601b54281b377eb8dc1743226acd + version: 7.5.7 + resolution: "@types/semver@npm:7.5.7" + checksum: fb72d8b86a7779650f14ae89542f1da2ab624adb8188d98754b1d29a2fe3d41f0348bf9435b60ad145df1812fd2a09b3256779aa23b532c199f3dee59619a1eb languageName: node linkType: hard @@ -8396,14 +8387,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.18.1" + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" dependencies: "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.18.1" - "@typescript-eslint/type-utils": "npm:6.18.1" - "@typescript-eslint/utils": "npm:6.18.1" - "@typescript-eslint/visitor-keys": "npm:6.18.1" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/type-utils": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" debug: "npm:^4.3.4" graphemer: "npm:^1.4.0" ignore: "npm:^5.2.4" @@ -8416,7 +8407,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: fbcfae9b92f35ce10212f44f43f93c43f6eb3e28a571da7ed0d424396916aaf080f16ce91a5bffb9e1b42ca2d6003a3e2ad65131b4ef72ed2f94a4bedb35a735 + checksum: f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 languageName: node linkType: hard @@ -8469,12 +8460,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/type-utils@npm:6.18.1" +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:6.18.1" - "@typescript-eslint/utils": "npm:6.18.1" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.0.1" peerDependencies: @@ -8482,7 +8483,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 5198752a51649afd960205708c4d765e0170a46a1eb96c97e706890fecb2642933a6377337cf3632f9737915da0201607872a46c9c551d1accf9176b0e025023 + checksum: 7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 languageName: node linkType: hard @@ -8500,6 +8501,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -8537,6 +8545,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.62.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -8555,20 +8582,20 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/utils@npm:6.18.1" +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" "@types/json-schema": "npm:^7.0.12" "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.18.1" - "@typescript-eslint/types": "npm:6.18.1" - "@typescript-eslint/typescript-estree": "npm:6.18.1" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" semver: "npm:^7.5.4" peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: b9dcb2fa7cc8c46254c22fee190032320a5dd8ce282fb01e99cb35da6c00e33b157f4285b062d841942e9aad1d7ce1a16aaa46dd05ca7d81de706aedbbfff396 + checksum: ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d languageName: node linkType: hard @@ -8592,6 +8619,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -9857,13 +9894,13 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.2" - is-array-buffer: "npm:^3.0.1" - checksum: 12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20 + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 languageName: node linkType: hard @@ -9931,16 +9968,29 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.3": - version: 1.2.3 - resolution: "array.prototype.findlastindex@npm:1.2.3" +"array.prototype.filter@npm:^1.0.3": + version: 1.0.3 + resolution: "array.prototype.filter@npm:1.0.3" dependencies: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.1" - checksum: 2c5c4d3f07512d6729f728f6260a314c00f2eb0a243123092661fa1bc65dce90234c3b483b5f978396eccef6f69c50f0bea248448aaf9cdfcd1cedad6217acbb + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 8b70b5f866df5d90fa27aa5bfa30f5fefc44cbea94b0513699d761713658077c2a24cbf06aac5179eabddb6c93adc467af4c288b7a839c5bc5a769ee5a2d48ad + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.4 + resolution: "array.prototype.findlastindex@npm:1.2.4" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: b23ae35cf7621c82c20981ee110626090734a264798e781b052e534e3d61d576f03d125d92cf2e3672062bb5cc5907e02e69f2d80196a55f3cdb0197b4aa8c64 languageName: node linkType: hard @@ -9969,30 +10019,31 @@ __metadata: linkType: hard "array.prototype.tosorted@npm:^1.1.1": - version: 1.1.2 - resolution: "array.prototype.tosorted@npm:1.1.2" + version: 1.1.3 + resolution: "array.prototype.tosorted@npm:1.1.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.1" - checksum: aa222a0f78e9cdb4ea4d788a11f0acc2b17c2226f0912917e1c89e0f0c4dcdd14414ac88afffbd03025f33501f2649907cfb80664e48aa2af3430c1fb1b0b416 + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.1.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: a27e1ca51168ecacf6042901f5ef021e43c8fa04b6c6b6f2a30bac3645cd2b519cecbe0bc45db1b85b843f64dc3207f0268f700b4b9fbdec076d12d432cf0865 languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.2": - version: 1.0.2 - resolution: "arraybuffer.prototype.slice@npm:1.0.2" +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - is-array-buffer: "npm:^3.0.2" + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" is-shared-array-buffer: "npm:^1.0.2" - checksum: 96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb + checksum: d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 languageName: node linkType: hard @@ -10197,10 +10248,12 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660 +"available-typed-arrays@npm:^1.0.6, available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 languageName: node linkType: hard @@ -11350,14 +11403,16 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.1" - set-function-length: "npm:^1.1.1" - checksum: a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d languageName: node linkType: hard @@ -12957,14 +13012,14 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" dependencies: - get-intrinsic: "npm:^1.2.1" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: 77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 + checksum: dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 languageName: node linkType: hard @@ -13200,9 +13255,9 @@ __metadata: linkType: hard "diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: 77a0d9beb9ed54796154ac2511872288432124ac90a1cabb1878783c9b4d81f1847f3b746a0630b1e836181461d2c76e1e6b95559bef86ed16294d114862e364 + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 languageName: node linkType: hard @@ -13951,50 +14006,75 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1": - version: 1.22.2 - resolution: "es-abstract@npm:1.22.2" +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.22.4": + version: 1.22.4 + resolution: "es-abstract@npm:1.22.4" dependencies: - array-buffer-byte-length: "npm:^1.0.0" - arraybuffer.prototype.slice: "npm:^1.0.2" - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - es-set-tostringtag: "npm:^2.0.1" + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" es-to-primitive: "npm:^1.2.1" function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.1" - get-symbol-description: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" globalthis: "npm:^1.0.3" gopd: "npm:^1.0.1" - has: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.2" + hasown: "npm:^2.0.1" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" is-callable: "npm:^1.2.7" is-negative-zero: "npm:^2.0.2" is-regex: "npm:^1.1.4" is-shared-array-buffer: "npm:^1.0.2" is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.12" + is-typed-array: "npm:^1.1.13" is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.12.3" + object-inspect: "npm:^1.13.1" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - safe-array-concat: "npm:^1.0.1" - safe-regex-test: "npm:^1.0.0" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.0" + safe-regex-test: "npm:^1.0.3" string.prototype.trim: "npm:^1.2.8" string.prototype.trimend: "npm:^1.0.7" string.prototype.trimstart: "npm:^1.0.7" - typed-array-buffer: "npm:^1.0.0" + typed-array-buffer: "npm:^1.0.1" typed-array-byte-length: "npm:^1.0.0" typed-array-byte-offset: "npm:^1.0.0" typed-array-length: "npm:^1.0.4" unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.11" - checksum: a491c640a01b7c18f3cc626a3d08b5c67f8d3dac70ff8b4268cda6fa0ebed80bb028ff3ee731137512e054d39e98d02575144da904fe28045019fc59e503f1f8 + which-typed-array: "npm:^1.1.14" + checksum: dc332c3a010c5e7b77b7ea8a4532ac455fa02e7bcabf996a47447165bafa72d0d99967407d0cf5dbbb5fbbf87f53cd8b706608ec70953523b8cd2b831b9a9d64 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.0.0, es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 languageName: node linkType: hard @@ -14016,24 +14096,25 @@ __metadata: linkType: hard "es-iterator-helpers@npm:^1.0.12, es-iterator-helpers@npm:^1.0.15": - version: 1.0.15 - resolution: "es-iterator-helpers@npm:1.0.15" + version: 1.0.17 + resolution: "es-iterator-helpers@npm:1.0.17" dependencies: asynciterator.prototype: "npm:^1.0.0" - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.1" - es-set-tostringtag: "npm:^2.0.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.2.1" + es-abstract: "npm:^1.22.4" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" globalthis: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.5" + internal-slot: "npm:^1.0.7" iterator.prototype: "npm:^1.1.2" - safe-array-concat: "npm:^1.0.1" - checksum: b4c83f94bfe624260d5238092de3173989f76f1416b1d02c388aea3b2024174e5f5f0e864057311ac99790b57e836ca3545b6e77256b26066dac944519f5e6d6 + safe-array-concat: "npm:^1.1.0" + checksum: d0f281257e7165f068fd4fc3beb63d07ae4f18fbef02a2bbe4a39272b764164c1ce3311ae7c5429ac30003aef290fcdf569050e4a9ba3560e044440f68e9a47c languageName: node linkType: hard @@ -14051,23 +14132,23 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.1 - resolution: "es-set-tostringtag@npm:2.0.1" +"es-set-tostringtag@npm:^2.0.2": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" dependencies: - get-intrinsic: "npm:^1.1.3" - has: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.0" - checksum: 9af096365e3861bb29755cc5f76f15f66a7eab0e83befca396129090c1d9737e54090278b8e5357e97b5f0a5b0459fca07c40c6740884c2659cbf90ef8e508cc + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" dependencies: - has: "npm:^1.0.3" - checksum: d54a66239fbd19535b3e50333913260394f14d2d7adb136a95396a13ca584bab400cf9cb2ffd9232f3fe2f0362540bd3a708240c493e46e13fe0b90cfcfedc3d + hasown: "npm:^2.0.0" + checksum: f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 languageName: node linkType: hard @@ -15990,7 +16071,7 @@ __metadata: languageName: node linkType: hard -"function-bind@npm:^1.1.1, function-bind@npm:^1.1.2": +"function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 @@ -16123,15 +16204,16 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" dependencies: + es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" hasown: "npm:^2.0.0" - checksum: 4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b + checksum: 0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 languageName: node linkType: hard @@ -16195,13 +16277,14 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc languageName: node linkType: hard @@ -16642,19 +16725,19 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" dependencies: - get-intrinsic: "npm:^1.1.1" - checksum: d4ca882b6960d6257bd28baa3ddfa21f068d260411004a093b30ca357c740e11e985771c85216a6d1eef4161e862657f48c4758ec8ab515223b3895200ad164b + es-define-property: "npm:^1.0.0" + checksum: 253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0 +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 languageName: node linkType: hard @@ -16665,12 +16748,12 @@ __metadata: languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 + has-symbols: "npm:^1.0.3" + checksum: a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c languageName: node linkType: hard @@ -16720,13 +16803,6 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.4 - resolution: "has@npm:1.0.4" - checksum: 82c1220573dc1f0a014a5d6189ae52a1f820f99dfdc00323c3a725b5002dcb7f04e44f460fea7af068474b2dd7c88cbe1846925c84017be9e31e1708936d305b - languageName: node - linkType: hard - "hash-base@npm:^3.0.0": version: 3.1.0 resolution: "hash-base@npm:3.1.0" @@ -16769,12 +16845,12 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" +"hasown@npm:^2.0.0, hasown@npm:^2.0.1": + version: 2.0.1 + resolution: "hasown@npm:2.0.1" dependencies: function-bind: "npm:^1.1.2" - checksum: 5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc + checksum: 9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb languageName: node linkType: hard @@ -17426,9 +17502,9 @@ __metadata: linkType: hard "ignore@npm:^5.0.0, ignore@npm:^5.0.4, ignore@npm:^5.0.5, ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd languageName: node linkType: hard @@ -17593,14 +17669,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" dependencies: - get-intrinsic: "npm:^1.2.0" - has: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" side-channel: "npm:^1.0.4" - checksum: 66d8a66b4b5310c042e8ad00ce895dc55cb25165a3a7da0d7862ca18d69d3b1ba86511b4bf3baf4273d744d3f6e9154574af45189ef11135a444945309e39e4a + checksum: f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c languageName: node linkType: hard @@ -17703,14 +17779,13 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" dependencies: call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.0" - is-typed-array: "npm:^1.1.10" - checksum: 40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e + get-intrinsic: "npm:^1.2.1" + checksum: 42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 languageName: node linkType: hard @@ -17786,7 +17861,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.8.1": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" dependencies: @@ -18029,9 +18104,9 @@ __metadata: linkType: hard "is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3 + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e languageName: node linkType: hard @@ -18208,12 +18283,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.12 - resolution: "is-typed-array@npm:1.1.12" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" dependencies: - which-typed-array: "npm:^1.1.11" - checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae + which-typed-array: "npm:^1.1.14" + checksum: fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca languageName: node linkType: hard @@ -18922,13 +18997,20 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:3.2.0, jsonc-parser@npm:^3.0.0, jsonc-parser@npm:^3.2.0": +"jsonc-parser@npm:3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" checksum: 5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b languageName: node linkType: hard +"jsonc-parser@npm:^3.0.0, jsonc-parser@npm:^3.2.0": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 + languageName: node + linkType: hard + "jsonexport@npm:^3.0.1": version: 3.2.0 resolution: "jsonexport@npm:3.2.0" @@ -19381,12 +19463,12 @@ __metadata: linkType: hard "load-plugin@npm:^6.0.0": - version: 6.0.1 - resolution: "load-plugin@npm:6.0.1" + version: 6.0.2 + resolution: "load-plugin@npm:6.0.2" dependencies: "@npmcli/config": "npm:^8.0.0" import-meta-resolve: "npm:^4.0.0" - checksum: ae405fad041da559797ac479087ed41196619dbe695ab1e0816f12159658ee2c9f7d6faccfe3701f13223a0d85ea0ef79c67879cde86c0873f2650c7fed7d93a + checksum: 01d95e2928f48c09432e52d6c71aa3f278bcb5dd1c313c018c7955f4747755499678fe9e1adee0c3bd951440fa681aa1709ed193fa6a6314ca4a2bafcb4b7259 languageName: node linkType: hard @@ -22283,7 +22365,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": version: 1.13.1 resolution: "object-inspect@npm:1.13.1" checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d @@ -22316,7 +22398,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": version: 4.1.5 resolution: "object.assign@npm:4.1.5" dependencies: @@ -22351,14 +22433,15 @@ __metadata: linkType: hard "object.groupby@npm:^1.0.1": - version: 1.0.1 - resolution: "object.groupby@npm:1.0.1" + version: 1.0.2 + resolution: "object.groupby@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - checksum: 61e41fbf08cc04ed860363db9629eedeaa590fce243c0960e948fd7b11f78a9d4350065c339936d118a2dd8775d7259e26207340cc8ce688bec66cb615fec6fe + array.prototype.filter: "npm:^1.0.3" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + checksum: b6266b1cfec7eb784b8bbe0bca5dc4b371cf9dd3e601b0897d72fa97a5934273d8fb05b3fc5222204104dbec32b50e25ba27e05ad681f71fb739cc1c7e9b81b1 languageName: node linkType: hard @@ -23415,6 +23498,13 @@ __metadata: languageName: node linkType: hard +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + "postcss-loader@npm:7.3.3": version: 7.3.3 resolution: "postcss-loader@npm:7.3.3" @@ -24915,16 +25005,17 @@ __metadata: linkType: hard "reflect.getprototypeof@npm:^1.0.4": - version: 1.0.4 - resolution: "reflect.getprototypeof@npm:1.0.4" + version: 1.0.5 + resolution: "reflect.getprototypeof@npm:1.0.5" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.3" globalthis: "npm:^1.0.3" which-builtin-type: "npm:^1.1.3" - checksum: 02104cdd22658b637efe6b1df73658edab539268347327c8250a72d0cb273dcdf280c284e2d94155d22601d022d16be1a816a8616d679e447cbcbde9860d15cb + checksum: 68f2a21494a9f4f5acc19bda5213236aa7fc02f9953ce2b18670c63b9ca3dec294dcabbb9d394d98cd2fc0de46b7cd6354614a60a33cabdbb5de9a6f7115f9a6 languageName: node linkType: hard @@ -24995,14 +25086,15 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1": - version: 1.5.1 - resolution: "regexp.prototype.flags@npm:1.5.1" +"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - set-function-name: "npm:^2.0.0" - checksum: 1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 languageName: node linkType: hard @@ -25579,15 +25671,15 @@ __metadata: linkType: hard "resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 1de92669e7c46cfe125294c66d5405e13288bb87b97e9bdab71693ceebbcc0255c789bde30e2834265257d330d8ff57414d7d88e3097d8f69951f3ce978bf045 + checksum: a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a languageName: node linkType: hard @@ -25605,15 +25697,15 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#optional!builtin::version=2.0.0-next.4&hash=c3c19d" + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" dependencies: - is-core-module: "npm:^2.9.0" + is-core-module: "npm:^2.13.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: ed2bb51d616b9cd30fe85cf49f7a2240094d9fa01a221d361918462be81f683d1855b7f192391d2ab5325245b42464ca59690db5bd5dad0a326fc0de5974dd10 + checksum: 78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 languageName: node linkType: hard @@ -25889,15 +25981,15 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.0.1": - version: 1.0.1 - resolution: "safe-array-concat@npm:1.0.1" +"safe-array-concat@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-array-concat@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" + call-bind: "npm:^1.0.5" + get-intrinsic: "npm:^1.2.2" has-symbols: "npm:^1.0.3" isarray: "npm:^2.0.5" - checksum: 4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 + checksum: 833d3d950fc7507a60075f9bfaf41ec6dac7c50c7a9d62b1e6b071ecc162185881f92e594ff95c1a18301c881352dd6fd236d56999d5819559db7b92da9c28af languageName: node linkType: hard @@ -25922,14 +26014,14 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" is-regex: "npm:^1.1.4" - checksum: 14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2 + checksum: 900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 languageName: node linkType: hard @@ -26276,26 +26368,29 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" +"set-function-length@npm:^1.2.1": + version: 1.2.1 + resolution: "set-function-length@npm:1.2.1" dependencies: - define-data-property: "npm:^1.1.1" - get-intrinsic: "npm:^1.2.1" + define-data-property: "npm:^1.1.2" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.3" gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 + has-property-descriptors: "npm:^1.0.1" + checksum: 1927e296599f2c04d210c1911f1600430a5e49e04a6d8bb03dca5487b95a574da9968813a2ced9a774bd3e188d4a6208352c8f64b8d4674cdb021dca21e190ca languageName: node linkType: hard "set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": - version: 2.0.1 - resolution: "set-function-name@npm:2.0.1" + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" dependencies: - define-data-property: "npm:^1.0.1" + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.0" - checksum: 6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a + has-property-descriptors: "npm:^1.0.2" + checksum: fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 languageName: node linkType: hard @@ -28387,50 +28482,55 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-buffer@npm:1.0.0" +"typed-array-buffer@npm:^1.0.1": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - is-typed-array: "npm:^1.1.10" - checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da languageName: node linkType: hard "typed-array-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-length@npm:1.0.0" + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 languageName: node linkType: hard "typed-array-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-offset@npm:1.0.0" + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f languageName: node linkType: hard "typed-array-length@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" + version: 1.0.5 + resolution: "typed-array-length@npm:1.0.5" dependencies: - call-bind: "npm:^1.0.2" + call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" - is-typed-array: "npm:^1.1.9" - checksum: c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 5cc0f79196e70a92f8f40846cfa62b3de6be51e83f73655e137116cf65e3c29a288502b18cc8faf33c943c2470a4569009e1d6da338441649a2db2f135761ad5 languageName: node linkType: hard @@ -29646,9 +29746,9 @@ __metadata: linkType: hard "vscode-uri@npm:^3.0.3": - version: 3.0.7 - resolution: "vscode-uri@npm:3.0.7" - checksum: 67bc15bc9c9bd2d70dae8b27f2a3164281c6ee8f6484e6c5945a44d89871da93d52f2ba339ebc12ab0c10991d4576171b5d85e49a542454329c16faf977e4c59 + version: 3.0.8 + resolution: "vscode-uri@npm:3.0.8" + checksum: f7f217f526bf109589969fe6e66b71e70b937de1385a1d7bb577ca3ee7c5e820d3856a86e9ff2fa9b7a0bc56a3dd8c3a9a557d3fedd7df414bc618d5e6b567f9 languageName: node linkType: hard @@ -30255,16 +30355,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.11 - resolution: "which-typed-array@npm:1.1.11" +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.14 + resolution: "which-typed-array@npm:1.1.14" dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.5" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: 2cf4ce417beb50ae0ec3b1b479ea6d72d3e71986462ebd77344ca6398f77c7c59804eebe88f4126ce79f85edbcaa6c7783f54b0a5bf34f785eab7cbb35c30499 + has-tostringtag: "npm:^1.0.1" + checksum: 0960f1e77807058819451b98c51d4cd72031593e8de990b24bd3fc22e176f5eee22921d68d852297c786aec117689f0423ed20aa4fde7ce2704d680677891f56 languageName: node linkType: hard From 58a54fab4584a334c0c68db91b47525f9d2976fe Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Sat, 24 Feb 2024 12:40:42 +0100 Subject: [PATCH 351/430] arg, that explains it --- code/addons/onboarding/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 919a8e4792f8..ee3f943427d6 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.0.0-beta.4", + "version": "8.0.0-beta.5", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", From c29718de6204d544713cad496e9ebe141b769cca Mon Sep 17 00:00:00 2001 From: Benjamin Kindle Date: Sat, 24 Feb 2024 15:28:04 -0500 Subject: [PATCH 352/430] perf(manager): improve performance when switching stories 3 changes that add up to a moderate speed-up when switching stories, especially in projects where there are many (several hundred) stories. 1. Fuse and list within the Search component are now only calculated when needed (when the value of the search input changes), not on each render. 2. The value returned by LayoutProvider is now memoized. This has a moderate impact because this hook is used in Node within the sidebar, which may have hundreds of instances. Before this change, useLayout was causing Node to rerender every time, making its React.memo useless. 3. The list of items inside Tree is now memoized. This is helpful because this list is made by mapping over a very large list --- .../src/components/layout/LayoutProvider.tsx | 39 ++++---- .../manager/src/components/sidebar/Search.tsx | 10 +- .../manager/src/components/sidebar/Tree.tsx | 96 +++++++++++-------- 3 files changed, 85 insertions(+), 60 deletions(-) diff --git a/code/ui/manager/src/components/layout/LayoutProvider.tsx b/code/ui/manager/src/components/layout/LayoutProvider.tsx index ae088f6358d0..81c342e0546c 100644 --- a/code/ui/manager/src/components/layout/LayoutProvider.tsx +++ b/code/ui/manager/src/components/layout/LayoutProvider.tsx @@ -1,5 +1,5 @@ import type { FC, PropsWithChildren } from 'react'; -import React, { createContext, useContext, useState } from 'react'; +import React, { createContext, useContext, useMemo, useState } from 'react'; import { useMediaQuery } from '../hooks/useMedia'; import { BREAKPOINT } from '../../constants'; @@ -32,22 +32,29 @@ export const LayoutProvider: FC = ({ children }) => { const isDesktop = useMediaQuery(`(min-width: ${BREAKPOINT}px)`); const isMobile = !isDesktop; - return ( - - {children} - + const contextValue = useMemo( + () => ({ + isMobileMenuOpen, + setMobileMenuOpen, + isMobileAboutOpen, + setMobileAboutOpen, + isMobilePanelOpen, + setMobilePanelOpen, + isDesktop, + isMobile, + }), + [ + isMobileMenuOpen, + setMobileMenuOpen, + isMobileAboutOpen, + setMobileAboutOpen, + isMobilePanelOpen, + setMobilePanelOpen, + isDesktop, + isMobile, + ] ); + return {children}; }; export const useLayout = () => useContext(LayoutContext); diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index cbbecc8264a6..3939d1ea2a37 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -176,8 +176,8 @@ export const Search = React.memo<{ [api, inputRef, showAllComponents, DEFAULT_REF_ID] ); - const list: SearchItem[] = useMemo(() => { - return dataset.entries.reduce((acc, [refId, { index, status }]) => { + const makeFuse = useCallback(() => { + const list = dataset.entries.reduce((acc, [refId, { index, status }]) => { const groupStatus = getGroupStatus(index || {}, status); if (index) { @@ -196,12 +196,12 @@ export const Search = React.memo<{ } return acc; }, []); + return new Fuse(list, options); }, [dataset]); - const fuse = useMemo(() => new Fuse(list, options), [list]); - const getResults = useCallback( (input: string) => { + const fuse = makeFuse(); if (!input) return []; let results: DownshiftItem[] = []; @@ -229,7 +229,7 @@ export const Search = React.memo<{ return results; }, - [allComponents, fuse] + [allComponents, makeFuse] ); const stateReducer = useCallback( diff --git a/code/ui/manager/src/components/sidebar/Tree.tsx b/code/ui/manager/src/components/sidebar/Tree.tsx index d1a566bddf4c..42aa27ce694a 100644 --- a/code/ui/manager/src/components/sidebar/Tree.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.tsx @@ -481,55 +481,73 @@ export const Tree = React.memo<{ const groupStatus = useMemo(() => getGroupStatus(collapsedData, status), [collapsedData, status]); - return ( - 0}> - - {collapsedItems.map((itemId) => { - const item = collapsedData[itemId]; - const id = createId(itemId, refId); - - if (item.type === 'root') { - const descendants = expandableDescendants[item.id]; - const isFullyExpanded = descendants.every((d: string) => expanded[d]); - return ( - // @ts-expect-error (TODO) - - ); - } - - const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); - const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][1] : null; - + const treeItems = useMemo(() => { + return collapsedItems.map((itemId) => { + const item = collapsedData[itemId]; + const id = createId(itemId, refId); + + if (item.type === 'root') { + const descendants = expandableDescendants[item.id]; + const isFullyExpanded = descendants.every((d: string) => expanded[d]); return ( - itemId === oid || itemId.startsWith(`${oid}-`))} - isDisplayed={isDisplayed} + isOrphan={false} + isDisplayed isSelected={selectedStoryId === itemId} isExpanded={!!expanded[itemId]} setExpanded={setExpanded} + isFullyExpanded={isFullyExpanded} + expandableDescendants={descendants} onSelectStoryId={onSelectStoryId} /> ); - })} + } + + const isDisplayed = !item.parent || ancestry[itemId].every((a: string) => expanded[a]); + const color = groupStatus[itemId] ? statusMapping[groupStatus[itemId]][1] : null; + + return ( + itemId === oid || itemId.startsWith(`${oid}-`))} + isDisplayed={isDisplayed} + isSelected={selectedStoryId === itemId} + isExpanded={!!expanded[itemId]} + setExpanded={setExpanded} + onSelectStoryId={onSelectStoryId} + /> + ); + }); + }, [ + ancestry, + api, + collapsedData, + collapsedItems, + docsMode, + expandableDescendants, + expanded, + groupStatus, + onSelectStoryId, + orphanIds, + refId, + selectedStoryId, + setExpanded, + status, + ]); + return ( + 0}> + + {treeItems} ); }); From a945910ce3635b53543cf0b026fe1dad93318932 Mon Sep 17 00:00:00 2001 From: Anto Lepejian Date: Tue, 20 Feb 2024 10:44:30 +1100 Subject: [PATCH 353/430] done --- code/renderers/react/src/docs/jsxDecorator.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index e43702daf02f..3395a3860557 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -130,7 +130,7 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { return string; }).join('\n'); - return result.replace(/function\s+noRefCheck\(\)\s+\{\}/g, '() => {}'); + return result.replace(/function\s+noRefCheck\(\)\s*\{\}/g, '() => {}'); }; const defaultOpts = { From afaba9d36cd087b46d41fba176703120cae2634c Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 26 Feb 2024 10:12:20 +0100 Subject: [PATCH 354/430] Increase test timeout Prettier sometimes needs quite a long time to format a file in an isolated vitest environment. Increasing the initial timeout from 5s to 10s helps to prevent flaky tests --- code/vitest.workspace.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/vitest.workspace.ts b/code/vitest.workspace.ts index 9adcc717f753..56ce2861cea4 100644 --- a/code/vitest.workspace.ts +++ b/code/vitest.workspace.ts @@ -27,6 +27,7 @@ export const vitestCommonConfig = defineConfig({ clearMocks: true, setupFiles: [resolve(__dirname, './vitest-setup.ts')], globals: true, + testTimeout: 10000, poolOptions: { threads: { minThreads: threadCount, From f531de42c7da6d13f5230bdb3eeac18418658dd5 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 26 Feb 2024 21:17:16 +1100 Subject: [PATCH 355/430] Pass on errors about not having a real stats object in smoke tests --- code/lib/core-server/src/build-dev.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/code/lib/core-server/src/build-dev.ts b/code/lib/core-server/src/build-dev.ts index 63a4086405ab..d712b089baea 100644 --- a/code/lib/core-server/src/build-dev.ts +++ b/code/lib/core-server/src/build-dev.ts @@ -17,7 +17,11 @@ import { join, relative, resolve } from 'path'; import { deprecate } from '@storybook/node-logger'; import { dedent } from 'ts-dedent'; import { readFile } from 'fs-extra'; -import { MissingBuilderError } from '@storybook/core-events/server-errors'; +import { + Category, + MissingBuilderError, + NoStatsForViteDevError, +} from '@storybook/core-events/server-errors'; import { storybookDevServer } from './dev-server'; import { outputStats } from './utils/output-stats'; import { outputStartupInformation } from './utils/output-startup-information'; @@ -192,7 +196,16 @@ export async function buildDevStandalone( if (options.smokeTest) { const warnings: Error[] = []; warnings.push(...(managerStats?.toJson()?.warnings || [])); - warnings.push(...(previewStats?.toJson()?.warnings || [])); + try { + warnings.push(...(previewStats?.toJson()?.warnings || [])); + } catch (err) { + if (err instanceof NoStatsForViteDevError) { + // pass, the Vite builder has no warnings in the stats object anyway, but not stats at all + // in dev. + } else { + throw err; + } + } const problems = warnings .filter((warning) => !warning.message.includes(`export 'useInsertionEffect'`)) From 9a8acb77a7ff584818e63c524289edbe187aca14 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 26 Feb 2024 21:19:33 +1100 Subject: [PATCH 356/430] Remove unused import --- code/lib/core-server/src/build-dev.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/lib/core-server/src/build-dev.ts b/code/lib/core-server/src/build-dev.ts index d712b089baea..ce6a845565f6 100644 --- a/code/lib/core-server/src/build-dev.ts +++ b/code/lib/core-server/src/build-dev.ts @@ -17,11 +17,7 @@ import { join, relative, resolve } from 'path'; import { deprecate } from '@storybook/node-logger'; import { dedent } from 'ts-dedent'; import { readFile } from 'fs-extra'; -import { - Category, - MissingBuilderError, - NoStatsForViteDevError, -} from '@storybook/core-events/server-errors'; +import { MissingBuilderError, NoStatsForViteDevError } from '@storybook/core-events/server-errors'; import { storybookDevServer } from './dev-server'; import { outputStats } from './utils/output-stats'; import { outputStartupInformation } from './utils/output-startup-information'; From 974bfba1a2790024d374b8f02690d28cc2c258f0 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Mon, 26 Feb 2024 21:20:02 +1100 Subject: [PATCH 357/430] Improve comment --- code/lib/core-server/src/build-dev.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/core-server/src/build-dev.ts b/code/lib/core-server/src/build-dev.ts index ce6a845565f6..b55b5e22b8a7 100644 --- a/code/lib/core-server/src/build-dev.ts +++ b/code/lib/core-server/src/build-dev.ts @@ -196,8 +196,8 @@ export async function buildDevStandalone( warnings.push(...(previewStats?.toJson()?.warnings || [])); } catch (err) { if (err instanceof NoStatsForViteDevError) { - // pass, the Vite builder has no warnings in the stats object anyway, but not stats at all - // in dev. + // pass, the Vite builder has no warnings in the stats object anyway, + // but no stats at all in dev mode } else { throw err; } From e8b3c853b879fecc6a27ccd821fce96021187c23 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Mon, 26 Feb 2024 11:54:22 +0100 Subject: [PATCH 358/430] revert component values back to array --- .../src/modules/preview-web/docs-context/DocsContext.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.ts b/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.ts index 5c83e764ec02..b22ad4afe444 100644 --- a/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.ts +++ b/code/lib/preview-api/src/modules/preview-web/docs-context/DocsContext.ts @@ -17,7 +17,7 @@ import type { StoryStore } from '../../store'; import type { DocsContextProps } from './DocsContextProps'; export class DocsContext implements DocsContextProps { - private componentStoriesValue: Set>; + private componentStoriesValue: PreparedStory[]; private storyIdToCSFFile: Map>; @@ -38,7 +38,7 @@ export class DocsContext implements DocsContextProps /** The CSF files known (via the index) to be refererenced by this docs file */ csfFiles: CSFFile[] ) { - this.componentStoriesValue = new Set(); + this.componentStoriesValue = []; this.storyIdToCSFFile = new Map(); this.exportToStory = new Map(); this.exportsToCSFFile = new Map(); @@ -83,7 +83,7 @@ export class DocsContext implements DocsContextProps stories.forEach((story) => { this.nameToStoryId.set(story.name, story.id); - this.componentStoriesValue.add(story); + this.componentStoriesValue.push(story); if (!this.primaryStory) this.primaryStory = story; }); } @@ -207,7 +207,7 @@ export class DocsContext implements DocsContextProps }; componentStories = () => { - return Array.from(this.componentStoriesValue); + return this.componentStoriesValue; }; componentStoriesFromCSFFile = (csfFile: CSFFile) => { From c6086234108f16533622ad17d5a0894cbf8152a1 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 26 Feb 2024 14:54:39 +0100 Subject: [PATCH 359/430] Fix Yarn2Proxy findInstallations method --- .../core-common/src/js-package-manager/Yarn2Proxy.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts b/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts index 4b69af2c40ff..7d1361f5bde8 100644 --- a/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts +++ b/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts @@ -104,15 +104,10 @@ export class Yarn2Proxy extends JsPackageManager { } public async findInstallations(pattern: string[]) { + console.log(['info', '--name-only', '--recursive', ...pattern].join(' ')); const commandResult = await this.executeCommand({ command: 'yarn', - args: [ - 'info', - '--name-only', - '--recursive', - pattern.map((p) => `"${p}"`).join(' '), - `"${pattern}"`, - ], + args: ['info', '--name-only', '--recursive', ...pattern], env: { FORCE_COLOR: 'false', }, @@ -261,7 +256,7 @@ export class Yarn2Proxy extends JsPackageManager { lines.forEach((packageName) => { if ( !packageName || - !pattern.some((p) => new RegExp(`"${p.replace(/\*/g, '.*')}`).test(packageName)) + !pattern.some((p) => new RegExp(`${p.replace(/\*/g, '.*')}`).test(packageName)) ) { return; } From 8acdf1a978a00ac5ab1a06db3164454fa18e1c0f Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 26 Feb 2024 16:27:53 +0100 Subject: [PATCH 360/430] remove the autoblocker and run the codemod inside the automigration --- .../cli/src/autoblock/block-stories-mdx.ts | 32 ------------ code/lib/cli/src/autoblock/index.ts | 1 - .../fixes/bare-mdx-stories-glob.ts | 49 +++++++++++++------ code/lib/cli/src/migrate.ts | 8 ++- 4 files changed, 41 insertions(+), 49 deletions(-) delete mode 100644 code/lib/cli/src/autoblock/block-stories-mdx.ts diff --git a/code/lib/cli/src/autoblock/block-stories-mdx.ts b/code/lib/cli/src/autoblock/block-stories-mdx.ts deleted file mode 100644 index 3c1fadeda351..000000000000 --- a/code/lib/cli/src/autoblock/block-stories-mdx.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { createBlocker } from './types'; -import { dedent } from 'ts-dedent'; -import { glob } from 'glob'; - -export const blocker = createBlocker({ - id: 'storiesMdxUsage', - async check() { - const files = await glob('**/*.stories.mdx', { cwd: process.cwd() }); - if (files.length === 0) { - return false; - } - return { files }; - }, - log(options, data) { - return dedent` - Support for *.stories.mdx files has been removed. - Please see the migration guide for more information: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-storiesmdx-csf-in-mdx-format-and-mdx1-support - - Storybook will also require you to use MDX 3.0.0 or later. - Check the migration guide for more information: - https://mdxjs.com/blog/v3/ - - Found ${data.files.length} stories.mdx ${ - data.files.length === 1 ? 'file' : 'files' - }, these must be migrated. - - Manually run the migration script to convert your stories.mdx files to CSF format documented here: - https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf - `; - }, -}); diff --git a/code/lib/cli/src/autoblock/index.ts b/code/lib/cli/src/autoblock/index.ts index a6c45a2318ba..23b38721269c 100644 --- a/code/lib/cli/src/autoblock/index.ts +++ b/code/lib/cli/src/autoblock/index.ts @@ -8,7 +8,6 @@ const excludesFalse = (x: T | false): x is T => x !== false; const blockers: () => BlockerModule[] = () => [ // add/remove blockers here import('./block-storystorev6'), - import('./block-stories-mdx'), import('./block-dependencies-versions'), import('./block-node-version'), ]; diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts index 175e69c23b14..4dc8f3561eac 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts @@ -4,6 +4,8 @@ import semver from 'semver'; import type { StoriesEntry } from '@storybook/types'; import { updateMainConfig } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; +import { migrate } from '../../migrate'; +import { prompt } from 'prompts'; const logger = console; @@ -96,29 +98,48 @@ export const bareMdxStoriesGlob: Fix = { .map((entry) => JSON.stringify(entry, null, 2)) .join('\n'); return dedent` - We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files: - ${chalk.cyan(prettyExistingStoriesEntries)} - - In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. - - We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx. - That would result in the following 'stories' config: - ${chalk.cyan(prettyNextStoriesEntries)} - - To learn more about this change, see: ${chalk.yellow( - 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files' - )} - `; + We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files: + ${chalk.cyan(prettyExistingStoriesEntries)} + + In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. + + We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx. + That would result in the following 'stories' config: + ${chalk.cyan(prettyNextStoriesEntries)} + + To learn more about this change, see: ${chalk.yellow( + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files' + )} + `; }, - async run({ dryRun, mainConfigPath, result: { nextStoriesEntries } }) { + async run({ dryRun, mainConfigPath, result: { nextStoriesEntries }, packageManager }) { logger.info(dedent`βœ… Setting 'stories' config: ${JSON.stringify(nextStoriesEntries, null, 2)}`); if (!dryRun) { + const glob = await prompt({ + type: 'text', + name: 'glob', + message: 'Please enter the glob for your MDX stories', + initial: './src/**/*.stories.mdx', + }); + + await migrate('mdx-to-csf', { + glob, + runAutomigration: false, + }); + await updateMainConfig({ mainConfigPath, dryRun: !!dryRun }, async (main) => { main.setFieldValue(['stories'], nextStoriesEntries); }); + + logger.info(dedent` + The migration successfully updated your 'stories' config to include any .mdx file instead of just .stories.mdx. + + It also ran the 'mdx-to-csf' codemod to convert your MDX stories to CSF format. + This codemod is not perfect however, so you may need to manually fix any issues it couldn't handle. + `); } }, }; diff --git a/code/lib/cli/src/migrate.ts b/code/lib/cli/src/migrate.ts index 5e38507afd61..5f4c79d4ed99 100644 --- a/code/lib/cli/src/migrate.ts +++ b/code/lib/cli/src/migrate.ts @@ -10,11 +10,14 @@ import { getStorybookVersionSpecifier } from './helpers'; const logger = console; -export async function migrate(migration: any, { glob, dryRun, list, rename, parser }: any) { +export async function migrate( + migration: any, + { glob, dryRun, list, rename, parser, runAutomigration = true }: any +) { if (list) { listCodemods().forEach((key: any) => logger.log(key)); } else if (migration) { - if (migration === 'mdx-to-csf' && !dryRun) { + if (migration === 'mdx-to-csf' && !dryRun && runAutomigration) { const packageManager = JsPackageManagerFactory.getPackageManager(); const [packageJson, storybookVersion] = await Promise.all([ @@ -44,6 +47,7 @@ export async function migrate(migration: any, { glob, dryRun, list, rename, pars }); await addStorybookBlocksPackage(); } + await runCodemod(migration, { glob, dryRun, logger, rename, parser }); } else { throw new Error('Migrate: please specify a migration name or --list'); From 9b20b891856d7ae6f03d2596b05dc227bece2485 Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Mon, 26 Feb 2024 16:25:27 +0100 Subject: [PATCH 361/430] Don't show empty arg tables in doc pages --- code/ui/blocks/src/blocks/Controls.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/code/ui/blocks/src/blocks/Controls.tsx b/code/ui/blocks/src/blocks/Controls.tsx index 2adef888e66a..b7a1398c1994 100644 --- a/code/ui/blocks/src/blocks/Controls.tsx +++ b/code/ui/blocks/src/blocks/Controls.tsx @@ -59,16 +59,19 @@ export const Controls: FC = (props) => { const hasSubcomponents = Boolean(subcomponents) && Object.keys(subcomponents).length > 0; if (!hasSubcomponents) { - return ( - - ); + if (Object.keys(filteredArgTypes).length > 0 || Object.keys(args).length > 0) { + return ( + + ); + } + return null; } const mainComponentName = getComponentName(component); From 10b6e17ab8cdb85b4f0dcdde9bb76614435426ab Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 26 Feb 2024 08:32:30 -0700 Subject: [PATCH 362/430] Update migration guides - Remove babel breaking change mention --- docs/migration-guide/from-older-version.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index 9b39b74a96bb..de3f73f20c4c 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -16,7 +16,6 @@ This guide is meant to help you **upgrade from Storybook 6.x to 8.0** successful The rest of this guide will help you upgrade successfully, either automatically or manually. But first, we’ve accumulated a lot of breaking changes in both [Storybook 7](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#70-breaking-changes) and [Storybook 8](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800). Here are the most impactful changes you should know about before you go further: - [`framework` field is now mandatory](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api) -- [Babel mode v7 exclusively](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#babel-mode-v7-exclusively) - [Start and build CLI binaries removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed) - [`storiesOf` API has been removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removal-of-storiesof-api) - [`*.stories.mdx` format has been removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-storiesmdx-csf-in-mdx-format-and-mdx1-support) From 741cb275621cb265c7adc8453553622c7dc5fd86 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 26 Feb 2024 16:38:14 +0100 Subject: [PATCH 363/430] remove deprecation of `manager-api`'s `types` export --- code/lib/manager-api/src/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index 24e288782adc..d82d241ce7f5 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -520,7 +520,6 @@ export { addons } from './lib/addons'; /** * We need to rename this so it's not compiled to a straight re-export * Our globalization plugin can't handle an import and export of the same name in different lines - * @deprecated */ const typesX = types; From 1e163b809fb0454fb23cbca79a1095bc9ff0709b Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Mon, 26 Feb 2024 16:56:54 +0100 Subject: [PATCH 364/430] Fix overflow bug by using a better link --- code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts index 6a517fc0be0c..7dbc514d77b9 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts @@ -75,7 +75,8 @@ export const removeArgtypesRegex: Fix<{ argTypesRegex: NodePath; previewConfigPa Make sure to assign an explicit ${chalk.cyan('fn')} to your args for those usages. - For more information please visit our migration guide: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#implicit-actions-can-not-be-used-during-rendering-for-example-in-the-play-function + For more information please visit our docs: + https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function `; }, }; From 5853950d147880469006adc4e27a34ca7a5875cd Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 26 Feb 2024 11:32:18 -0700 Subject: [PATCH 365/430] Apply suggestions from code review Co-authored-by: jonniebigodes --- docs/migration-guide/from-older-version.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index de3f73f20c4c..e422a46b67ab 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -98,7 +98,7 @@ This shows the errors visually in your editor, which speeds things up a lot. Her ### `storiesOf` to CSF -Storybook architecture is focused on performance and now needs code that is statically analyzable. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): +Storybook architecture focuses on performance and now needs statically analyzable code. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): @@ -118,7 +118,7 @@ However, we recommend [writing all **new** stories in CSF 3](../writing-stories/ ### `storiesOf` to dynamically created stories -If you are using `storiesOf` for its ability to dynamically create stories, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. +If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. ### `*.stories.mdx` to MDX+CSF From 7e6efff8828e0ace4375ec6fb674bdcad8726a44 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 26 Feb 2024 11:26:01 -0700 Subject: [PATCH 366/430] Remove `*.stories.mdx` manual migration in 6 -> 8 - Per: https://github.com/storybookjs/storybook/pull/26201 --- docs/migration-guide/from-older-version.md | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index e422a46b67ab..5fe7cc1d5805 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -120,26 +120,6 @@ However, we recommend [writing all **new** stories in CSF 3](../writing-stories/ If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. -### `*.stories.mdx` to MDX+CSF - -Storybook now requires that MDX pages reference stories written in CSF, rather than the previous `.stories.mdx` hybrid approach. You can automatically convert your files using the following codemod (make sure to update the glob to fit your files): - - - - - - - -You’ll also need to update your stories glob in `.storybook/main.js` to include the newly created .mdx and .stories.js files if it doesn’t already. - -**Note:** this migration supports the Storybook 6 ["CSF stories with MDX docs"](https://github.com/storybookjs/storybook/blob/6e19f0fe426d58f0f7981a42c3d0b0384fab49b1/code/addons/docs/docs/recipes.md#csf-stories-with-mdx-docs) recipe. - ## Troubleshooting The automatic upgrade should get your Storybook into a working state. If you encounter an error running Storybook after upgrading, here’s what to do: From 0dab4522a7627bd84a433b9accd3c4a1fdf8da9f Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 26 Feb 2024 11:37:09 -0700 Subject: [PATCH 367/430] Address comments - Fix typos and small prose improvements --- docs/migration-guide/from-older-version.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index 5fe7cc1d5805..ff10fb7dd454 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -71,7 +71,7 @@ In addition to the automated upgrades above, there are manual migrations that mi ### Upgrade MDX1 to MDX3 -Storybook 8 uses MDX3 by default for rendering [docs](./writing-docs/index.md). The upgrade from MDX1 to MDX3 is not fully automated, due to the large number of changes between versions (particularly v1 to v2). Fortunately, we have some tips to help make it a lot easier. +Storybook 8 uses MDX3 by default for rendering [docs](./writing-docs/index.md). The upgrade from MDX1 to MDX3 is not fully automated due to the large number of changes between versions (particularly v1 to v2). Fortunately, we have some tips to help make it a lot easier. #### Automatically detect MDX2 errors with a CLI tool @@ -132,12 +132,12 @@ The automatic upgrade should get your Storybook into a working state. If you enc If you prefer to debug yourself, here are a few useful things you can do to help narrow down the problem: -1. Try removing all addons that are not in the `@storybook` npm namespace (make sure you don't remove the `storybook` package). Community addons that work well with 7.x might not yet be compatible with 8.0, and this is the fastest way to isolate that possibility. If you find an addon that needs to be upgraded to work with Storybook 8, please post an issue on the addon’s repository, or better yet, a PR to upgrade it! -2. Another debugging technique is to bisect to older prerelease versions of Storybook to figure out which release broke your Storybook. For example, assuming that the current prerelease of Storybook is `8.0.0-beta.56`, you could set the version to `8.0.0-alpha.0` in your `package.json` and reinstall to verify that it still works (`alpha.0` should be nearly identical to `7.6.x`). If it works, you could then try `8.0.0-beta.0`, then `8.0.0-beta.28` and so forth. Once you’ve isolated the bad release, read through its [CHANGELOG](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) entry and perhaps there’s a change that jumps out as the culprit. If you find the problem, please submit an issue or PR to the Storybook repo and we’ll do our best to take care of it quickly. +1. Try removing all addons that are not in the `@storybook` npm namespace (make sure you don't remove the `storybook` package). Community addons that work well with 7.x might not yet be compatible with 8.0, and this is the fastest way to isolate that possibility. If you find an addon that needs to be upgraded to work with Storybook 8, please post an issue on the addon’s repository, or better yet, a pull request to upgrade it! +2. Another debugging technique is to bisect to older prerelease versions of Storybook to figure out which release broke your Storybook. For example, assuming that the current prerelease of Storybook is `8.0.0-beta.56`, you could set the version to `8.0.0-alpha.0` in your `package.json` and reinstall to verify that it still works (`alpha.0` should be nearly identical to `7.6.x`). If it works, you could then try `8.0.0-beta.0`, then `8.0.0-beta.28` and so forth. Once you’ve isolated the bad release, read through its [CHANGELOG](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) entry and perhaps there’s a change that jumps out as the culprit. If you find the problem, please submit an issue or pull request to the Storybook monorepo and we’ll do our best to take care of it quickly. ## Optional migrations -In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are things that we’ve deprecated in Storybook 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. +In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are features that we’ve deprecated in Storybook 7 and 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. These include: From 0c44973d91e5118ebda57d296e779e254ab2f37d Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 26 Feb 2024 12:24:59 -0700 Subject: [PATCH 368/430] Further prose tweaks --- docs/migration-guide/from-older-version.md | 2 +- docs/migration-guide/index.md | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index ff10fb7dd454..0daae6461a93 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -118,7 +118,7 @@ However, we recommend [writing all **new** stories in CSF 3](../writing-stories/ ### `storiesOf` to dynamically created stories -If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. +If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept (with a deeper explanation of the implementation) can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). ## Troubleshooting diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index 79b265170879..b8fa2454e46a 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -94,7 +94,7 @@ In addition to the automated upgrades above, there are manual migrations that mi ### `storiesOf` to CSF -Storybook architecture is focused on performance and now needs code that is statically analyzable. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): +Storybook architecture focuses on performance and now needs statically analyzable code. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): @@ -114,7 +114,7 @@ However, we recommend [writing all **new** stories in CSF 3](../writing-stories/ ### `storiesOf` to dynamically created stories -If you are using `storiesOf` for its ability to dynamically create stories, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. +If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept (with a deeper explanation of the implementation) can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). ### `*.stories.mdx` to MDX+CSF @@ -148,12 +148,12 @@ The automatic upgrade should get your Storybook into a working state. If you enc If you prefer to debug yourself, here are a few useful things you can do to help narrow down the problem: -1. Try removing all addons that are not in the `@storybook` npm namespace (make sure you don't remove the `storybook` package). Community addons that work well with 7.x might not yet be compatible with 8.0, and this is the fastest way to isolate that possibility. If you find an addon that needs to be upgraded to work with Storybook 8, please post an issue on the addon’s repository, or better yet, a PR to upgrade it! -2. Another debugging technique is to bisect to older prerelease versions of Storybook to figure out which release broke your Storybook. For example, assuming that the current prerelease of Storybook is `8.0.0-beta.56`, you could set the version to `8.0.0-alpha.0` in your `package.json` and reinstall to verify that it still works (`alpha.0` should be nearly identical to `7.6.x`). If it works, you could then try `8.0.0-beta.0`, then `8.0.0-beta.28` and so forth. Once you’ve isolated the bad release, read through its [CHANGELOG](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) entry and perhaps there’s a change that jumps out as the culprit. If you find the problem, please submit an issue or PR to the Storybook repo and we’ll do our best to take care of it quickly. +1. Try removing all addons that are not in the `@storybook` npm namespace (make sure you don't remove the `storybook` package). Community addons that work well with 7.x might not yet be compatible with 8.0, and this is the fastest way to isolate that possibility. If you find an addon that needs to be upgraded to work with Storybook 8, please post an issue on the addon’s repository, or better yet, a pull request to upgrade it! +2. Another debugging technique is to bisect to older prerelease versions of Storybook to figure out which release broke your Storybook. For example, assuming that the current prerelease of Storybook is `8.0.0-beta.56`, you could set the version to `8.0.0-alpha.0` in your `package.json` and reinstall to verify that it still works (`alpha.0` should be nearly identical to `7.6.x`). If it works, you could then try `8.0.0-beta.0`, then `8.0.0-beta.28` and so forth. Once you’ve isolated the bad release, read through its [CHANGELOG](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) entry and perhaps there’s a change that jumps out as the culprit. If you find the problem, please submit an issue or pull request to the Storybook monorepo and we’ll do our best to take care of it quickly. ## Optional migrations -In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are things that we’ve deprecated in Storybook 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. +In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are features that we’ve deprecated in Storybook 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. These include: From 68c535031d93458638b1cd8b793f3551e1718856 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Tue, 27 Feb 2024 09:16:29 +0100 Subject: [PATCH 369/430] Add E2E test for multiple CSF files with same title in autodocs --- .../docs2/multiple-csf-files-a.stories.ts | 23 +++++++++++++++++++ .../docs2/multiple-csf-files-b.stories.ts | 23 +++++++++++++++++++ code/e2e-tests/addon-docs.spec.ts | 15 ++++++++++++ .../svelte/template/components/Html.svelte | 2 +- 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts create mode 100644 code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts diff --git a/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts b/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts new file mode 100644 index 000000000000..c77284a296f3 --- /dev/null +++ b/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts @@ -0,0 +1,23 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + title: 'Multiple CSF Files Same Title', + component: globalThis.Components.Html, + tags: ['autodocs'], + args: { + content: '

      paragraph

      ', + }, + parameters: { + chromatic: { disable: true }, + }, +}; + +export const DefaultA = {}; + +export const SpanContent = { + args: { content: 'span' }, +}; + +export const CodeContent = { + args: { content: 'code' }, +}; diff --git a/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts b/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts new file mode 100644 index 000000000000..955c04af9f9e --- /dev/null +++ b/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts @@ -0,0 +1,23 @@ +import { global as globalThis } from '@storybook/global'; + +export default { + title: 'Multiple CSF Files Same Title', + component: globalThis.Components.Html, + tags: ['autodocs'], + args: { + content: '

      paragraph

      ', + }, + parameters: { + chromatic: { disable: true }, + }, +}; + +export const DefaultB = {}; + +export const H1Content = { + args: { content: '

      heading 1

      ' }, +}; + +export const H2Content = { + args: { content: '

      heading 2

      ' }, +}; diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 4ae3da33e99e..72470acb62ab 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -210,4 +210,19 @@ test.describe('addon-docs', () => { await expect(componentReactVersion).toHaveText(expectedReactVersion); await expect(componentReactDomVersion).toHaveText(expectedReactVersion); }); + + test('should have stories from multiple CSF files in autodocs', async ({ page }) => { + const sbPage = new SbPage(page); + await sbPage.navigateToStory('/addons/docs/multiple-csf-files-same-title', 'docs'); + const root = sbPage.previewRoot(); + + const storyHeadings = root.locator('.sb-anchor > h3'); + await expect(await storyHeadings.count()).toBe(6); + await expect(storyHeadings.nth(0)).toHaveText('Default A'); + await expect(storyHeadings.nth(1)).toHaveText('Span Content'); + await expect(storyHeadings.nth(2)).toHaveText('Code Content'); + await expect(storyHeadings.nth(3)).toHaveText('Default B'); + await expect(storyHeadings.nth(4)).toHaveText('H 1 Content'); + await expect(storyHeadings.nth(5)).toHaveText('H 2 Content'); + }); }); diff --git a/code/renderers/svelte/template/components/Html.svelte b/code/renderers/svelte/template/components/Html.svelte index e341acf73280..bc155de5d4b1 100644 --- a/code/renderers/svelte/template/components/Html.svelte +++ b/code/renderers/svelte/template/components/Html.svelte @@ -5,4 +5,4 @@ export let content = ''; -
      {@html content}>
      +
      {@html content}
      From 6975de8286b4df20efa99f9c41938702b44707a9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 11:39:47 +0100 Subject: [PATCH 370/430] fix issues with types, change the comment to not be jsdoc --- code/lib/manager-api/src/index.tsx | 6 ++---- code/lib/types/src/modules/addons.ts | 7 ++++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/lib/manager-api/src/index.tsx b/code/lib/manager-api/src/index.tsx index d82d241ce7f5..fbb8b74a6420 100644 --- a/code/lib/manager-api/src/index.tsx +++ b/code/lib/manager-api/src/index.tsx @@ -517,10 +517,8 @@ export function useArgTypes(): ArgTypes { export { addons } from './lib/addons'; -/** - * We need to rename this so it's not compiled to a straight re-export - * Our globalization plugin can't handle an import and export of the same name in different lines - */ +// We need to rename this so it's not compiled to a straight re-export +// Our globalization plugin can't handle an import and export of the same name in different lines const typesX = types; export { typesX as types }; diff --git a/code/lib/types/src/modules/addons.ts b/code/lib/types/src/modules/addons.ts index fe4fa8551cfa..c1325e3f07ec 100644 --- a/code/lib/types/src/modules/addons.ts +++ b/code/lib/types/src/modules/addons.ts @@ -358,7 +358,12 @@ export interface Addon_BaseType { * This is called as a function, so if you want to use hooks, * your function needs to return a JSX.Element within which components are rendered */ - render: (renderOptions: Partial) => ReactElement | null; + render: (props: Partial) => ReturnType>>; + // TODO: for Storybook 9 I'd like to change this to be: + // render: FC>; + // This would bring it in line with how every other addon is set up. + // We'd need to change how the render function is called in the manager: + // https://github.com/storybookjs/storybook/blob/4e6fc0dde0842841d99cb3cf5148ca293a950301/code/ui/manager/src/components/preview/Preview.tsx#L105 /** * @unstable */ From ad9b18a8019971183dcb05c5cfb8790e600e681d Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:05:24 +0100 Subject: [PATCH 371/430] replace `as any` with slightly less worse code --- code/addons/onboarding/src/App.tsx | 9 +++++---- .../onboarding/src/features/GuidedTour/GuidedTour.tsx | 2 +- .../WriteStoriesModal/WriteStoriesModal.stories.tsx | 6 ++++-- .../src/features/WriteStoriesModal/WriteStoriesModal.tsx | 8 +++----- .../features/WriteStoriesModal/hooks/useGetProject.tsx | 3 ++- .../hooks/useGetWarningButtonStatus.tsx | 5 +---- code/addons/onboarding/src/preset.ts | 3 ++- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/code/addons/onboarding/src/App.tsx b/code/addons/onboarding/src/App.tsx index 909038799b1c..32ca454ce129 100644 --- a/code/addons/onboarding/src/App.tsx +++ b/code/addons/onboarding/src/App.tsx @@ -27,7 +27,8 @@ export default function App({ api }: { api: API }) { const skipOnboarding = useCallback(() => { // remove onboarding query parameter from current url const url = new URL(window.location.href); - const path = decodeURIComponent(url.searchParams.get('path') as any); + // @ts-expect-error (not strict) + const path = decodeURIComponent(url.searchParams.get('path')); url.search = `?path=${path}&onboarding=false`; history.replaceState({}, '', url.href); api.setQueryParams({ onboarding: 'false' }); @@ -121,7 +122,7 @@ export default function App({ api }: { api: API }) { onFirstTourDone={() => { setStep('3:WriteYourStory'); }} - codeSnippets={codeSnippets as any} + codeSnippets={codeSnippets || undefined} onLastTourDone={() => { try { api.selectStory('configure-your-project--docs'); @@ -136,10 +137,10 @@ export default function App({ api }: { api: API }) { }} /> )} - {enabled && step === '3:WriteYourStory' && ( + {enabled && step === '3:WriteYourStory' && codeSnippets && ( { try { diff --git a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx index 4e228ae9e794..c4fdcc240a2e 100644 --- a/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx +++ b/code/addons/onboarding/src/features/GuidedTour/GuidedTour.tsx @@ -23,7 +23,7 @@ export function GuidedTour({ }: { api: API; isFinalStep?: boolean; - codeSnippets: CodeSnippets; + codeSnippets?: CodeSnippets; onFirstTourDone: () => void; onLastTourDone: () => void; }) { diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index cd229875b446..d2284dbd913f 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -13,10 +13,12 @@ const meta: Meta = { component: WriteStoriesModal, args: { codeSnippets: typescriptSnippet, + // @ts-expect-error (bad) api: { getData, - } as any, + }, addonsStore: { + // @ts-expect-error (bad) getChannel: () => ({ once: (type: string, cb: () => void) => { if (type === STORY_RENDERED) { @@ -30,7 +32,7 @@ const meta: Meta = { }, off: () => {}, }), - } as any, + }, }, decorators: [ (storyFn, context) => { diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx index 1601fc2ecde4..b456b02240c9 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.tsx @@ -245,14 +245,12 @@ export const WriteStoriesModal: FC = ({

      Copy the Warning story. - + Open the Button story in your current working directory. @@ -263,7 +261,7 @@ export const WriteStoriesModal: FC = ({ )} - + Paste it at the bottom of the file and save. diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx index 58b55a474796..43ecdd89a174 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetProject.tsx @@ -31,7 +31,8 @@ export function useGetProject() { } catch (e) { setProject({ data: null, - error: e as any, + // @ts-expect-error (bad) + error: e, }); } }; diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx index 01bd7fe91176..8a26cca0d252 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx @@ -20,10 +20,7 @@ export const useGetWarningButtonStatus = (active: boolean, api: API, addonsStore }); }; - const addonStoreChannel: ReturnType = addonsStore.getChannel - ? addonsStore.getChannel() - : // TODO: Remove getServerChannel once we drop support for Storybook < 8 - (addonsStore as any).getServerChannel(); + const addonStoreChannel: ReturnType = addonsStore.getChannel(); // If the story already exists, we don't need to listen to any events if (api.getData('example-button--warning')) { diff --git a/code/addons/onboarding/src/preset.ts b/code/addons/onboarding/src/preset.ts index 7a01574f39ac..126a1dbda96d 100644 --- a/code/addons/onboarding/src/preset.ts +++ b/code/addons/onboarding/src/preset.ts @@ -23,7 +23,8 @@ export const experimental_serverChannel = async (channel: Channel, options: Opti channel.on(STORYBOOK_ADDON_ONBOARDING_CHANNEL, ({ type, ...event }: Event) => { if (type === 'telemetry') { - telemetry('addon-onboarding' as any, { + // @ts-expect-error (bad string) + telemetry('addon-onboarding', { ...event, addonVersion, }); From 2c2229271edd62fb344d3dd9e203aaf9033b5e0b Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:08:24 +0100 Subject: [PATCH 372/430] bundle in images into addon entries destined fro the browser --- scripts/prepare/addon-bundle.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scripts/prepare/addon-bundle.ts b/scripts/prepare/addon-bundle.ts index 752eb45b138c..719522c74902 100755 --- a/scripts/prepare/addon-bundle.ts +++ b/scripts/prepare/addon-bundle.ts @@ -85,11 +85,13 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { ], format: ['esm'], esbuildOptions: (options) => { - /* eslint-disable no-param-reassign */ options.conditions = ['module']; options.platform = 'browser'; + options.loader = { + ...options.loader, + '.png': 'dataurl', + }; Object.assign(options, getESBuildOptions(optimized)); - /* eslint-enable no-param-reassign */ }, }; @@ -124,10 +126,8 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { platform: 'neutral', external: [...commonExternals, ...globalManagerPackages, ...globalPreviewPackages], esbuildOptions: (options) => { - /* eslint-disable no-param-reassign */ options.platform = 'neutral'; Object.assign(options, getESBuildOptions(optimized)); - /* eslint-enable no-param-reassign */ }, }) ); @@ -173,10 +173,8 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { platform: 'node', external: commonExternals, esbuildOptions: (c) => { - /* eslint-disable no-param-reassign */ c.platform = 'node'; Object.assign(c, getESBuildOptions(optimized)); - /* eslint-enable no-param-reassign */ }, }) ); From 11525f54d1a3c95a9999d361f3cbe7ca9b04a556 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:10:43 +0100 Subject: [PATCH 373/430] remove try-catch as per https://github.com/storybookjs/storybook/pull/26176#discussion_r1503836860 --- code/addons/onboarding/src/App.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/addons/onboarding/src/App.tsx b/code/addons/onboarding/src/App.tsx index 32ca454ce129..795d52755238 100644 --- a/code/addons/onboarding/src/App.tsx +++ b/code/addons/onboarding/src/App.tsx @@ -143,11 +143,7 @@ export default function App({ api }: { api: API }) { codeSnippets={codeSnippets} addonsStore={addons} onFinish={() => { - try { - api.selectStory('example-button--primary'); - } catch (e) { - // - } + api.selectStory('example-button--primary'); setStep('4:VisitNewStory'); }} From c7b771a5d2b1488b0a3eca887f615fcfb172bc68 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:18:04 +0100 Subject: [PATCH 374/430] Apply suggestions from code review Co-authored-by: Valentin Palkovic --- code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts index 4dc8f3561eac..209caed85504 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts @@ -107,8 +107,10 @@ export const bareMdxStoriesGlob: Fix = { That would result in the following 'stories' config: ${chalk.cyan(prettyNextStoriesEntries)} + Additionally, we will run the `mdx-to-csf` codemod for you, which tries to transform `*.stories.mdx` files to `*.stories.js` and `*.mdx` files. + To learn more about this change, see: ${chalk.yellow( - 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files' + 'https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf' )} `; }, From 46fa0cb5488d9bd84426a72837ce0a035f35f20a Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:19:15 +0100 Subject: [PATCH 375/430] fix the suggested code --- code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts index 209caed85504..272a89a72144 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts @@ -107,7 +107,7 @@ export const bareMdxStoriesGlob: Fix = { That would result in the following 'stories' config: ${chalk.cyan(prettyNextStoriesEntries)} - Additionally, we will run the `mdx-to-csf` codemod for you, which tries to transform `*.stories.mdx` files to `*.stories.js` and `*.mdx` files. + Additionally, we will run the 'mdx-to-csf' codemod for you, which tries to transform '*.stories.mdx' files to '*.stories.js' and '*.mdx' files. To learn more about this change, see: ${chalk.yellow( 'https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf' From 5204e1d0a1c917eb5023304d633c85f4555ddb91 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:21:50 +0100 Subject: [PATCH 376/430] Update code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts Co-authored-by: Valentin Palkovic --- code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts index 272a89a72144..9fdcd1468d7a 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts +++ b/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts @@ -101,7 +101,7 @@ export const bareMdxStoriesGlob: Fix = { We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files: ${chalk.cyan(prettyExistingStoriesEntries)} - In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. + In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore `.stories.mdx` files aren't supported anymore. We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx. That would result in the following 'stories' config: From 5cb487186afea72814991a35e4d7a4e05e219b19 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:22:38 +0100 Subject: [PATCH 377/430] rename file --- .../{bare-mdx-stories-glob.test.ts => mdx-to-csf.test.ts} | 4 ++-- .../fixes/{bare-mdx-stories-glob.ts => mdx-to-csf.ts} | 0 code/lib/cli/src/migrate.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename code/lib/cli/src/automigrate/fixes/{bare-mdx-stories-glob.test.ts => mdx-to-csf.test.ts} (97%) rename code/lib/cli/src/automigrate/fixes/{bare-mdx-stories-glob.ts => mdx-to-csf.ts} (100%) diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts similarity index 97% rename from code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts rename to code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts index 27154a2a63a2..575956abf19f 100644 --- a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.test.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts @@ -4,8 +4,8 @@ import type { StorybookConfigRaw } from '@storybook/types'; import type { PackageJson } from '@storybook/core-common'; import { ansiRegex } from '../helpers/cleanLog'; import { makePackageManager } from '../helpers/testing-helpers'; -import type { BareMdxStoriesGlobRunOptions } from './bare-mdx-stories-glob'; -import { bareMdxStoriesGlob } from './bare-mdx-stories-glob'; +import type { BareMdxStoriesGlobRunOptions } from './mdx-to-csf'; +import { bareMdxStoriesGlob } from './mdx-to-csf'; const checkBareMdxStoriesGlob = async ({ packageJson, diff --git a/code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts similarity index 100% rename from code/lib/cli/src/automigrate/fixes/bare-mdx-stories-glob.ts rename to code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts diff --git a/code/lib/cli/src/migrate.ts b/code/lib/cli/src/migrate.ts index 5f4c79d4ed99..db800d1def0d 100644 --- a/code/lib/cli/src/migrate.ts +++ b/code/lib/cli/src/migrate.ts @@ -1,6 +1,6 @@ import { listCodemods, runCodemod } from '@storybook/codemod'; import { runFixes } from './automigrate'; -import { bareMdxStoriesGlob } from './automigrate/fixes/bare-mdx-stories-glob'; +import { bareMdxStoriesGlob } from './automigrate/fixes/mdx-to-csf'; import { JsPackageManagerFactory, getStorybookInfo, From 97577e5b6f2217453829efe562bfeb1fc930a7a7 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:31:15 +0100 Subject: [PATCH 378/430] fix suggested code --- code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts index 9fdcd1468d7a..937ec1c739cc 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts @@ -101,7 +101,7 @@ export const bareMdxStoriesGlob: Fix = { We've detected your project has one or more globs in your 'stories' config that matches .stories.mdx files: ${chalk.cyan(prettyExistingStoriesEntries)} - In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore `.stories.mdx` files aren't supported anymore. + In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore '.stories.mdx' files aren't supported anymore. We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx. That would result in the following 'stories' config: From bc377891e4462451b491c822cf492c5908cd290d Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:31:53 +0100 Subject: [PATCH 379/430] use migrate directly --- code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts index 937ec1c739cc..e055493678d9 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts @@ -4,7 +4,7 @@ import semver from 'semver'; import type { StoriesEntry } from '@storybook/types'; import { updateMainConfig } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; -import { migrate } from '../../migrate'; +import { runCodemod } from '@storybook/codemod'; import { prompt } from 'prompts'; const logger = console; @@ -127,10 +127,7 @@ export const bareMdxStoriesGlob: Fix = { initial: './src/**/*.stories.mdx', }); - await migrate('mdx-to-csf', { - glob, - runAutomigration: false, - }); + await runCodemod('mdx-to-csf', { glob }); await updateMainConfig({ mainConfigPath, dryRun: !!dryRun }, async (main) => { main.setFieldValue(['stories'], nextStoriesEntries); From c6273d267138fd0fe5a968b310d90d411c39856a Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 12:32:08 +0100 Subject: [PATCH 380/430] remove the `runAutomigration` flag --- code/lib/cli/src/migrate.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/lib/cli/src/migrate.ts b/code/lib/cli/src/migrate.ts index db800d1def0d..f559998ba3d3 100644 --- a/code/lib/cli/src/migrate.ts +++ b/code/lib/cli/src/migrate.ts @@ -10,14 +10,11 @@ import { getStorybookVersionSpecifier } from './helpers'; const logger = console; -export async function migrate( - migration: any, - { glob, dryRun, list, rename, parser, runAutomigration = true }: any -) { +export async function migrate(migration: any, { glob, dryRun, list, rename, parser }: any) { if (list) { listCodemods().forEach((key: any) => logger.log(key)); } else if (migration) { - if (migration === 'mdx-to-csf' && !dryRun && runAutomigration) { + if (migration === 'mdx-to-csf' && !dryRun) { const packageManager = JsPackageManagerFactory.getPackageManager(); const [packageJson, storybookVersion] = await Promise.all([ From f104e662ba59401d53b65e5caa4b1fcf48e8281b Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 12:36:08 +0100 Subject: [PATCH 381/430] Add story for empty argTypes and address review --- .../ui/blocks/src/blocks/Controls.stories.tsx | 15 ++++++++++-- code/ui/blocks/src/blocks/Controls.tsx | 24 +++++++++---------- .../src/examples/EmptyArgTypes.stories.tsx | 19 +++++++++++++++ 3 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 code/ui/blocks/src/examples/EmptyArgTypes.stories.tsx diff --git a/code/ui/blocks/src/blocks/Controls.stories.tsx b/code/ui/blocks/src/blocks/Controls.stories.tsx index 9d32d9fe12f1..598485dd93a6 100644 --- a/code/ui/blocks/src/blocks/Controls.stories.tsx +++ b/code/ui/blocks/src/blocks/Controls.stories.tsx @@ -6,17 +6,19 @@ import * as ExampleStories from '../examples/ControlsParameters.stories'; import * as SubcomponentsExampleStories from '../examples/ControlsWithSubcomponentsParameters.stories'; import { within } from '@storybook/test'; import type { PlayFunctionContext } from '@storybook/csf'; +import * as EmptyArgTypesStories from '../examples/EmptyArgTypes.stories'; -const meta: Meta = { +const meta = { component: Controls, parameters: { relativeCsfPaths: [ '../examples/ControlsParameters.stories', + '../examples/EmptyArgTypes.stories', '../examples/ControlsWithSubcomponentsParameters.stories', ], docsStyles: true, }, -}; +} satisfies Meta; export default meta; type Story = StoryObj; @@ -142,3 +144,12 @@ export const SubcomponentsSortProp: Story = { sort: 'alpha', }, }; + +/** + * When a story is defined without any argTypes or args, the Docs UI should not display the control component. + */ +export const EmptyArgTypes: Story = { + args: { + of: EmptyArgTypesStories.Default, + }, +}; diff --git a/code/ui/blocks/src/blocks/Controls.tsx b/code/ui/blocks/src/blocks/Controls.tsx index b7a1398c1994..f47194033f1d 100644 --- a/code/ui/blocks/src/blocks/Controls.tsx +++ b/code/ui/blocks/src/blocks/Controls.tsx @@ -59,19 +59,19 @@ export const Controls: FC = (props) => { const hasSubcomponents = Boolean(subcomponents) && Object.keys(subcomponents).length > 0; if (!hasSubcomponents) { - if (Object.keys(filteredArgTypes).length > 0 || Object.keys(args).length > 0) { - return ( - - ); + if (!(Object.keys(filteredArgTypes).length > 0 || Object.keys(args).length > 0)) { + return null; } - return null; + return ( + + ); } const mainComponentName = getComponentName(component); diff --git a/code/ui/blocks/src/examples/EmptyArgTypes.stories.tsx b/code/ui/blocks/src/examples/EmptyArgTypes.stories.tsx new file mode 100644 index 000000000000..b72fb9794acb --- /dev/null +++ b/code/ui/blocks/src/examples/EmptyArgTypes.stories.tsx @@ -0,0 +1,19 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import type { ControlsParameters } from './ControlsParameters'; +import React from 'react'; + +const meta = { + title: 'examples/Empty ArgTypes for Control blocks', + // note that component is not specified, so no argtypes can be generated + render: () =>
      I am a story without args or argTypes
      , + parameters: { chromatic: { disableSnapshot: true } }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +/** + * There are no argTypes or args, so this story won't show any controls in the docs page. + * In the control addon it will show a UI how to set up controls. + */ +export const Default: Story = {}; From 60c1184320e75a56b82e3a610e98a12c3bd2f1a9 Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 12:41:47 +0100 Subject: [PATCH 382/430] Revert "Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`" --- .../application/template-csf/.storybook/tsconfig.json | 2 +- .../library/template-csf/.storybook/tsconfig.json | 2 +- .../template/stories/component-play.stories.ts | 4 +--- scripts/tasks/sandbox-parts.ts | 10 +--------- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json index 84d7e7424a2c..eb06864100d8 100644 --- a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*.stories.*", "./preview.ts"], + "include": ["../src/**/*", "./preview.ts"], "files": ["./typings.d.ts"] } diff --git a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json index 957791d5bf3f..59daf738abdb 100644 --- a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*.stories.*", "./preview.ts"], + "include": ["../src/**/*", "./preview.ts"], "files": ["./typings.d.ts"] } diff --git a/code/lib/preview-api/template/stories/component-play.stories.ts b/code/lib/preview-api/template/stories/component-play.stories.ts index 08efe9847b1f..5eec8cb2e5cf 100644 --- a/code/lib/preview-api/template/stories/component-play.stories.ts +++ b/code/lib/preview-api/template/stories/component-play.stories.ts @@ -6,9 +6,7 @@ import { expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, play: async ({ canvasElement, name }: PlayFunctionContext) => { - await expect( - JSON.parse(within(canvasElement as HTMLPreElement).getByTestId('pre').innerText) - ).toEqual({ + await expect(JSON.parse(within(canvasElement).getByTestId('pre').innerText)).toEqual({ name, }); }, diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index cd7dc643a185..691f19b30f44 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -585,7 +585,7 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { // Set tsConfig compilerOptions - const tsConfigPath = join(cwd, '.storybook', 'tsconfig.json'); + const tsConfigPath = join(cwd, 'tsconfig.json'); const tsConfigContent = readFileSync(tsConfigPath, { encoding: 'utf-8' }); // This does not preserve comments, but that shouldn't be an issue for sandboxes const tsConfigJson = JSON5.parse(tsConfigContent); @@ -594,14 +594,6 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { tsConfigJson.compilerOptions.noPropertyAccessFromIndexSignature = false; tsConfigJson.compilerOptions.jsx = 'react'; tsConfigJson.compilerOptions.skipLibCheck = true; - tsConfigJson.compilerOptions.noImplicitAny = false; - tsConfigJson.compilerOptions.strict = false; - tsConfigJson.include = [ - ...tsConfigJson.include, - '../template-stories/**/*.stories.ts', - // This is necessary since template stories depend on globalThis.components, which Typescript can't look up automatically - '../src/stories/**/*', - ]; if (templateName === 'Angular CLI (Version 15)') { tsConfigJson.compilerOptions.paths = { From 40e0cea55b2a50d64181fa068641d51dc2cf3073 Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 12:52:21 +0100 Subject: [PATCH 383/430] Loosen tsconfig a bit for storybook --- scripts/tasks/sandbox-parts.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index 691f19b30f44..b8876234ddf4 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -585,7 +585,7 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { // Set tsConfig compilerOptions - const tsConfigPath = join(cwd, 'tsconfig.json'); + const tsConfigPath = join(cwd, '.storybook', 'tsconfig.json'); const tsConfigContent = readFileSync(tsConfigPath, { encoding: 'utf-8' }); // This does not preserve comments, but that shouldn't be an issue for sandboxes const tsConfigJson = JSON5.parse(tsConfigContent); @@ -594,6 +594,8 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { tsConfigJson.compilerOptions.noPropertyAccessFromIndexSignature = false; tsConfigJson.compilerOptions.jsx = 'react'; tsConfigJson.compilerOptions.skipLibCheck = true; + tsConfigJson.compilerOptions.noImplicitAny = false; + tsConfigJson.compilerOptions.strict = false; if (templateName === 'Angular CLI (Version 15)') { tsConfigJson.compilerOptions.paths = { From 26545827fcec336a33fc9196fb0f76b25d84e638 Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 12:53:33 +0100 Subject: [PATCH 384/430] Add template typechecking --- scripts/tasks/sandbox-parts.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index b8876234ddf4..196467aaa14e 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -597,6 +597,8 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { tsConfigJson.compilerOptions.noImplicitAny = false; tsConfigJson.compilerOptions.strict = false; + tsConfigJson.include = [...tsConfigJson.include, '../template-stories/**/*.stories.ts']; + if (templateName === 'Angular CLI (Version 15)') { tsConfigJson.compilerOptions.paths = { '@angular-devkit/*': ['node_modules/@angular-devkit/*'], From f01ad25fb6e35ed9097e75d41b8662d4c61eec70 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:34:59 +0100 Subject: [PATCH 385/430] Typo --- code/lib/cli/src/autoblock/block-storystorev6.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/lib/cli/src/autoblock/block-storystorev6.ts b/code/lib/cli/src/autoblock/block-storystorev6.ts index cd9eaffb6a7a..5e0f62f69ef5 100644 --- a/code/lib/cli/src/autoblock/block-storystorev6.ts +++ b/code/lib/cli/src/autoblock/block-storystorev6.ts @@ -21,12 +21,12 @@ export const blocker = createBlocker({ Please see the migration guide for more information: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated - In your Storybook configuration file you have this code: + In your Storybook configuration we found storyStoryV7 feature defined. For instance: export default = { - features: { - storyStoreV7: false, <--- remove this line - }, + features: { + storyStoreV7: false, <--- remove this line + }, }; You need to remove the storyStoreV7 property. From 2e1d7f9eaba574c5ef424bdb35ece0cad54fe828 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:35:24 +0100 Subject: [PATCH 386/430] Enhance formatting in autoblocks --- code/lib/cli/src/autoblock/index.test.ts | 11 +++++------ code/lib/cli/src/autoblock/index.ts | 11 +++++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/code/lib/cli/src/autoblock/index.test.ts b/code/lib/cli/src/autoblock/index.test.ts index 18be67a4e6d8..708675cb4db0 100644 --- a/code/lib/cli/src/autoblock/index.test.ts +++ b/code/lib/cli/src/autoblock/index.test.ts @@ -74,9 +74,8 @@ test('1 fail', async () => { ]); expect(result).toBe('alwaysFail'); - expect(logger.plain).toHaveBeenCalledWith(expect.stringContaining('Oh no..')); - expect(stripAnsi(logger.plain.mock.calls[1][0])).toMatchInlineSnapshot(` - "Blocking your upgrade because of the following issues: + expect(stripAnsi(logger.plain.mock.calls[0][0])).toMatchInlineSnapshot(` + "Storybook has found potential blockers in your project that need to be resolved before upgrading: Always fail @@ -90,11 +89,11 @@ test('multiple fails', async () => { Promise.resolve({ blocker: blockers.alwaysFail }), Promise.resolve({ blocker: blockers.alwaysFail2 }), ]); - expect(stripAnsi(logger.plain.mock.calls[1][0])).toMatchInlineSnapshot(` - "Blocking your upgrade because of the following issues: + expect(stripAnsi(logger.plain.mock.calls[0][0])).toMatchInlineSnapshot(` + "Storybook has found potential blockers in your project that need to be resolved before upgrading: Always fail - + ───────────────────────────────────────────────── Always fail 2 Fix the above issues and try running the upgrade command again." diff --git a/code/lib/cli/src/autoblock/index.ts b/code/lib/cli/src/autoblock/index.ts index 23b38721269c..65567bd35223 100644 --- a/code/lib/cli/src/autoblock/index.ts +++ b/code/lib/cli/src/autoblock/index.ts @@ -14,6 +14,8 @@ const blockers: () => BlockerModule[] = () => [ type BlockerModule = Promise<{ blocker: Blocker }>; +const segmentDivider = '\n─────────────────────────────────────────────────\n'; + export const autoblock = async ( options: AutoblockOptions, list: BlockerModule[] = blockers() @@ -44,18 +46,19 @@ export const autoblock = async ( if (faults.length > 0) { const messages = { - welcome: `Blocking your upgrade because of the following issues:`, + welcome: `Storybook has found potential blockers in your project that need to be resolved before upgrading:`, reminder: chalk.yellow('Fix the above issues and try running the upgrade command again.'), }; const borderColor = '#FC521F'; - logger.plain('Oh no..'); logger.plain( boxen( [messages.welcome] - .concat(faults.map((i) => i.log)) + .concat(['\n\n']) + .concat([faults.map((i) => i.log).join(segmentDivider)]) + .concat(['\n\n']) .concat([messages.reminder]) - .join('\n\n'), + .join(''), { borderStyle: 'round', padding: 1, borderColor } ) ); From da2fb070d128794bd6393989d0564418abead40b Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:35:40 +0100 Subject: [PATCH 387/430] Reorder automigrations --- code/lib/cli/src/automigrate/fixes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index 48e472c5220a..eda7be7f6932 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -36,8 +36,8 @@ export const allFixes: Fix[] = [ builderVite, sbBinary, sbScripts, - removeArgtypesRegex, removeJestTestingLibrary, + removeArgtypesRegex, removedGlobalClientAPIs, mdxgfm, autodocsTrue, From 447cf31a9a24eabab4e96d9d37f1ae55e951983b Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:35:53 +0100 Subject: [PATCH 388/430] Clarify on automigration for argtypes regex --- .../automigrate/fixes/remove-argtypes-regex.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts index f393ee2f6588..3528422a6197 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts @@ -60,23 +60,18 @@ export const removeArgtypesRegex: Fix<{ argTypesRegex: NodePath; previewConfigPa ${argTypesRegex.buildCodeFrameError(`${previewConfigPath}`).message} - Since Storybook 8, we recommend removing this regex. - Assign explicit spies with the ${chalk.cyan('fn')} function instead: - ${formattedSnippet} - - The above pattern is needed when using spies in the play function, ${chalk.bold( - 'even' - )} if you keep using argTypesRegex. - Implicit spies (based on a combination of argTypesRegex and docgen) is not supported in Storybook 8. + In Storybook you can write so-called play functions, which are used to render your stories interactively. + Mocking action args in play functions was done implicitly by analyzing the argTypesRegex. + + Since Storybook 8, implicit action args mocking isn't supported anymore. Use the following command to check for spy usages in your play functions: ${chalk.cyan( 'npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"' )} - Make sure to assign an explicit ${chalk.cyan('fn')} to your args for those usages. - - For more information please visit our migration guide: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#implicit-actions-can-not-be-used-during-rendering-for-example-in-the-play-function + And follow the documentation to migrate your play functions: + https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function `; }, }; From 7cf27270c1f3ec2ce28ea1e66128303cd2098d61 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:37:08 +0100 Subject: [PATCH 389/430] Enhance wording in `remove-jest-testing-library` automigration --- .../fixes/remove-jest-testing-library.test.ts | 6 ++-- .../fixes/remove-jest-testing-library.ts | 35 ++++++++++++++++--- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts index 29f6b391566f..c96a65fd614f 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts @@ -33,7 +33,7 @@ it('should prompt to install the test package and run the codemod', async () => main: { addons: ['@storybook/essentials', '@storybook/addon-info'] }, }); - await expect(options).toMatchInlineSnapshot(` + expect(options).toMatchInlineSnapshot(` { "incompatiblePackages": [ "@storybook/jest", @@ -56,9 +56,9 @@ it('should prompt to install the test package and run the codemod', async () => - @storybook/jest - @storybook/testing-library - Install the replacement for those packages: @storybook/test + We will uninstall them for you and install @storybook/test instead. - And run the following codemod: + Also, we will apply the following codemod to your stories to automatically migrate them to the new package: npx storybook migrate migrate-to-test-package --glob="**/*.stories.@(js|jsx|ts|tsx)" `); }); diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts index 82ebfb7315de..4dd1060a12f3 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts @@ -1,11 +1,14 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import type { Fix } from '../types'; +import { getStorybookVersionSpecifier } from '../../helpers'; +import { runCodemod } from '@storybook/codemod'; +import prompts from 'prompts'; export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = { id: 'remove-jest-testing-library', versionRange: ['<8.0.0-alpha.0', '>=8.0.0-alpha.0'], - promptType: 'manual', + promptType: 'auto', async check({ packageManager }) { const deps = await packageManager.getAllDependencies(); @@ -22,12 +25,36 @@ export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = ${incompatiblePackages.map((name) => `- ${chalk.cyan(`${name}`)}`).join('\n')} - Install the replacement for those packages: ${chalk.cyan('@storybook/test')} - - And run the following codemod: + We will uninstall them for you and install ${chalk.cyan('@storybook/test')} instead. + + Also, we will apply the following codemod to your stories to automatically migrate them to the new package: ${chalk.cyan( 'npx storybook migrate migrate-to-test-package --glob="**/*.stories.@(js|jsx|ts|tsx)"' )} `; }, + async run({ packageManager, dryRun }) { + if (!dryRun) { + await packageManager.removeDependencies({ skipInstall: true }, [ + '@storybook/jest', + '@storybook/testing-library', + ]); + + const versionToInstall = getStorybookVersionSpecifier( + await packageManager.retrievePackageJson() + ); + + await packageManager.addDependencies({}, [`@storybook/test@${versionToInstall}`]); + + const glob = await prompts({ + type: 'text', + name: 'glob', + message: 'Please enter the glob for your stories to migrate to @storybook/test', + initial: './src/**/*.stories.*', + }); + + await runCodemod('migrate-to-test-package', { glob, dryRun }); + } + // apply the migrate-to-test-package codemod + }, }; From 39628e8d74078a05d0147fceaedc65790da965a7 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:37:27 +0100 Subject: [PATCH 390/430] Fix legacy-mdx-1 automigration --- code/lib/cli/src/automigrate/fixes/remove-legacymdx1.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-legacymdx1.ts b/code/lib/cli/src/automigrate/fixes/remove-legacymdx1.ts index 4045fc800cba..e934c09b7f9c 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-legacymdx1.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-legacymdx1.ts @@ -17,14 +17,14 @@ interface RemoveLegacyMDX1Options { * If so, prompt them to upgrade to delete it. */ export const removeLegacyMDX1: Fix = { - id: 'builder-vite', + id: 'remove-legacy-mdx1', versionRange: ['<8.0.0-alpha.0', '>=8.0.0-alpha.0'], async check({ mainConfig }) { - if (mainConfig.features) { + if (mainConfig.features && Object.hasOwn(mainConfig.features, 'legacyMdx1')) { // return { - hasFeature: !!Object.hasOwn(mainConfig.features, 'legacyMdx1'), + hasFeature: true, }; } From 0f860da75856ce0944646a1503a24c7dbc1dfce7 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:37:51 +0100 Subject: [PATCH 391/430] Remove duplicate migration key on storyshots migration --- code/lib/cli/src/automigrate/fixes/storyshots-migration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/storyshots-migration.ts b/code/lib/cli/src/automigrate/fixes/storyshots-migration.ts index 8b51fead9f3e..deba1b9df901 100644 --- a/code/lib/cli/src/automigrate/fixes/storyshots-migration.ts +++ b/code/lib/cli/src/automigrate/fixes/storyshots-migration.ts @@ -3,7 +3,7 @@ import dedent from 'ts-dedent'; import type { Fix } from '../types'; export const storyshotsMigration: Fix = { - id: 'storyshots-migration', + id: 'storyshots', versionRange: ['<8.0.0-alpha.0', '>=8.0.0-alpha.0'], promptType: 'manual', From 0190219ad84ab36b775de647cc1092ddd33e118c Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 13:38:03 +0100 Subject: [PATCH 392/430] Fix link in migration summary --- code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts index 1dcd0a0658c7..aa0503865749 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts @@ -70,7 +70,7 @@ export function getMigrationSummary({ The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. Please check the changelog and migration guide for manual migrations and more information: ${chalk.yellow( - 'https://storybook.js.org/migration-guides/7.0' + 'https://storybook.js.org/docs/8.0/migration-guide' )} And reach out on Discord if you need help: ${chalk.yellow('https://discord.gg/storybook')} `); From 01d0f7f5f5458a84ed21467b5c9c20bb1c05c035 Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 14:00:49 +0100 Subject: [PATCH 393/430] Fix build sandboxes --- .../preview-api/template/stories/component-play.stories.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/lib/preview-api/template/stories/component-play.stories.ts b/code/lib/preview-api/template/stories/component-play.stories.ts index 5eec8cb2e5cf..08efe9847b1f 100644 --- a/code/lib/preview-api/template/stories/component-play.stories.ts +++ b/code/lib/preview-api/template/stories/component-play.stories.ts @@ -6,7 +6,9 @@ import { expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, play: async ({ canvasElement, name }: PlayFunctionContext) => { - await expect(JSON.parse(within(canvasElement).getByTestId('pre').innerText)).toEqual({ + await expect( + JSON.parse(within(canvasElement as HTMLPreElement).getByTestId('pre').innerText) + ).toEqual({ name, }); }, From aefa17aa3e2c5ee87153b58fae77202cd24a8975 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 14:08:40 +0100 Subject: [PATCH 394/430] cleanup --- code/ui/manager/src/components/sidebar/Search.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ui/manager/src/components/sidebar/Search.tsx b/code/ui/manager/src/components/sidebar/Search.tsx index 3939d1ea2a37..0df164a2d35b 100644 --- a/code/ui/manager/src/components/sidebar/Search.tsx +++ b/code/ui/manager/src/components/sidebar/Search.tsx @@ -5,7 +5,7 @@ import Downshift from 'downshift'; import type { FuseOptions } from 'fuse.js'; import Fuse from 'fuse.js'; import { global } from '@storybook/global'; -import React, { useMemo, useRef, useState, useCallback } from 'react'; +import React, { useRef, useState, useCallback } from 'react'; import { CloseIcon, SearchIcon } from '@storybook/icons'; import { DEFAULT_REF_ID } from './Sidebar'; import type { From 0496de912ce97ef38b6c63c85f89415def1f96ed Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 14:28:51 +0100 Subject: [PATCH 395/430] Update code/addons/onboarding/src/App.tsx Co-authored-by: Valentin Palkovic --- code/addons/onboarding/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/addons/onboarding/src/App.tsx b/code/addons/onboarding/src/App.tsx index 795d52755238..e561c55cea1c 100644 --- a/code/addons/onboarding/src/App.tsx +++ b/code/addons/onboarding/src/App.tsx @@ -143,7 +143,7 @@ export default function App({ api }: { api: API }) { codeSnippets={codeSnippets} addonsStore={addons} onFinish={() => { - api.selectStory('example-button--primary'); + api.selectStory('example-button--warning'); setStep('4:VisitNewStory'); }} From 679f8223eb073d4ed539266f2b9a81e787f5a00e Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 14:34:48 +0100 Subject: [PATCH 396/430] Typo --- code/lib/cli/src/autoblock/block-dependencies-versions.ts | 2 +- code/lib/cli/src/automigrate/fixes/mdx-gfm.ts | 2 +- code/lib/cli/src/automigrate/types.ts | 2 +- code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/lib/cli/src/autoblock/block-dependencies-versions.ts b/code/lib/cli/src/autoblock/block-dependencies-versions.ts index 3bde65192ef2..45b5181dee0c 100644 --- a/code/lib/cli/src/autoblock/block-dependencies-versions.ts +++ b/code/lib/cli/src/autoblock/block-dependencies-versions.ts @@ -81,7 +81,7 @@ export const blocker = createBlocker({ default: return dedent` Support for ${data.packageName} version < ${data.minimumVersion} has been removed. - Since version 8, Storybook needs minimum version of ${data.minimumVersion}, but you had version ${data.installedVersion}. + Since version 8, Storybook needs a minimum version of ${data.minimumVersion}, but you have version ${data.installedVersion}. Please update this dependency. `; diff --git a/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts b/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts index 2f3c570d4522..98bcaa736b87 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-gfm.ts @@ -84,7 +84,7 @@ export const mdxgfm: Fix = { Because of this you need to explicitly add the GFM plugin in the addon-docs options: https://storybook.js.org/docs/react/writing-docs/mdx#lack-of-github-flavored-markdown-gfm - We recommend you follow the guide on the link above, however we can add a temporary Storybook addon that helps make this migration easier. + We recommend that you follow the guide in the link above; however, we can add a temporary Storybook addon to help make this migration easier. We'll install the addon and add it to your storybook config. `; }, diff --git a/code/lib/cli/src/automigrate/types.ts b/code/lib/cli/src/automigrate/types.ts index 80cc4e74defc..36b4bac18c47 100644 --- a/code/lib/cli/src/automigrate/types.ts +++ b/code/lib/cli/src/automigrate/types.ts @@ -23,7 +23,7 @@ export interface RunOptions { * promptType defines how the user will be prompted to apply an automigration fix * - auto: the fix will be applied automatically * - manual: the user will be prompted to apply the fix - * - notification: the user will be notified about some changes. A fix isn't required, thought + * - notification: the user will be notified about some changes. A fix isn't required, though */ export type Prompt = 'auto' | 'manual' | 'notification'; diff --git a/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts b/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts index 7d1361f5bde8..09f535e2dfa5 100644 --- a/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts +++ b/code/lib/core-common/src/js-package-manager/Yarn2Proxy.ts @@ -104,7 +104,6 @@ export class Yarn2Proxy extends JsPackageManager { } public async findInstallations(pattern: string[]) { - console.log(['info', '--name-only', '--recursive', ...pattern].join(' ')); const commandResult = await this.executeCommand({ command: 'yarn', args: ['info', '--name-only', '--recursive', ...pattern], From f193c9a5a6c9fe69bff73efdbc73a2b3c410a613 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 15:30:38 +0100 Subject: [PATCH 397/430] add check for if the files exists --- .../src/automigrate/fixes/mdx-to-csf.test.ts | 14 +-- .../cli/src/automigrate/fixes/mdx-to-csf.ts | 91 +++++++++++-------- code/lib/cli/src/migrate.ts | 4 +- 3 files changed, 65 insertions(+), 44 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts index 575956abf19f..a1a8e26fb98e 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts @@ -5,7 +5,7 @@ import type { PackageJson } from '@storybook/core-common'; import { ansiRegex } from '../helpers/cleanLog'; import { makePackageManager } from '../helpers/testing-helpers'; import type { BareMdxStoriesGlobRunOptions } from './mdx-to-csf'; -import { bareMdxStoriesGlob } from './mdx-to-csf'; +import { mdxToCSF } from './mdx-to-csf'; const checkBareMdxStoriesGlob = async ({ packageJson, @@ -16,7 +16,7 @@ const checkBareMdxStoriesGlob = async ({ main?: Partial & Record; storybookVersion?: string; }) => { - return bareMdxStoriesGlob.check({ + return mdxToCSF.check({ mainConfig: mainConfig as StorybookConfigRaw, packageManager: makePackageManager(packageJson), storybookVersion, @@ -70,7 +70,7 @@ describe('bare-mdx fix', () => { }); }); }); - describe('should fix', () => { + describe.only('should fix', () => { it.each([ { existingStoriesEntries: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], @@ -141,7 +141,7 @@ describe('bare-mdx fix', () => { ); it('prompts', () => { - const result = bareMdxStoriesGlob.prompt({ + const result = mdxToCSF.prompt({ existingStoriesEntries: [ '../src/**/*.stories.@(js|jsx|mdx|ts|tsx)', { directory: '../src/**', files: '*.stories.mdx' }, @@ -161,7 +161,7 @@ describe('bare-mdx fix', () => { "files": "*.stories.mdx" } - In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. + In Storybook 7, we have deprecated defining stories in MDX files, and consequently have changed the suffix to simply .mdx. Since Storybook 8, we have removed the support of story definition in MDX files entirely. Therefore '.stories.mdx' files aren't supported anymore. We can automatically migrate your 'stories' config to include any .mdx file instead of just .stories.mdx. That would result in the following 'stories' config: @@ -172,7 +172,9 @@ describe('bare-mdx fix', () => { "files": "*.mdx" } - To learn more about this change, see: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mdx-docs-files" + Additionally, we will run the 'mdx-to-csf' codemod for you, which tries to transform '*.stories.mdx' files to '*.stories.js' and '*.mdx' files. + + To learn more about this change, see: https://storybook.js.org/docs/migration-guide#storiesmdx-to-mdxcsf" `); }); }); diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts index e055493678d9..13db8514825d 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts @@ -6,33 +6,35 @@ import { updateMainConfig } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; import { runCodemod } from '@storybook/codemod'; import { prompt } from 'prompts'; +import { glob } from 'glob'; const logger = console; export interface BareMdxStoriesGlobRunOptions { existingStoriesEntries: StoriesEntry[]; nextStoriesEntries: StoriesEntry[]; + files: string[]; } -const getNextGlob = (glob: string) => { +const getNextGlob = (globString: string) => { // '../src/**/*.stories.@(mdx|js|jsx|ts|tsx)' -> '../src/**/*.@(mdx|stories.@(js|jsx|ts|tsx))' const extGlobsRegex = new RegExp(/(.*\.)(stories\.@.*)(\|mdx|mdx\|)(.*)$/i); - if (glob.match(extGlobsRegex)) { - return glob.replace(extGlobsRegex, '$1@(mdx|$2$4)'); + if (globString.match(extGlobsRegex)) { + return globString.replace(extGlobsRegex, '$1@(mdx|$2$4)'); } // '../src/**/*.stories.*' -> '../src/**/*.@(mdx|stories.*)' const allStoriesExtensionsRegex = new RegExp(/(.*\.)(stories\.\*)$/i); - if (glob.match(allStoriesExtensionsRegex)) { - return glob.replace(allStoriesExtensionsRegex, '$1@(mdx|$2)'); + if (globString.match(allStoriesExtensionsRegex)) { + return globString.replace(allStoriesExtensionsRegex, '$1@(mdx|$2)'); } // '../src/**/*.stories.mdx' -> '../src/**/*.mdx' - return glob.replaceAll('.stories.mdx', '.mdx'); + return globString.replaceAll('.stories.mdx', '.mdx'); }; -export const bareMdxStoriesGlob: Fix = { - id: 'bare-mdx-stories-glob', +export const mdxToCSF: Fix = { + id: 'mdx-to-csf', async check({ storybookVersion, mainConfig }) { if (!semver.gte(storybookVersion, '7.0.0')) { return null; @@ -57,37 +59,33 @@ export const bareMdxStoriesGlob: Fix = { `); } - const nextStoriesEntries = existingStoriesEntries.map((entry) => { - const isSpecifier = typeof entry !== 'string'; - const glob = isSpecifier ? entry.files : entry; + const files: string[] = []; - if (!glob) { - // storySpecifier without the 'files' property. Just add the existing to the next list - return entry; - } + const nextStoriesEntries = await Promise.all( + existingStoriesEntries.map(async (entry) => { + const isSpecifier = typeof entry !== 'string'; + const globString = isSpecifier ? entry.files : entry; - const nextGlob = getNextGlob(glob); - return isSpecifier ? { ...entry, files: nextGlob } : nextGlob; - }); - - // bails if there are no changes - if ( - existingStoriesEntries.length === nextStoriesEntries.length && - existingStoriesEntries.every((entry, index) => { - const nextEntry = nextStoriesEntries[index]; - if (typeof entry === 'string') { - return entry === nextEntry; - } - if (typeof nextEntry === 'string') { - return false; + if (!globString) { + // storySpecifier without the 'files' property. Just add the existing to the next list + return entry; } - return entry.files === nextEntry.files; + + files.push(...(await glob(globString)).filter((file) => file.endsWith('.stories.mdx'))); + + const nextGlob = getNextGlob(globString); + return isSpecifier ? { ...entry, files: nextGlob } : nextGlob; }) - ) { - return null; + ); + + const resultFromMainConfig = checkMainConfigStories(existingStoriesEntries, nextStoriesEntries); + + if ((nextStoriesEntries && resultFromMainConfig) || files.length > 0) { + return { existingStoriesEntries, nextStoriesEntries, files }; } - return { existingStoriesEntries, nextStoriesEntries }; + // bails if there are no changes, no files to migrate, or if the nextStoriesEntries is empty + return null; }, prompt({ existingStoriesEntries, nextStoriesEntries }) { @@ -115,19 +113,19 @@ export const bareMdxStoriesGlob: Fix = { `; }, - async run({ dryRun, mainConfigPath, result: { nextStoriesEntries }, packageManager }) { + async run({ dryRun, mainConfigPath, result: { nextStoriesEntries } }) { logger.info(dedent`βœ… Setting 'stories' config: ${JSON.stringify(nextStoriesEntries, null, 2)}`); if (!dryRun) { - const glob = await prompt({ + const globString = await prompt({ type: 'text', name: 'glob', message: 'Please enter the glob for your MDX stories', initial: './src/**/*.stories.mdx', }); - await runCodemod('mdx-to-csf', { glob }); + await runCodemod('mdx-to-csf', { glob: globString }); await updateMainConfig({ mainConfigPath, dryRun: !!dryRun }, async (main) => { main.setFieldValue(['stories'], nextStoriesEntries); @@ -142,3 +140,24 @@ export const bareMdxStoriesGlob: Fix = { } }, }; +function checkMainConfigStories( + existingStoriesEntries: StoriesEntry[], + nextStoriesEntries: StoriesEntry[] +) { + if ( + existingStoriesEntries.length === nextStoriesEntries.length && + existingStoriesEntries.every((entry, index) => { + const nextEntry = nextStoriesEntries[index]; + if (typeof entry === 'string') { + return entry === nextEntry; + } + if (typeof nextEntry === 'string') { + return false; + } + return entry.files === nextEntry.files; + }) + ) { + return null; + } + return true; +} diff --git a/code/lib/cli/src/migrate.ts b/code/lib/cli/src/migrate.ts index f559998ba3d3..a12b37afcb50 100644 --- a/code/lib/cli/src/migrate.ts +++ b/code/lib/cli/src/migrate.ts @@ -1,6 +1,6 @@ import { listCodemods, runCodemod } from '@storybook/codemod'; import { runFixes } from './automigrate'; -import { bareMdxStoriesGlob } from './automigrate/fixes/mdx-to-csf'; +import { mdxToCSF } from './automigrate/fixes/mdx-to-csf'; import { JsPackageManagerFactory, getStorybookInfo, @@ -36,7 +36,7 @@ export async function migrate(migration: any, { glob, dryRun, list, rename, pars } await runFixes({ - fixes: [bareMdxStoriesGlob], + fixes: [mdxToCSF], configDir, mainConfigPath, packageManager, From 26338cd60fca772ffab88d3787007218f8042dda Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 15:31:02 +0100 Subject: [PATCH 398/430] Fix tests --- .../cli/src/automigrate/helpers/getMigrationSummary.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts index 85de99111c87..f5bd5a74fa0d 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts @@ -108,7 +108,7 @@ describe('getMigrationSummary', () => { The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. - Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/migration-guides/7.0 + Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/docs/8.0/migration-guide And reach out on Discord if you need help: https://discord.gg/storybook" `); }); @@ -128,7 +128,7 @@ describe('getMigrationSummary', () => { The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. - Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/migration-guides/7.0 + Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/docs/8.0/migration-guide And reach out on Discord if you need help: https://discord.gg/storybook ───────────────────────────────────────────────── @@ -176,7 +176,7 @@ describe('getMigrationSummary', () => { The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. - Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/migration-guides/7.0 + Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/docs/8.0/migration-guide And reach out on Discord if you need help: https://discord.gg/storybook" `); }); From c2a783eb13a69bf7d3969086e275908f6c60b91d Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 16:00:25 +0100 Subject: [PATCH 399/430] Enhance formatting --- code/lib/cli/src/generators/ANGULAR/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/src/generators/ANGULAR/index.ts b/code/lib/cli/src/generators/ANGULAR/index.ts index cedc43def3b4..6a770ef1922c 100644 --- a/code/lib/cli/src/generators/ANGULAR/index.ts +++ b/code/lib/cli/src/generators/ANGULAR/index.ts @@ -1,5 +1,5 @@ import { join } from 'path'; -import { paddedLog } from '@storybook/core-common'; +import { commandLog } from '@storybook/core-common'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; import { CoreBuilder } from '../../project_types'; @@ -31,7 +31,7 @@ const generator: Generator<{ projectName: string }> = async ( } const angularProjectName = await angularJSON.getProjectName(); - paddedLog(`Adding Storybook support to your "${angularProjectName}" project`); + commandLog(`Adding Storybook support to your "${angularProjectName}" project`); const angularProject = angularJSON.getProjectSettingsByName(angularProjectName); From 68c45902cdcffb762468c9bb1e64f834f3894485 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 27 Feb 2024 16:00:42 +0100 Subject: [PATCH 400/430] Fix flag handling for npm package manager when used in Angular projects --- code/lib/cli/src/initiate.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/lib/cli/src/initiate.ts b/code/lib/cli/src/initiate.ts index 3d647f923a43..b5504f2f751e 100644 --- a/code/lib/cli/src/initiate.ts +++ b/code/lib/cli/src/initiate.ts @@ -434,7 +434,8 @@ export async function initiate(options: CommandOptions, pkg: PackageJson): Promi const flags = []; // npm needs extra -- to pass flags to the command - if (packageManager.type === 'npm') { + // in the case of Angular, we are calling `ng run` which doesn't need the extra `--` + if (packageManager.type === 'npm' && projectType !== ProjectType.ANGULAR) { flags.push('--'); } From 690050fbc268d2b36f7e97818636e3a0a5b889e9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 16:20:45 +0100 Subject: [PATCH 401/430] add to index (and remove left over debugging .only) --- code/lib/cli/src/automigrate/fixes/index.ts | 2 ++ code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index 48e472c5220a..ad7d463b99ae 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -17,6 +17,7 @@ import { angularBuilders } from './angular-builders'; import { angularBuildersMultiproject } from './angular-builders-multiproject'; import { wrapRequire } from './wrap-require'; import { reactDocgen } from './react-docgen'; +import { mdxToCSF } from './mdx-to-csf'; import { removeReactDependency } from './prompt-remove-react'; import { storyshotsMigration } from './storyshots-migration'; import { removeArgtypesRegex } from './remove-argtypes-regex'; @@ -40,6 +41,7 @@ export const allFixes: Fix[] = [ removeJestTestingLibrary, removedGlobalClientAPIs, mdxgfm, + mdxToCSF, autodocsTrue, angularBuildersMultiproject, angularBuilders, diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts index 2aacc9134da7..226ac6976363 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.test.ts @@ -60,7 +60,7 @@ describe('bare-mdx fix', () => { }); }); }); - describe.only('should fix', () => { + describe('should fix', () => { it.each([ { existingStoriesEntries: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], From b7d636106fd14017937e37439a0a51673e8fbb4a Mon Sep 17 00:00:00 2001 From: Kasper Peulen Date: Tue, 27 Feb 2024 16:12:08 +0100 Subject: [PATCH 402/430] Use dedicated tsconfig for compodocs --- .../angular/src/builders/build-storybook/index.ts | 8 +++++--- .../application/template-csf/.storybook/tsconfig.doc.json | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json diff --git a/code/frameworks/angular/src/builders/build-storybook/index.ts b/code/frameworks/angular/src/builders/build-storybook/index.ts index 4bd35520e9b8..25f7faeb5268 100644 --- a/code/frameworks/angular/src/builders/build-storybook/index.ts +++ b/code/frameworks/angular/src/builders/build-storybook/index.ts @@ -67,10 +67,12 @@ const commandBuilder: BuilderHandlerFn = ( ): BuilderOutputLike => { const builder = from(setup(options, context)).pipe( switchMap(({ tsConfig }) => { + const docTSConfig = findUpSync('tsconfig.doc.json', { cwd: options.configDir }); const runCompodoc$ = options.compodoc - ? runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: tsConfig }, context).pipe( - mapTo({ tsConfig }) - ) + ? runCompodoc( + { compodocArgs: options.compodocArgs, tsconfig: docTSConfig ?? tsConfig }, + context + ).pipe(mapTo({ tsConfig })) : of({}); return runCompodoc$.pipe(mapTo({ tsConfig })); diff --git a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json new file mode 100644 index 000000000000..67a2cc6abbdc --- /dev/null +++ b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], + "include": ["../src/**/*", "./preview.ts"], + "files": ["./typings.d.ts"] +} From 27eaa3fb3f72415f7717fb63cb1812b2bd5e23e9 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Tue, 27 Feb 2024 17:33:44 +0100 Subject: [PATCH 403/430] Update code/addons/onboarding/src/manager.tsx --- code/addons/onboarding/src/manager.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/addons/onboarding/src/manager.tsx b/code/addons/onboarding/src/manager.tsx index a93fdbbe7469..e19c452724b8 100644 --- a/code/addons/onboarding/src/manager.tsx +++ b/code/addons/onboarding/src/manager.tsx @@ -20,7 +20,7 @@ addons.register('@storybook/addon-onboarding', async (api) => { if (!hasButtonStories) { console.warn( - `[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/addon-onboarding#uninstalling` + `[@storybook/addon-onboarding] It seems like you have finished the onboarding experience in Storybook! Therefore this addon is not necessary anymore and will not be loaded. You are free to remove it from your project. More info: https://github.com/storybookjs/storybook/tree/next/code/addons/onboarding#uninstalling` ); return; } From 5263629a23705db37de22de6cc44acf42bf0e221 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Tue, 27 Feb 2024 10:09:56 -0700 Subject: [PATCH 404/430] Address feedback - Restructure to more accurately provide `storyStoreV7`, `storiesOf`, and MDX 2 guidance --- docs/migration-guide/from-older-version.md | 59 +++------------------- docs/migration-guide/index.md | 38 +++++--------- 2 files changed, 20 insertions(+), 77 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index 0daae6461a93..b3740aa2f854 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -35,7 +35,7 @@ The rest of this guide will help you upgrade successfully, either automatically If any of these changes apply to your project, please read through the linked migration notes before continuing. -If any of these new requirements or changes are blockers for your project, we recommend [migrating to Storybook 7](../../release-7-6/docs/migration-guide). +If any of these new requirements or changes are blockers for your project, we recommend looking at the [requirements to migrate to Storybook 7](../../release-7-6/docs/migration-guide#major-breaking-changes). You may wish to read the full migration notes for [Storybook 6 to 7](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-65x-to-700) and [Storybook 7 to 8](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) before migrating. Or you can follow the instructions below and we’ll try to take care of everything for you! @@ -65,60 +65,19 @@ This will: - Explain the necessary changes with links to more information - Ask for approval, then perform the task on your behalf -## Manual migrations +### Common upgrade issues -In addition to the automated upgrades above, there are manual migrations that might be required to get Storybook 8 working in your project. We’ve tried to minimize this list to make it easier to upgrade. These include: +While we'll do our best to upgrade your project automatically, there are two issues worth mentioning that you might encounter during the upgrade process: -### Upgrade MDX1 to MDX3 +#### `storyStoreV7:false` and `storiesOf` -Storybook 8 uses MDX3 by default for rendering [docs](./writing-docs/index.md). The upgrade from MDX1 to MDX3 is not fully automated due to the large number of changes between versions (particularly v1 to v2). Fortunately, we have some tips to help make it a lot easier. +If you have `storyStoreV7: false` in your `.storybook/main.js`, you will need to remove it before you're able to upgrade to Storybook 8. -#### Automatically detect MDX2 errors with a CLI tool +If you are using the `storiesOf` API (which requires `storyStoreV7: false` in Storybook 7), you will need to either [migrate your stories to CSF](../../release-7-6/docs/migration-guide.md#storiesof-to-csf) or use the [new indexer API to continue creating stories dynamically](../../release-7-6/docs/migration-guide.md#storiesof-to-dynamically-created-stories). -If your project contains MDX files, run the following command before starting up Storybook: +#### MDX 1 to MDX 3 -```sh -npx @hipster/mdx2-issue-checker -``` - -This will go through every MDX file in the current working directory, and show you which files have errors: - -![Terminal output of mdx2-issue-checker, showing errors found](./assets/mdx2-issue-checker-errors.png) - -#### Fix MDX2 errors iteratively - -The CLI only shows the first error per file, so you might need to run the checker iteratively. One way to streamline this process if you use VS Code is to: - -1. Install theΒ [MDX VS Code extension](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx) -2. Enable experimental IntelliSense support for MDX files in your user settings:Β `"mdx.experimentalLanguageServer": true` - -This shows the errors visually in your editor, which speeds things up a lot. Here's what it looks like to fix multiple errors in a file using the extension: - -![MDX errors showing in VS Code](./assets/mdx-vs-code-extension-errors.gif) - -### `storiesOf` to CSF - -Storybook architecture focuses on performance and now needs statically analyzable code. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): - - - - - - - -This will transform your stories into [CSF 1](/blog/component-story-format/) stories, which are story functions that don't accept [args](../writing-stories/args.md). These are fully supported in Storybook 8, and will continue to be for the foreseeable future. - -However, we recommend [writing all **new** stories in CSF 3](../writing-stories/index.md), which are story objects that are easier to write, reuse, and maintain. - -### `storiesOf` to dynamically created stories - -If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept (with a deeper explanation of the implementation) can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). +Storybook 8 uses MDX 3. If you're coming from MDX 1 (used by Storybook 6), there were significant breaking changes in MDX 2. Please reference our [guidance on upgrading successfully](../../release-7-6/docs/migration-guide.md#upgrade-mdx1-to-mdx2). ## Troubleshooting @@ -139,8 +98,6 @@ If you prefer to debug yourself, here are a few useful things you can do to help In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are features that we’ve deprecated in Storybook 7 and 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. -These include: - ### CSF 2 to CSF 3 There are [many good reasons](/blog/storybook-csf3-is-here/) to convert your stories from CSF 2 to CSF 3. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index b8fa2454e46a..c7ae22f060a5 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -69,6 +69,18 @@ This will: - Explain the necessary changes with links to more information - Ask for approval, then perform the task on your behalf +### Common upgrade issues + +While we'll do our best to upgrade your project automatically, there is one issue worth mentioning that you might encounter during the upgrade process: + +#### `storyStoreV7:false` and `storiesOf` + +If you have `storyStoreV7: false` in your `.storybook/main.js`, you will need to remove it before you're able to upgrade to Storybook 8. + +If you are using the `storiesOf` API (which requires `storyStoreV7: false` in Storybook 7), you will need to either [migrate your stories to CSF](../../release-7-6/docs/migration-guide.md#storiesof-to-csf) or use the [new indexer API to continue creating stories dynamically](../../release-7-6/docs/migration-guide.md#storiesof-to-dynamically-created-stories). + +## New projects + To add Storybook to a project that isn’t currently using Storybook: @@ -92,30 +104,6 @@ This will: In addition to the automated upgrades above, there are manual migrations that might be required to get Storybook 8 working in your project. We’ve tried to minimize this list to make it easier to upgrade. These include: -### `storiesOf` to CSF - -Storybook architecture focuses on performance and now needs statically analyzable code. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): - - - - - - - -This will transform your stories into [CSF 1](/blog/component-story-format/) stories, which are story functions that don't accept [args](../writing-stories/args.md). These are fully supported in Storybook 8, and will continue to be for the foreseeable future. - -However, we recommend [writing all **new** stories in CSF 3](../writing-stories/index.md), which are story objects that are easier to write, reuse, and maintain. - -### `storiesOf` to dynamically created stories - -If you are using `storiesOf` for its ability to create stories dynamically, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept (with a deeper explanation of the implementation) can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). - ### `*.stories.mdx` to MDX+CSF Storybook now requires that MDX pages reference stories written in CSF, rather than the previous `.stories.mdx` hybrid approach. You can automatically convert your files using the following codemod (make sure to update the glob to fit your files): @@ -155,8 +143,6 @@ If you prefer to debug yourself, here are a few useful things you can do to help In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are features that we’ve deprecated in Storybook 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. -These include: - ### CSF 2 to CSF 3 There are [many good reasons](/blog/storybook-csf3-is-here/) to convert your stories from CSF 2 to CSF 3. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): From b0a628ba2be8b64386641ccec5c2454a1f7f2e2a Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 27 Feb 2024 18:44:13 +0100 Subject: [PATCH 405/430] fixes --- code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts | 6 ++++-- code/lib/codemod/src/index.ts | 11 ++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts index 90867cb89925..72dc4ddbde00 100644 --- a/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts +++ b/code/lib/cli/src/automigrate/fixes/mdx-to-csf.ts @@ -117,14 +117,16 @@ export const mdxToCSF: Fix = { ${JSON.stringify(nextStoriesEntries, null, 2)}`); if (!dryRun) { - const globString = await prompt({ + const { glob: globString } = await prompt({ type: 'text', name: 'glob', message: 'Please enter the glob for your MDX stories', initial: './src/**/*.stories.mdx', }); - await runCodemod('mdx-to-csf', { glob: globString }); + if (globString) { + await runCodemod('mdx-to-csf', { glob: globString, dryRun, logger }); + } await updateMainConfig({ mainConfigPath, dryRun: !!dryRun }, async (main) => { main.setFieldValue(['stories'], nextStoriesEntries); diff --git a/code/lib/codemod/src/index.ts b/code/lib/codemod/src/index.ts index 67eb20799190..b55c790adf83 100644 --- a/code/lib/codemod/src/index.ts +++ b/code/lib/codemod/src/index.ts @@ -30,7 +30,16 @@ async function renameFile(file: any, from: any, to: any, { logger }: any) { return renameAsync(file, newFile); } -export async function runCodemod(codemod: any, { glob, logger, dryRun, rename, parser }: any) { +export async function runCodemod( + codemod: any, + { + glob, + logger, + dryRun, + rename, + parser, + }: { glob: any; logger: any; dryRun?: any; rename?: any; parser?: any } +) { const codemods = listCodemods(); if (!codemods.includes(codemod)) { throw new Error(`Unknown codemod ${codemod}. Run --list for options.`); From a86c413875c1c120ec23990bc6c051a272d75a55 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Wed, 28 Feb 2024 16:13:40 +1100 Subject: [PATCH 406/430] Re-add exports from 62c4b8a28425a33d4b37b7434ee771514b80d24a Looks like these got lost in a merge conflict with https://github.com/storybookjs/storybook/pull/24658 --- code/lib/preview-api/src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/lib/preview-api/src/index.ts b/code/lib/preview-api/src/index.ts index c2fcc5bf9640..e47cdaa0a0dd 100644 --- a/code/lib/preview-api/src/index.ts +++ b/code/lib/preview-api/src/index.ts @@ -68,4 +68,5 @@ export type { PropDescriptor } from './store'; * STORIES API */ export { StoryStore } from './store'; -export { Preview, PreviewWithSelection, PreviewWeb } from './preview-web'; +export { Preview, PreviewWeb, PreviewWithSelection, UrlStore, WebView } from './preview-web'; +export type { SelectionStore, View } from './preview-web'; From 9034ba93a29fc238e3f71f5629443d2bb6345a17 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 08:41:23 +0100 Subject: [PATCH 407/430] Improve compodoc messaging --- code/lib/cli/src/generators/ANGULAR/helpers.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/lib/cli/src/generators/ANGULAR/helpers.ts b/code/lib/cli/src/generators/ANGULAR/helpers.ts index b2394797909c..33b79bb7339c 100644 --- a/code/lib/cli/src/generators/ANGULAR/helpers.ts +++ b/code/lib/cli/src/generators/ANGULAR/helpers.ts @@ -3,6 +3,8 @@ import { join } from 'path'; import prompts from 'prompts'; import dedent from 'ts-dedent'; import { MissingAngularJsonError } from '@storybook/core-events/server-errors'; +import boxen from 'boxen'; +import { logger } from '@storybook/node-logger'; export const ANGULAR_JSON_PATH = 'angular.json'; @@ -13,6 +15,18 @@ export const compoDocPreviewPrefix = dedent` `.trimStart(); export const promptForCompoDocs = async (): Promise => { + logger.plain( + // Create a text which explains the user why compodoc is necessary + boxen( + dedent` + Compodoc is a great tool to generate documentation for your Angular projects. + Storybook can use the documentation generated by Compodoc to extract argument definitions + and JSDOC comments to display them in the Storybook UI. We highly recommend using Compodoc for + your Angular projects to get the best experience out of Storybook. + `, + { title: 'Compodoc', borderStyle: 'round', padding: 1, borderColor: '#F1618C' } + ) + ); const { useCompoDoc } = await prompts({ type: 'confirm', name: 'useCompoDoc', From aec125a054d062a8ef0119d9f6904e90074e1808 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 08:50:00 +0100 Subject: [PATCH 408/430] Use tsconfig.doc.ts also for Storybook dev --- code/frameworks/angular/src/builders/start-storybook/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/frameworks/angular/src/builders/start-storybook/index.ts b/code/frameworks/angular/src/builders/start-storybook/index.ts index ed5504f68c51..2ecbb63c8a0f 100644 --- a/code/frameworks/angular/src/builders/start-storybook/index.ts +++ b/code/frameworks/angular/src/builders/start-storybook/index.ts @@ -67,11 +67,13 @@ export type StorybookBuilderOutput = JsonObject & BuilderOutput & {}; const commandBuilder: BuilderHandlerFn = (options, context) => { const builder = from(setup(options, context)).pipe( switchMap(({ tsConfig }) => { + const docTSConfig = findUpSync('tsconfig.doc.json', { cwd: options.configDir }); + const runCompodoc$ = options.compodoc ? runCompodoc( { compodocArgs: [...options.compodocArgs, ...(options.quiet ? ['--silent'] : [])], - tsconfig: tsConfig, + tsconfig: docTSConfig ?? tsConfig, }, context ).pipe(mapTo({ tsConfig })) From 5728f0eb3a04b9f3cfe5b76b38f6bd661141a9b3 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 08:51:17 +0100 Subject: [PATCH 409/430] Enhance tsconfig.doc.json --- .../application/template-csf/.storybook/tsconfig.doc.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json index 67a2cc6abbdc..22e282bd5db9 100644 --- a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json +++ b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.doc.json @@ -1,6 +1,10 @@ +// This tsconfig is used by Compodoc to generate the documentation for the project. +// If Compodoc is not used, this file can be deleted. { "extends": "./tsconfig.json", - "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*", "./preview.ts"], + // Exclude all files that are not needed for documentation generation. + "exclude": ["../src/test.ts", "../src/**/*.spec.ts", "../src/**/*.stories.ts"], + // Please make sure to include all files from which Compodoc should generate documentation. + "include": ["../src/**/*"], "files": ["./typings.d.ts"] } From f9c55b9273f1424fab4ded5abedb3c37001bb5df Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 28 Feb 2024 08:54:27 +0100 Subject: [PATCH 410/430] Revert "Revert: "Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`"" --- .../application/template-csf/.storybook/tsconfig.json | 2 +- .../angular/library/template-csf/.storybook/tsconfig.json | 2 +- scripts/tasks/sandbox-parts.ts | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json index eb06864100d8..84d7e7424a2c 100644 --- a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*", "./preview.ts"], + "include": ["../src/**/*.stories.*", "./preview.ts"], "files": ["./typings.d.ts"] } diff --git a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json index 59daf738abdb..957791d5bf3f 100644 --- a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*", "./preview.ts"], + "include": ["../src/**/*.stories.*", "./preview.ts"], "files": ["./typings.d.ts"] } diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index 196467aaa14e..cd7dc643a185 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -596,8 +596,12 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { tsConfigJson.compilerOptions.skipLibCheck = true; tsConfigJson.compilerOptions.noImplicitAny = false; tsConfigJson.compilerOptions.strict = false; - - tsConfigJson.include = [...tsConfigJson.include, '../template-stories/**/*.stories.ts']; + tsConfigJson.include = [ + ...tsConfigJson.include, + '../template-stories/**/*.stories.ts', + // This is necessary since template stories depend on globalThis.components, which Typescript can't look up automatically + '../src/stories/**/*', + ]; if (templateName === 'Angular CLI (Version 15)') { tsConfigJson.compilerOptions.paths = { From 3326613e743c25f7bc3a458e7103214d00835691 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 09:03:20 +0100 Subject: [PATCH 411/430] Fix prompting in remove-jest-testing-library automigration --- .../src/automigrate/fixes/remove-jest-testing-library.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts index 4dd1060a12f3..47177d9e709d 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts @@ -5,6 +5,8 @@ import { getStorybookVersionSpecifier } from '../../helpers'; import { runCodemod } from '@storybook/codemod'; import prompts from 'prompts'; +const logger = console; + export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = { id: 'remove-jest-testing-library', versionRange: ['<8.0.0-alpha.0', '>=8.0.0-alpha.0'], @@ -46,15 +48,16 @@ export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = await packageManager.addDependencies({}, [`@storybook/test@${versionToInstall}`]); - const glob = await prompts({ + const { glob: globString } = await prompts({ type: 'text', name: 'glob', message: 'Please enter the glob for your stories to migrate to @storybook/test', initial: './src/**/*.stories.*', }); - await runCodemod('migrate-to-test-package', { glob, dryRun }); + if (globString) { + await runCodemod('migrate-to-test-package', { glob: globString, dryRun, logger }); + } } - // apply the migrate-to-test-package codemod }, }; From ef5ee401b350599cbbe9c0ec7e0f5c331a40fa7d Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 09:06:32 +0100 Subject: [PATCH 412/430] Remove unused code --- .../fixes/remove-argtypes-regex.ts | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts index 3528422a6197..5aba74724fed 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts @@ -34,27 +34,6 @@ export const removeArgtypesRegex: Fix<{ argTypesRegex: NodePath; previewConfigPa return argTypesRegex ? { argTypesRegex, previewConfigPath } : null; }, prompt({ argTypesRegex, previewConfigPath }) { - const snippet = dedent` - import { fn } from '@storybook/test'; - export default { - args: { onClick: fn() }, // will log to the action panel when clicked - };`; - - // @ts-expect-error File is not yet exposed, see https://github.com/babel/babel/issues/11350#issuecomment-644118606 - const file: BabelFile = new babel.File( - { file: 'story.tsx' }, - { code: snippet, ast: babelParse(snippet) } - ); - - let formattedSnippet; - file.path.traverse({ - Identifier: (path) => { - if (path.node.name === 'fn') { - formattedSnippet = path.buildCodeFrameError(``).message; - } - }, - }); - return dedent` ${chalk.bold('Attention')}: We've detected that you're using argTypesRegex: From 9e361c079dbf815c7704201f934315c315587355 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 09:24:01 +0100 Subject: [PATCH 413/430] Enhance formatting of autoblock messages --- .../src/autoblock/block-dependencies-versions.ts | 13 +++++++++---- code/lib/cli/src/autoblock/block-node-version.ts | 3 ++- code/lib/cli/src/autoblock/block-storystorev6.ts | 7 +++++-- code/lib/cli/src/autoblock/index.test.ts | 6 ++++++ code/lib/cli/src/autoblock/index.ts | 5 ++--- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/code/lib/cli/src/autoblock/block-dependencies-versions.ts b/code/lib/cli/src/autoblock/block-dependencies-versions.ts index 45b5181dee0c..faac2538aa38 100644 --- a/code/lib/cli/src/autoblock/block-dependencies-versions.ts +++ b/code/lib/cli/src/autoblock/block-dependencies-versions.ts @@ -1,6 +1,7 @@ import { createBlocker } from './types'; import { dedent } from 'ts-dedent'; import { lt } from 'semver'; +import chalk from 'chalk'; const minimalVersionsMap = { '@angular/core': '15.0.0', @@ -50,7 +51,9 @@ export const blocker = createBlocker({ return dedent` Support react-script < 5.0.0 has been removed. Please see the migration guide for more information: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support + ${chalk.yellow( + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support' + )} Upgrade to the latest version of react-scripts. `; @@ -58,7 +61,7 @@ export const blocker = createBlocker({ return dedent` Support for Vue 2 has been removed. Please see the migration guide for more information: - https://v3-migration.vuejs.org/ + ${chalk.yellow('https://v3-migration.vuejs.org/')} Please upgrade to the latest version of Vue. `; @@ -66,7 +69,7 @@ export const blocker = createBlocker({ return dedent` Support for Angular < 15 has been removed. Please see the migration guide for more information: - https://angular.io/guide/update-to-version-15 + ${chalk.yellow('https://angular.io/guide/update-to-version-15')} Please upgrade to the latest version of Angular. `; @@ -74,7 +77,9 @@ export const blocker = createBlocker({ return dedent` Support for Next.js < 13.5 has been removed. Please see the migration guide for more information: - https://nextjs.org/docs/pages/building-your-application/upgrading/version-13 + ${chalk.yellow( + 'https://nextjs.org/docs/pages/building-your-application/upgrading/version-13' + )} Please upgrade to the latest version of Next.js. `; diff --git a/code/lib/cli/src/autoblock/block-node-version.ts b/code/lib/cli/src/autoblock/block-node-version.ts index 8d67cdd51018..49c9744b08f0 100644 --- a/code/lib/cli/src/autoblock/block-node-version.ts +++ b/code/lib/cli/src/autoblock/block-node-version.ts @@ -1,6 +1,7 @@ import { createBlocker } from './types'; import { dedent } from 'ts-dedent'; import { lt } from 'semver'; +import chalk from 'chalk'; export const blocker = createBlocker({ id: 'minimumNode16', @@ -16,7 +17,7 @@ export const blocker = createBlocker({ We've detected you're using Node.js v${data.nodeVersion}. Storybook needs Node.js 18 or higher. - https://nodejs.org/en/download + ${chalk.yellow('https://nodejs.org/en/download')} `; }, }); diff --git a/code/lib/cli/src/autoblock/block-storystorev6.ts b/code/lib/cli/src/autoblock/block-storystorev6.ts index 5e0f62f69ef5..d4a00b3e3e06 100644 --- a/code/lib/cli/src/autoblock/block-storystorev6.ts +++ b/code/lib/cli/src/autoblock/block-storystorev6.ts @@ -1,6 +1,7 @@ import { createBlocker } from './types'; import { dedent } from 'ts-dedent'; import type { StorybookConfigRaw } from '@storybook/types'; +import chalk from 'chalk'; export const blocker = createBlocker({ id: 'storyStoreV7removal', @@ -19,13 +20,15 @@ export const blocker = createBlocker({ StoryStoreV7 feature must be removed from your Storybook configuration. This feature was removed in Storybook 8.0.0. Please see the migration guide for more information: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated + ${chalk.yellow( + 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated' + )} In your Storybook configuration we found storyStoryV7 feature defined. For instance: export default = { features: { - storyStoreV7: false, <--- remove this line + ${chalk.cyan(`storyStoreV7: false`)}, <--- remove this line }, }; diff --git a/code/lib/cli/src/autoblock/index.test.ts b/code/lib/cli/src/autoblock/index.test.ts index 708675cb4db0..d6b5ea1a4a23 100644 --- a/code/lib/cli/src/autoblock/index.test.ts +++ b/code/lib/cli/src/autoblock/index.test.ts @@ -79,6 +79,8 @@ test('1 fail', async () => { Always fail + ───────────────────────────────────────────────── + Fix the above issues and try running the upgrade command again." `); }); @@ -93,9 +95,13 @@ test('multiple fails', async () => { "Storybook has found potential blockers in your project that need to be resolved before upgrading: Always fail + ───────────────────────────────────────────────── + Always fail 2 + ───────────────────────────────────────────────── + Fix the above issues and try running the upgrade command again." `); diff --git a/code/lib/cli/src/autoblock/index.ts b/code/lib/cli/src/autoblock/index.ts index 65567bd35223..6e71266926f6 100644 --- a/code/lib/cli/src/autoblock/index.ts +++ b/code/lib/cli/src/autoblock/index.ts @@ -14,7 +14,7 @@ const blockers: () => BlockerModule[] = () => [ type BlockerModule = Promise<{ blocker: Blocker }>; -const segmentDivider = '\n─────────────────────────────────────────────────\n'; +const segmentDivider = '\n\n─────────────────────────────────────────────────\n\n'; export const autoblock = async ( options: AutoblockOptions, @@ -56,8 +56,7 @@ export const autoblock = async ( [messages.welcome] .concat(['\n\n']) .concat([faults.map((i) => i.log).join(segmentDivider)]) - .concat(['\n\n']) - .concat([messages.reminder]) + .concat([segmentDivider, messages.reminder]) .join(''), { borderStyle: 'round', padding: 1, borderColor } ) From c810eaae10e7895d313ba146b69021c2f4178fa1 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 09:32:58 +0100 Subject: [PATCH 414/430] Fix run function of remove-jest-testing-library --- .../automigrate/fixes/remove-jest-testing-library.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts index 47177d9e709d..87a4772199d5 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts @@ -37,16 +37,18 @@ export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = }, async run({ packageManager, dryRun }) { if (!dryRun) { - await packageManager.removeDependencies({ skipInstall: true }, [ + const packageJson = await packageManager.retrievePackageJson(); + + await packageManager.removeDependencies({ skipInstall: true, packageJson }, [ '@storybook/jest', '@storybook/testing-library', ]); - const versionToInstall = getStorybookVersionSpecifier( - await packageManager.retrievePackageJson() - ); + const versionToInstall = getStorybookVersionSpecifier(packageJson); - await packageManager.addDependencies({}, [`@storybook/test@${versionToInstall}`]); + await packageManager.addDependencies({ packageJson }, [ + `@storybook/test@${versionToInstall}`, + ]); const { glob: globString } = await prompts({ type: 'text', From ee523d16adade9bae87a59e918882a9d688c001d Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 09:33:24 +0100 Subject: [PATCH 415/430] Enhance formatting of remove-argtypes-regex automigration --- .../cli/src/automigrate/fixes/remove-argtypes-regex.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts index 5aba74724fed..c7803cd4bf3d 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts @@ -45,12 +45,14 @@ export const removeArgtypesRegex: Fix<{ argTypesRegex: NodePath; previewConfigPa Since Storybook 8, implicit action args mocking isn't supported anymore. Use the following command to check for spy usages in your play functions: - ${chalk.cyan( - 'npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"' - )} + ${chalk.cyan( + 'npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"' + )} And follow the documentation to migrate your play functions: - https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function + ${chalk.yellow( + 'https://storybook.js.org/docs/8.0/essentials/actions#via-storybooktest-fn-spy-function' + )} `; }, }; From c671ac976738a23cf0059d8f42f195f41bb6a5e8 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 10:00:03 +0100 Subject: [PATCH 416/430] Create addon-postcss automigration --- .../automigrate/fixes/addon-postcss.test.ts | 42 +++++++++++++++++++ .../src/automigrate/fixes/addon-postcss.ts | 41 ++++++++++++++++++ code/lib/cli/src/automigrate/fixes/index.ts | 2 + 3 files changed, 85 insertions(+) create mode 100644 code/lib/cli/src/automigrate/fixes/addon-postcss.test.ts create mode 100644 code/lib/cli/src/automigrate/fixes/addon-postcss.ts diff --git a/code/lib/cli/src/automigrate/fixes/addon-postcss.test.ts b/code/lib/cli/src/automigrate/fixes/addon-postcss.test.ts new file mode 100644 index 000000000000..f9b77cab4110 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/addon-postcss.test.ts @@ -0,0 +1,42 @@ +import { addonPostCSS } from './addon-postcss'; +import type { StorybookConfig } from '@storybook/types'; +import type { JsPackageManager } from '@storybook/core-common'; +import { expect, describe, it } from 'vitest'; + +const checkAddonPostCSS = async ({ + packageManager, + mainConfig = {}, + storybookVersion = '7.0.0', +}: { + packageManager?: Partial; + mainConfig?: Partial; + storybookVersion?: string; +}) => { + return addonPostCSS.check({ + packageManager: packageManager as any, + storybookVersion, + mainConfig: mainConfig as any, + }); +}; + +describe('check function', () => { + it('should return { hasAddonPostcss: true } if @storybook/addon-postcss is found', async () => { + await expect( + checkAddonPostCSS({ + mainConfig: { + addons: ['@storybook/addon-postcss'], + }, + }) + ).resolves.toEqual({ hasAddonPostcss: true }); + }); + + it('should return null if @storybook/addon-postcss is not found', async () => { + await expect( + checkAddonPostCSS({ + mainConfig: { + addons: [], + }, + }) + ).resolves.toBeNull(); + }); +}); diff --git a/code/lib/cli/src/automigrate/fixes/addon-postcss.ts b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts new file mode 100644 index 000000000000..472d4bb4fce1 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts @@ -0,0 +1,41 @@ +import chalk from 'chalk'; +import { dedent } from 'ts-dedent'; +import type { Fix } from '../types'; +import { getAddonNames } from '../helpers/mainConfigFile'; + +interface AddonPostcssRunOptions { + hasAddonPostcss: boolean; +} + +export const addonPostCSS: Fix = { + id: 'addon-postcss', + + versionRange: ['<7', '>=7'], + + promptType: 'notification', + + async check({ mainConfig }) { + const addons = getAddonNames(mainConfig); + const hasAddonPostcss = !!addons.find((addon) => addon.includes('@storybook/addon-postcss')); + + if (!hasAddonPostcss) { + return null; + } + + return { hasAddonPostcss: true }; + }, + + prompt() { + return dedent` + ${chalk.bold( + 'Attention' + )}: We've detected that you're using the following package which might be incompatible since Storybook 8: + + - ${chalk.cyan(`@storybook/addon-postcss`)} + + Please migrate to ${chalk.cyan( + `@storybook/addon-styling-webpack` + )} once the migration is complete. + `; + }, +}; diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index ad7d463b99ae..cb4cdfca43ee 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -24,6 +24,7 @@ import { removeArgtypesRegex } from './remove-argtypes-regex'; import { webpack5CompilerSetup } from './webpack5-compiler-setup'; import { removeJestTestingLibrary } from './remove-jest-testing-library'; import { mdx1to3 } from './mdx-1-to-3'; +import { addonPostCSS } from './addon-postcss'; export * from '../types'; @@ -32,6 +33,7 @@ export const allFixes: Fix[] = [ cra5, webpack5, vue3, + addonPostCSS, viteConfigFile, eslintPlugin, builderVite, From 7761e3a28d80351c8a5f1f4c6e3bb793fc274932 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 10:02:56 +0100 Subject: [PATCH 417/430] Update code/lib/cli/src/autoblock/block-dependencies-versions.ts Co-authored-by: Jeppe Reinhold --- code/lib/cli/src/autoblock/block-dependencies-versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/autoblock/block-dependencies-versions.ts b/code/lib/cli/src/autoblock/block-dependencies-versions.ts index faac2538aa38..45db54bac794 100644 --- a/code/lib/cli/src/autoblock/block-dependencies-versions.ts +++ b/code/lib/cli/src/autoblock/block-dependencies-versions.ts @@ -49,7 +49,7 @@ export const blocker = createBlocker({ switch (data.packageName) { case 'react-scripts': return dedent` - Support react-script < 5.0.0 has been removed. + Support for react-script < 5.0.0 has been removed. Please see the migration guide for more information: ${chalk.yellow( 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support' From 00446c2cc1643d4ea1d7f72a705663856cdaa2b4 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 10:03:48 +0100 Subject: [PATCH 418/430] Formatting --- code/lib/cli/src/autoblock/block-storystorev6.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/autoblock/block-storystorev6.ts b/code/lib/cli/src/autoblock/block-storystorev6.ts index d4a00b3e3e06..d284584c9fbc 100644 --- a/code/lib/cli/src/autoblock/block-storystorev6.ts +++ b/code/lib/cli/src/autoblock/block-storystorev6.ts @@ -28,7 +28,7 @@ export const blocker = createBlocker({ export default = { features: { - ${chalk.cyan(`storyStoreV7: false`)}, <--- remove this line + ${chalk.cyan(`storyStoreV7: false`)}, <--- ${chalk.bold('remove this line')} }, }; From 5ac45075ab05a9cc2b8a553805ae7b9116e8724e Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 10:41:20 +0100 Subject: [PATCH 419/430] Typo --- code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts index c7803cd4bf3d..78dd25049b27 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-argtypes-regex.ts @@ -44,7 +44,7 @@ export const removeArgtypesRegex: Fix<{ argTypesRegex: NodePath; previewConfigPa Since Storybook 8, implicit action args mocking isn't supported anymore. - Use the following command to check for spy usages in your play functions: + Use the following command to check for mocked action usages in your play functions: ${chalk.cyan( 'npx storybook migrate find-implicit-spies --glob="**/*.stories.@(js|jsx|ts|tsx)"' )} From 293957c2a30f968d4bf43d71ed766ea9c848a69f Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 10:43:39 +0100 Subject: [PATCH 420/430] Fix wording in remove-jest-testing-library automigration --- .../automigrate/fixes/remove-jest-testing-library.test.ts | 3 +-- .../cli/src/automigrate/fixes/remove-jest-testing-library.ts | 5 +---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts index c96a65fd614f..468992c259e1 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.test.ts @@ -58,7 +58,6 @@ it('should prompt to install the test package and run the codemod', async () => We will uninstall them for you and install @storybook/test instead. - Also, we will apply the following codemod to your stories to automatically migrate them to the new package: - npx storybook migrate migrate-to-test-package --glob="**/*.stories.@(js|jsx|ts|tsx)" + Also, we can help you migrate your stories to use the new package. `); }); diff --git a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts index 87a4772199d5..3eed2c36ab70 100644 --- a/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts +++ b/code/lib/cli/src/automigrate/fixes/remove-jest-testing-library.ts @@ -29,10 +29,7 @@ export const removeJestTestingLibrary: Fix<{ incompatiblePackages: string[] }> = We will uninstall them for you and install ${chalk.cyan('@storybook/test')} instead. - Also, we will apply the following codemod to your stories to automatically migrate them to the new package: - ${chalk.cyan( - 'npx storybook migrate migrate-to-test-package --glob="**/*.stories.@(js|jsx|ts|tsx)"' - )} + Also, we can help you migrate your stories to use the new package. `; }, async run({ packageManager, dryRun }) { From 5bbc5eef2775e84dc332b0ba9bcae3f73061f4ba Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 09:15:17 +0100 Subject: [PATCH 421/430] Doctor: Add dynamic check for incompatible storybook packages --- .../fixes/incompatible-addons.test.ts | 106 ------------ .../automigrate/fixes/incompatible-addons.ts | 34 ---- .../helpers/getMigrationSummary.test.ts | 30 +--- .../helpers/getMigrationSummary.ts | 10 -- code/lib/cli/src/automigrate/index.ts | 5 +- .../getIncompatibleStorybookPackages.test.ts | 122 ++++++++++++++ .../getIncompatibleStorybookPackages.ts | 155 ++++++++++++++++++ code/lib/cli/src/doctor/index.ts | 68 ++++---- code/lib/core-server/src/build-dev.ts | 2 +- .../src/utils/warnOnIncompatibleAddons.ts | 35 ++-- 10 files changed, 339 insertions(+), 228 deletions(-) delete mode 100644 code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts delete mode 100644 code/lib/cli/src/automigrate/fixes/incompatible-addons.ts create mode 100644 code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts create mode 100644 code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts diff --git a/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts b/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts deleted file mode 100644 index d23f369da214..000000000000 --- a/code/lib/cli/src/automigrate/fixes/incompatible-addons.test.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { describe, afterEach, it, expect, vi } from 'vitest'; - -import type { StorybookConfig } from '@storybook/types'; -import { incompatibleAddons } from './incompatible-addons'; -import type { JsPackageManager } from '@storybook/core-common'; - -const check = async ({ - packageManager, - main: mainConfig = {}, - storybookVersion = '7.0.0', -}: { - packageManager: Partial; - main?: Partial & Record; - storybookVersion?: string; -}) => { - return incompatibleAddons.check({ - packageManager: packageManager as any, - configDir: '', - mainConfig: mainConfig as any, - storybookVersion, - }); -}; - -describe('incompatible-addons fix', () => { - afterEach(() => { - vi.restoreAllMocks(); - }); - - it('should show incompatible addons registered in main.js', async () => { - await expect( - check({ - packageManager: { - getPackageVersion(packageName, basePath) { - switch (packageName) { - case '@storybook/addon-essentials': - return Promise.resolve('7.0.0'); - case '@storybook/addon-info': - return Promise.resolve('5.3.21'); - default: - return Promise.resolve(null); - } - }, - getAllDependencies: async () => ({}), - }, - main: { addons: ['@storybook/essentials', '@storybook/addon-info'] }, - }) - ).resolves.toEqual({ - incompatibleAddonList: [ - { - name: '@storybook/addon-info', - version: '5.3.21', - }, - ], - }); - }); - - it('should show incompatible addons from package.json', async () => { - await expect( - check({ - packageManager: { - getPackageVersion(packageName, basePath) { - switch (packageName) { - case '@storybook/addon-essentials': - return Promise.resolve('7.0.0'); - case '@storybook/addon-info': - return Promise.resolve('5.3.21'); - default: - return Promise.resolve(null); - } - }, - getAllDependencies: async () => ({ - '@storybook/addon-essentials': '7.0.0', - '@storybook/addon-info': '5.3.21', - }), - }, - main: { addons: [] }, - }) - ).resolves.toEqual({ - incompatibleAddonList: [ - { - name: '@storybook/addon-info', - version: '5.3.21', - }, - ], - }); - }); - - it('no-op when there are no incompatible addons', async () => { - await expect( - check({ - packageManager: { - getPackageVersion(packageName, basePath) { - switch (packageName) { - case '@storybook/addon-essentials': - return Promise.resolve('7.0.0'); - default: - return Promise.resolve(null); - } - }, - getAllDependencies: async () => ({}), - }, - main: { addons: ['@storybook/essentials'] }, - }) - ).resolves.toBeNull(); - }); -}); diff --git a/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts b/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts deleted file mode 100644 index fdf1c9678763..000000000000 --- a/code/lib/cli/src/automigrate/fixes/incompatible-addons.ts +++ /dev/null @@ -1,34 +0,0 @@ -import chalk from 'chalk'; -import dedent from 'ts-dedent'; -import type { Fix } from '../types'; -import { getIncompatibleAddons } from '../../doctor/getIncompatibleAddons'; - -interface IncompatibleAddonsOptions { - incompatibleAddonList: { name: string; version: string }[]; -} - -export const incompatibleAddons: Fix = { - id: 'incompatible-addons', - promptType: 'manual', - versionRange: ['*', '*'], - - async check({ mainConfig, packageManager }) { - const incompatibleAddonList = await getIncompatibleAddons(mainConfig, packageManager); - - return incompatibleAddonList.length > 0 ? { incompatibleAddonList } : null; - }, - prompt({ incompatibleAddonList }) { - return dedent` - ${chalk.bold( - 'Attention' - )}: We've detected that you're using the following addons in versions which are known to be incompatible with Storybook 8: - - ${incompatibleAddonList - .map(({ name, version }) => `- ${chalk.cyan(`${name}@${version}`)}`) - .join('\n')} - - Please be aware they might not work in Storybook 8. Reach out to their maintainers for updates and check the following Github issue for more information: - ${chalk.yellow('https://github.com/storybookjs/storybook/issues/26031')} - `; - }, -}; diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts index f5bd5a74fa0d..eb49848ab2c0 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts @@ -129,35 +129,7 @@ describe('getMigrationSummary', () => { The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/docs/8.0/migration-guide - And reach out on Discord if you need help: https://discord.gg/storybook - - ───────────────────────────────────────────────── - - Critical: The following dependencies are duplicated and WILL cause unexpected behavior: - - @storybook/instrumenter: - 6.0.0, 7.1.0 - - @storybook/core-common: - 6.0.0, 7.1.0 - - - - - Attention: The following dependencies are duplicated which might cause unexpected behavior: - - @storybook/addon-essentials: - 7.0.0, 7.1.0 - - - - - You can find more information for a given dependency by running yarn why - - - - - Please try de-duplicating these dependencies by running yarn dedupe" + And reach out on Discord if you need help: https://discord.gg/storybook" `); }); diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts index aa0503865749..21df32c01d77 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts @@ -4,7 +4,6 @@ import dedent from 'ts-dedent'; import type { InstallationMetadata } from '@storybook/core-common'; import type { FixSummary } from '../types'; import { FixStatus } from '../types'; -import { getDuplicatedDepsWarnings } from '../../doctor/getDuplicatedDepsWarnings'; export const messageDivider = '\n\n'; const segmentDivider = '\n\n─────────────────────────────────────────────────\n\n'; @@ -53,7 +52,6 @@ export function getMigrationSummary({ fixResults, fixSummary, logFile, - installationMetadata, }: { fixResults: Record; fixSummary: FixSummary; @@ -75,14 +73,6 @@ export function getMigrationSummary({ And reach out on Discord if you need help: ${chalk.yellow('https://discord.gg/storybook')} `); - const duplicatedDepsMessage = installationMetadata - ? getDuplicatedDepsWarnings(installationMetadata) - : getDuplicatedDepsWarnings(); - - if (duplicatedDepsMessage) { - messages.push(duplicatedDepsMessage.join(messageDivider)); - } - const hasNoFixes = Object.values(fixResults).every((r) => r === FixStatus.UNNECESSARY); const hasFailures = Object.values(fixResults).some( (r) => r === FixStatus.FAILED || r === FixStatus.CHECK_FAILED diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 92d21e2ec6c2..b0864a7071c6 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -27,6 +27,7 @@ import { FixStatus, allFixes } from './fixes'; import { cleanLog } from './helpers/cleanLog'; import { getMigrationSummary } from './helpers/getMigrationSummary'; import { getStorybookData } from './helpers/mainConfigFile'; +import { doctor } from '../doctor'; const logger = console; const LOG_FILE_NAME = 'migration-storybook.log'; @@ -83,7 +84,7 @@ export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { throw new Error('Could not determine main config path'); } - return automigrate({ + await automigrate({ ...options, packageManager, storybookVersion, @@ -92,6 +93,8 @@ export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { configDir, isUpgrade: false, }); + + await doctor({ configDir, packageManager: options.packageManager }); }; export const automigrate = async ({ diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts new file mode 100644 index 000000000000..e354497930f1 --- /dev/null +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts @@ -0,0 +1,122 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { + getIncompatibleStorybookPackages, + getIncompatiblePackagesSummary, +} from './getIncompatibleStorybookPackages'; +import pkgUp from 'read-pkg-up'; +import type { JsPackageManager } from '@storybook/core-common'; + +vi.mock('chalk', () => { + return { + default: { + yellow: (str: string) => str, + cyan: (str: string) => str, + }, + }; +}); + +vi.mock('read-pkg-up', () => ({ + default: vi.fn(), +})); + +const packageManagerMock = { + getAllDependencies: () => + Promise.resolve({ + '@storybook/addon-essentials': '7.0.0', + }), + latestVersion: vi.fn(() => Promise.resolve('8.0.0')), +} as Partial; + +describe('getIncompatibleStorybookPackages', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + it('returns an array of incompatible packages', async () => { + vi.mocked(pkgUp).mockResolvedValueOnce({ + packageJson: { + name: '@storybook/addon-essentials', + version: '7.0.0', + dependencies: { + '@storybook/core-common': '7.0.0', + }, + }, + path: '', + }); + + vi.mocked(packageManagerMock.latestVersion)?.mockResolvedValueOnce('8.0.0'); + + const result = await getIncompatibleStorybookPackages({ + currentStorybookVersion: '8.0.0', + packageManager: packageManagerMock as JsPackageManager, + }); + + expect(packageManagerMock.latestVersion).toHaveBeenCalled(); + expect(result).toEqual([ + { + packageName: '@storybook/addon-essentials', + packageVersion: '7.0.0', + hasIncompatibleDependencies: true, + homepage: undefined, + availableUpdate: true, + latestVersionOfPackage: '8.0.0', + }, + ]); + }); + + it('returns an array of incompatible packages without upgrade check', async () => { + vi.mocked(pkgUp).mockResolvedValueOnce({ + packageJson: { + name: '@storybook/addon-essentials', + version: '7.0.0', + dependencies: { + '@storybook/core-common': '7.0.0', + }, + }, + path: '', + }); + + const result = await getIncompatibleStorybookPackages({ + currentStorybookVersion: '8.0.0', + packageManager: packageManagerMock as JsPackageManager, + skipUpgradeCheck: true, + }); + + expect(packageManagerMock.latestVersion).not.toHaveBeenCalled(); + + expect(result).toEqual([ + { + packageName: '@storybook/addon-essentials', + packageVersion: '7.0.0', + hasIncompatibleDependencies: true, + homepage: undefined, + availableUpdate: false, + latestVersionOfPackage: undefined, + }, + ]); + }); +}); + +describe('getIncompatiblePackagesSummary', () => { + it('generates a summary message for incompatible packages', () => { + const analysedPackages = [ + { + packageName: 'storybook-react', + packageVersion: '1.0.0', + hasIncompatibleDependencies: true, + latestVersionOfPackage: '2.0.0', + availableUpdate: true, + }, + ]; + const summary = getIncompatiblePackagesSummary(analysedPackages, '7.0.0'); + expect(summary).toMatchInlineSnapshot(` + "The following addons are likely incompatible with Storybook 7.0.0: + - storybook-react@1.0.0 (2.0.0 available!) + + + Please consider updating your packages or contacting the maintainers for compatibility details. + For more on Storybook 8 compatibility, see the linked Github issue: + https://github.com/storybookjs/storybook/issues/26031" + `); + }); +}); diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts new file mode 100644 index 000000000000..e07ca9ec3489 --- /dev/null +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts @@ -0,0 +1,155 @@ +/* eslint-disable local-rules/no-uncategorized-errors */ +import chalk from 'chalk'; +import semver from 'semver'; +import readPkgUp from 'read-pkg-up'; +import type { JsPackageManager } from '@storybook/core-common'; +import { JsPackageManagerFactory, versions as storybookCorePackages } from '@storybook/core-common'; + +type AnalysedPackage = { + packageName: string; + packageVersion?: string; + homepage?: string; + hasIncompatibleDependencies?: boolean; + latestVersionOfPackage?: string; + availableUpdate?: boolean; +}; + +export const getIncompatibleStorybookPackages = async ({ + currentStorybookVersion, + packageManager = JsPackageManagerFactory.getPackageManager(), + skipUpgradeCheck = false, + skipErrors = false, +}: { + currentStorybookVersion: string; + packageManager?: JsPackageManager; + skipUpgradeCheck?: boolean; + skipErrors?: boolean; +}): Promise => { + const allDeps = await packageManager.getAllDependencies(); + const storybookLikeDeps = Object.keys(allDeps).filter((dep) => dep.includes('storybook')); + + if (storybookLikeDeps.length === 0) { + throw new Error('No storybook dependencies found in the package.json'); + } + + const isPackageIncompatible = (installedVersion: string) => { + const dependencyMajor = semver.coerce(installedVersion)!.major; + const storybookMajor = semver.coerce(currentStorybookVersion)!.major; + return dependencyMajor !== storybookMajor; + }; + + const checkCompatibility = async (dependency: string): Promise => { + try { + const resolvedPath = require.resolve(dependency); + const result = await readPkgUp({ cwd: resolvedPath }); + + if (!result?.packageJson) { + throw new Error(`No package.json found for ${dependency}`); + } + + const { + packageJson: { version: versionSpecifier, name, dependencies, peerDependencies, homepage }, + } = result; + const coercedVersion = new semver.SemVer(versionSpecifier); + const packageVersion = coercedVersion.version; + + const hasIncompatibleDependencies = !!Object.entries({ + ...dependencies, + ...peerDependencies, + }) + .filter(([dep]) => Object.keys(storybookCorePackages).includes(dep)) + .find(([, version]) => { + // prevent issues with "tag" based versions e.g. "latest" or "next" instead of actual numbers + return version && semver.validRange(version) && isPackageIncompatible(version); + }); + + let latestVersionOfPackage; + + if (!skipUpgradeCheck) { + try { + const isStorybookPreRelease = currentStorybookVersion.includes('-'); + // if the user is on a pre-release, we try to get the existing prereleases of all packages + if (isStorybookPreRelease) { + // this is mostly a guess that makes it work for external addons which use the next/latest release strategy + const constraint = currentStorybookVersion.includes('-') + ? `^${coercedVersion.major + 1}.0.0-alpha.0` + : `^${coercedVersion.major + 1}.0.0`; + + latestVersionOfPackage = await packageManager.latestVersion(name, constraint); + } else { + latestVersionOfPackage = await packageManager.latestVersion(name); + } + } catch (err) { + // things might not work when defining the prerelease constraint, so we fall back to "latest" + latestVersionOfPackage = await packageManager.latestVersion(name); + } + } + + return { + packageName: name, + packageVersion, + homepage, + hasIncompatibleDependencies, + latestVersionOfPackage, + availableUpdate: !!( + latestVersionOfPackage && semver.gt(latestVersionOfPackage, packageVersion) + ), + }; + } catch (err) { + // For the reviewers: When running sb doctor, this error message is only shown in the log file. + // Do we want it? maybe not? it's currently under a flag because this is also used in storybook dev and we do not want to show errors there + // We can choose to silently fail, but this has proven quite useful as some of our addons + // have faulty package.json files: @storybook/addon-onboarding, @storybook/addon-coverage + if (!skipErrors) { + console.error( + `Error checking compatibility for ${dependency}, please report an issue:\n`, + err + ); + } + return { packageName: dependency }; + } + }; + + return Promise.all(storybookLikeDeps.map((dep) => checkCompatibility(dep))); +}; + +export const getIncompatiblePackagesSummary = ( + dependencyAnalysis: AnalysedPackage[], + currentVersion: string +) => { + const summaryMessage: string[] = []; + + const incompatiblePackages = dependencyAnalysis.filter( + (dep) => dep.hasIncompatibleDependencies + ) as AnalysedPackage[]; + + if (incompatiblePackages.length > 0) { + summaryMessage.push( + `The following addons are likely incompatible with Storybook ${currentVersion}:` + ); + incompatiblePackages.forEach( + ({ + packageName: addonName, + packageVersion: addonVersion, + homepage, + availableUpdate, + latestVersionOfPackage, + }) => { + const packageDescription = `${chalk.cyan(addonName)}@${chalk.cyan(addonVersion)}`; + const updateMessage = availableUpdate ? ` (${latestVersionOfPackage} available!)` : ''; + const packageRepo = homepage ? `\n Repo: ${chalk.yellow(homepage)}` : ''; + + summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`); + } + ); + + summaryMessage.push( + '\n', + 'Please consider updating your packages or contacting the maintainers for compatibility details.', + 'For more on Storybook 8 compatibility, see the linked Github issue:', + chalk.yellow('https://github.com/storybookjs/storybook/issues/26031') + ); + } + + return summaryMessage.join('\n'); +}; diff --git a/code/lib/cli/src/doctor/index.ts b/code/lib/cli/src/doctor/index.ts index 9aaeede8bc0f..efd1b74642c5 100644 --- a/code/lib/cli/src/doctor/index.ts +++ b/code/lib/cli/src/doctor/index.ts @@ -9,10 +9,11 @@ import { JsPackageManagerFactory } from '@storybook/core-common'; import type { PackageManagerName } from '@storybook/core-common'; import { getStorybookData } from '../automigrate/helpers/mainConfigFile'; import { cleanLog } from '../automigrate/helpers/cleanLog'; -import { incompatibleAddons } from '../automigrate/fixes/incompatible-addons'; -import { getDuplicatedDepsWarnings } from './getDuplicatedDepsWarnings'; -import { getIncompatibleAddons } from './getIncompatibleAddons'; import { getMismatchingVersionsWarnings } from './getMismatchingVersionsWarning'; +import { + getIncompatiblePackagesSummary, + getIncompatibleStorybookPackages, +} from './getIncompatibleStorybookPackages'; const logger = console; const LOG_FILE_NAME = 'doctor-storybook.log'; @@ -45,14 +46,24 @@ type DoctorOptions = { packageManager?: PackageManagerName; }; +const logDiagnostic = (title: string, message: string) => { + logger.info( + boxen(message, { + borderStyle: 'round', + padding: 1, + title, + borderColor: '#F1618C', + }) + ); +}; + export const doctor = async ({ configDir: userSpecifiedConfigDir, packageManager: pkgMgr, }: DoctorOptions = {}) => { augmentLogsToFile(); - const diagnosticMessages: string[] = []; - logger.info('🩺 checking the health of your Storybook..'); + logger.info('🩺 The doctor is checking the health of your Storybook..'); const packageManager = JsPackageManagerFactory.getPackageManager({ force: pkgMgr }); let storybookVersion; @@ -89,9 +100,17 @@ export const doctor = async ({ throw new Error('mainConfig is undefined'); } - const incompatibleAddonList = await getIncompatibleAddons(mainConfig); - if (incompatibleAddonList.length > 0) { - diagnosticMessages.push(incompatibleAddons.prompt({ incompatibleAddonList })); + const allDependencies = (await packageManager.getAllDependencies()) as Record; + + const incompatibleStorybookPackagesList = await getIncompatibleStorybookPackages({ + currentStorybookVersion: storybookVersion, + }); + const incompatiblePackagesMessage = getIncompatiblePackagesSummary( + incompatibleStorybookPackagesList, + storybookVersion + ); + if (incompatiblePackagesMessage) { + logDiagnostic('Incompatible packages found', incompatiblePackagesMessage); } const installationMetadata = await packageManager.findInstallations([ @@ -99,36 +118,29 @@ export const doctor = async ({ 'storybook', ]); - const allDependencies = (await packageManager.getAllDependencies()) as Record; const mismatchingVersionMessage = getMismatchingVersionsWarnings( installationMetadata, allDependencies ); if (mismatchingVersionMessage) { - diagnosticMessages.push(mismatchingVersionMessage); - } else { - const list = installationMetadata - ? getDuplicatedDepsWarnings(installationMetadata) - : getDuplicatedDepsWarnings(); - if (list) { - diagnosticMessages.push(list?.join('\n')); - } + logDiagnostic('Diagnostics', [mismatchingVersionMessage].join('\n\n-------\n\n')); } + // CHECK: Temporarily disable multiple versions warning as the incompatible packages mostly covers this + // else { + // const list = installationMetadata + // ? getDuplicatedDepsWarnings(installationMetadata) + // : getDuplicatedDepsWarnings(); + // if (list) { + // diagnosticMessages.push(list?.join('\n')); + // } + // } logger.info(); - const finalMessages = diagnosticMessages.filter(Boolean); + const foundIssues = incompatiblePackagesMessage || mismatchingVersionMessage; - if (finalMessages.length > 0) { - finalMessages.push(`You can find the full logs in ${chalk.cyan(LOG_FILE_PATH)}`); + if (foundIssues) { + logger.info(`You can find the full logs in ${chalk.cyan(LOG_FILE_PATH)}`); - logger.info( - boxen(finalMessages.join('\n\n-------\n\n'), { - borderStyle: 'round', - padding: 1, - title: 'Diagnostics', - borderColor: 'red', - }) - ); await move(TEMP_LOG_FILE_PATH, join(process.cwd(), LOG_FILE_NAME), { overwrite: true }); } else { logger.info('πŸ₯³ Your Storybook project looks good!'); diff --git a/code/lib/core-server/src/build-dev.ts b/code/lib/core-server/src/build-dev.ts index b55b5e22b8a7..de47bcd7a575 100644 --- a/code/lib/core-server/src/build-dev.ts +++ b/code/lib/core-server/src/build-dev.ts @@ -89,7 +89,7 @@ export async function buildDevStandalone( frameworkName = frameworkName || 'custom'; try { - await warnOnIncompatibleAddons(config); + await warnOnIncompatibleAddons(packageJson.version); } catch (e) { console.warn('Storybook failed to check addon compatibility', e); } diff --git a/code/lib/core-server/src/utils/warnOnIncompatibleAddons.ts b/code/lib/core-server/src/utils/warnOnIncompatibleAddons.ts index fd4aaac39286..6d7359a21edb 100644 --- a/code/lib/core-server/src/utils/warnOnIncompatibleAddons.ts +++ b/code/lib/core-server/src/utils/warnOnIncompatibleAddons.ts @@ -1,25 +1,22 @@ -import type { StorybookConfig } from '@storybook/types'; import { logger } from '@storybook/node-logger'; -import chalk from 'chalk'; -import dedent from 'ts-dedent'; +import { + getIncompatibleStorybookPackages, + getIncompatiblePackagesSummary, +} from '../../../cli/src/doctor/getIncompatibleStorybookPackages'; -import { getIncompatibleAddons } from '../../../cli/src/doctor/getIncompatibleAddons'; +export const warnOnIncompatibleAddons = async (currentStorybookVersion: string) => { + const incompatiblePackagesList = await getIncompatibleStorybookPackages({ + skipUpgradeCheck: true, + skipErrors: true, + currentStorybookVersion, + }); -export const warnOnIncompatibleAddons = async (config: StorybookConfig) => { - const incompatibleAddons = await getIncompatibleAddons(config); + const incompatiblePackagesMessage = await getIncompatiblePackagesSummary( + incompatiblePackagesList, + currentStorybookVersion + ); - if (incompatibleAddons.length > 0) { - logger.warn(dedent` - ${chalk.bold( - chalk.red('Attention') - )}: We've detected that you're using the following addons in versions which are known to be incompatible with Storybook 7: - - ${incompatibleAddons - .map(({ name, version }) => `- ${chalk.cyan(`${name}@${version}`)}`) - .join('\n')} - - Please be aware they might not work in Storybook 7. Reach out to their maintainers for updates and check the following Github issue for more information: - ${chalk.yellow('https://github.com/storybookjs/storybook/issues/20529')} - `); + if (incompatiblePackagesMessage) { + logger.warn(incompatiblePackagesMessage); } }; From 99d04b2c0c01212405f6f256f025478610a20ca5 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 11:47:43 +0100 Subject: [PATCH 422/430] rework the logic based on reviews --- .../getIncompatibleStorybookPackages.test.ts | 140 ++++++++------ .../getIncompatibleStorybookPackages.ts | 174 ++++++++---------- code/lib/cli/src/doctor/index.ts | 70 ++++--- code/lib/cli/src/doctor/utils.ts | 33 ++++ 4 files changed, 236 insertions(+), 181 deletions(-) create mode 100644 code/lib/cli/src/doctor/utils.ts diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts index e354497930f1..40955d363578 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts @@ -1,22 +1,28 @@ -import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { describe, it, expect, vi } from 'vitest'; +import type { AnalysedPackage } from './getIncompatibleStorybookPackages'; import { getIncompatibleStorybookPackages, getIncompatiblePackagesSummary, + checkPackageCompatibility, } from './getIncompatibleStorybookPackages'; -import pkgUp from 'read-pkg-up'; import type { JsPackageManager } from '@storybook/core-common'; +import * as doctorUtils from './utils'; + vi.mock('chalk', () => { return { default: { yellow: (str: string) => str, cyan: (str: string) => str, + bold: (str: string) => str, }, }; }); -vi.mock('read-pkg-up', () => ({ - default: vi.fn(), +vi.mock('./utils', () => ({ + getPackageJsonPath: vi.fn(() => Promise.resolve('package.json')), + getPackageJsonOfDependency: vi.fn(() => Promise.resolve({})), + PackageJsonNotFoundError: Error, })); const packageManagerMock = { @@ -27,71 +33,96 @@ const packageManagerMock = { latestVersion: vi.fn(() => Promise.resolve('8.0.0')), } as Partial; -describe('getIncompatibleStorybookPackages', () => { - beforeEach(() => { - vi.resetAllMocks(); - }); - - it('returns an array of incompatible packages', async () => { - vi.mocked(pkgUp).mockResolvedValueOnce({ - packageJson: { - name: '@storybook/addon-essentials', - version: '7.0.0', - dependencies: { - '@storybook/core-common': '7.0.0', - }, +describe('checkPackageCompatibility', () => { + it('returns that an package is incompatible', async () => { + const packageName = 'my-storybook-package'; + vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + name: packageName, + version: '1.0.0', + dependencies: { + '@storybook/core-common': '7.0.0', }, - path: '', + } as any); + const result = await checkPackageCompatibility(packageName, { + currentStorybookVersion: '8.0.0', + packageManager: packageManagerMock as JsPackageManager, }); + expect(result).toEqual({ + packageName: 'my-storybook-package', + packageVersion: '1.0.0', + hasIncompatibleDependencies: true, + homepage: undefined, + availableUpdate: undefined, + }); + }); - vi.mocked(packageManagerMock.latestVersion)?.mockResolvedValueOnce('8.0.0'); - - const result = await getIncompatibleStorybookPackages({ + it('returns that an package is compatible', async () => { + const packageName = 'my-storybook-package'; + vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + name: packageName, + version: '1.0.0', + dependencies: { + '@storybook/core-common': '8.0.0', + }, + } as any); + const result = await checkPackageCompatibility(packageName, { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, }); + expect(result).toEqual({ + packageName: 'my-storybook-package', + packageVersion: '1.0.0', + hasIncompatibleDependencies: false, + homepage: undefined, + availableUpdate: undefined, + }); + }); - expect(packageManagerMock.latestVersion).toHaveBeenCalled(); - expect(result).toEqual([ - { - packageName: '@storybook/addon-essentials', - packageVersion: '7.0.0', - hasIncompatibleDependencies: true, - homepage: undefined, - availableUpdate: true, - latestVersionOfPackage: '8.0.0', + it('returns that an package is incompatible and because it is core, can be upgraded', async () => { + const packageName = '@storybook/addon-essentials'; + vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + name: packageName, + version: '7.0.0', + dependencies: { + '@storybook/core-common': '7.0.0', }, - ]); + } as any); + const result = await checkPackageCompatibility(packageName, { + currentStorybookVersion: '8.0.0', + packageManager: packageManagerMock as JsPackageManager, + }); + expect(result).toEqual({ + packageName: '@storybook/addon-essentials', + packageVersion: '7.0.0', + hasIncompatibleDependencies: true, + homepage: undefined, + availableUpdate: '8.0.0', + }); }); +}); - it('returns an array of incompatible packages without upgrade check', async () => { - vi.mocked(pkgUp).mockResolvedValueOnce({ - packageJson: { - name: '@storybook/addon-essentials', - version: '7.0.0', - dependencies: { - '@storybook/core-common': '7.0.0', - }, +describe('getIncompatibleStorybookPackages', () => { + it('returns an array of incompatible packages', async () => { + vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + name: '@storybook/addon-essentials', + version: '7.0.0', + dependencies: { + '@storybook/core-common': '7.0.0', }, - path: '', - }); + } as any); const result = await getIncompatibleStorybookPackages({ currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, - skipUpgradeCheck: true, }); - expect(packageManagerMock.latestVersion).not.toHaveBeenCalled(); - expect(result).toEqual([ { packageName: '@storybook/addon-essentials', packageVersion: '7.0.0', hasIncompatibleDependencies: true, homepage: undefined, - availableUpdate: false, - latestVersionOfPackage: undefined, + availableUpdate: '8.0.0', }, ]); }); @@ -99,19 +130,24 @@ describe('getIncompatibleStorybookPackages', () => { describe('getIncompatiblePackagesSummary', () => { it('generates a summary message for incompatible packages', () => { - const analysedPackages = [ + const analysedPackages: AnalysedPackage[] = [ { packageName: 'storybook-react', packageVersion: '1.0.0', hasIncompatibleDependencies: true, - latestVersionOfPackage: '2.0.0', - availableUpdate: true, + }, + { + packageName: '@storybook/addon-essentials', + packageVersion: '7.0.0', + hasIncompatibleDependencies: true, + availableUpdate: '8.0.0', }, ]; - const summary = getIncompatiblePackagesSummary(analysedPackages, '7.0.0'); + const summary = getIncompatiblePackagesSummary(analysedPackages, '8.0.0'); expect(summary).toMatchInlineSnapshot(` - "The following addons are likely incompatible with Storybook 7.0.0: - - storybook-react@1.0.0 (2.0.0 available!) + "The following packages are incompatible with Storybook 8.0.0 as they depend on different major versions of Storybook packages: + - storybook-react@1.0.0 + - @storybook/addon-essentials@7.0.0 (8.0.0 available!) Please consider updating your packages or contacting the maintainers for compatibility details. diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts index e07ca9ec3489..33dcc99738d3 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts @@ -1,121 +1,99 @@ /* eslint-disable local-rules/no-uncategorized-errors */ import chalk from 'chalk'; import semver from 'semver'; -import readPkgUp from 'read-pkg-up'; import type { JsPackageManager } from '@storybook/core-common'; import { JsPackageManagerFactory, versions as storybookCorePackages } from '@storybook/core-common'; +import { PackageJsonNotFoundError, getPackageJsonOfDependency } from './utils'; -type AnalysedPackage = { +export type AnalysedPackage = { packageName: string; packageVersion?: string; homepage?: string; hasIncompatibleDependencies?: boolean; - latestVersionOfPackage?: string; - availableUpdate?: boolean; + availableUpdate?: string; }; -export const getIncompatibleStorybookPackages = async ({ - currentStorybookVersion, - packageManager = JsPackageManagerFactory.getPackageManager(), - skipUpgradeCheck = false, - skipErrors = false, -}: { +type Context = { currentStorybookVersion: string; - packageManager?: JsPackageManager; + packageManager: JsPackageManager; skipUpgradeCheck?: boolean; skipErrors?: boolean; -}): Promise => { - const allDeps = await packageManager.getAllDependencies(); - const storybookLikeDeps = Object.keys(allDeps).filter((dep) => dep.includes('storybook')); +}; - if (storybookLikeDeps.length === 0) { - throw new Error('No storybook dependencies found in the package.json'); - } +const isPackageIncompatible = (installedVersion: string, currentStorybookVersion: string) => { + return !semver.satisfies(currentStorybookVersion, installedVersion); +}; - const isPackageIncompatible = (installedVersion: string) => { - const dependencyMajor = semver.coerce(installedVersion)!.major; - const storybookMajor = semver.coerce(currentStorybookVersion)!.major; - return dependencyMajor !== storybookMajor; - }; +export const checkPackageCompatibility = async (dependency: string, context: Context) => { + const { currentStorybookVersion, skipErrors } = context; + try { + const { + version: packageVersion, + name, + dependencies, + peerDependencies, + homepage, + } = await getPackageJsonOfDependency(dependency); + + const hasIncompatibleDependencies = !!Object.entries({ + ...dependencies, + ...peerDependencies, + }) + .filter(([dep]) => Object.keys(storybookCorePackages).includes(dep)) + .find(([, version]) => { + // prevent issues with "tag" based versions e.g. "latest" or "next" instead of actual numbers + return ( + version && + semver.validRange(version) && + isPackageIncompatible(version, currentStorybookVersion) + ); + }); - const checkCompatibility = async (dependency: string): Promise => { - try { - const resolvedPath = require.resolve(dependency); - const result = await readPkgUp({ cwd: resolvedPath }); + const isCorePackage = Object.keys(storybookCorePackages).includes(name); - if (!result?.packageJson) { - throw new Error(`No package.json found for ${dependency}`); - } + let availableUpdate; - const { - packageJson: { version: versionSpecifier, name, dependencies, peerDependencies, homepage }, - } = result; - const coercedVersion = new semver.SemVer(versionSpecifier); - const packageVersion = coercedVersion.version; - - const hasIncompatibleDependencies = !!Object.entries({ - ...dependencies, - ...peerDependencies, - }) - .filter(([dep]) => Object.keys(storybookCorePackages).includes(dep)) - .find(([, version]) => { - // prevent issues with "tag" based versions e.g. "latest" or "next" instead of actual numbers - return version && semver.validRange(version) && isPackageIncompatible(version); - }); - - let latestVersionOfPackage; - - if (!skipUpgradeCheck) { - try { - const isStorybookPreRelease = currentStorybookVersion.includes('-'); - // if the user is on a pre-release, we try to get the existing prereleases of all packages - if (isStorybookPreRelease) { - // this is mostly a guess that makes it work for external addons which use the next/latest release strategy - const constraint = currentStorybookVersion.includes('-') - ? `^${coercedVersion.major + 1}.0.0-alpha.0` - : `^${coercedVersion.major + 1}.0.0`; - - latestVersionOfPackage = await packageManager.latestVersion(name, constraint); - } else { - latestVersionOfPackage = await packageManager.latestVersion(name); - } - } catch (err) { - // things might not work when defining the prerelease constraint, so we fall back to "latest" - latestVersionOfPackage = await packageManager.latestVersion(name); - } - } + // For now, we notify about updates only for core packages (which will match the currently installed storybook version) + // In the future, we can use packageManager.latestVersion(name, constraint) for all packages + if (isCorePackage && semver.gt(currentStorybookVersion, packageVersion)) { + availableUpdate = currentStorybookVersion; + } - return { - packageName: name, - packageVersion, - homepage, - hasIncompatibleDependencies, - latestVersionOfPackage, - availableUpdate: !!( - latestVersionOfPackage && semver.gt(latestVersionOfPackage, packageVersion) - ), - }; - } catch (err) { - // For the reviewers: When running sb doctor, this error message is only shown in the log file. - // Do we want it? maybe not? it's currently under a flag because this is also used in storybook dev and we do not want to show errors there - // We can choose to silently fail, but this has proven quite useful as some of our addons - // have faulty package.json files: @storybook/addon-onboarding, @storybook/addon-coverage - if (!skipErrors) { - console.error( - `Error checking compatibility for ${dependency}, please report an issue:\n`, - err - ); - } - return { packageName: dependency }; + return { + packageName: name, + packageVersion, + homepage, + hasIncompatibleDependencies, + availableUpdate, + }; + } catch (err) { + if (!(err instanceof PackageJsonNotFoundError) && !skipErrors) { + console.log(`Error checking compatibility for ${dependency}, please report an issue:\n`, err); } - }; + return { packageName: dependency }; + } +}; + +export const getIncompatibleStorybookPackages = async ( + context: Omit & Partial> +): Promise => { + const packageManager = context.packageManager ?? JsPackageManagerFactory.getPackageManager(); + + const allDeps = await packageManager.getAllDependencies(); + const storybookLikeDeps = Object.keys(allDeps).filter((dep) => dep.includes('storybook')); + + if (storybookLikeDeps.length === 0) { + throw new Error('No storybook dependencies found in the package.json'); + } - return Promise.all(storybookLikeDeps.map((dep) => checkCompatibility(dep))); + return Promise.all( + storybookLikeDeps.map((dep) => checkPackageCompatibility(dep, { ...context, packageManager })) + ); }; export const getIncompatiblePackagesSummary = ( dependencyAnalysis: AnalysedPackage[], - currentVersion: string + currentStorybookVersion: string ) => { const summaryMessage: string[] = []; @@ -125,18 +103,14 @@ export const getIncompatiblePackagesSummary = ( if (incompatiblePackages.length > 0) { summaryMessage.push( - `The following addons are likely incompatible with Storybook ${currentVersion}:` + `The following packages are incompatible with Storybook ${chalk.bold( + currentStorybookVersion + )} as they depend on different major versions of Storybook packages:` ); incompatiblePackages.forEach( - ({ - packageName: addonName, - packageVersion: addonVersion, - homepage, - availableUpdate, - latestVersionOfPackage, - }) => { + ({ packageName: addonName, packageVersion: addonVersion, homepage, availableUpdate }) => { const packageDescription = `${chalk.cyan(addonName)}@${chalk.cyan(addonVersion)}`; - const updateMessage = availableUpdate ? ` (${latestVersionOfPackage} available!)` : ''; + const updateMessage = availableUpdate ? ` (${availableUpdate} available!)` : ''; const packageRepo = homepage ? `\n Repo: ${chalk.yellow(homepage)}` : ''; summaryMessage.push(`- ${packageDescription}${updateMessage}${packageRepo}`); diff --git a/code/lib/cli/src/doctor/index.ts b/code/lib/cli/src/doctor/index.ts index efd1b74642c5..a2d538c15703 100644 --- a/code/lib/cli/src/doctor/index.ts +++ b/code/lib/cli/src/doctor/index.ts @@ -14,6 +14,8 @@ import { getIncompatiblePackagesSummary, getIncompatibleStorybookPackages, } from './getIncompatibleStorybookPackages'; +import { getDuplicatedDepsWarnings } from './getDuplicatedDepsWarnings'; +import { isPrerelease } from './utils'; const logger = console; const LOG_FILE_NAME = 'doctor-storybook.log'; @@ -46,23 +48,25 @@ type DoctorOptions = { packageManager?: PackageManagerName; }; -const logDiagnostic = (title: string, message: string) => { - logger.info( - boxen(message, { - borderStyle: 'round', - padding: 1, - title, - borderColor: '#F1618C', - }) - ); -}; - export const doctor = async ({ configDir: userSpecifiedConfigDir, packageManager: pkgMgr, }: DoctorOptions = {}) => { augmentLogsToFile(); + let foundIssues = false; + const logDiagnostic = (title: string, message: string) => { + foundIssues = true; + logger.info( + boxen(message, { + borderStyle: 'round', + padding: 1, + title, + borderColor: '#F1618C', + }) + ); + }; + logger.info('🩺 The doctor is checking the health of your Storybook..'); const packageManager = JsPackageManagerFactory.getPackageManager({ force: pkgMgr }); @@ -118,28 +122,36 @@ export const doctor = async ({ 'storybook', ]); - const mismatchingVersionMessage = getMismatchingVersionsWarnings( - installationMetadata, - allDependencies - ); - if (mismatchingVersionMessage) { - logDiagnostic('Diagnostics', [mismatchingVersionMessage].join('\n\n-------\n\n')); + // If we found incompatible packages, we let the users fix that first + // If they run doctor again and there are still issues, we show the other warnings + if (!incompatiblePackagesMessage) { + const mismatchingVersionMessage = getMismatchingVersionsWarnings( + installationMetadata, + allDependencies + ); + if (mismatchingVersionMessage) { + logDiagnostic('Diagnostics', [mismatchingVersionMessage].join('\n\n-------\n\n')); + } else { + const list = installationMetadata + ? getDuplicatedDepsWarnings(installationMetadata) + : getDuplicatedDepsWarnings(); + if (list) { + logDiagnostic('Duplicated dependencies found', list?.join('\n')); + } + } } - // CHECK: Temporarily disable multiple versions warning as the incompatible packages mostly covers this - // else { - // const list = installationMetadata - // ? getDuplicatedDepsWarnings(installationMetadata) - // : getDuplicatedDepsWarnings(); - // if (list) { - // diagnosticMessages.push(list?.join('\n')); - // } - // } - logger.info(); - const foundIssues = incompatiblePackagesMessage || mismatchingVersionMessage; + const doctorCommand = isPrerelease(storybookVersion) + ? 'npx storybook@next doctor' + : 'npx storybook@latest doctor'; + + logger.info( + `πŸ‘‰ You can always recheck the health of your project by running:\n${chalk.cyan(doctorCommand)}` + ); + logger.info(); if (foundIssues) { - logger.info(`You can find the full logs in ${chalk.cyan(LOG_FILE_PATH)}`); + logger.info(`Full logs are available in ${chalk.cyan(LOG_FILE_PATH)}`); await move(TEMP_LOG_FILE_PATH, join(process.cwd(), LOG_FILE_NAME), { overwrite: true }); } else { diff --git a/code/lib/cli/src/doctor/utils.ts b/code/lib/cli/src/doctor/utils.ts new file mode 100644 index 000000000000..f4e861e07b8d --- /dev/null +++ b/code/lib/cli/src/doctor/utils.ts @@ -0,0 +1,33 @@ +import path from 'path'; +import readPkgUp from 'read-pkg-up'; + +export const getPackageJsonPath = (dependency: string) => { + try { + return require.resolve(dependency, { paths: [process.cwd()] }); + } catch (err) { + return require.resolve(path.join(dependency, 'package.json'), { + paths: [process.cwd()], + }); + } +}; + +export class PackageJsonNotFoundError extends Error { + constructor() { + super(`No package.json found`); + } +} + +export const getPackageJsonOfDependency = async (dependency: string) => { + const resolvedPath = getPackageJsonPath(dependency); + const result = await readPkgUp({ cwd: resolvedPath }); + + if (!result?.packageJson) { + throw new PackageJsonNotFoundError(); + } + + return result.packageJson; +}; + +export const isPrerelease = (version: string) => { + return version.includes('-'); +}; From 76c2388130daf1ffb7864368cc1887987ff8c5bd Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 11:56:34 +0100 Subject: [PATCH 423/430] bring duplicated deps logic back --- .../helpers/getMigrationSummary.test.ts | 30 ++++++++++++++++++- .../helpers/getMigrationSummary.ts | 10 +++++++ .../src/doctor/getDuplicatedDepsWarnings.ts | 8 ++--- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts index eb49848ab2c0..f43e84370852 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.test.ts @@ -129,7 +129,35 @@ describe('getMigrationSummary', () => { The automigrations try to migrate common patterns in your project, but might not contain everything needed to migrate to the latest version of Storybook. Please check the changelog and migration guide for manual migrations and more information: https://storybook.js.org/docs/8.0/migration-guide - And reach out on Discord if you need help: https://discord.gg/storybook" + And reach out on Discord if you need help: https://discord.gg/storybook + + ───────────────────────────────────────────────── + + Critical: The following dependencies are duplicated and WILL cause unexpected behavior: + + @storybook/instrumenter: + 6.0.0, 7.1.0 + + @storybook/core-common: + 6.0.0, 7.1.0 + + + + + Attention: The following dependencies are duplicated which might cause unexpected behavior: + + @storybook/addon-essentials: + 7.0.0, 7.1.0 + + + + + Please try de-duplicating these dependencies by running yarn dedupe + + + + + You can find more information for a given dependency by running yarn why " `); }); diff --git a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts index 21df32c01d77..aa0503865749 100644 --- a/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts +++ b/code/lib/cli/src/automigrate/helpers/getMigrationSummary.ts @@ -4,6 +4,7 @@ import dedent from 'ts-dedent'; import type { InstallationMetadata } from '@storybook/core-common'; import type { FixSummary } from '../types'; import { FixStatus } from '../types'; +import { getDuplicatedDepsWarnings } from '../../doctor/getDuplicatedDepsWarnings'; export const messageDivider = '\n\n'; const segmentDivider = '\n\n─────────────────────────────────────────────────\n\n'; @@ -52,6 +53,7 @@ export function getMigrationSummary({ fixResults, fixSummary, logFile, + installationMetadata, }: { fixResults: Record; fixSummary: FixSummary; @@ -73,6 +75,14 @@ export function getMigrationSummary({ And reach out on Discord if you need help: ${chalk.yellow('https://discord.gg/storybook')} `); + const duplicatedDepsMessage = installationMetadata + ? getDuplicatedDepsWarnings(installationMetadata) + : getDuplicatedDepsWarnings(); + + if (duplicatedDepsMessage) { + messages.push(duplicatedDepsMessage.join(messageDivider)); + } + const hasNoFixes = Object.values(fixResults).every((r) => r === FixStatus.UNNECESSARY); const hasFailures = Object.values(fixResults).some( (r) => r === FixStatus.FAILED || r === FixStatus.CHECK_FAILED diff --git a/code/lib/cli/src/doctor/getDuplicatedDepsWarnings.ts b/code/lib/cli/src/doctor/getDuplicatedDepsWarnings.ts index d76c01d9ee97..272313300728 100644 --- a/code/lib/cli/src/doctor/getDuplicatedDepsWarnings.ts +++ b/code/lib/cli/src/doctor/getDuplicatedDepsWarnings.ts @@ -101,15 +101,15 @@ export function getDuplicatedDepsWarnings( messages.push( '\n', - `You can find more information for a given dependency by running ${chalk.cyan( - `${installationMetadata.infoCommand} ` + `Please try de-duplicating these dependencies by running ${chalk.cyan( + `${installationMetadata.dedupeCommand}` )}` ); messages.push( '\n', - `Please try de-duplicating these dependencies by running ${chalk.cyan( - `${installationMetadata.dedupeCommand}` + `You can find more information for a given dependency by running ${chalk.cyan( + `${installationMetadata.infoCommand} ` )}` ); From 460e98af4dad67f30ef581dab873aba966799d8a Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 12:20:30 +0100 Subject: [PATCH 424/430] fix types and comment review --- .../getIncompatibleStorybookPackages.test.ts | 56 +++++++++---------- code/lib/cli/src/doctor/utils.ts | 4 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts index 40955d363578..ba393427378f 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts @@ -34,7 +34,7 @@ const packageManagerMock = { } as Partial; describe('checkPackageCompatibility', () => { - it('returns that an package is incompatible', async () => { + it('returns that a package is incompatible', async () => { const packageName = 'my-storybook-package'; vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ name: packageName, @@ -47,16 +47,16 @@ describe('checkPackageCompatibility', () => { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, }); - expect(result).toEqual({ - packageName: 'my-storybook-package', - packageVersion: '1.0.0', - hasIncompatibleDependencies: true, - homepage: undefined, - availableUpdate: undefined, - }); + expect(result).toEqual( + expect.objectContaining({ + packageName: 'my-storybook-package', + packageVersion: '1.0.0', + hasIncompatibleDependencies: true, + }) + ); }); - it('returns that an package is compatible', async () => { + it('returns that a package is compatible', async () => { const packageName = 'my-storybook-package'; vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ name: packageName, @@ -69,16 +69,16 @@ describe('checkPackageCompatibility', () => { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, }); - expect(result).toEqual({ - packageName: 'my-storybook-package', - packageVersion: '1.0.0', - hasIncompatibleDependencies: false, - homepage: undefined, - availableUpdate: undefined, - }); + expect(result).toEqual( + expect.objectContaining({ + packageName: 'my-storybook-package', + packageVersion: '1.0.0', + hasIncompatibleDependencies: false, + }) + ); }); - it('returns that an package is incompatible and because it is core, can be upgraded', async () => { + it('returns that a package is incompatible and because it is core, can be upgraded', async () => { const packageName = '@storybook/addon-essentials'; vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ name: packageName, @@ -91,13 +91,14 @@ describe('checkPackageCompatibility', () => { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, }); - expect(result).toEqual({ - packageName: '@storybook/addon-essentials', - packageVersion: '7.0.0', - hasIncompatibleDependencies: true, - homepage: undefined, - availableUpdate: '8.0.0', - }); + expect(result).toEqual( + expect.objectContaining({ + packageName: '@storybook/addon-essentials', + packageVersion: '7.0.0', + hasIncompatibleDependencies: true, + availableUpdate: '8.0.0', + }) + ); }); }); @@ -117,13 +118,10 @@ describe('getIncompatibleStorybookPackages', () => { }); expect(result).toEqual([ - { + expect.objectContaining({ packageName: '@storybook/addon-essentials', - packageVersion: '7.0.0', hasIncompatibleDependencies: true, - homepage: undefined, - availableUpdate: '8.0.0', - }, + }), ]); }); }); diff --git a/code/lib/cli/src/doctor/utils.ts b/code/lib/cli/src/doctor/utils.ts index f4e861e07b8d..7370315a67b4 100644 --- a/code/lib/cli/src/doctor/utils.ts +++ b/code/lib/cli/src/doctor/utils.ts @@ -17,7 +17,9 @@ export class PackageJsonNotFoundError extends Error { } } -export const getPackageJsonOfDependency = async (dependency: string) => { +export const getPackageJsonOfDependency = async ( + dependency: string +): Promise => { const resolvedPath = getPackageJsonPath(dependency); const result = await readPkgUp({ cwd: resolvedPath }); From 5b25644c54032ab996eb1ad68091d37199ff1555 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 12:51:04 +0100 Subject: [PATCH 425/430] use package manager read package json methods --- .../getIncompatibleStorybookPackages.test.ts | 26 ++++++++------- .../getIncompatibleStorybookPackages.ts | 22 ++++++++----- .../doctor/getMismatchingVersionsWarning.ts | 2 +- code/lib/cli/src/doctor/index.ts | 2 +- code/lib/cli/src/doctor/utils.ts | 32 ------------------- 5 files changed, 30 insertions(+), 54 deletions(-) diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts index ba393427378f..959de5d92bd3 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts @@ -7,8 +7,6 @@ import { } from './getIncompatibleStorybookPackages'; import type { JsPackageManager } from '@storybook/core-common'; -import * as doctorUtils from './utils'; - vi.mock('chalk', () => { return { default: { @@ -31,18 +29,19 @@ const packageManagerMock = { '@storybook/addon-essentials': '7.0.0', }), latestVersion: vi.fn(() => Promise.resolve('8.0.0')), -} as Partial; + getPackageJSON: vi.fn(() => Promise.resolve('8.0.0')), +} as any as JsPackageManager; describe('checkPackageCompatibility', () => { it('returns that a package is incompatible', async () => { const packageName = 'my-storybook-package'; - vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + vi.mocked(packageManagerMock.getPackageJSON).mockResolvedValueOnce({ name: packageName, version: '1.0.0', dependencies: { '@storybook/core-common': '7.0.0', }, - } as any); + }); const result = await checkPackageCompatibility(packageName, { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, @@ -58,13 +57,13 @@ describe('checkPackageCompatibility', () => { it('returns that a package is compatible', async () => { const packageName = 'my-storybook-package'; - vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + vi.mocked(packageManagerMock.getPackageJSON).mockResolvedValueOnce({ name: packageName, version: '1.0.0', dependencies: { '@storybook/core-common': '8.0.0', }, - } as any); + }); const result = await checkPackageCompatibility(packageName, { currentStorybookVersion: '8.0.0', packageManager: packageManagerMock as JsPackageManager, @@ -80,17 +79,20 @@ describe('checkPackageCompatibility', () => { it('returns that a package is incompatible and because it is core, can be upgraded', async () => { const packageName = '@storybook/addon-essentials'; - vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + + vi.mocked(packageManagerMock.getPackageJSON).mockResolvedValueOnce({ name: packageName, version: '7.0.0', dependencies: { '@storybook/core-common': '7.0.0', }, - } as any); + }); + const result = await checkPackageCompatibility(packageName, { currentStorybookVersion: '8.0.0', - packageManager: packageManagerMock as JsPackageManager, + packageManager: packageManagerMock, }); + expect(result).toEqual( expect.objectContaining({ packageName: '@storybook/addon-essentials', @@ -104,13 +106,13 @@ describe('checkPackageCompatibility', () => { describe('getIncompatibleStorybookPackages', () => { it('returns an array of incompatible packages', async () => { - vi.mocked(doctorUtils.getPackageJsonOfDependency).mockResolvedValueOnce({ + vi.mocked(packageManagerMock.getPackageJSON).mockResolvedValueOnce({ name: '@storybook/addon-essentials', version: '7.0.0', dependencies: { '@storybook/core-common': '7.0.0', }, - } as any); + }); const result = await getIncompatibleStorybookPackages({ currentStorybookVersion: '8.0.0', diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts index 33dcc99738d3..632eaf3069c1 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts @@ -3,7 +3,6 @@ import chalk from 'chalk'; import semver from 'semver'; import type { JsPackageManager } from '@storybook/core-common'; import { JsPackageManagerFactory, versions as storybookCorePackages } from '@storybook/core-common'; -import { PackageJsonNotFoundError, getPackageJsonOfDependency } from './utils'; export type AnalysedPackage = { packageName: string; @@ -21,19 +20,26 @@ type Context = { }; const isPackageIncompatible = (installedVersion: string, currentStorybookVersion: string) => { - return !semver.satisfies(currentStorybookVersion, installedVersion); + const storybookVersion = semver.coerce(currentStorybookVersion); + const packageVersion = semver.coerce(installedVersion); + return storybookVersion?.major !== packageVersion?.major; }; export const checkPackageCompatibility = async (dependency: string, context: Context) => { - const { currentStorybookVersion, skipErrors } = context; + const { currentStorybookVersion, skipErrors, packageManager } = context; try { + const dependencyPackageJson = await packageManager.getPackageJSON(dependency); + if (dependencyPackageJson === null) { + return { packageName: dependency }; + } + const { version: packageVersion, - name, + name = dependency, dependencies, peerDependencies, homepage, - } = await getPackageJsonOfDependency(dependency); + } = dependencyPackageJson; const hasIncompatibleDependencies = !!Object.entries({ ...dependencies, @@ -55,7 +61,7 @@ export const checkPackageCompatibility = async (dependency: string, context: Con // For now, we notify about updates only for core packages (which will match the currently installed storybook version) // In the future, we can use packageManager.latestVersion(name, constraint) for all packages - if (isCorePackage && semver.gt(currentStorybookVersion, packageVersion)) { + if (isCorePackage && semver.gt(currentStorybookVersion, packageVersion!)) { availableUpdate = currentStorybookVersion; } @@ -67,7 +73,7 @@ export const checkPackageCompatibility = async (dependency: string, context: Con availableUpdate, }; } catch (err) { - if (!(err instanceof PackageJsonNotFoundError) && !skipErrors) { + if (!skipErrors) { console.log(`Error checking compatibility for ${dependency}, please report an issue:\n`, err); } return { packageName: dependency }; @@ -83,7 +89,7 @@ export const getIncompatibleStorybookPackages = async ( const storybookLikeDeps = Object.keys(allDeps).filter((dep) => dep.includes('storybook')); if (storybookLikeDeps.length === 0) { - throw new Error('No storybook dependencies found in the package.json'); + throw new Error('No Storybook dependencies found in the package.json'); } return Promise.all( diff --git a/code/lib/cli/src/doctor/getMismatchingVersionsWarning.ts b/code/lib/cli/src/doctor/getMismatchingVersionsWarning.ts index 18f0008c537f..f8c9e0874a0f 100644 --- a/code/lib/cli/src/doctor/getMismatchingVersionsWarning.ts +++ b/code/lib/cli/src/doctor/getMismatchingVersionsWarning.ts @@ -75,7 +75,7 @@ export function getMismatchingVersionsWarnings( if (filteredDependencies.length > 0) { const packageJsonSuffix = '(in your package.json)'; messages.push( - `Based on your lockfile, these dependencies should be upgraded:`, + `Based on your lockfile, these dependencies should be aligned:`, filteredDependencies .map( ([name, dep]) => diff --git a/code/lib/cli/src/doctor/index.ts b/code/lib/cli/src/doctor/index.ts index a2d538c15703..293c42cd5ca9 100644 --- a/code/lib/cli/src/doctor/index.ts +++ b/code/lib/cli/src/doctor/index.ts @@ -135,7 +135,7 @@ export const doctor = async ({ const list = installationMetadata ? getDuplicatedDepsWarnings(installationMetadata) : getDuplicatedDepsWarnings(); - if (list) { + if (Array.isArray(list) && list.length > 0) { logDiagnostic('Duplicated dependencies found', list?.join('\n')); } } diff --git a/code/lib/cli/src/doctor/utils.ts b/code/lib/cli/src/doctor/utils.ts index 7370315a67b4..65963febaa2f 100644 --- a/code/lib/cli/src/doctor/utils.ts +++ b/code/lib/cli/src/doctor/utils.ts @@ -1,35 +1,3 @@ -import path from 'path'; -import readPkgUp from 'read-pkg-up'; - -export const getPackageJsonPath = (dependency: string) => { - try { - return require.resolve(dependency, { paths: [process.cwd()] }); - } catch (err) { - return require.resolve(path.join(dependency, 'package.json'), { - paths: [process.cwd()], - }); - } -}; - -export class PackageJsonNotFoundError extends Error { - constructor() { - super(`No package.json found`); - } -} - -export const getPackageJsonOfDependency = async ( - dependency: string -): Promise => { - const resolvedPath = getPackageJsonPath(dependency); - const result = await readPkgUp({ cwd: resolvedPath }); - - if (!result?.packageJson) { - throw new PackageJsonNotFoundError(); - } - - return result.packageJson; -}; - export const isPrerelease = (version: string) => { return version.includes('-'); }; From d52adbb107d115c0dd1530038950cd213a315526 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Wed, 28 Feb 2024 12:58:27 +0100 Subject: [PATCH 426/430] small improvements --- .../doctor/getIncompatibleStorybookPackages.test.ts | 2 +- .../src/doctor/getIncompatibleStorybookPackages.ts | 6 +++--- code/lib/cli/src/doctor/index.ts | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts index 959de5d92bd3..5d5a2d8a6e87 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.test.ts @@ -151,7 +151,7 @@ describe('getIncompatiblePackagesSummary', () => { Please consider updating your packages or contacting the maintainers for compatibility details. - For more on Storybook 8 compatibility, see the linked Github issue: + For more on Storybook 8 compatibility, see the linked GitHub issue: https://github.com/storybookjs/storybook/issues/26031" `); }); diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts index 632eaf3069c1..d481fae93c82 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts @@ -45,7 +45,7 @@ export const checkPackageCompatibility = async (dependency: string, context: Con ...dependencies, ...peerDependencies, }) - .filter(([dep]) => Object.keys(storybookCorePackages).includes(dep)) + .filter(([dep]) => storybookCorePackages[dep as keyof typeof storybookCorePackages]) .find(([, version]) => { // prevent issues with "tag" based versions e.g. "latest" or "next" instead of actual numbers return ( @@ -55,7 +55,7 @@ export const checkPackageCompatibility = async (dependency: string, context: Con ); }); - const isCorePackage = Object.keys(storybookCorePackages).includes(name); + const isCorePackage = storybookCorePackages[name as keyof typeof storybookCorePackages]; let availableUpdate; @@ -126,7 +126,7 @@ export const getIncompatiblePackagesSummary = ( summaryMessage.push( '\n', 'Please consider updating your packages or contacting the maintainers for compatibility details.', - 'For more on Storybook 8 compatibility, see the linked Github issue:', + 'For more on Storybook 8 compatibility, see the linked GitHub issue:', chalk.yellow('https://github.com/storybookjs/storybook/issues/26031') ); } diff --git a/code/lib/cli/src/doctor/index.ts b/code/lib/cli/src/doctor/index.ts index 293c42cd5ca9..69884c2f6755 100644 --- a/code/lib/cli/src/doctor/index.ts +++ b/code/lib/cli/src/doctor/index.ts @@ -145,17 +145,21 @@ export const doctor = async ({ ? 'npx storybook@next doctor' : 'npx storybook@latest doctor'; - logger.info( - `πŸ‘‰ You can always recheck the health of your project by running:\n${chalk.cyan(doctorCommand)}` - ); + const commandMessage = `You can always recheck the health of your project by running:\n${chalk.cyan( + doctorCommand + )}`; logger.info(); if (foundIssues) { + logger.info(commandMessage); + logger.info(); + logger.info(`Full logs are available in ${chalk.cyan(LOG_FILE_PATH)}`); await move(TEMP_LOG_FILE_PATH, join(process.cwd(), LOG_FILE_NAME), { overwrite: true }); } else { - logger.info('πŸ₯³ Your Storybook project looks good!'); + logger.info(`πŸ₯³ Your Storybook project looks good!`); + logger.info(commandMessage); await remove(TEMP_LOG_FILE_PATH); } logger.info(); From 6e414d5542e39c03fa583387c28ee88f1be1bc45 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 13:23:39 +0100 Subject: [PATCH 427/430] Update code/lib/cli/src/automigrate/fixes/addon-postcss.ts Co-authored-by: Jeppe Reinhold --- code/lib/cli/src/automigrate/fixes/addon-postcss.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/addon-postcss.ts b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts index 472d4bb4fce1..871b091488ca 100644 --- a/code/lib/cli/src/automigrate/fixes/addon-postcss.ts +++ b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts @@ -29,7 +29,7 @@ export const addonPostCSS: Fix = { return dedent` ${chalk.bold( 'Attention' - )}: We've detected that you're using the following package which might be incompatible since Storybook 8: + )}: We've detected that you're using the following package which are incompatible with Storybook 8 and beyond: - ${chalk.cyan(`@storybook/addon-postcss`)} From 1ff730dfc51233b56832eb9870535af4175932f1 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 28 Feb 2024 13:23:53 +0100 Subject: [PATCH 428/430] Update code/lib/cli/src/automigrate/fixes/addon-postcss.ts Co-authored-by: Jeppe Reinhold --- code/lib/cli/src/automigrate/fixes/addon-postcss.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/addon-postcss.ts b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts index 871b091488ca..7978e545a1c5 100644 --- a/code/lib/cli/src/automigrate/fixes/addon-postcss.ts +++ b/code/lib/cli/src/automigrate/fixes/addon-postcss.ts @@ -35,7 +35,7 @@ export const addonPostCSS: Fix = { Please migrate to ${chalk.cyan( `@storybook/addon-styling-webpack` - )} once the migration is complete. + )} once you're done upgrading. `; }, }; From c2a562a57619653df962643fdc9722201933f1d4 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 28 Feb 2024 13:24:40 +0100 Subject: [PATCH 429/430] update commit in addon-kit diff link --- docs/addons/addon-migration-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/addons/addon-migration-guide.md b/docs/addons/addon-migration-guide.md index 67c8bf7d9b45..2ece7ad87d87 100644 --- a/docs/addons/addon-migration-guide.md +++ b/docs/addons/addon-migration-guide.md @@ -41,7 +41,7 @@ To remove your addon's peer dependency on React and reduce its install size, do 1. Move `react`, `react-dom`, and the globalized Storybook packages from `peerDependencies` to `devDependencies` 2. Add the list of globalized packages to the `externals` property in the `tsup` configuration to ensure they are not part of the bundle. -For an example, see [the updates we've made to the Addon Kit](https://github.com/storybookjs/addon-kit/pull/60/files#diff-8fed899bdbc24789a7bb4973574e624ed6207c6ce572338bc3c3e117672b2a20). These changes are optional but recommended. +For an example, see [the updates we've made to the Addon Kit](https://github.com/storybookjs/addon-kit/compare/79282986..971e1bb). These changes are optional but recommended. @@ -91,7 +91,7 @@ The Addon Kit [repository](https://github.com/storybookjs/addon-kit) has already -If you migrate your addon to support ESM, you can safely remove any `manager.js`, `preview.js`, and `preset.js` files from the addon's root directory. For a complete overview of the changes applied to the Addon Kit to fully support Storybook 8.0, see the following [diff view](https://github.com/storybookjs/addon-kit/compare/79282986..cf0875f). +For a complete overview of the changes applied to the Addon Kit to fully support Storybook 8.0, see the following [diff view](https://github.com/storybookjs/addon-kit/compare/79282986..cf0875f). From 16e7931679acbe081dd918c951451d1976d29f6b Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:17:52 +0000 Subject: [PATCH 430/430] Write changelog for 8.0.0-beta.6 [skip ci] --- CHANGELOG.prerelease.md | 25 +++++++++++++++++++++++++ code/package.json | 3 ++- docs/versions/next.json | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index 30572cbb308c..02449fd291ce 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,28 @@ +## 8.0.0-beta.6 + +- Addon-onboarding: Move onboarding to monorepo - [#26176](https://github.com/storybookjs/storybook/pull/26176), thanks [@ndelangen](https://github.com/ndelangen)! +- Angular: Fix Storybook startup after init - [#26213](https://github.com/storybookjs/storybook/pull/26213), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Angular: Use dedicated tsconfig for compodocs - [#26214](https://github.com/storybookjs/storybook/pull/26214), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Automigration: Fix overflow bug by using a better link - [#26203](https://github.com/storybookjs/storybook/pull/26203), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Automigration: Run the `mdx-to-csf` codemod during automigration - [#26201](https://github.com/storybookjs/storybook/pull/26201), thanks [@ndelangen](https://github.com/ndelangen)! +- Automigrations: Create addon-postcss automigration - [#26228](https://github.com/storybookjs/storybook/pull/26228), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Automigrations: Enhance experience for upgrades from Storybook 6 to 8 - [#26067](https://github.com/storybookjs/storybook/pull/26067), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Automigrations: General fixes for automigrations, blockers and codemods - [#26210](https://github.com/storybookjs/storybook/pull/26210), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Blocks: Fix `Stories` block rendering duplicate stories when globals are changed - [#26110](https://github.com/storybookjs/storybook/pull/26110), thanks [@JReinhold](https://github.com/JReinhold)! +- Builder Vite: Pass on errors about not having a real stats object in smoke tests - [#26195](https://github.com/storybookjs/storybook/pull/26195), thanks [@tmeasday](https://github.com/tmeasday)! +- CLI: Rename `--webpack-stats-json` to `--stats-json` as it works in Vite - [#26128](https://github.com/storybookjs/storybook/pull/26128), thanks [@tmeasday](https://github.com/tmeasday)! +- Codemods: Enhance mdx-to-csf codemod - [#26164](https://github.com/storybookjs/storybook/pull/26164), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Core: Export preview symbols for embedding - [#26224](https://github.com/storybookjs/storybook/pull/26224), thanks [@tmeasday](https://github.com/tmeasday)! +- Docs: Don't show how to setup controls for empty argTypes in doc pages - [#26200](https://github.com/storybookjs/storybook/pull/26200), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Docs: Fix function prop rendering as `noRefCheck` in storybook docs - [#26104](https://github.com/storybookjs/storybook/pull/26104), thanks [@thisisanto](https://github.com/thisisanto)! +- Doctor: Add dynamic check for incompatible Storybook packages - [#26219](https://github.com/storybookjs/storybook/pull/26219), thanks [@yannbf](https://github.com/yannbf)! +- Maintenance: Remove deprecation of `manager-api`'s `types` export - [#26202](https://github.com/storybookjs/storybook/pull/26202), thanks [@ndelangen](https://github.com/ndelangen)! +- Revert "Revert: "Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`"" - [#26226](https://github.com/storybookjs/storybook/pull/26226), thanks [@ndelangen](https://github.com/ndelangen)! +- Revert: "Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`" - [#26208](https://github.com/storybookjs/storybook/pull/26208), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- UI: Improve sidebar performance when switching stories - [#26184](https://github.com/storybookjs/storybook/pull/26184), thanks [@literalpie](https://github.com/literalpie)! +- UI: Update theme switcher to use toggle button for two themes - [#25682](https://github.com/storybookjs/storybook/pull/25682), thanks [@ivoilic](https://github.com/ivoilic)! +- Vue: Improve types for array, union and intersection when using vue-docgen-api - [#26177](https://github.com/storybookjs/storybook/pull/26177), thanks [@larsrickert](https://github.com/larsrickert)! + ## 8.0.0-beta.5 - Addon-controls: Dont show "setup controls" if control is disabled or a function - [#26120](https://github.com/storybookjs/storybook/pull/26120), thanks [@kasperpeulen](https://github.com/kasperpeulen)! diff --git a/code/package.json b/code/package.json index 065499ca7dbe..db4035002a0b 100644 --- a/code/package.json +++ b/code/package.json @@ -294,5 +294,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.0.0-beta.6" } diff --git a/docs/versions/next.json b/docs/versions/next.json index 588adaa3115b..661a04661201 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"8.0.0-beta.5","info":{"plain":"- Addon-controls: Dont show \\\"setup controls\\\" if control is disabled or a function - [#26120](https://github.com/storybookjs/storybook/pull/26120), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- Addon-interactions: Only mutate arg keys when writable - [#26118](https://github.com/storybookjs/storybook/pull/26118), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- CLI: Fix logic to add `^` packages in upgrade - [#26049](https://github.com/storybookjs/storybook/pull/26049), thanks [@ndelangen](https://github.com/ndelangen)!\n- Core: Fix addon bundling script - [#26145](https://github.com/storybookjs/storybook/pull/26145), thanks [@ndelangen](https://github.com/ndelangen)!\n- Vue3: Fix SourceDecorator Exception - [#25773](https://github.com/storybookjs/storybook/pull/25773), thanks [@chakAs3](https://github.com/chakAs3)!\n- Vue: Replace vue-docgen-api with Volar vue-component-meta - [#22285](https://github.com/storybookjs/storybook/pull/22285), thanks [@chakAs3](https://github.com/chakAs3)!"}} +{"version":"8.0.0-beta.6","info":{"plain":"- Addon-onboarding: Move onboarding to monorepo - [#26176](https://github.com/storybookjs/storybook/pull/26176), thanks [@ndelangen](https://github.com/ndelangen)!\n- Angular: Fix Storybook startup after init - [#26213](https://github.com/storybookjs/storybook/pull/26213), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Angular: Use dedicated tsconfig for compodocs - [#26214](https://github.com/storybookjs/storybook/pull/26214), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- Automigration: Fix overflow bug by using a better link - [#26203](https://github.com/storybookjs/storybook/pull/26203), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- Automigration: Run the `mdx-to-csf` codemod during automigration - [#26201](https://github.com/storybookjs/storybook/pull/26201), thanks [@ndelangen](https://github.com/ndelangen)!\n- Automigrations: Create addon-postcss automigration - [#26228](https://github.com/storybookjs/storybook/pull/26228), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Automigrations: Enhance experience for upgrades from Storybook 6 to 8 - [#26067](https://github.com/storybookjs/storybook/pull/26067), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Automigrations: General fixes for automigrations, blockers and codemods - [#26210](https://github.com/storybookjs/storybook/pull/26210), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Blocks: Fix `Stories` block rendering duplicate stories when globals are changed - [#26110](https://github.com/storybookjs/storybook/pull/26110), thanks [@JReinhold](https://github.com/JReinhold)!\n- Builder Vite: Pass on errors about not having a real stats object in smoke tests - [#26195](https://github.com/storybookjs/storybook/pull/26195), thanks [@tmeasday](https://github.com/tmeasday)!\n- CLI: Rename `--webpack-stats-json` to `--stats-json` as it works in Vite - [#26128](https://github.com/storybookjs/storybook/pull/26128), thanks [@tmeasday](https://github.com/tmeasday)!\n- Codemods: Enhance mdx-to-csf codemod - [#26164](https://github.com/storybookjs/storybook/pull/26164), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)!\n- Core: Export preview symbols for embedding - [#26224](https://github.com/storybookjs/storybook/pull/26224), thanks [@tmeasday](https://github.com/tmeasday)!\n- Docs: Don't show how to setup controls for empty argTypes in doc pages - [#26200](https://github.com/storybookjs/storybook/pull/26200), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- Docs: Fix function prop rendering as `noRefCheck` in storybook docs - [#26104](https://github.com/storybookjs/storybook/pull/26104), thanks [@thisisanto](https://github.com/thisisanto)!\n- Doctor: Add dynamic check for incompatible Storybook packages - [#26219](https://github.com/storybookjs/storybook/pull/26219), thanks [@yannbf](https://github.com/yannbf)!\n- Maintenance: Remove deprecation of `manager-api`'s `types` export - [#26202](https://github.com/storybookjs/storybook/pull/26202), thanks [@ndelangen](https://github.com/ndelangen)!\n- Revert \\\"Revert: \\\"Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`\\\"\\\" - [#26226](https://github.com/storybookjs/storybook/pull/26226), thanks [@ndelangen](https://github.com/ndelangen)!\n- Revert: \\\"Angular: Reduce the warnings from `ts-loader` via stricter list of `includes`\\\" - [#26208](https://github.com/storybookjs/storybook/pull/26208), thanks [@kasperpeulen](https://github.com/kasperpeulen)!\n- UI: Improve sidebar performance when switching stories - [#26184](https://github.com/storybookjs/storybook/pull/26184), thanks [@literalpie](https://github.com/literalpie)!\n- UI: Update theme switcher to use toggle button for two themes - [#25682](https://github.com/storybookjs/storybook/pull/25682), thanks [@ivoilic](https://github.com/ivoilic)!\n- Vue: Improve types for array, union and intersection when using vue-docgen-api - [#26177](https://github.com/storybookjs/storybook/pull/26177), thanks [@larsrickert](https://github.com/larsrickert)!"}}

      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 - - - - - - - - - - - diff --git a/code/addons/onboarding/src/stories/assets/youtube.svg b/code/addons/onboarding/src/stories/assets/youtube.svg deleted file mode 100644 index 33a3a61f611e..000000000000 --- a/code/addons/onboarding/src/stories/assets/youtube.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/code/addons/onboarding/src/stories/button.css b/code/addons/onboarding/src/stories/button.css deleted file mode 100644 index dc91dc76370b..000000000000 --- a/code/addons/onboarding/src/stories/button.css +++ /dev/null @@ -1,30 +0,0 @@ -.storybook-button { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 700; - border: 0; - border-radius: 3em; - cursor: pointer; - display: inline-block; - line-height: 1; -} -.storybook-button--primary { - color: white; - background-color: #1ea7fd; -} -.storybook-button--secondary { - color: #333; - background-color: transparent; - box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset; -} -.storybook-button--small { - font-size: 12px; - padding: 10px 16px; -} -.storybook-button--medium { - font-size: 14px; - padding: 11px 20px; -} -.storybook-button--large { - font-size: 16px; - padding: 12px 24px; -} diff --git a/code/addons/onboarding/src/stories/header.css b/code/addons/onboarding/src/stories/header.css deleted file mode 100644 index 44c549da27ce..000000000000 --- a/code/addons/onboarding/src/stories/header.css +++ /dev/null @@ -1,32 +0,0 @@ -.wrapper { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding: 15px 20px; - display: flex; - align-items: center; - justify-content: space-between; -} - -svg { - display: inline-block; - vertical-align: top; -} - -h1 { - font-weight: 700; - font-size: 20px; - line-height: 1; - margin: 6px 0 6px 10px; - display: inline-block; - vertical-align: top; -} - -button + button { - margin-left: 10px; -} - -.welcome { - color: #333; - font-size: 14px; - margin-right: 10px; -} diff --git a/code/addons/onboarding/src/stories/page.css b/code/addons/onboarding/src/stories/page.css deleted file mode 100644 index fb64fe462943..000000000000 --- a/code/addons/onboarding/src/stories/page.css +++ /dev/null @@ -1,69 +0,0 @@ -section { - font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 48px 20px; - margin: 0 auto; - max-width: 600px; - color: #333; -} - -section h2 { - font-weight: 700; - font-size: 32px; - line-height: 1; - margin: 0 0 4px; - display: inline-block; - vertical-align: top; -} - -section p { - margin: 1em 0; -} - -section a { - text-decoration: none; - color: #1ea7fd; -} - -section ul { - padding-left: 30px; - margin: 1em 0; -} - -section li { - margin-bottom: 8px; -} - -section .tip { - display: inline-block; - border-radius: 1em; - font-size: 11px; - line-height: 12px; - font-weight: 700; - background: #e7fdd8; - color: #66bf3c; - padding: 4px 12px; - margin-right: 10px; - vertical-align: top; -} - -section .tip-wrapper { - font-size: 13px; - line-height: 20px; - margin-top: 40px; - margin-bottom: 40px; -} - -section .tip-wrapper svg { - display: inline-block; - height: 12px; - width: 12px; - margin-right: 4px; - vertical-align: top; - margin-top: 3px; -} - -section .tip-wrapper svg path { - fill: #1ea7fd; -} From 1fb5c28ff9f848c7bbde23b69e1398e498200f35 Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Fri, 23 Feb 2024 23:47:51 +0100 Subject: [PATCH 344/430] update docs --- .../vue3/src/docs/extractArgTypes.ts | 51 ++++++++----------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/code/renderers/vue3/src/docs/extractArgTypes.ts b/code/renderers/vue3/src/docs/extractArgTypes.ts index 3522ee7915a4..6ac705a118f0 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.ts @@ -31,8 +31,7 @@ export const extractArgTypes: ArgTypesExtractor = (component) => { let argType: StrictInputType | undefined; if (usedDocgenPlugin === 'vue-docgen-api') { - const docgenInfo = - extractedProp.docgenInfo as unknown as VueDocgenInfoEntry<'vue-docgen-api'>; + const docgenInfo = extractedProp.docgenInfo as VueDocgenInfoEntry<'vue-docgen-api'>; argType = extractFromVueDocgenApi(docgenInfo, section, extractedProp); } else { const docgenInfo = @@ -76,14 +75,15 @@ export const extractFromVueDocgenApi = ( if (section === 'slots') { const slotInfo = docgenInfo as VueDocgenInfoEntry<'vue-docgen-api', 'slots'>; - const slotParams = slotInfo.bindings + // extract type of slot bindings/props + const slotBindings = slotInfo.bindings ?.filter((binding) => !!binding.name) .map((binding) => { return `${binding.name}: ${binding.type?.name ?? 'unknown'}`; }) .join('; '); - type = slotParams ? `{ ${slotParams} }` : undefined; + type = slotBindings ? `{ ${slotBindings} }` : undefined; sbType = { name: 'other', value: type ?? '', required: false }; } @@ -94,6 +94,7 @@ export const extractFromVueDocgenApi = ( sbType = extractedProp ? convert(extractedProp.docgenInfo) : { name: 'other', value: type }; // try to get more specific types for array, union and intersection + // e.g. "string[]" instead of "Array" if ( propInfo.type && 'elements' in propInfo.type && @@ -107,25 +108,17 @@ export const extractFromVueDocgenApi = ( type = `${arrayElements}[]`; } - if (type === 'union') { - type = elements.join(' | '); - } - - if (type === 'intersection') { - type = elements.join(' & '); - } + if (type === 'union') type = elements.join(' | '); + else if (type === 'intersection') type = elements.join(' & '); } } + const required = 'required' in docgenInfo ? docgenInfo.required ?? false : false; + return { name: docgenInfo.name, description: docgenInfo.description, - type: sbType - ? { - ...sbType, - required: 'required' in docgenInfo ? docgenInfo.required ?? false : false, - } - : { name: 'other', value: type ?? '' }, + type: sbType ? { ...sbType, required } : { name: 'other', value: type ?? '' }, table: { type: type ? { summary: type } : undefined, defaultValue: extractedProp?.propDef.defaultValue, @@ -145,6 +138,7 @@ export const extractFromVueComponentMeta = ( docgenInfo: VueDocgenInfoEntry<'vue-component-meta'>, section: (typeof ARG_TYPE_SECTIONS)[number] ): StrictInputType | undefined => { + // ignore global props if ('global' in docgenInfo && docgenInfo.global) return; const tableType = { summary: docgenInfo.type.replace(' | undefined', '') }; @@ -157,7 +151,7 @@ export const extractFromVueComponentMeta = ( name: propInfo.name, description: formatDescriptionWithTags(propInfo.description, propInfo.tags), defaultValue, - type: getStorybookTypeFromVueComponentMeta(propInfo), + type: convertVueComponentMetaProp(propInfo), table: { type: tableType, defaultValue, @@ -169,10 +163,7 @@ export const extractFromVueComponentMeta = ( name: docgenInfo.name, description: 'description' in docgenInfo ? docgenInfo.description : '', type: { name: 'other', value: docgenInfo.type }, - table: { - type: tableType, - category: section, - }, + table: { type: tableType, category: section }, }; } }; @@ -180,7 +171,7 @@ export const extractFromVueComponentMeta = ( /** * Converts the given prop info that was generated with "vue-component-meta" into a SBType. */ -export const getStorybookTypeFromVueComponentMeta = ( +export const convertVueComponentMetaProp = ( propInfo: Pick, 'schema' | 'required' | 'type'> ): SBType => { const schema = propInfo.schema; @@ -213,7 +204,7 @@ export const getStorybookTypeFromVueComponentMeta = ( } if (definedSchemas.length === 1) { - return getStorybookTypeFromVueComponentMeta({ + return convertVueComponentMetaProp({ schema: definedSchemas[0], type: propInfo.type, required, @@ -236,13 +227,13 @@ export const getStorybookTypeFromVueComponentMeta = ( name: 'union', value: definedSchemas.map((i) => { if (typeof i === 'object') { - return getStorybookTypeFromVueComponentMeta({ + return convertVueComponentMetaProp({ schema: i, type: i.type, required: false, }); } else { - return getStorybookTypeFromVueComponentMeta({ schema: i, type: i, required: false }); + return convertVueComponentMetaProp({ schema: i, type: i, required: false }); } }), required, @@ -257,7 +248,7 @@ export const getStorybookTypeFromVueComponentMeta = ( if (definedSchemas.length === 1) { return { name: 'array', - value: getStorybookTypeFromVueComponentMeta({ + value: convertVueComponentMetaProp({ schema: definedSchemas[0], type: propInfo.type, required: false, @@ -270,13 +261,13 @@ export const getStorybookTypeFromVueComponentMeta = ( name: 'union', value: definedSchemas.map((i) => { if (typeof i === 'object') { - return getStorybookTypeFromVueComponentMeta({ + return convertVueComponentMetaProp({ schema: i, type: i.type, required: false, }); } else { - return getStorybookTypeFromVueComponentMeta({ schema: i, type: i, required: false }); + return convertVueComponentMetaProp({ schema: i, type: i, required: false }); } }), required, @@ -288,7 +279,7 @@ export const getStorybookTypeFromVueComponentMeta = ( name: 'object', value: Object.entries(schema.schema ?? {}).reduce>( (obj, [propName, propSchema]) => { - obj[propName] = getStorybookTypeFromVueComponentMeta(propSchema); + obj[propName] = convertVueComponentMetaProp(propSchema); return obj; }, {} From 926e1be5e03e59bcb5adcb68c0d63b6bcb46399a Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Sat, 24 Feb 2024 00:11:31 +0100 Subject: [PATCH 345/430] update docs --- code/renderers/vue3/src/docs/extractArgTypes.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/renderers/vue3/src/docs/extractArgTypes.ts b/code/renderers/vue3/src/docs/extractArgTypes.ts index 6ac705a118f0..151476491c95 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.ts @@ -30,6 +30,8 @@ export const extractArgTypes: ArgTypesExtractor = (component) => { props.forEach((extractedProp) => { let argType: StrictInputType | undefined; + // use the corresponding extractor whether vue-docgen-api or vue-component-meta + // was used for the docinfo if (usedDocgenPlugin === 'vue-docgen-api') { const docgenInfo = extractedProp.docgenInfo as VueDocgenInfoEntry<'vue-docgen-api'>; argType = extractFromVueDocgenApi(docgenInfo, section, extractedProp); @@ -41,6 +43,7 @@ export const extractArgTypes: ArgTypesExtractor = (component) => { // skip duplicate and global props if (!argType || argTypes[argType.name]) return; + argTypes[argType.name] = { ...argType, control: { disabled: !['props', 'slots'].includes(section) }, @@ -223,6 +226,7 @@ export const convertVueComponentMetaProp = ( definedSchemas.push('boolean'); } + // recursively convert every type of the union return { name: 'union', value: definedSchemas.map((i) => { @@ -257,6 +261,8 @@ export const convertVueComponentMetaProp = ( }; } + // recursively convert every type of the array + // e.g. "(string | number)[]" return { name: 'union', value: definedSchemas.map((i) => { @@ -274,6 +280,7 @@ export const convertVueComponentMetaProp = ( }; } + // recursively/deeply convert all properties of the object case 'object': return { name: 'object', From 49b0e9d366837d86060dfa5447976e6d828686af Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Sat, 24 Feb 2024 00:15:14 +0100 Subject: [PATCH 346/430] fix type issues for mock data --- .../vue3/src/docs/tests-meta-components/meta-components.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts b/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts index 043244a8fd3b..ad10ccc96a52 100644 --- a/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts +++ b/code/renderers/vue3/src/docs/tests-meta-components/meta-components.ts @@ -1,4 +1,3 @@ -import type { ExtractedProp } from '@storybook/docs-tools'; import { TypeSystem } from '@storybook/docs-tools'; import type { VueDocgenInfo } from 'frameworks/vue3-vite/src'; @@ -2608,7 +2607,4 @@ export const vueDocgenMocks = { }, ], }, -} satisfies Record< - string, - { component: { __docgenInfo: VueDocgenInfo<'vue-docgen-api'> }; extractedProps: ExtractedProp[] } ->; +}; From 10d6d072952abe10aa72a783e2fd3de296ffd3fc Mon Sep 17 00:00:00 2001 From: Lars Rickert Date: Sat, 24 Feb 2024 00:25:38 +0100 Subject: [PATCH 347/430] move inline snapshot to file snaptshot --- .../extractArgTypes.test.ts.snap | 524 ++++++++++++++++-- .../vue3/src/docs/extractArgTypes.test.ts | 412 +------------- 2 files changed, 469 insertions(+), 467 deletions(-) diff --git a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap index aa8863e3c1c6..cbdcb9f51226 100644 --- a/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap +++ b/code/renderers/vue3/src/docs/__snapshots__/extractArgTypes.test.ts.snap @@ -1,5 +1,61 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +exports[`extractArgTypes (vue-docgen-api) > should extract events for Vue component 1`] = ` +{ + "bar": { + "control": { + "disabled": true, + }, + "description": "", + "name": "bar", + "table": { + "category": "events", + "type": { + "summary": "[value: { year: number; title?: any; }]", + }, + }, + "type": { + "name": "other", + "value": "[value: { year: number; title?: any; }]", + }, + }, + "baz": { + "control": { + "disabled": true, + }, + "description": "", + "name": "baz", + "table": { + "category": "events", + "type": { + "summary": "[]", + }, + }, + "type": { + "name": "other", + "value": "[]", + }, + }, + "foo": { + "control": { + "disabled": true, + }, + "description": "", + "name": "foo", + "table": { + "category": "events", + "type": { + "summary": "[data?: { foo: string; }]", + }, + }, + "type": { + "name": "other", + "value": "[data?: { foo: string; } | undefined]", + }, + }, +} +`; + exports[`extractArgTypes (vue-docgen-api) > should extract events for component 1`] = ` { "bar": { @@ -83,6 +139,416 @@ exports[`extractArgTypes (vue-docgen-api) > should extract expose for component `; exports[`extractArgTypes (vue-docgen-api) > should extract props for component 1`] = ` +{ + "array": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description required array object", + "name": "array", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedProps[]", + }, + }, + "type": { + "name": "array", + "required": true, + "value": { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + }, + }, + "arrayOptional": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description optional array object", + "name": "arrayOptional", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedProps[]", + }, + }, + "type": { + "name": "array", + "required": false, + "value": { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + }, + }, + "bar": { + "control": { + "disabled": false, + }, + "defaultValue": { + "summary": "1", + }, + "description": "description bar is optional number", + "name": "bar", + "table": { + "category": "props", + "defaultValue": { + "summary": "1", + }, + "type": { + "summary": "number", + }, + }, + "type": { + "name": "number", + "required": false, + }, + }, + "baz": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description baz is required boolean", + "name": "baz", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "boolean", + }, + }, + "type": { + "name": "boolean", + "required": true, + }, + }, + "enumValue": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description enum value", + "name": "enumValue", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyEnum", + }, + }, + "type": { + "name": "enum", + "required": true, + "value": [ + "MyEnum.Small", + "MyEnum.Medium", + "MyEnum.Large", + ], + }, + }, + "foo": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "@default: "rounded"
      @since: v1.0.0
      @see: https://vuejs.org/
      @deprecated: v1.1.0

      string foo", + "name": "foo", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "string", + }, + }, + "type": { + "name": "string", + "required": true, + }, + }, + "inlined": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "", + "name": "inlined", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "{ foo: string; }", + }, + }, + "type": { + "name": "object", + "required": true, + "value": { + "foo": { + "name": "string", + "required": true, + }, + }, + }, + }, + "literalFromContext": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description literal type alias that require context", + "name": "literalFromContext", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": ""Uncategorized" | "Content" | "Interaction" | "Display" | "Forms" | "Addons"", + }, + }, + "type": { + "name": "enum", + "required": true, + "value": [ + "Uncategorized", + "Content", + "Interaction", + "Display", + "Forms", + "Addons", + ], + }, + }, + "nested": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description nested is required nested object", + "name": "nested", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedProps", + }, + }, + "type": { + "name": "object", + "required": true, + "value": { + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + }, + "nestedIntersection": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description required nested object with intersection", + "name": "nestedIntersection", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedProps & { additionalProp: string; }", + }, + }, + "type": { + "name": "object", + "required": true, + "value": { + "additionalProp": { + "name": "string", + "required": true, + }, + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + }, + "nestedOptional": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description optional nested object", + "name": "nestedOptional", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedProps | MyIgnoredNestedProps", + }, + }, + "type": { + "name": "union", + "required": false, + "value": [ + { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + { + "name": "object", + "required": false, + "value": { + "nestedProp": { + "name": "string", + "required": true, + }, + }, + }, + ], + }, + }, + "recursive": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "", + "name": "recursive", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "MyNestedRecursiveProps", + }, + }, + "type": { + "name": "object", + "required": false, + "value": { + "recursive": { + "name": "other", + "required": true, + "value": "MyNestedRecursiveProps", + }, + }, + }, + }, + "stringArray": { + "control": { + "disabled": false, + }, + "defaultValue": { + "summary": "["foo", "bar"]", + }, + "description": "description stringArray is string array", + "name": "stringArray", + "table": { + "category": "props", + "defaultValue": { + "summary": "["foo", "bar"]", + }, + "type": { + "summary": "string[]", + }, + }, + "type": { + "name": "array", + "required": false, + "value": { + "name": "string", + "required": false, + }, + }, + }, + "union": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description union is required union type", + "name": "union", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "string | number", + }, + }, + "type": { + "name": "union", + "required": true, + "value": [ + { + "name": "string", + "required": false, + }, + { + "name": "number", + "required": false, + }, + ], + }, + }, + "unionOptional": { + "control": { + "disabled": false, + }, + "defaultValue": undefined, + "description": "description unionOptional is optional union type", + "name": "unionOptional", + "table": { + "category": "props", + "defaultValue": undefined, + "type": { + "summary": "string | number | boolean", + }, + }, + "type": { + "name": "union", + "required": false, + "value": [ + { + "name": "string", + "required": false, + }, + { + "name": "number", + "required": false, + }, + { + "name": "boolean", + "required": false, + }, + ], + }, + }, +} +`; + +exports[`extractArgTypes (vue-docgen-api) > should extract props for component 2`] = ` { "array": { "control": { @@ -502,63 +968,7 @@ exports[`extractArgTypes (vue-docgen-api) > should extract slots for component 1 } `; -exports[`extractArgTypes > should extract events for Vue component 1`] = ` -{ - "bar": { - "control": { - "disabled": true, - }, - "description": "", - "name": "bar", - "table": { - "category": "events", - "type": { - "summary": "[value: { year: number; title?: any; }]", - }, - }, - "type": { - "name": "other", - "value": "[value: { year: number; title?: any; }]", - }, - }, - "baz": { - "control": { - "disabled": true, - }, - "description": "", - "name": "baz", - "table": { - "category": "events", - "type": { - "summary": "[]", - }, - }, - "type": { - "name": "other", - "value": "[]", - }, - }, - "foo": { - "control": { - "disabled": true, - }, - "description": "", - "name": "foo", - "table": { - "category": "events", - "type": { - "summary": "[data?: { foo: string; }]", - }, - }, - "type": { - "name": "other", - "value": "[data?: { foo: string; } | undefined]", - }, - }, -} -`; - -exports[`extractArgTypes > should extract slots type for Vue component 1`] = ` +exports[`extractArgTypes (vue-docgen-api) > should extract slots type for Vue component 1`] = ` { "default": { "control": { diff --git a/code/renderers/vue3/src/docs/extractArgTypes.test.ts b/code/renderers/vue3/src/docs/extractArgTypes.test.ts index 118e5273bb65..053266882e87 100644 --- a/code/renderers/vue3/src/docs/extractArgTypes.test.ts +++ b/code/renderers/vue3/src/docs/extractArgTypes.test.ts @@ -21,7 +21,7 @@ vitest.mock('@storybook/docs-tools', async (importOriginal) => { }; }); -describe('extractArgTypes', () => { +describe('extractArgTypes (vue-docgen-api)', () => { beforeEach(() => { vi.resetAllMocks(); }); @@ -43,415 +43,7 @@ describe('extractArgTypes', () => { const argTypes = extractArgTypes(component); - expect(argTypes).toMatchInlineSnapshot(` - { - "array": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description required array object", - "name": "array", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedProps[]", - }, - }, - "type": { - "name": "array", - "required": true, - "value": { - "name": "object", - "required": false, - "value": { - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - }, - }, - "arrayOptional": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description optional array object", - "name": "arrayOptional", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedProps[]", - }, - }, - "type": { - "name": "array", - "required": false, - "value": { - "name": "object", - "required": false, - "value": { - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - }, - }, - "bar": { - "control": { - "disabled": false, - }, - "defaultValue": { - "summary": "1", - }, - "description": "description bar is optional number", - "name": "bar", - "table": { - "category": "props", - "defaultValue": { - "summary": "1", - }, - "type": { - "summary": "number", - }, - }, - "type": { - "name": "number", - "required": false, - }, - }, - "baz": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description baz is required boolean", - "name": "baz", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "boolean", - }, - }, - "type": { - "name": "boolean", - "required": true, - }, - }, - "enumValue": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description enum value", - "name": "enumValue", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyEnum", - }, - }, - "type": { - "name": "enum", - "required": true, - "value": [ - "MyEnum.Small", - "MyEnum.Medium", - "MyEnum.Large", - ], - }, - }, - "foo": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "@default: "rounded"
      @since: v1.0.0
      @see: https://vuejs.org/
      @deprecated: v1.1.0

      string foo", - "name": "foo", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "string", - }, - }, - "type": { - "name": "string", - "required": true, - }, - }, - "inlined": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "", - "name": "inlined", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "{ foo: string; }", - }, - }, - "type": { - "name": "object", - "required": true, - "value": { - "foo": { - "name": "string", - "required": true, - }, - }, - }, - }, - "literalFromContext": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description literal type alias that require context", - "name": "literalFromContext", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": ""Uncategorized" | "Content" | "Interaction" | "Display" | "Forms" | "Addons"", - }, - }, - "type": { - "name": "enum", - "required": true, - "value": [ - "Uncategorized", - "Content", - "Interaction", - "Display", - "Forms", - "Addons", - ], - }, - }, - "nested": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description nested is required nested object", - "name": "nested", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedProps", - }, - }, - "type": { - "name": "object", - "required": true, - "value": { - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - }, - "nestedIntersection": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description required nested object with intersection", - "name": "nestedIntersection", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedProps & { additionalProp: string; }", - }, - }, - "type": { - "name": "object", - "required": true, - "value": { - "additionalProp": { - "name": "string", - "required": true, - }, - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - }, - "nestedOptional": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description optional nested object", - "name": "nestedOptional", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedProps | MyIgnoredNestedProps", - }, - }, - "type": { - "name": "union", - "required": false, - "value": [ - { - "name": "object", - "required": false, - "value": { - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - { - "name": "object", - "required": false, - "value": { - "nestedProp": { - "name": "string", - "required": true, - }, - }, - }, - ], - }, - }, - "recursive": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "", - "name": "recursive", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "MyNestedRecursiveProps", - }, - }, - "type": { - "name": "object", - "required": false, - "value": { - "recursive": { - "name": "other", - "required": true, - "value": "MyNestedRecursiveProps", - }, - }, - }, - }, - "stringArray": { - "control": { - "disabled": false, - }, - "defaultValue": { - "summary": "["foo", "bar"]", - }, - "description": "description stringArray is string array", - "name": "stringArray", - "table": { - "category": "props", - "defaultValue": { - "summary": "["foo", "bar"]", - }, - "type": { - "summary": "string[]", - }, - }, - "type": { - "name": "array", - "required": false, - "value": { - "name": "string", - "required": false, - }, - }, - }, - "union": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description union is required union type", - "name": "union", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "string | number", - }, - }, - "type": { - "name": "union", - "required": true, - "value": [ - { - "name": "string", - "required": false, - }, - { - "name": "number", - "required": false, - }, - ], - }, - }, - "unionOptional": { - "control": { - "disabled": false, - }, - "defaultValue": undefined, - "description": "description unionOptional is optional union type", - "name": "unionOptional", - "table": { - "category": "props", - "defaultValue": undefined, - "type": { - "summary": "string | number | boolean", - }, - }, - "type": { - "name": "union", - "required": false, - "value": [ - { - "name": "string", - "required": false, - }, - { - "name": "number", - "required": false, - }, - { - "name": "boolean", - "required": false, - }, - ], - }, - }, - } - `); + expect(argTypes).toMatchSnapshot(); }); it('should extract events for Vue component', () => { From 67206cd09eeabfd9216a08f5dfd38947a6a1215e Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Sat, 24 Feb 2024 01:52:12 +0100 Subject: [PATCH 348/430] fixes --- code/lib/cli/src/generators/NEXTJS/index.ts | 3 +-- code/lib/cli/src/generators/REACT/index.ts | 3 +-- code/lib/cli/src/generators/REACT_SCRIPTS/index.ts | 6 +----- code/lib/cli/src/generators/WEBPACK_REACT/index.ts | 3 +-- scripts/verdaccio.yaml | 4 ---- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/code/lib/cli/src/generators/NEXTJS/index.ts b/code/lib/cli/src/generators/NEXTJS/index.ts index 48d00d92bb2a..e29cb4f6a751 100644 --- a/code/lib/cli/src/generators/NEXTJS/index.ts +++ b/code/lib/cli/src/generators/NEXTJS/index.ts @@ -3,7 +3,6 @@ import { existsSync } from 'fs'; import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; -import { versions } from '@storybook/core-common'; const generator: Generator = async (packageManager, npmOptions, options) => { let staticDir; @@ -16,7 +15,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { 'react', { staticDir, - extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], + extraAddons: [`@storybook/addon-onboarding`], webpackCompiler: ({ builder }) => undefined, }, 'nextjs' diff --git a/code/lib/cli/src/generators/REACT/index.ts b/code/lib/cli/src/generators/REACT/index.ts index 61ce924803d1..267f15b8427a 100644 --- a/code/lib/cli/src/generators/REACT/index.ts +++ b/code/lib/cli/src/generators/REACT/index.ts @@ -1,4 +1,3 @@ -import { versions } from '@storybook/core-common'; import { detectLanguage } from '../../detect'; import { CoreBuilder, SupportedLanguage } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; @@ -12,7 +11,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { await baseGenerator(packageManager, npmOptions, options, 'react', { extraPackages, webpackCompiler: ({ builder }) => (builder === CoreBuilder.Webpack5 ? 'swc' : undefined), - extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], + extraAddons: [`@storybook/addon-onboarding`], }); }; diff --git a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts index e28da35f86c7..af74a75861ca 100644 --- a/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts +++ b/code/lib/cli/src/generators/REACT_SCRIPTS/index.ts @@ -2,7 +2,6 @@ import path from 'path'; import fs from 'fs'; import semver from 'semver'; import dedent from 'ts-dedent'; -import { versions } from '@storybook/core-common'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; @@ -47,10 +46,7 @@ const generator: Generator = async (packageManager, npmOptions, options) => { // Miscellaneous dependency to add to be sure Storybook + CRA is working fine with Yarn PnP mode extraPackages.push('prop-types'); - const extraAddons = [ - `@storybook/preset-create-react-app@${versions['@storybook/preset-create-react-app']}`, - `@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`, - ]; + const extraAddons = [`@storybook/preset-create-react-app`, `@storybook/addon-onboarding`]; await baseGenerator( packageManager, diff --git a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts index 223e07554efc..7274e40bf40f 100644 --- a/code/lib/cli/src/generators/WEBPACK_REACT/index.ts +++ b/code/lib/cli/src/generators/WEBPACK_REACT/index.ts @@ -1,11 +1,10 @@ -import { versions } from '@storybook/core-common'; import { CoreBuilder } from '../../project_types'; import { baseGenerator } from '../baseGenerator'; import type { Generator } from '../types'; const generator: Generator = async (packageManager, npmOptions, options) => { await baseGenerator(packageManager, npmOptions, options, 'react', { - extraAddons: [`@storybook/addon-onboarding@^${versions['@storybook/addon-onboarding']}`], + extraAddons: [`@storybook/addon-onboarding`], webpackCompiler: ({ builder }) => (builder === CoreBuilder.Webpack5 ? 'swc' : undefined), }); }; diff --git a/scripts/verdaccio.yaml b/scripts/verdaccio.yaml index fd577fb25147..6ec5ccaf2539 100644 --- a/scripts/verdaccio.yaml +++ b/scripts/verdaccio.yaml @@ -83,10 +83,6 @@ packages: access: $all publish: $all proxy: npmjs - '@storybook/addon-onboarding': - access: $all - publish: $all - proxy: npmjs '@storybook/expect': access: $all publish: $all From a7e41877f8dab83f6eb82734369c57a08e6cecb5 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Fri, 23 Feb 2024 22:41:44 -0700 Subject: [PATCH 349/430] Update migration guides - Add 6 to 8 guide - Account for auto-blockers --- docs/migration-guide/from-older-version.md | 179 ++++++++++++++++++ .../index.md} | 41 ++-- docs/toc.js | 11 +- 3 files changed, 203 insertions(+), 28 deletions(-) create mode 100644 docs/migration-guide/from-older-version.md rename docs/{migration-guide.md => migration-guide/index.md} (84%) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md new file mode 100644 index 000000000000..9b39b74a96bb --- /dev/null +++ b/docs/migration-guide/from-older-version.md @@ -0,0 +1,179 @@ +--- +title: 'Migration guide from Storybook 6.x to 8.0' +--- + +Storybook 8 focuses on performance and stability. + +- πŸ’¨ [2-4x faster test builds](/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](/blog/optimize-storybook-7-6/#using-webpack-enable-swc) +- ✨ Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer +- 🌐 [Support for React Server Components (RSC)](/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +- βž• Much, much more + +This guide is meant to help you **upgrade from Storybook 6.x to 8.0** successfully! + +## Major breaking changes + +The rest of this guide will help you upgrade successfully, either automatically or manually. But first, we’ve accumulated a lot of breaking changes in both [Storybook 7](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#70-breaking-changes) and [Storybook 8](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800). Here are the most impactful changes you should know about before you go further: + +- [`framework` field is now mandatory](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-framework-api) +- [Babel mode v7 exclusively](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#babel-mode-v7-exclusively) +- [Start and build CLI binaries removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#start-storybook--build-storybook-binaries-removed) +- [`storiesOf` API has been removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#removal-of-storiesof-api) +- [`*.stories.mdx` format has been removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-storiesmdx-csf-in-mdx-format-and-mdx1-support) +- [Implicit actions (from `argTypesRegex`) can no longer be used during rendering (e.g. in a play function)](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#implicit-actions-can-not-be-used-during-rendering-for-example-in-the-play-function) +- [`react-docgen` (instead of `react-docgen-typescript`) is the default for component analysis](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-docgen-component-analysis-by-default) +- [Storyshots has been removed](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storyshots-has-been-removed) +- [Addons API introduced in Storybook 7 is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#new-addons-api) +- Ecosystem updates + - [Webpack4 support discontinued](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued) + - [IE11 support discontinued](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#modern-browser-support) + - [Node 18+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-nodejs-16) + - [Next.js 13.5+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-nextjs-135-and-up) + - [Vue 3+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-vue-3-and-up) + - [Angular 15+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-angular-15-and-up) + - [Svelte 4+ is now required](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-svelte-4-and-up) + - [Yarn 1 is no longer supported](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#dropping-support-for-yarn-1) + +If any of these changes apply to your project, please read through the linked migration notes before continuing. + +If any of these new requirements or changes are blockers for your project, we recommend [migrating to Storybook 7](../../release-7-6/docs/migration-guide). + +You may wish to read the full migration notes for [Storybook 6 to 7](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-65x-to-700) and [Storybook 7 to 8](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) before migrating. Or you can follow the instructions below and we’ll try to take care of everything for you! + +## Automatic upgrade + +To upgrade your Storybook: + + + + + + + +This will: + +1. Determine that none of the [breaking changes](#major-breaking-changes) apply to your project + - If they do, you will receive instructions on how to resolve them before continuing +2. Upgrade your Storybook dependencies to the latest version +3. Run a collection of _automigrations_, which will: + - Check for common upgrade tasks + - Explain the necessary changes with links to more information + - Ask for approval, then perform the task on your behalf + +## Manual migrations + +In addition to the automated upgrades above, there are manual migrations that might be required to get Storybook 8 working in your project. We’ve tried to minimize this list to make it easier to upgrade. These include: + +### Upgrade MDX1 to MDX3 + +Storybook 8 uses MDX3 by default for rendering [docs](./writing-docs/index.md). The upgrade from MDX1 to MDX3 is not fully automated, due to the large number of changes between versions (particularly v1 to v2). Fortunately, we have some tips to help make it a lot easier. + +#### Automatically detect MDX2 errors with a CLI tool + +If your project contains MDX files, run the following command before starting up Storybook: + +```sh +npx @hipster/mdx2-issue-checker +``` + +This will go through every MDX file in the current working directory, and show you which files have errors: + +![Terminal output of mdx2-issue-checker, showing errors found](./assets/mdx2-issue-checker-errors.png) + +#### Fix MDX2 errors iteratively + +The CLI only shows the first error per file, so you might need to run the checker iteratively. One way to streamline this process if you use VS Code is to: + +1. Install theΒ [MDX VS Code extension](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx) +2. Enable experimental IntelliSense support for MDX files in your user settings:Β `"mdx.experimentalLanguageServer": true` + +This shows the errors visually in your editor, which speeds things up a lot. Here's what it looks like to fix multiple errors in a file using the extension: + +![MDX errors showing in VS Code](./assets/mdx-vs-code-extension-errors.gif) + +### `storiesOf` to CSF + +Storybook architecture is focused on performance and now needs code that is statically analyzable. For that reason, it does not work with `storiesOf`. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): + + + + + + + +This will transform your stories into [CSF 1](/blog/component-story-format/) stories, which are story functions that don't accept [args](../writing-stories/args.md). These are fully supported in Storybook 8, and will continue to be for the foreseeable future. + +However, we recommend [writing all **new** stories in CSF 3](../writing-stories/index.md), which are story objects that are easier to write, reuse, and maintain. + +### `storiesOf` to dynamically created stories + +If you are using `storiesOf` for its ability to dynamically create stories, you can build your own "storiesOf" implementation by leveraging the new [(experimental) indexer API](../api/main-config-indexers). A proof of concept of such an implementation can be seen in [this StackBlitz demo](https://stackblitz.com/edit/github-h2rgfk?file=README.md). See the demo's README.md for a deeper explanation of the implementation. + +### `*.stories.mdx` to MDX+CSF + +Storybook now requires that MDX pages reference stories written in CSF, rather than the previous `.stories.mdx` hybrid approach. You can automatically convert your files using the following codemod (make sure to update the glob to fit your files): + + + + + + + +You’ll also need to update your stories glob in `.storybook/main.js` to include the newly created .mdx and .stories.js files if it doesn’t already. + +**Note:** this migration supports the Storybook 6 ["CSF stories with MDX docs"](https://github.com/storybookjs/storybook/blob/6e19f0fe426d58f0f7981a42c3d0b0384fab49b1/code/addons/docs/docs/recipes.md#csf-stories-with-mdx-docs) recipe. + +## Troubleshooting + +The automatic upgrade should get your Storybook into a working state. If you encounter an error running Storybook after upgrading, here’s what to do: + +1. Try running the [`doctor` command](../api/cli-options.md#doctor) to check for common issues (such as duplicate dependencies, incompatible addons, or mismatched versions) and see suggestions for fixing them. +2. If you’re running `storybook` with the `dev` command, try using the `build` command instead. Sometimes `build` errors are more legible than `dev` errors! +3. Check [the full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800), which contains an exhaustive list of noteworthy changes in Storybook 8. Many of these are already handled by automigrations when you upgrade, but not all are. It’s also possible that you’re experiencing a corner case that we’re not aware of. +4. Search [Storybook issues on GitHub](https://github.com/storybookjs/storybook/issues). If you’re seeing a problem, there’s a good chance other people are too. If so, upvote the issue, try out any workarounds described in the comments, and comment back if you have useful info to contribute. +5. If there’s no existing issue, you can [file one](https://github.com/storybookjs/storybook/issues/new/choose), ideally with a reproduction attached. We’ll be on top of Storybook 8 issues as we’re stabilizing the release. + +If you prefer to debug yourself, here are a few useful things you can do to help narrow down the problem: + +1. Try removing all addons that are not in the `@storybook` npm namespace (make sure you don't remove the `storybook` package). Community addons that work well with 7.x might not yet be compatible with 8.0, and this is the fastest way to isolate that possibility. If you find an addon that needs to be upgraded to work with Storybook 8, please post an issue on the addon’s repository, or better yet, a PR to upgrade it! +2. Another debugging technique is to bisect to older prerelease versions of Storybook to figure out which release broke your Storybook. For example, assuming that the current prerelease of Storybook is `8.0.0-beta.56`, you could set the version to `8.0.0-alpha.0` in your `package.json` and reinstall to verify that it still works (`alpha.0` should be nearly identical to `7.6.x`). If it works, you could then try `8.0.0-beta.0`, then `8.0.0-beta.28` and so forth. Once you’ve isolated the bad release, read through its [CHANGELOG](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) entry and perhaps there’s a change that jumps out as the culprit. If you find the problem, please submit an issue or PR to the Storybook repo and we’ll do our best to take care of it quickly. + +## Optional migrations + +In addition to the automigrations and manual migrations above, there are also optional migrations that you should consider. These are things that we’ve deprecated in Storybook 8 (but remain backwards compatible), or best practices that should help you be more productive in the future. + +These include: + +### CSF 2 to CSF 3 + +There are [many good reasons](/blog/storybook-csf3-is-here/) to convert your stories from CSF 2 to CSF 3. We provide a codemod which, in most cases, should automatically make the code changes for you (make sure to update the glob to fit your files): + + + + + + diff --git a/docs/migration-guide.md b/docs/migration-guide/index.md similarity index 84% rename from docs/migration-guide.md rename to docs/migration-guide/index.md index 1fa7d7c5ad4c..79b265170879 100644 --- a/docs/migration-guide.md +++ b/docs/migration-guide/index.md @@ -11,28 +11,13 @@ Storybook 8 focuses on performance and stability. This guide is meant to help you **upgrade from Storybook 7.x to 8.0** successfully! -

    -
    - # Configure your project - - Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. -
    -
    - -
    - An abstraction representing the composition of data for a component -

    Provide context and mocking

    -

    Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

    - Learn more -
    -
    - A representation of typography and image assets -
    -

    Load assets and resources

    -

    To link static files (like fonts) to your projects and stories, use the - `staticDirs` configuration option to specify folders to load when - starting Storybook.

    - Learn more -
    -
    -
    -