diff --git a/.changeset/config.json b/.changeset/config.json index 46f34ae..53ee87c 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,15 +4,12 @@ "commit": false, "linked": [ [ - "@trousers/collector", "@trousers/core", + "@trousers/react", "@trousers/hash", - "@trousers/parser", - "@trousers/registry", - "@trousers/server", - "@trousers/theme-css", - "@trousers/theme", - "@trousers/utils", + "@trousers/sheet", + "@trousers/styled", + "@trousers/macro", "trousers" ] ], diff --git a/.storybook/.babelrc b/.storybook/.babelrc new file mode 100644 index 0000000..1e9dcd2 --- /dev/null +++ b/.storybook/.babelrc @@ -0,0 +1,8 @@ +{ + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], + "plugins": ["babel-plugin-macros"] +} diff --git a/.storybook/addons.js b/.storybook/addons.js deleted file mode 100644 index 080ff4a..0000000 --- a/.storybook/addons.js +++ /dev/null @@ -1 +0,0 @@ -import 'storybook-addon-performance/register'; diff --git a/.storybook/config.js b/.storybook/config.js deleted file mode 100644 index 652a679..0000000 --- a/.storybook/config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { configure, addDecorator } from '@storybook/react'; -import { withPerformance } from 'storybook-addon-performance'; - -addDecorator(withPerformance); - -configure(require.context('../examples', true, /\.tsx$/), module); diff --git a/.storybook/main.js b/.storybook/main.js new file mode 100644 index 0000000..ece7635 --- /dev/null +++ b/.storybook/main.js @@ -0,0 +1,4 @@ +module.exports = { + stories: ['../examples/**/*.@(js|jsx|ts|tsx|mdx)'], + addons: ['storybook-addon-performance'], +}; diff --git a/.storybook/preview.js b/.storybook/preview.js new file mode 100644 index 0000000..6a4dabd --- /dev/null +++ b/.storybook/preview.js @@ -0,0 +1,3 @@ +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, +}; diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js deleted file mode 100644 index 2288b8d..0000000 --- a/.storybook/webpack.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = ({ config }) => { - config.module.rules.push({ - test: /\.(ts|tsx)$/, - use: [ - { - loader: require.resolve('ts-loader'), - }, - ], - }); - - config.resolve.extensions.push('.ts', '.tsx'); - - return config; -}; diff --git a/README.md b/README.md index 5e4893d..12ab683 100644 --- a/README.md +++ b/README.md @@ -12,436 +12,247 @@ React components are more stylish with Trousers! [Try it here](https://danieldelcore.github.io/trousers/) -Trousers is a [hooks-first](https://reactjs.org/docs/hooks-overview.html) CSS-in-JS library, designed to help developers author React apps with performant and semantic CSS. It is heavily influenced by the conventions introduced by [BEM](http://getbem.com/introduction/), borrowing the concept of Blocks (the component), Elements (children nodes) and Modifiers (styles as a function of state). Through this API, Trousers encourages semantic organisation of styles without inadvertently increasing the runtime implications often associated with CSS-in-JS libraries. - -

- Trousers, a little library for CSS-in-JS, without the mess -

+Trousers is a CSS-in-JS library designed to help developers author React apps with performant and semantic CSS. Trousers encourages semantic organization of styles without inadvertently increasing the runtime implications often associated with CSS-in-JS libraries. ## Table of Contents -- [Get started ⚡️](#get-started-%E2%9A%A1%EF%B8%8F) -- [Motivation 🧠](#motivation-%F0%9F%A7%A0) -- [Features ✨](#features-%E2%9C%A8) - * [Hooks-first 🎣](#hooks-first-%F0%9F%8E%A3) - * [Composable API 🏗](#composable-api-%F0%9F%8F%97) - * [CSS Prop 👩‍🎤](#css-prop-%F0%9F%91%A9%E2%80%8D%F0%9F%8E%A4) - * [Theme Support 🎨](#theme-support-%F0%9F%8E%A8) - * [Global styles 🌏](#global-styles-%F0%9F%8C%8F) - * [Server side rendering (SSR) 🤖](#server-side-rendering-ssr-%F0%9F%A4%96) - * [Object notation support 📚](#object-notation-support-%F0%9F%93%9A) - * [Custom Style Collectors 🕺](#custom-style-collectors-%F0%9F%95%BA) -- [API Reference 📖](#api-reference-%F0%9F%93%96) -- [FAQ 🤷‍♀️](#faq-%F0%9F%A4%B7%E2%80%8D%E2%99%80%EF%B8%8F) -- [Backers](#backers) -- [Contributors](#contributors) +- [Trousers 👖](#trousers-) + - [Table of Contents](#table-of-contents) + - [Get started](#get-started) + - [Features](#features) + - [Core concepts](#core-concepts) + - [Modifiers](#modifiers) + - [Pseudo states](#pseudo-states) + - [Media queries](#media-queries) + - [Keyframe animations](#keyframe-animations) + - [Theming](#theming) + - [Globals](#globals) + - [CSS prop](#css-prop) + - [Performance](#performance) + - [Multi-package architecture](#multi-package-architecture) + - [Motivation](#motivation) + - [API Reference](#api-reference) + - [Built with](#built-with) + - [Inspired by](#inspired-by) -## Get started ⚡️ - -**Installation** +## Get started -`npm install --save trousers` or `yarn add trousers` +Basic usage: `yarn add trousers` or `npm install trousers` -**Basic example** +Recommended for performance: `yarn add @trousers/macro` or `npm install @trousers/macro` -A basic purple button: +## Features -```jsx -import { css, useStyles } from '@trousers/core'; - -const Button = props => { - const className = useStyles(css` - background-color: rebeccapurple; - color: white; - `); +- Lightweight +- Zero-config SSR +- Composable +- Modifiers (aka variants) +- Globals +- Theming - return ; -}; - -export default Button; -``` +## Core concepts -**Complete example** - -A themed button with a _primary_ variant: - -`app/components/button.jsx` +### Modifiers ```jsx -import { useStyles } from '@trousers/core'; -import styleCollector from '@trousers/collector'; - -const styles = props => styleCollector('button').element` - background-color: ${theme => theme.backgroundColor}; - border: none; - color: ${theme => theme.textColor}; - margin: 0 10px; - padding: 10px 20px 14px 20px; - - :hover { - background-color: ${theme => theme.hoverColor}; - color: rgba(255, 255, 255, 0.8); - } - `.modifier('primary', props.primary)` - background-color: #f95b5b; - color: #ffffff; - - :hover { - background-color: #e45454; - } - `; - -const Button = props => { - const buttonClassNames = useStyles(styles(props)); - - return ; -}; - -export default Button; +import { css } from 'trousers'; + +const styles = css({ + background: 'grey', + color: 'black', +}).modifier('primary', { + background: 'red', + color: 'white', +}); ``` -`app/MyApp.jsx` +### Pseudo states ```jsx -import { ThemeProvider } from '@trousers/theme'; - -import Button from './components/button'; - -const theme = { - backgroundColor: 'blue', - textColor: 'white', - hoverColor: 'lightblue', -}; - -const MyApp = props => { - return ( - - - - ); -}; - -export default Button; +import { css } from 'trousers'; + +const styles = css({ + backgroundColor: 'red', + color: 'white', + + ':hover': { + backgroundColor: 'blue', + }, + ':active': { + backgroundColor: 'green', + }, +}); ``` -## Motivation 🧠 - -Components often require many **variations** and **states** to be flexible and truly reusable. Think about a _simple_ Button, it can have variations like `primary`, `secondary`, `subtle` and each variation has it's own states, `clicked`, `hover`, `loading`. But with modern CSS-in-JS libraries it can be hard to represent these variations and states in a way that makes sense to everyone and is repeatable without having to memorise specific syntax. - -Consider this example: +### Media queries ```jsx -const Button = styled.button` - background: ${props => (props.primary ? 'palevioletred' : 'white')}; - color: ${props => (props.primary ? 'white' : 'palevioletred')}; - margin: 1em; - padding: 0.25em 1em; - border: 2px solid palevioletred; -`; +import { css } from 'trousers'; + +const styles = css({ + backgroundColor: 'red', + color: 'white', + + '@media screen and (max-width: 992px)': { + '&': { + background: 'violet', + }, + }, +}); ``` -We have a button with two variants, `default` and `primary`. Functionally it works, but semantically it's really hard to see at a glance what color will be applied when it's primary. How would we extend this further, if say, we wanted primary buttons to have a `disabled` state? - -What's more, for every permutation of props, a new class will be created and attached to the ``. Every class that is created incurs additional runtime cost, this can **grow exponentially** if you're not careful, resulting in a combinatorial explosion of classnames 💥. Consider a component with 3 variants and 3 possible states, that is 3 x 3 = 9, 9 eventual classes generated for one component. It doesn't scale, but we could take another approach: +### Keyframe animations ```jsx -const Button = styled.button` - background: white; - color: palevioletred; - margin: 1em; - padding: 0.25em 1em; - border: 2px solid palevioletred; - - ${props => props.primary && css` - background: palevioletred; - color: white; - `} -} +import { css } from 'trousers'; + +const styles = css({ + backgroundColor: 'red', + color: 'white', + animation: 'moveitmoveit 5s infinite', + '@keyframes moveitmoveit': { + from: { top: '0px' }, + to: { top: '200px' }, + }, +}); ``` -Now that's more like it! This can be extended and scales to many variations and states. - -I think [@MadeByMike](https://github.com/MadeByMike) articulated this perfectly in: [CSS Architecture for Modern JavaScript Applications](https://www.madebymike.com.au/writing/css-architecture-for-modern-web-applications/) 👌 - -> BEM gave semantic meaning to classnames and one of the biggest unseen values in this was we could immediately transfer our intentions to other developers across teams and even projects. If you know BEM you can look at a classname, e.g. `button--state-success` and immediately recognise this as a modifier for a button class. - -But there's still a problem, this syntax has to be memorised and there's nothing stopping you from falling back into the previous example. This is where an abstraction can protect us and scale that knowledge across your codebase. This is where Trousers can help 🎉... - -Using our style collector you can express these variants and states like so: +### Theming ```jsx -import { styleCollector, useStyles } from 'trousers'; - -const styles = styleCollector('button').element` - // Base styles applied to all buttons - color: white; - `.modifier('primary', props => !!props.primary)` - // A modifier for the primary variant - color: black; - `.modifier('secondary', props => !!props.secondary)` - color: blue; - `.modifier('subtle', props => !!props.subtle)` - color: blue; - `; - -const Button = props => { - const classNames = useStyles(styles, props); - - return ; -}; - -export default Button; +import { css } from 'trousers'; + +const styles = css('MyElement', { color: 'var(--primary-color)' }) + .modifier('Primary', { color: 'var(--secondary-color)' }) + .theme({ + primaryColor: 'red', + secondaryColor: 'blue', + }); ``` -In this scenario, Trousers will only ever mount 3 classes to the `` and toggle them on and off using the predicates provided to the style collector. It will only ever mount what it needs so, if a `subtle` button is never used you wont pay the run-time cost of processing and mounting those styles. +### Globals -Under the hood, style collectors are simply an array of styles. This opens the door to a lot of possibilites because it is possible to **create your own style collectors** that suit your specific needs. What if you want a state machine style collector? Or a style collector that accepts objects instead of template literals? You can simply define one and pass it straight into Trouses 😲! - -## Features ✨ - -### Hooks-first 🎣 +Every app needs _some_ form of global styling in order to import fonts or reset native styling, for example using [@font-face](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face) would be quite challenging to use without access to globals. -[Hooks are a (relatively) hot new feature in React](https://reactjs.org/docs/hooks-intro.html), which allows Trousers to access context and state while abstracting the messy details away from the consumer. -Our `useStyles` hook accepts a name, some props and an instance of `styleCollector()`. It will then evaluate everything for you and return a human-readable class name, which you can then apply to your desired element. -For example, here we define a style for the button and inner span and apply the resulting classes to their respective elements. +This is where the `css.global` function can help. ```jsx -const Button = props => { - const buttonClassNames = useStyles(buttonStyles(props)); - - return ; -}; +/** @jsx jsx */ +import { css, jsx } from 'trousers'; + +const globalStyles = css({}).global({ + '*': { + boxSizing: 'border-box'; + } +}); + +const App = () => ( +
+

Welcome to my website!

+
+); ``` -### Composable API 🏗 - -Trousers is based on a monorepo architecture, meaning that the internals of the repo have been decomposed into a group of smaller stand-alone packages. This allows you to opt-in to features such as SSR, Theming and BEM-style collectors. Doing this will reduce your bundlesizes and tailor (lol) trousers to suit your application. +### CSS prop -- [@trousers/core](./packages/core): The most minimal version of Trousers -- [@trousers/collector](./packages/collector): BEM Style collector -- [@trousers/server](./packages/server): Tools for SSR -- [@trousers/theme](./packages/theme): Theming API -- [@trousers/theme-css](./packages/theme-css): Theming implemeneted as CSS variables -- [@trousers/hash](./packages/hash): Simple hashing methods -- [@trousers/registry](./packages/registry): Style registry -- [@trousers/util](./packages/util): Types and utility methods - -Otherwise you can use the base Trousers package which is an out-of-the-box composition for the above. - -- [trousers](./packages/trousers) - -### CSS Prop 👩‍🎤 - -Trousers supports a `css` prop, similar to that of [emotion](https://emotion.sh/docs/css-prop) and [styled-components](https://styled-components.com/docs/api#css-prop)! This is handy when you want to skip the boilerplate of declaring `useStyles` hooks in your components and instead just pass style collectors directly to the components you wish to style. +Trousers supports a css prop, similar to that of [emotion](https://emotion.sh/docs/css-prop) and [styled-components](https://styled-components.com/docs/api#css-prop)! Just remember to import `jsx` and set it as the pragma at the top of the file. -For example... - ```jsx /** @jsx jsx */ -import { jsx, css } from '@trousers/core'; +import { jsx, css } from 'trousers'; const Button = ({ children }) => ( ); ``` -### Theme Support 🎨 +### Performance -Theming is achieved via React's Context API, which provides a lot of flexibility. You can even choose to nest themes and present a section of your app in a different way. -It looks a little something like this: +Trousers in it's default state is a run-time library, even some CSS-in-JS libraries that boast near-zero runtime have hundreds of lines of code to execute before they mount a style block to the page. Trousers is no different, that's why **we provide and recommend using our [babel macro](https://github.com/kentcdodds/babel-plugin-macros): [`@trousers/macro`](packages/macro)**. -```jsx -import { ThemeProvider } from '@trousers/theme'; - -const lightTheme = { - primaryColor: 'white', - secondaryColor: 'blue', - disabledColor: 'grey', -}; - -const darkTheme = { - primaryColor: 'black', - secondaryColor: 'purple', - disabledColor: 'grey', -}; - -const MyApp = () => { - return ( - -

Hello World

-

Rest of my app lives here and has access to the light theme!

- -

This subtree will have access to the dark theme!

-
-
- ); -}; -``` +[`@trousers/macro`](packages/macro) is the most performant version of Trousers! It drastically reduces the runtime implications of the library by offloading the heavy style processing logic to build-time where possible! Namespacing, prefixing and processing are all handled by the macro at build time, leaving us with simply mounting and toggling classes 🎉. -When a Trousers component is mounted within a new theme context, it will render new styles and apply them to the component. +For more information see: [`@trousers/macro`](packages/macro) -You can define how your component handles themes like this: +### Multi-package architecture -```jsx -const buttonStyles = props => styleCollector('button').element` - background-color: ${theme => theme.secondaryColor}; - `.modifier(props.primary)` - background-color: ${theme => theme.primaryColor}; - `.modifier(props.disabled)` - background-color: ${theme => theme.disabledColor}; - `; -``` +Trousers is based on a monorepo architecture, meaning that the internals of the repo have been decomposed into a group of smaller stand-alone packages. Doing this will reduce your bundlesizes and tailor (lol) Trousers to suit your needs. -Now your component will render different styles based on the context it is mounted in. +If you're looking to use Trousers for the first time, you'll likely want the [`trousers`](packages/trousers) package. +If run-time is your concern, you want the most performant version of the library, consider using [`@trousers/macro`](packages/macro). +If you're feeling adventurous and want to use the Trousers to create your own CSS-in-JS library or even take it in your own direction, use [`@trousers/core`](packages/core). -### Global styles 🌏 +## Motivation -Every app needs _some_ form of global styling in order to import fonts or reset native styling, for example using [@font-face](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face) would be quite challenging to use without access to globals. +Trousers discourages the use of dynamic expressions in styles that implicitly increase the runtime implications of your application. Instead, it encourages the use of modifiers (aka variants) to toggle blocks of styles. -Turns out that there's a hook for that, `useGlobals`: +You might have seen this pattern emerging in some usages of CSS-in-JS: -```jsx -import React, { useEffect } from 'react'; -import { css, useGlobals } from '@trousers/core'; - -const globalStyles = css` - @font-face { - font-family: MyFont; - src: url('${MyFont}') format('opentype'); - } +```js +styled.button` + background: ${props => (props.primary ? 'red' : 'grey')} + color: ${props => (props.primary ? 'white' : 'black')}; + font-size: 1em; + margin: 1em; `; - -const App = () => { - useGlobals(globalStyles); - - return

Welcome to my website!

; -}; -``` - -### Server side rendering (SSR) 🤖 - -Server side rendering with Trousers follows a similar approach to [styled-components](https://www.styled-components.com/docs/advanced#server-side-rendering). It works by firstly instantiating a `serverStyleRegistry`, wrapping your application in a `ServerProvider`, then passing that registry into the provider as a prop. Then when you render your application to a string with `react-dom/server`, Trousers will push styles into the style registry. You can then pull the styles from the registry and manually append them to the head of your document. - -```jsx -import React, { FC, ReactNode } from 'react'; -import { renderToString } from 'react-dom/server'; - -import { ServerStyleRegistry, ServerProvider } from '@trousers/server'; -import App from './'; - -const registry = new ServerStyleRegistry(); - -const html = renderToString( - - - , -); - -// Your styles will be accessible here -const styleTags = registry.get(); ``` -### Object notation support 📚 +What's happening here is that we're calculating the two properties individually, with runtime logic. This is ok for this small usage, but you can probably see how quickly this will get complicated as new variants are added over time. Not to meantion that for every permutation of these properties a new class will be calculated and mounted to the page. -If template strings aren't for you it's easy to leverage css as objects. - -Simply pass a css compliant object to Trousers. +Trousers discourages dynamic interpolations like this and instead provides modifiers to help you fall into the right patterns. Only one class will be calculated and mounted per modifier and they're structured to be easier reason about at a glance. ```jsx -const classNames = useStyles({ - backgroundColor: 'blue'; - color: 'white' -}) +const styles = css({ + background: 'grey', + color: 'black', + fontSize: '1em', + margin: '1em', +}).modifier('primary', { + background: 'red', + color: 'white', +}); ``` -### Custom Style Collectors 🕺 +With this, you can now clearly see that this style block has two different variants 'default' and 'primary', which will only ever process and mount 2 classes to the page, it's clear what properties are applied to which scenarios when. -Don't like the style collector API? That's fine, Trousers lets you supply your own! -Under the hood a style collector is simply an array of objects which makes it easy to say, build a state-machine style collector. +For a more in depth explanation read my motivation blog post: [CSS-in-JS: What happened to readability](https://danieldelcore.medium.com/css-in-js-what-happened-to-readability-11fd43552c35) -For example a minimal style collector could look something like this: +## API Reference -```jsx -import { StyleDefinition, Predicate, Expression } from '@trousers/utils'; -import { toHash } from '@trousers/hash'; - -export default function myStyleCollector(styles) { - return { - get: () => [ - { - styles, - hash: toHash(styles.toString()).toString(), - predicate: true, - name: 'custom_prefix--', - }, - ], - }; -} -``` +For API documentation, please refer to the relevant package README. -and use it like this: +- [`trousers`](packages/trousers): Is the base packages which re-exports all of the modules in the sub-packages +- [`@trousers/macro`](packages/macro): **(Recommended)** Babel macro that moves 99% of Trousers' run-time logic to build-time! +- [`@trousers/core`](packages/core): Holds all of the underlying logic of trousers, including the css collector. +- [`@trousers/react`](packages/react): React implementation of Trousers +- [`@trousers/styled`](packages/styled): Styled Components like API +- [`@trousers/sheet`](packages/sheet): Mount styles via the CSSStyleSheet API (CSSOM wrapper) +- [`@trousers/hash`](packages/hash): A tiny hashing function -```jsx -import myStyleCollector from './my-style-collector'; +## Built with -const styles = myStyleCollector(` - button { - color: red; - } -`) +- [changesets 🦋](https://github.com/atlassian/changesets) +- [preconstruct 🎁](https://github.com/danieldelcore/trousers) +- [manypkg ☔️](https://github.com/Thinkmill/manypkg) -... +## Inspired by -useStyle(styles); -``` +Please do yourself a favour and checkout these fantastic libraries: -## API Reference 📖 - -Trousers a monorepo made up smaller packages, each with their own responsibilities. -Please see respective packages for API information. - -- [@trousers/core](./packages/core): The most minimal version of Trousers - - [useStyles](./packages/core/README.md#useStyles) - - [useGlobals](./packages/core/README.md#useGlobals) - - [withGlobals](./packages/core/README.md#withGlobals) - - [css](./packages/core/README.md#css) - - [jsx](./packages/core/README.md#jsx) -- [@trousers/collector](./packages/collector): BEM Style collector - - [styleCollector](./packages/core/README.md#style-collector) -- [@trousers/server](./packages/server): Tools for SSR - - [serverRegistry](./packages/server/README.md#serverRegistry) -- [@trousers/theme](./packages/theme): Theming API - - [ThemeProvider](./packages/theme/README.md#ThemeProvider) - - [useTheme](./packages/theme/README.md#useTheme) -- [@trousers/theme-css](./packages/theme-css): Theming implemeneted as CSS variables - - [ThemeProvider](./packages/theme/README.md#ThemeProvider) - - [useTheme](./packages/theme/README.md#useTheme) -- [@trousers/hash](./packages/hash): Simple hashing methods - - [hash](./packages/hash/README.md#hash) -- [@trousers/registry](./packages/registry): Style registry - - [registry](./packages/hash/README.md#registry) -- [@trousers/util](./packages/util): Types and utility methods - -## FAQ 🤷‍♀️ - -**Can't you do this in styled-components and emotion?** - -This can most certainly be done in styled-components and emotion! They are both great libraries, packed with loads of features. Trousers on the other hand, aims to be a little more simple and opinionated, it urges you to be deliberate about how styles are defined for particular states so that they can be clearer and more maintainable. - -**What does this have to do with hooks? Can we not compute the classname from a plain-old JS function?** - -The reason Trousers is a hook was so it could access (consume) the context from within the library, without exposing that implementation detail to the user. Otherwise you would have to wrap or access the context manually and pass it into Trousers. -There are also plans on leverage hooks more down the line to enable a few new features. +- [styled-components 💅](https://styled-components.com/) +- [emotion 👩‍🎤](https://emotion.sh/) +- [compiled](https://compiledcssinjs.com/) +- [stitches](https://stitches.dev/) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..3d53069 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,11 @@ +module.exports = api => { + api.cache(true); + return { + plugins: ['macros'], + presets: [ + '@babel/preset-env', + '@babel/preset-react', + '@babel/preset-typescript', + ], + }; +}; diff --git a/examples/Basic.tsx b/examples/Basic.tsx old mode 100644 new mode 100755 index 3470942..d589717 --- a/examples/Basic.tsx +++ b/examples/Basic.tsx @@ -1,9 +1,9 @@ /** @jsx jsx */ -import { storiesOf } from '@storybook/react'; import { FC, Fragment, ReactNode, useState } from 'react'; +import { storiesOf } from '@storybook/react'; -import { jsx, useStyles, css } from '@trousers/core'; -import styleCollector from '@trousers/collector'; +import css from '@trousers/core'; +import jsx from '@trousers/react'; storiesOf('Basic', module) .add('Elements and modifiers', () => { @@ -13,65 +13,58 @@ storiesOf('Basic', module) disabled?: boolean; } - const buttonStyles = (props: ButtonProps) => styleCollector('button') - .element` - background-color: #b3cde8; - border-radius: 6px; - border: none; - box-shadow: inset 0 -4px #9fb8d1; - color: white; - display: inline-block; - cursor: pointer; - font-family: sans-serif; - font-weight: 500; - font-size: 20px; - letter-spacing: 1px; - margin: 5px 10px; - padding: 10px 20px 14px 20px; - text-decoration: none; - transition: background-color 300ms, color 300ms; - outline: none; - - :hover { - background-color: #adc6e0; - color: rgba(255, 255, 255, 0.8); - } - - :active { - background-color: #9fb8d1; - } - `.modifier(!!props.primary)` - background-color: #f95b5b; - box-shadow: inset 0 -4px #c54646; - color: #ffffff; - - :hover { - background-color: #e45454; - } - - :active { - background-color: #c54646; - } - `.modifier(!!props.disabled)` - background-color: #efefef; - box-shadow: inset 0 -4px #afafaf; - color: #afafaf; - cursor: not-allowed; - - :hover, - :active { - color: #afafaf; - background-color: #efefef; - } - `; - - const Button: FC = props => { - const buttonClassNames = useStyles(buttonStyles(props)); - - return ( - - ); - }; + const styles = css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + transition: 'background-color 300ms, color 300ms', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }) + .modifier('primary', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }) + .modifier('disabled', { + backgroundColor: '#efefef', + boxShadow: 'inset 0 -4px #afafaf', + color: '#afafaf', + cursor: 'not-allowed', + '&:hover,&:active': { + color: '#afafaf', + backgroundColor: '#efefef', + }, + }); + + const Button: FC = ({ primary, disabled, children }) => ( + + ); return ( @@ -85,59 +78,51 @@ storiesOf('Basic', module) ); }) .add('Modifiers and state', () => { - interface ButtonState { - isOn?: boolean; - } - - const toggleStyles = (state: ButtonState) => styleCollector('toggle') - .element` - background-color: #b3cde8; - border-radius: 6px; - border: none; - box-shadow: inset 0 -4px #9fb8d1; - color: white; - display: inline-block; - cursor: pointer; - font: 500 20px sans-serif; - letter-spacing: 1px; - margin: 5px 10px; - padding: 10px 20px 14px 20px; - text-decoration: none; - transition: all 300ms, color 300ms; - outline: none; - - :hover { - background-color: #adc6e0; - color: rgba(255, 255, 255, 0.8); - } - - :active { - background-color: #9fb8d1; - } - `.modifier(!!state.isOn)` - background-color: #f95b5b; - box-shadow: inset 0 -4px #c54646; - color: #ffffff; - - :hover { - background-color: #e45454; - } - - :active { - background-color: #c54646; - } - `; + const toggleStyles = css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }).modifier('isOn', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }); const Button: FC = () => { const [isOn, setToggle] = useState(false); - const buttonClassNames = useStyles(toggleStyles({ isOn })); return ( ); }; @@ -145,137 +130,69 @@ storiesOf('Basic', module) return - ); - - return ( - - - - - - - ); - }) - .add('Single style collector', () => { - const Button: FC = ({ children }) => ( - - ); - - return ( - - - - ); - }); diff --git a/examples/Globals.tsx b/examples/Globals.tsx index 1a95894..95c729f 100644 --- a/examples/Globals.tsx +++ b/examples/Globals.tsx @@ -1,98 +1,71 @@ +/** @jsx jsx */ import { storiesOf } from '@storybook/react'; -import React, { FC } from 'react'; -import { css, useStyles, useGlobals } from '@trousers/core'; -import styleCollector from '@trousers/collector'; -import { ThemeProvider } from '@trousers/theme'; +import css from '@trousers/core'; +import jsx from '@trousers/react'; storiesOf('Globals', module) .add('Global styles', () => { - const globalStyles = css` - * { - color: #f95b5b; - } - `; - - const globalFontStyles = css` - @import url('https://fonts.googleapis.com/css?family=Press+Start+2P'); - `; - - const styles = styleCollector('block').element` - background-color: #eaf2fd; - color: blue; - padding: 20px; - border: none; - border-radius: 6px; - letter-spacing: 1px; - font-family: 'Press Start 2P', sans-serif; - text-align: center; - - h2 { - font-size: 40px; - } - `; - - const TextBlock: FC = () => { - useGlobals(globalFontStyles); - useGlobals(globalStyles); - - const classNames = useStyles(styles); - - return ( -
+ const globals = css('global-reset', {}).global({ + // @ts-ignore + '*': { + color: '#f95b5b', + }, + }); + + const styles = css('block', { + backgroundColor: '#eaf2fd', + color: 'blue', + padding: '20px', + border: 'none', + borderRadius: '6px', + letterSpacing: '1px', + fontFamily: 'sans-serif', + textAlign: 'center', + }); + + const TextBlock = () => ( +
+

Global Styles!

-

I should be red!

+

I should be red!

- ); - }; +
+ ); return ; }) .add('Global styles with theme', () => { - interface Theme { - color: string; - } - - const theme: Theme = { - color: '#ff5d9e', - }; - - const globalStyles = css` - * { - color: ${theme => theme.color}; - } - `; - - const styles = styleCollector('block').element` - background-color: #404b69; - color: blue; - padding: 20px; - border: none; - border-radius: 6px; - letter-spacing: 1px; - font-family: 'Press Start 2P', sans-serif; - text-align: center; - - h2 { - font-size: 40px; - } - `; - - const TextBlock: FC = () => { - useGlobals(globalStyles); - const classNames = useStyles(styles); - - return ( -
-

Themed global Styles!

-

I should be pink!

+ const globals = css('themed-reset', {}) + .global({ + // @ts-ignore + '*': { + color: 'var(--color)', + }, + }) + .theme({ + color: '#ff5d9e', + }); + + const styles = css('block', { + backgroundColor: '#eaf2fd', + color: 'blue', + padding: '20px', + border: 'none', + borderRadius: '6px', + letterSpacing: '1px', + fontFamily: 'sans-serif', + textAlign: 'center', + }); + + const TextBlock = () => ( +
+
+

Global Styles!

+

I should be red!

- ); - }; - - return ( - - - +
); + + return ; }); diff --git a/examples/Macro.tsx b/examples/Macro.tsx new file mode 100644 index 0000000..b54e0ee --- /dev/null +++ b/examples/Macro.tsx @@ -0,0 +1,305 @@ +import React, { FC, Fragment, ReactNode, useState } from 'react'; +import { storiesOf } from '@storybook/react'; + +import { css } from '@trousers/macro'; + +storiesOf('Macro', module) + .add('Elements and modifiers', () => { + interface ButtonProps { + children: ReactNode; + primary?: boolean; + disabled?: boolean; + } + + const styles = css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + transition: 'background-color 300ms, color 300ms', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }) + .modifier('primary', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }) + .modifier('disabled', { + backgroundColor: '#efefef', + boxShadow: 'inset 0 -4px #afafaf', + color: '#afafaf', + cursor: 'not-allowed', + '&:hover,&:active': { + color: '#afafaf', + backgroundColor: '#efefef', + }, + }); + + const Button: FC = ({ primary, disabled, children }) => ( + + ); + + return ( + + + + + + + ); + }) + .add('Modifiers and state', () => { + const toggleStyles = css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }).modifier('isOn', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }); + + const Button: FC = () => { + const [isOn, setToggle] = useState(false); + + return ( + + ); + }; + + return ; + }; + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); + }) + .add('Many nodes with different nodes', () => { + const Dot: FC<{ color: string }> = props => ( +
+ {props.children} +
+ ); + + const intToColor = () => { + const letters = '0123456789ABCDEF'; + let color = '#'; + for (let i = 0; i < 6; i++) { + color += letters[Math.floor(Math.random() * 16)]; + } + return color; + }; + + return ( + + {[...Array(500)].map((_, i) => ( + + ))} + + ); + }); diff --git a/examples/Misc.tsx b/examples/Misc.tsx deleted file mode 100644 index 37975cb..0000000 --- a/examples/Misc.tsx +++ /dev/null @@ -1,236 +0,0 @@ -import { storiesOf } from '@storybook/react'; -import React, { FC, Fragment, useState, MouseEventHandler } from 'react'; -import { useStableRefTester, RenderCount } from 'react-stable-ref'; - -import { css, useStyles, useGlobals } from '@trousers/core'; -import styleCollector from '@trousers/collector'; -import { ThemeProvider } from '@trousers/theme'; - -storiesOf('Miscellaneous', module) - .add('State transitions', () => { - const logoStyles = css` - width: 150px; - height: auto; - margin: 15px; - padding: 15px; - background-color: #b3cde8; - border-radius: 150px; - `; - - const TrousersLogo: FC = () => { - const logoClassnames = useStyles(logoStyles); - - useStableRefTester(); - - return ( - -

- Render count: -

- {`Trousers -
- ); - }; - - return ; - }) - .add('State transitions (Globals)', () => { - interface Theme { - color: string; - } - - const theme: Theme = { - color: '#ff5d9e', - }; - - const globalStyles = css` - * { - color: ${theme => theme.color}; - } - `; - - const styles = styleCollector('block').element` - background-color: #404b69; - color: blue; - padding: 20px; - border: none; - border-radius: 6px; - letter-spacing: 1px; - font-family: 'Press Start 2P', sans-serif; - text-align: center; - - h2 { - font-size: 40px; - } - `; - - const TextBlock: FC = () => { - useGlobals(globalStyles); - useStableRefTester(); - - const classNames = useStyles(styles); - - return ( -
-

- Render count: -

-

Themed global Styles!

-

I should be pink!

-
- ); - }; - - return ( - - - - ); - }) - .add('Alternating style collectors', () => { - const logoStyles = css` - width: 150px; - height: auto; - margin: 15px; - padding: 15px; - background-color: #b3cde8; - border-radius: 150px; - `; - - const logoStylesAlt = css` - width: 150px; - height: auto; - margin: 15px; - padding: 15px; - background-color: #f6e3e3; - `; - - const TrousersLogo: FC = () => { - const count = useStableRefTester(); - const logoClassnames = useStyles( - count % 2 ? logoStyles : logoStylesAlt, - ); - - return ( - -

- Render count: -

- {`Trousers -
- ); - }; - - return ; - }) - .add('Alternating themes', () => { - interface Theme { - primaryColor: string; - } - - const lightTheme = { - primaryColor: '#b3cde8', - }; - - const darkTheme = { - primaryColor: '#f6e3e3', - }; - - const logoStyles = css` - width: 150px; - height: auto; - margin: 15px; - padding: 15px; - background-color: ${theme => theme.primaryColor}; - border-radius: 150px; - `; - - const TrousersLogo: FC = () => { - const logoClassnames = useStyles(logoStyles); - - return ( - {`Trousers - ); - }; - - const Alternator: FC = () => { - const count = useStableRefTester(); - - return ( - -

- Render count: -

- -
- ); - }; - - return ; - }) - .add('Mount/Dismount', () => { - interface LogoProps { - primary?: boolean; - onClick: MouseEventHandler; - } - - const logoStyles = (props: LogoProps) => styleCollector( - 'logo', - ).element` - width: 150px; - height: auto; - margin: 15px; - padding: 15px; - background-color: #b3cde8; - border-radius: 150px; - animation: rotating 2s linear infinite; - transition: background-color linear 300ms; - cursor: pointer; - `.modifier(!!props.primary)` - background-color: #f6e3e3; - `; - - const Logo: FC = props => { - const classNames = useStyles(logoStyles(props)); - - return ( - props.onClick(e)} - src="trousers-logo.png" - alt={`Trousers Logo`} - /> - ); - }; - - const Toggle: FC = () => { - const [active, setActive] = useState(false); - - return ( - -

Press to mount/unmount

- {!active ? ( - setActive(true)} /> - ) : ( - setActive(false)} /> - )} - setActive(true)} /> - setActive(false)} /> -
- ); - }; - - return ; - }); diff --git a/examples/ObjectStyles.tsx b/examples/ObjectStyles.tsx deleted file mode 100644 index a74b67e..0000000 --- a/examples/ObjectStyles.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/** @jsx jsx */ -import { jsx, useStyles } from '@trousers/core'; -import { storiesOf } from '@storybook/react'; -import { FC, PropsWithChildren } from 'react'; - -const foo = { - backgroundColor: '#b3cde8', - borderRadius: '6px', - border: 'none', - boxShadow: 'inset 0 -4px #9fb8d1', - color: 'white', - display: 'inline-block', - cursor: 'pointer', - letterSpacing: '1px', - margin: '5px 10px', - padding: '10px 20px 14px 20px', - textDecoration: 'none', - transition: 'background-color 300ms, color 300ms', - outline: 'none', - 'font-family': 'sans-serif', - 'font-weight': 500, - 'font-size': '20px', - ':hover': { - backgroundColor: '#adc6e0', - color: 'rgba(255, 255, 255, 0.8)', - }, - ':active': { - backgroundColor: '#9fb8d1', - }, -}; - -storiesOf('Object styles', module) - .add('Css prop', () => { - const Button: FC> = ({ children }) => ( - - ); - - return ; - }) - .add('useStyle', () => { - const Button: FC> = ({ children }) => { - const className = useStyles(foo); - return ; - }; - - return ; - }); diff --git a/examples/Performance.tsx b/examples/Performance.tsx old mode 100644 new mode 100755 index ed1042c..0f4f0a9 --- a/examples/Performance.tsx +++ b/examples/Performance.tsx @@ -1,8 +1,9 @@ +/** @jsx jsx */ import { storiesOf } from '@storybook/react'; -import React, { FC, ReactNode, Fragment } from 'react'; +import { FC, ReactNode, Fragment } from 'react'; -import { css, useStyles } from '@trousers/core'; -import styleCollector from '@trousers/collector'; +import css from '@trousers/core'; +import jsx from '@trousers/react'; storiesOf('Performance', module) .add('Many of the same nodes', () => { @@ -10,39 +11,33 @@ storiesOf('Performance', module) children: ReactNode; } - const styles = styleCollector('button').element` - background-color: #b3cde8; - border-radius: 6px; - border: none; - box-shadow: inset 0 -4px #9fb8d1; - color: white; - display: inline-block; - cursor: pointer; - font-family: sans-serif; - font-weight: 500; - letter-spacing: 1px; - margin: 5px 10px; - padding: 10px 20px 14px 20px; - text-decoration: none; - transition: background-color 300ms, color 300ms; - outline: none; - - :hover { - background-color: #adc6e0; - color: rgba(255, 255, 255, 0.8); - } - - :active { - background-color: #9fb8d1; - } - `; + const styles = css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 500, + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + transition: 'background-color 300ms, color 300ms', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }); const Button: FC = props => { - const buttonClassNames = useStyles(styles); - - return ( - - ); + return ; }; return ( @@ -87,19 +82,21 @@ storiesOf('Performance', module) ); }) - .add('Many nodes with different classes', () => { - const Dot: FC<{ color: string }> = props => { - const classNames = useStyles(css` - background-color: ${props.color}; - width: 8px; - height: 8px; - border-radius: 100%; - display: inline-block; - margin: 4px; - `); - - return
{props.children}
; - }; + .add('Many nodes with different nodes', () => { + const Dot: FC<{ color: string }> = props => ( +
+ {props.children} +
+ ); const intToColor = () => { const letters = '0123456789ABCDEF'; diff --git a/examples/Styled.tsx b/examples/Styled.tsx new file mode 100755 index 0000000..8e3bdd1 --- /dev/null +++ b/examples/Styled.tsx @@ -0,0 +1,191 @@ +/** @jsx jsx */ +import { FC, Fragment, ReactNode, useState } from 'react'; +import { storiesOf } from '@storybook/react'; + +import css from '@trousers/core'; +import jsx from '@trousers/react'; +import styled from '@trousers/styled'; + +storiesOf('Styled', module) + .add('Elements and modifiers', () => { + interface ButtonProps { + children: ReactNode; + primary?: boolean; + disabled?: boolean; + } + + const Button = styled.button( + css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + transition: 'background-color 300ms, color 300ms', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }) + .modifier('primary', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }) + .modifier('disabled', { + backgroundColor: '#efefef', + boxShadow: 'inset 0 -4px #afafaf', + color: '#afafaf', + cursor: 'not-allowed', + '&:hover,&:active': { + color: '#afafaf', + backgroundColor: '#efefef', + }, + }), + ); + + return ( + + + + + + + ); + }) + .add('Modifiers and state', () => { + const ToggleButton = styled.button( + css('button', { + backgroundColor: '#b3cde8', + borderRadius: '6px', + border: 'none', + boxShadow: 'inset 0 -4px #9fb8d1', + color: 'white', + display: 'inline-block', + cursor: 'pointer', + fontFamily: 'sans-serif', + fontWeight: 'normal', + fontSize: '20px', + letterSpacing: '1px', + margin: '5px 10px', + padding: '10px 20px 14px 20px', + textDecoration: 'none', + outline: 'none', + ':hover': { + backgroundColor: '#adc6e0', + color: 'rgba(255, 255, 255, 0.8)', + }, + ':active': { + backgroundColor: '#9fb8d1', + }, + }).modifier('isOn', { + backgroundColor: '#f95b5b', + boxShadow: 'inset 0 -4px #c54646', + color: '#ffffff', + ':hover': { + backgroundColor: '#e45454', + }, + ':active': { + backgroundColor: '#c54646', + }, + }), + ); + + const Button: FC = () => { + const [isOn, setToggle] = useState(false); + + return ( + setToggle(!isOn)} $isOn={isOn}> + {!isOn ? 'On' : 'Off'} + + ); + }; + + return ; -}; +const Button: FC = props => ( + +); storiesOf('Theme', module) .add('Default', () => ( - + - + )) .add('Sibling themes', () => ( - + - - + + - + )) .add('Nested themes', () => ( - + - + - - + + )) .add('No theme in context', () => ); diff --git a/jest.config.js b/jest.config.js index 0e82798..aac5d59 100644 --- a/jest.config.js +++ b/jest.config.js @@ -12,7 +12,7 @@ module.exports = { ], globals: { 'ts-jest': { - tsConfig: 'tsconfig.json', + tsconfig: 'tsconfig.json', }, }, moduleNameMapper: { diff --git a/package.json b/package.json index 7fd1377..6a37a0a 100644 --- a/package.json +++ b/package.json @@ -10,16 +10,17 @@ "scripts": { "prestart": "yarn build", "start": "run-p start:*", - "start:watch": "tsc --build --watch", + "start:watch": "preconstruct watch", "start:stories": "start-storybook -p 9000 -s assets", - "clean": "rm -rf node_modules/.cache && rimraf packages/*/{tsconfig.tsbuildinfo,lib,dist}", - "validate": "yarn build && yarn lint && yarn monorepo:check", - "postinstall": "yarn monorepo:check", + "clean": "rm -rf node_modules/.cache && rimraf packages/**/{tsconfig.tsbuildinfo,lib,dist}", + "validate": "yarn build && yarn lint && yarn monorepo:check && preconstruct validate", + "postinstall": "preconstruct dev && yarn monorepo:check", "monorepo:check": "manypkg check", - "monorepo:fix": "manypkg fix", + "monorepo:fix": "manypkg fix && preconstruct fix", + "types:check": "tsc --noEmit --skipLibCheck", "predeploy-storybook": "build-storybook -s assets", "deploy-storybook": "storybook-to-ghpages", - "build": "tsc --build", + "build": "yarn clean && preconstruct build", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", @@ -30,41 +31,54 @@ "release": "yarn build && yarn changeset publish" }, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.7", + "@babel/parser": "^7.12.10", + "@babel/preset-env": "^7.12.7", + "@babel/preset-react": "^7.12.7", + "@babel/preset-typescript": "^7.12.7", "@changesets/cli": "^2.6.2", "@manypkg/cli": "^0.11.1", - "@storybook/addon-storysource": "^5.2.8", - "@storybook/addons": "^5.2.8", - "@storybook/react": "^5.2.8", - "@storybook/source-loader": "^5.2.8", - "@storybook/storybook-deployer": "^2.8.1", + "@preconstruct/cli": "^2.0.0", + "@storybook/addon-storysource": "6.1.18", + "@storybook/addons": "6.1.18", + "@storybook/react": "6.1.18", + "@storybook/source-loader": "6.1.18", + "@storybook/storybook-deployer": "^2.8.7", "@testing-library/react": "^10.0.0", - "@types/jest": "^25.2.0", + "@types/babel-plugin-macros": "^2.8.4", + "@types/jest": "^26.0.15", "@types/jsdom": "^12.2.3", - "@types/react": "^16.8.1", - "@types/react-dom": "^16.8.2", + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", + "@types/stylis": "^4.0.0", "@typescript-eslint/eslint-plugin": "^1.4.2", "@typescript-eslint/parser": "^1.4.2", "babel-loader": "^8.0.6", + "babel-plugin-macros": "^3.0.0", "eslint": "^5.15.1", "eslint-config-prettier": "^4.1.0", "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-react": "^7.12.4", "eslint-plugin-react-hooks": "^1.5.0", - "jest": "^25.3.0", + "jest": "^26.6.0", "jest-serializer-html-string": "^1.0.1", "jest-watch-typeahead": "^0.4.2", - "jsdom": "^14.0.0", + "jsdom": "^16.4.0", "markdown-toc": "^1.2.0", "npm-run-all": "^4.1.5", "prettier": "^1.16.4", - "react": "^16.8.1", - "react-dom": "^16.8.4", + "react": "^17.0.1", + "react-dom": "^17.0.1", "react-stable-ref": "^0.4.0", "rimraf": "^2.6.3", - "storybook-addon-performance": "^0.10.0", - "ts-jest": "^25.3.1", + "storybook-addon-performance": "^0.14.0", + "ts-jest": "^26.4.4", "ts-loader": "^6.2.1", - "typescript": "^3.8.1" + "typescript": "^4.1.3" + }, + "preconstruct": { + "packages": [ + "packages/*" + ] } } diff --git a/packages/collector/CHANGELOG.md b/packages/collector/CHANGELOG.md deleted file mode 100644 index 63de7a0..0000000 --- a/packages/collector/CHANGELOG.md +++ /dev/null @@ -1,63 +0,0 @@ -# @trousers/collector - -## 3.0.2 - -### Patch Changes - -- 16fd640: Style collector instances with differing expressions will now be mounted separately -- Updated dependencies [16fd640] - - @trousers/utils@3.0.2 - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - -### Patch Changes - -- Updated dependencies [e6a3323] -- Updated dependencies [c9c8187] - - @trousers/hash@3.0.0 - - @trousers/utils@3.0.0 diff --git a/packages/collector/README.md b/packages/collector/README.md deleted file mode 100644 index 3ca6059..0000000 --- a/packages/collector/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# @trousers/collector - -`@trousers/collector` is a style collector inspired by the principles of the BEM methodology. - -It's recommended to use this style collector when want to express styles across multiple states and appearances in a semantic way. -If that's not the case, consier using `css` or a plain-ol' object. - -> Note: If the API of this style collector isn't to your liking, you can easily implement your own! Please see [this guide](). - -## API 🤖 - -### `styleCollector()` - -The `styleCollector()` function is designed to collect style definitions and provide some portability. If you deside to define CSS in another file, you can do and re-import it into your component. - -> NOTE: styleCollector return methods will always return `this`, which means the calls can be chained repeatedly. - -**Arugments:** - -- `componentName`: String - -**Returns:** - -- `styleCollector().element` -- `styleCollector().modifier(predicate)` -- `styleCollector().get()` - -### `styleCollector().element` - -A function which accepts a [Tagged Template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates). - -You should treat element blocks like you would with [Elements in BEM](https://en.bem.info/methodology/quick-start/#element). - -- The element name describes its purpose ("What is this?" — item, text, etc.), not its state ("What type, or what does it look like?" — red, big, etc.). -- The structure of an element's full name is block-name**element-name. The element name is separated from the block name with a double underscore (**). -- The block name defines the namespace, which guarantees that the elements are dependent on the block (block\_\_elem) -- A block can have a nested structure of elements in the DOM tree - -**Arugments:** - -- `taggedTemplate`: TaggedTemplate - -**Example:** - -```jsx -import { styleCollector } from 'trousers'; - -const styles = styleCollector('button').element` - background-color: red; - `; -``` - -### `styleCollector().modifier(modifierName, predicate)` - -A function that accepts a predicate function or boolean and returns a new function which accepts a tagged template. The tagged template will only be rendered if the predicate returns a truthy value. - -> Note: Modifiers are dependant on order. Be sure to organise the order of your modifiers with the understanding that the bottom most modifier will potentially be overriding the style rules defined in the modifiers and elements declared before it. - -Modifiers follow the same methodology as [Modifiers in BEM](https://en.bem.info/methodology/quick-start/#modifier). - -- Defines the appearance, state, or behavior of a block or element -- A modifier can't be used alone, a modifier can't be used in isolation from the modified block or element. A modifier should change the appearance, behavior, or state of the entity, not replace it -- You can have one or multiple modifiers active at any time -- The modifier name describes its appearance ("What size?" or "Which theme?" and so on — size_s or theme_islands), its state ("How is it different from the others?" — disabled, focused, etc.) and its behavior ("How does it behave?" or "How does it respond to the user?" — such as directions_left-top) - -**Arguments:** - -- `modifierName`: (optional) string -- `predicate`: boolean | Function(props, state) => boolean - -**Returns:** - -- `Function(TaggedTemplate)` - -**Example:** - -```jsx -import { styleCollector } from 'trousers'; - -const styles = (props, state) => styleCollector('button').element``.modifier( - props.primary, -)` - background-color: yellow; - `.modifier('active', state.isActive)` - background-color: purple; - `.modifier('disabled', props.isDisabled)` - background-color: grey; - `; -``` - -### `styleCollector().get()` - -Outputs the collected `styleDefinitions`. StyleDefintions is an array of objects that trousers passes around internally. - -**StyleDefinition:** - -``` -{ - styles: TemplateStringsArray; - expressions: number | string | Function(props) => number | string; - predicate?: Predicate; -} -``` - -**Returns:** - -- `styleDefinitions`: StyleDefinition[]; - -**Example:** - -```jsx -import { styleCollector } from 'trousers'; - -const styles = styleCollector('button') - .element`` - .modifier(...)``; - -styles.get(); -``` diff --git a/packages/collector/package.json b/packages/collector/package.json deleted file mode 100644 index b0b5982..0000000 --- a/packages/collector/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@trousers/collector", - "version": "3.0.2", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "license": "MIT", - "dependencies": { - "@trousers/utils": "3.0.2" - }, - "devDependencies": {}, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/collector" -} diff --git a/packages/collector/src/index.ts b/packages/collector/src/index.ts deleted file mode 100644 index 5aae839..0000000 --- a/packages/collector/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './style-collector'; diff --git a/packages/collector/src/style-collector.spec.ts b/packages/collector/src/style-collector.spec.ts deleted file mode 100644 index 43e10b5..0000000 --- a/packages/collector/src/style-collector.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import styleCollector from './'; - -describe('styleCollector', () => { - it('returns the correct element name', () => { - const collector = styleCollector('my-element-name').element``; - - expect(collector.get()[0].name).toEqual('my-element-name__'); - }); - - it('registers an element', () => { - const collector = styleCollector('myBlock').element` - font-style: normal; - `; - - expect(collector.get().length).toBe(1); - }); - - it('registers an element and modifier', () => { - const collector = (props: { isBold: boolean }) => styleCollector( - 'myBlock', - ).element` - font-style: normal; - `.modifier(props.isBold)` - font-style: bold; - `; - - { - const styleDefinitions = collector({ isBold: true }).get(); - - expect(styleDefinitions.length).toBe(2); - expect(styleDefinitions[1].predicate).toBe(true); - } - { - const styleDefinitions = collector({ isBold: false }).get(); - - expect(styleDefinitions.length).toBe(2); - expect(styleDefinitions[1].predicate).toBe(false); - } - }); - - it('registers an element and named modifier', () => { - const collector = (props: { isBold: boolean }) => styleCollector( - 'myBlock', - ).element` - font-style: normal; - `.modifier('bold', props.isBold)` - font-style: bold; - `; - - const styleDefinitions = collector({ isBold: true }).get(); - - expect(styleDefinitions.length).toBe(2); - expect(styleDefinitions[1].name).toEqual('myBlock--bold'); - expect(styleDefinitions[1].predicate).toBe(true); - }); - - it('registers an element and multiple modifiers', () => { - interface Props { - isBold?: boolean; - isItalic?: boolean; - } - - const collector = (props: Props) => styleCollector('myBlock').element` - font-style: normal; - `.modifier(props.isBold)` - font-style: bold; - `.modifier(props.isItalic)` - font-style: italic; - `; - - const styleDefinitions = collector({ - isBold: true, - isItalic: true, - }).get(); - - expect(styleDefinitions.length).toBe(3); - }); -}); diff --git a/packages/collector/src/style-collector.ts b/packages/collector/src/style-collector.ts deleted file mode 100644 index e83fb47..0000000 --- a/packages/collector/src/style-collector.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { StyleDefinition, Predicate, Expression } from '@trousers/utils'; - -export default function styleCollector(elementName: string) { - const styleDefinitions: StyleDefinition[] = []; - const get = () => styleDefinitions; - - const modifier = ( - idOrPredicate: string | Predicate, - predicate?: Predicate, - ) => ( - styles: TemplateStringsArray, - ...expressions: Expression[] - ) => { - let id = ''; - - if (typeof idOrPredicate === 'string') { - id = idOrPredicate; - } else { - predicate = idOrPredicate; - } - - styleDefinitions.push({ - styles, - expressions, - predicate: !!predicate, - name: `${elementName}--${id}`, - }); - - return { modifier, get }; - }; - - const element = ( - styles: TemplateStringsArray, - ...expressions: Expression[] - ) => { - styleDefinitions.push({ - styles, - expressions, - predicate: true, - name: `${elementName}__`, - }); - - return { modifier, get }; - }; - - return { - element, - modifier, - get, - }; -} diff --git a/packages/collector/tsconfig.json b/packages/collector/tsconfig.json deleted file mode 100644 index 9af3e52..0000000 --- a/packages/collector/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { - "path": "../hash" - }, - { - "path": "../utils" - } - ] -} diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md deleted file mode 100644 index bbfa13e..0000000 --- a/packages/core/CHANGELOG.md +++ /dev/null @@ -1,79 +0,0 @@ -# @trousers/core - -## 3.0.2 - -### Patch Changes - -- 16fd640: Style collector instances with differing expressions will now be mounted separately -- Updated dependencies [635f6fc] -- Updated dependencies [16fd640] - - @trousers/registry@3.0.2 - - @trousers/utils@3.0.2 - - @trousers/server@3.0.2 - -## 3.0.1 - -### Patch Changes - -- Updated dependencies [c2853fb] - - @trousers/parser@3.0.1 - - @trousers/registry@3.0.1 - - @trousers/server@3.0.1 - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - -### Patch Changes - -- Updated dependencies [e6a3323] -- Updated dependencies [c9c8187] - - @trousers/hash@3.0.0 - - @trousers/parser@3.0.0 - - @trousers/registry@3.0.0 - - @trousers/server@3.0.0 - - @trousers/theme@3.0.0 - - @trousers/utils@3.0.0 diff --git a/packages/core/README.md b/packages/core/README.md old mode 100644 new mode 100755 index e7a1473..26c25c6 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -1,181 +1,280 @@ # @trousers/core -`@trousers/core` is the heart of the repo, it exists to act as the most minimal and light-weight version of Trousers, allowing you to opt-out of other features such as theming (@trousers/theme) and the bem-style style collectors(@trousers/collector). +`@trousers/core` is the heart of the repo, it exists to act as the most minimal and light-weight version of Trousers, allowing you to opt-out of other features such as react (`@trousers/react`) and the styled (`@trousers/styled`). -## API 🤖 +It is essentially a set of library agnostic utility functions that you can use to create your own version of Trousers. For example creating a React or Vue version. + +## Installation + +`yarn add @trousers/core` or `npm install @trousers/core` + +## API ### `css` -A single style defintion +The `css` method (aka Collector) aims to allow express styles across multiple states and appearances in a semantic way. Internally the styles that you supply to css will be cataloged and organized so they can efficiently be mounted to the page. + +It's loosely inspired by the principles of the [_BEM methodology_](https://en.bem.info/methodology/quick-start). So familiar concepts like `element` and `modifiers` can be conceptually treated in the same way. + +You should treat element blocks the same as [Elements in BEM](https://en.bem.info/methodology/quick-start/#element). + +The element describes its purpose ("What is this?" — item, text, etc.), not its state ("What type, or what does it look like?" — red, big, etc.). + +**Arguments:** + +- `elementId` (`string`)?: The id that represents the element (optional) +- `elementStyles` (`CSSObject`): The styles that represent the element. Treat these styles as the base for which modifier styles might override. Styles are in object notation, rather than template literals, for runtime performance purposes. If you wish to use template literals please check out [`@trousers/macro`](todo). -**Arugments:** +**Returns:** -- `taggedTemplate`: TaggedTemplate +- `CollectorReturn`: The chainable methods of the collector (see below) **Example:** -```jsx -import { css } from 'trousers'; +```js +import css from '@trousers/core'; -const styles = css` - background-color: red; -`; +const styles = css('Button', { color: 'red' }); ``` -### `jsx` +### `css().modifier()` + +The `modifier` is a chainable method which allows you to express "modifiers" or "variants" of your styles. + +- Modifiers deliberately **override element styles** which avoids duplication and the need for dynamic logic. +- You can provide more than one modifier. +- Modifiers are typically **toggled on and off when conditions are met**. For example, if a react prop is truthy, trousers might toggle the associated modifier on (see [@trousers/react](todo)). +- **Modifiers are dependant on order**. Be sure to organise the order of your modifiers with the understanding that the bottom most modifier will potentially be overriding the style rules defined in the modifiers and elements declared before it. -```jsx -TODO; +**Arguments:** + +- `modifierId` (`string`)?: The id that represents the modifier (optional) +- `modifierStyles` (`CSSObject`): The styles that represent the modifier. Treat these styles as overrides or additions to the element styles. + +**Returns:** + +- `CollectorReturn`: The chainable methods of the collector (see below) + +**Example:** + +```js +import css from '@trousers/core'; + +const styles = css('Button', { color: 'red' }) + .modifier('Primary', { color: 'blue' }) + .modifier('Secondary', { color: 'grey' }); ``` -### `useStyles()` +### `css().global()` -React Hook responsbile for evaluating the supplied styles, attaching them to the document head and returning all active classes for the current state. +The `global` is a chainable method which allows you to express global styles (styles that are applied to more than a single element). Consider a css reset or adding styles to the `:root`. **Arguments:** -- `styleCollector`: StyleCollector -- `props`?: Object -- `state`?: Object +- `globalStyles` (`CSSObject`): The styles that represent the a global. **Returns:** -- `className`: string +- `CollectorReturn`: The chainable methods of the collector (see below) **Example:** -```jsx -import React from 'react'; -import { styleCollector, useStyles } from 'trousers'; +```js +import css from '@trousers/core'; -const styles = props => styleCollector('button') - .element`` - .modifier(...)``; +const styles = css('MyGlobal', {}).global({ ':root': 'color: red;' }); +``` -const Button = props => { - const classNames = useStyles(styles(props)); +### `css().theme()` - return ( - - ); -}; -``` +The `theme` is a chainable method which allows you to express [css custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) in object notation. + +- Themes apply to the element they are referenced in and also their children. +- They can be used by Elements, Modifiers and Globals. +- They are mounted via a simple class and can be used like any css custom property + +**Arguments:** + +- `themeObject` (`Object`): The object that represents the theme + +**Returns:** + +- `CollectorReturn`: The chainable methods of the collector (see below) -### `withStyles` +**Example:** + +```js +import css from '@trousers/core'; + +const styles = css('MyElement', { color: 'var(--primary-color)' }) + .modifier('Primary', { color: 'var(--secondary-color)' }) + .theme({ + primaryColor: 'red', + secondaryColor: 'blue', + }); +``` -A [HOC (Higher Order Component)](https://reactjs.org/docs/higher-order-components.html) which accepts a component and a style collector. Returns a new component, with the supplied styles rendered and passed down to via a `className` prop. +### `prefix` -Use this HOC in your class components, where hooks (and useStyles) are not available. +This method prefixes properties and their values. -> Note: Remember to apply the supplied className prop to an element in your components render funciton or your styling wont be applied to your element! +- Prefixing is only indended to be for modern browsers. If you intend to target legacy browsers you'll need to provide the relevant prefixes manually. **Arguments:** -- `Component`: React Component -- `(props) => styleCollector`: Function returning a StyleCollector +- `property`(`string`): css property (`background`, `color`, etc) +- `value`(`string`): value of property (`red`, '100px`, etc) + +**Returns:** + +- `string`: prefixed string including both property and value **Example:** -```jsx -import React from 'react'; -import { styleCollector, withStyles } from 'trousers'; - -class Button { - render() { - return ( - // IMPORTANT: apply the className yourself - - ) - } -); - -export default withStyles(Button, (props) => styleCollector('button') - .element`` - .modifier(props.primary)``); +```js +import { prefix } from '@trousers/core'; + +const result = prefix('appearance', 'none'); + +/* +Result: +'appearance: none;-moz-appearance: none;-webkit-appearance: none;-moz-appearance: none;' +*/ ``` -### `useGlobals()` +### `namespace` -Mount a single style definition as a global style +Namespaces styles with nested selectors etc, into css with valid selectors. **Arguments:** -- `styleCollector`: SingleStyleCollector | SingleStyleCollector[] +- `id`(`string`): The id to use when namespacing your styles +- `styles`(`CSSObject`): The styles to process -**Returns** +**Returns:** -- void +- `Record`: key value pairs of styles, in valid CSS **Example:** -```jsx -import React, { useEffect } from 'react'; -import { css, useGlobals } from 'trousers'; +```js +import { namespace } from '@trousers/core'; + +const result = namespace('.my-id', { + background: 'red', + button: { + background: 'violet', + span: { + background: 'green', + }, + }, +}); + +/* +Result: +{ + '.my-id': { + background: 'red', + }, + '.my-id button': { + background: 'violet', + }, + '.my-id button span': { + background: 'green', + }, +} +*/ +``` -const globalStyles = css` - @font-face { - font-family: MyFont; - src: url('${MyFont}') format('opentype'); - } -`; +### `process` -const App = () => { - useGlobals(globalStyles); +Process is a special function which takes ids and styles and applies the above methods like `namespace` and `prefix` to them. The result is a shape that can easily be passed to `@trousers/sheet` for mounting. - return

Welcome to my website!

; -}; +**Arguments:** + +- `id`(`string`): The id to use when namespacing your styles +- `styles`(`CSSObject`): The styles to process + +**Returns:** + +- `Record`: key value pairs of styles, namespaced and prefixed + +**Example:** + +```js +import { process } from '@trousers/core'; + +const result = process('.my-id', { + backgroundColor: 'red', + '& button': { + backgroundColor: 'violet', + }, +}); + +/* +Result: +{ + '.my-id': 'background-color: red;', + '.my-id button': 'background-color: violet;', +} +*/ ``` -`useGlobals` also accepts an array of styles... +### `themify` -```jsx -import React, { useEffect } from 'react'; -import { css, useGlobals } from 'trousers'; +`themify` accepts an object and converts it into its css custom properties counterpart -const globalStyles = css`...`; -const moreGlobalStyles = css`...`; +**Arguments:** + +- `theme`(`Object`): Theme object in object notation + +**Returns:** -const App = () => { - useGlobals([globalStyles, moreGlobalStyles]); +- `Record`: An object containing css custom properties and their values as key-value pairs - return

Welcome to my website!

; +**Example:** + +```js +import { themify } from '@trousers/core'; + +const result = themify({ + background: 'red', + typography: { + heading: 'violet', + paragraph: { + small: 'black', + large: 'blue', + }, + }, +}); + +/* +Result: +{ + '--background': 'red', + '--typography-heading': 'violet', + '--typography-paragraph-large': 'blue', + '--typography-paragraph-small': 'black', }; +*/ ``` -### `withGlobals` +### `isBrowser` -A [HOC (Higher Order Component)](https://reactjs.org/docs/higher-order-components.html) which accepts a component and a single style collector. Returns a new component, with the supplied global styles rendered to the document head. - -Use this HOC in your class components, where hooks (and useGlobals) are not available. +Used to determine whether to use browser or SSR logic. **Arguments:** -- `Component`: React Component -- `css`: SingleStyleCollector +N/A + +**Returns:** + +- `boolean`: Returns true when invoked on the browser, false if on the server. **Example:** -```jsx -import React from 'react'; -import { css, withGlobals } from 'trousers'; - -class Button { - render() { - return ( - - ) - } -); - -export default withGlobals(Button, css` - * { - box-sizing: border-box; - } -`); +```js +import { isBrowser } from '@trousers/core'; + +isBrowser(); // true, i'm running in the browser ``` diff --git a/packages/core/package.json b/packages/core/package.json index d36c851..a70f45a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,23 +1,14 @@ { "name": "@trousers/core", - "version": "3.0.2", - "main": "dist/index.js", - "module": "dist/index.js", + "version": "4.0.0-alpha6", + "main": "dist/trousers-core.cjs.js", + "module": "dist/trousers-core.esm.js", "types": "dist/index.d.ts", "license": "MIT", "dependencies": { - "@trousers/hash": "3.0.0", - "@trousers/parser": "3.0.1", - "@trousers/registry": "3.0.2", - "@trousers/server": "3.0.2", - "@trousers/theme": "3.0.0", - "@trousers/utils": "3.0.2" - }, - "devDependencies": { - "react": "^16.8.1" - }, - "peerDependencies": { - "react": ">=16.8.0" + "@trousers/hash": "4.0.0-alpha6", + "csstype": "^2.5.7", + "tiny-css-prefixer": "^1.1.4" }, "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/core" } diff --git a/packages/core/src/__snapshots__/css.spec.ts.snap b/packages/core/src/__snapshots__/css.spec.ts.snap new file mode 100644 index 0000000..8429b5b --- /dev/null +++ b/packages/core/src/__snapshots__/css.spec.ts.snap @@ -0,0 +1,228 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`css collects element styles without an id supplied 1`] = ` +Array [ + Object { + "className": ".2313942302", + "id": "", + "styles": Object { + "color": "red", + }, + "type": "element", + }, +] +`; + +exports[`css collects id and element styles 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, +] +`; + +exports[`css collects multiple global styles 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": "", + "id": "global-Element-3713844026", + "styles": Object { + ":root": Object { + "color": "green", + }, + }, + "type": "global", + }, + Object { + "className": "", + "id": "global-Element-2840557653", + "styles": Object { + "*": Object { + "boxSizing": "border-box", + }, + }, + "type": "global", + }, +] +`; + +exports[`css collects multiple modifier styles 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".Element-2313942302--primary-2561700995", + "id": "primary", + "styles": Object { + "color": "blue", + }, + "type": "modifier", + }, + Object { + "className": ".Element-2313942302--secondary-2709930440", + "id": "secondary", + "styles": Object { + "color": "grey", + }, + "type": "modifier", + }, +] +`; + +exports[`css collects multiple theme objects 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".theme-Element-4166118473", + "id": "theme-Element-4166118473", + "styles": Object { + "--typography-font": "ariel", + "--typography-size": "18px", + }, + "type": "theme", + }, + Object { + "className": ".theme-Element-1320425247", + "id": "theme-Element-1320425247", + "styles": Object { + "--color-background": "blue", + "--color-foreground": "red", + }, + "type": "theme", + }, +] +`; + +exports[`css collects single camel case flat theme object 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".theme-Element-1395378648", + "id": "theme-Element-1395378648", + "styles": Object { + "--primary-background": "blue", + "--primary-color": "red", + }, + "type": "theme", + }, +] +`; + +exports[`css collects single deep theme object 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".theme-Element-1320425247", + "id": "theme-Element-1320425247", + "styles": Object { + "--color-background": "blue", + "--color-foreground": "red", + }, + "type": "theme", + }, +] +`; + +exports[`css collects single flat theme object 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".theme-Element-3131109692", + "id": "theme-Element-3131109692", + "styles": Object { + "--background": "blue", + "--color": "red", + }, + "type": "theme", + }, +] +`; + +exports[`css collects single global style 1`] = ` +Array [ + Object { + "className": ".Element-3938", + "id": "Element", + "styles": Object {}, + "type": "element", + }, + Object { + "className": "", + "id": "global-Element-3713844026", + "styles": Object { + ":root": Object { + "color": "green", + }, + }, + "type": "global", + }, +] +`; + +exports[`css collects single modifier style 1`] = ` +Array [ + Object { + "className": ".Element-2313942302", + "id": "Element", + "styles": Object { + "color": "red", + }, + "type": "element", + }, + Object { + "className": ".Element-2313942302--modifier-2561700995", + "id": "modifier", + "styles": Object { + "color": "blue", + }, + "type": "modifier", + }, +] +`; diff --git a/packages/core/src/__snapshots__/useGlobals.spec.tsx.snap b/packages/core/src/__snapshots__/useGlobals.spec.tsx.snap deleted file mode 100644 index 864d575..0000000 --- a/packages/core/src/__snapshots__/useGlobals.spec.tsx.snap +++ /dev/null @@ -1,145 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`useGlobals attaches an array of styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches an array of themed styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches new styles when a new style collector is supplied 1`] = ` - - - -`; - -exports[`useGlobals attaches new styles when a new style collector is supplied 2`] = ` - - - -`; - -exports[`useGlobals attaches styles before data-trousers 1`] = ` - - - - -`; - -exports[`useGlobals attaches styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches themed styles to the head 1`] = ` - - - -`; - -exports[`useGlobals mounts an array of object styles 1`] = ` - - - -`; - -exports[`useGlobals mounts object styles 1`] = ` - - - -`; - -exports[`useGlobals styles are not duplicated on rerender 1`] = ` - - - -`; diff --git a/packages/core/src/__snapshots__/useStyles.spec.tsx.snap b/packages/core/src/__snapshots__/useStyles.spec.tsx.snap deleted file mode 100644 index 4bbea71..0000000 --- a/packages/core/src/__snapshots__/useStyles.spec.tsx.snap +++ /dev/null @@ -1,272 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`useStyles attaches new styles when a new style collector is supplied 1`] = ` - - - -`; - -exports[`useStyles attaches new styles when a new style collector is supplied 2`] = ` - - - -`; - -exports[`useStyles attaches object style to the head 1`] = ` - - - -`; - -exports[`useStyles attaches object style with keyframe animations to the head 1`] = ` - - - -`; - -exports[`useStyles attaches object style with media queries to the head 1`] = ` - - - -`; - -exports[`useStyles attaches object style with pseudo states to the head 1`] = ` - - - -`; - -exports[`useStyles attaches single style to the head 1`] = ` - - - -`; - -exports[`useStyles attaches styles to the head 1`] = ` - - - -`; - -exports[`useStyles attaches styles with modifiers to the head 1`] = ` - - - -`; - -exports[`useStyles attaches styles with modifiers to the head 2`] = ` - - - -`; - -exports[`useStyles attaches styles with multiple named modifiers to the head 1`] = ` - - - -`; - -exports[`useStyles attaches styles with multiple named modifiers to the head 2`] = ` - - - -`; - -exports[`useStyles attaches styles with multiple named modifiers to the head 3`] = ` - - - -`; - -exports[`useStyles attaches styles with multiple named modifiers to the head 4`] = ` - - - -`; - -exports[`useStyles attaches styles with named modifiers to the head 1`] = ` - - - -`; - -exports[`useStyles attaches styles with named modifiers to the head 2`] = ` - - - -`; - -exports[`useStyles attaches themed single style to the head 1`] = ` - - - -`; - -exports[`useStyles attaches themed styles to the head 1`] = ` - - - -`; - -exports[`useStyles attaches themed styles to the head 2`] = ` - - - -`; diff --git a/packages/core/src/__snapshots__/withGlobals.spec.tsx.snap b/packages/core/src/__snapshots__/withGlobals.spec.tsx.snap deleted file mode 100644 index f532353..0000000 --- a/packages/core/src/__snapshots__/withGlobals.spec.tsx.snap +++ /dev/null @@ -1,70 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`useGlobals attaches an array of styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches an array of themed styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches styles to the head 1`] = ` - - - -`; - -exports[`useGlobals attaches themed styles to the head 1`] = ` - - - -`; - -exports[`useGlobals styles are not duplicated on rerender 1`] = ` - - - -`; diff --git a/packages/core/src/common/index.ts b/packages/core/src/common/index.ts deleted file mode 100644 index 906d0de..0000000 --- a/packages/core/src/common/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as interpolateStyles } from './interpolate-styles'; -export { default as isBrowser } from './is-browser'; diff --git a/packages/core/src/common/interpolate-styles.spec.ts b/packages/core/src/common/interpolate-styles.spec.ts deleted file mode 100644 index b28ce6b..0000000 --- a/packages/core/src/common/interpolate-styles.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { interpolateStyles } from './'; - -describe('interpolate styles', () => { - it('expect no interpolation on template string array', () => { - const result = interpolateStyles([`color: red;`], [], {}); - - expect(result).toEqual(`color: red;`); - }); - - it('expect string interpolation', () => { - const result = interpolateStyles(['color: ', ';'], ['red'], {}); - - expect(result).toEqual(`color: red;`); - }); - - it('expect number interpolation', () => { - const result = interpolateStyles(['width: ', 'px;'], [40], {}); - - expect(result).toEqual(`width: 40px;`); - }); - - it('expect theme interpolation', () => { - const result = interpolateStyles( - ['width: ', 'px;'], - [(theme: any) => theme.width], - { width: 40 }, - ); - - expect(result).toEqual(`width: 40px;`); - }); -}); diff --git a/packages/core/src/common/interpolate-styles.ts b/packages/core/src/common/interpolate-styles.ts deleted file mode 100644 index e107c19..0000000 --- a/packages/core/src/common/interpolate-styles.ts +++ /dev/null @@ -1,13 +0,0 @@ -const interpolateStyles = ( - styles: TemplateStringsArray | string[], - expressions: any[], - theme: Theme, -) => - expressions.reduce((result, expression, index) => { - const value = - typeof expression === 'function' ? expression(theme) : expression; - - return result + value + styles[index + 1]; - }, styles[0]); - -export default interpolateStyles; diff --git a/packages/core/src/css.spec.ts b/packages/core/src/css.spec.ts index ec7fe0a..f6765a2 100644 --- a/packages/core/src/css.spec.ts +++ b/packages/core/src/css.spec.ts @@ -1,12 +1,111 @@ import css from './css'; describe('css', () => { - it('returns the correct element name', () => { - const collector = css` - font-style: normal; - `; + it('collects id and element styles', () => { + expect(css('Element', { color: 'red' })._get()).toMatchSnapshot(); + }); + + it('collects element styles without an id supplied', () => { + expect(css({ color: 'red' })._get()).toMatchSnapshot(); + }); + + it('collects single modifier style', () => { + expect( + css('Element', { color: 'red' }) + .modifier('modifier', { color: 'blue' }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects multiple modifier styles', () => { + expect( + css('Element', { color: 'red' }) + .modifier('primary', { color: 'blue' }) + .modifier('secondary', { color: 'grey' }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects single global style', () => { + expect( + css('Element', {}) + .global({ + ':root': { + color: 'green', + }, + }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects multiple global styles', () => { + expect( + css('Element', { color: 'red' }) + .global({ + ':root': { + color: 'green', + }, + }) + .global({ + '*': { + boxSizing: 'border-box', + }, + }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects single flat theme object', () => { + expect( + css('Element', { color: 'red' }) + .theme({ + color: 'red', + background: 'blue', + }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects single camel case flat theme object', () => { + expect( + css('Element', { color: 'red' }) + .theme({ + primaryColor: 'red', + primaryBackground: 'blue', + }) + ._get(), + ).toMatchSnapshot(); + }); + + it('collects single deep theme object', () => { + expect( + css('Element', { color: 'red' }) + .theme({ + color: { + foreground: 'red', + background: 'blue', + }, + }) + ._get(), + ).toMatchSnapshot(); + }); - expect(collector.get()[0].name).toEqual('css__'); - expect(collector.get()[0].predicate).toEqual(true); + it('collects multiple theme objects', () => { + expect( + css('Element', { color: 'red' }) + .theme({ + typography: { + size: '18px', + font: 'ariel', + }, + }) + .theme({ + color: { + foreground: 'red', + background: 'blue', + }, + }) + ._get(), + ).toMatchSnapshot(); }); }); diff --git a/packages/core/src/css.ts b/packages/core/src/css.ts index 89551d2..aabce24 100644 --- a/packages/core/src/css.ts +++ b/packages/core/src/css.ts @@ -1,17 +1,79 @@ -import { Expression, StyleCollector } from '@trousers/utils'; +import hash from '@trousers/hash'; -const css = ( - styles: TemplateStringsArray | string[], - ...expressions: Expression[] -): StyleCollector => ({ - get: () => [ +import { Definition, CSSObject } from './types'; +import themify from './themify'; + +export interface CollectorReturn { + _get: () => Definition[]; + modifier: (id: string, styles: CSSObject) => CollectorReturn; + global: (styles: CSSObject) => CollectorReturn; + theme: (theme: Record) => CollectorReturn; +} + +function css(styles: CSSObject): CollectorReturn; +function css( + idOrStyle: string | CSSObject, + styles?: CSSObject, +): CollectorReturn; +function css( + idOrStyle: string | CSSObject, + styles?: CSSObject, +): CollectorReturn { + let id = typeof idOrStyle === 'string' ? idOrStyle : ''; + let styleObject = (typeof idOrStyle === 'string' + ? styles + : idOrStyle) as CSSObject; + + const elementId = `${id && id + '-'}${hash(JSON.stringify(styleObject))}`; + const styleMap: Definition[] = [ { - styles, - expressions, - predicate: true, - name: 'css__', + id, + type: 'element', + className: `.${elementId}`, + styles: styleObject, + }, + ]; + + const self: CollectorReturn = { + _get: () => styleMap, + modifier: (modifierId, modifierStyles) => { + styleMap.push({ + id: modifierId, + type: 'modifier', + className: `.${elementId}--${modifierId}-${hash( + JSON.stringify(modifierStyles), + )}`, + styles: modifierStyles, + }); + + return self; }, - ], -}); + global: globalStyles => { + styleMap.push({ + id: `global-${id}-${hash(JSON.stringify(globalStyles))}`, + type: 'global', + className: '', + styles: globalStyles, + }); + + return self; + }, + theme: theme => { + const themeHash = hash(JSON.stringify(theme)); + styleMap.push({ + id: `theme-${id}-${themeHash}`, + type: 'theme', + className: `.theme-${id}-${themeHash}`, + styles: themify(theme), + }); + + return self; + }, + }; + + return self; +} + +export type Collector = typeof css; export default css; diff --git a/packages/core/src/hyphenate.spec.ts b/packages/core/src/hyphenate.spec.ts new file mode 100644 index 0000000..3ad0e3f --- /dev/null +++ b/packages/core/src/hyphenate.spec.ts @@ -0,0 +1,15 @@ +import hyphenate from './hyphenate'; + +describe('hyphenate', () => { + it('hyphenates simple camelCase', () => { + expect(hyphenate('camelCase')).toEqual('camel-case'); + }); + + it('hyphenates long camelCase', () => { + expect(hyphenate('camelCaseCaseFoo')).toEqual('camel-case-case-foo'); + }); + + it('does not hyphenate hyphenated string', () => { + expect(hyphenate('snake-case')).toEqual('snake-case'); + }); +}); diff --git a/packages/core/src/hyphenate.ts b/packages/core/src/hyphenate.ts new file mode 100644 index 0000000..493ea3d --- /dev/null +++ b/packages/core/src/hyphenate.ts @@ -0,0 +1,12 @@ +const cache: Record = {}; + +function hyphenate(str: string) { + return cache.hasOwnProperty(str) + ? cache[str] + : (cache[str] = str.replace( + /[A-Z]/g, + letter => `-${letter.toLowerCase()}`, + )); +} + +export default hyphenate; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index a630b2e..1016ac1 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,5 +1,11 @@ -export { default as css } from './css'; -export { default as jsx } from './jsx'; -export { default as useStyles } from './useStyles'; -export { default as useGlobals } from './useGlobals'; -export { default as withGlobals } from './withGlobals'; +// Type imports need to be explicitly defined see: https://github.com/vercel/next.js/issues/7882 +// eslint-disable-next-line prettier/prettier +export type { Definition, CSSObject } from './types'; +export type { Collector, CollectorReturn } from './css'; + +export { default } from './css'; +export { default as prefix } from './prefix'; +export { default as namespace } from './namespace'; +export { default as process } from './process'; +export { default as isBrowser } from './is-browser'; +export { default as themify } from './themify'; diff --git a/packages/core/src/common/is-browser.spec.ts b/packages/core/src/is-browser.spec.ts old mode 100644 new mode 100755 similarity index 100% rename from packages/core/src/common/is-browser.spec.ts rename to packages/core/src/is-browser.spec.ts diff --git a/packages/core/src/common/is-browser.ts b/packages/core/src/is-browser.ts old mode 100644 new mode 100755 similarity index 100% rename from packages/core/src/common/is-browser.ts rename to packages/core/src/is-browser.ts diff --git a/packages/core/src/jsx.tsx b/packages/core/src/jsx.tsx deleted file mode 100644 index fd837ca..0000000 --- a/packages/core/src/jsx.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { createElement, hasOwnProperty, ElementType, ReactNode } from 'react'; - -import { StyleCollector, CSSProps } from '@trousers/utils'; -import useStyles from './useStyles'; - -import './types'; - -const jsx = < - Props extends { css: StyleCollector | CSSProps }, - Theme extends {} = {} ->( - type: ElementType>, - props: Props, - ...children: ReactNode[] -) => { - if (props == null || !hasOwnProperty.call(props, 'css')) { - return createElement(type, props, ...children); - } - - const { css, ...rest } = props; - - // eslint-disable-next-line react-hooks/rules-of-hooks - const className = useStyles(props.css); - - return createElement(type, { ...rest, className }, ...children); -}; - -export default jsx; -export { CSSProps }; diff --git a/packages/core/src/namespace.spec.ts b/packages/core/src/namespace.spec.ts new file mode 100644 index 0000000..8370aa4 --- /dev/null +++ b/packages/core/src/namespace.spec.ts @@ -0,0 +1,502 @@ +import namespace from './namespace'; + +describe('namespace', () => { + it('namespaces properties', () => { + const result = namespace('.my-id', { + background: 'red', + color: 'blue', + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + color: 'blue', + }, + }); + }); + + it('merges duplicate & alike selectors', () => { + const result = namespace('.my-id', { + '& button': { + background: 'violet', + }, + button: { + color: 'green', + }, + }); + expect(result).toEqual({ + '.my-id button': { + background: 'violet', + color: 'green', + }, + }); + }); + + it('namespaces nested selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '& button': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id button': { + background: 'violet', + }, + }); + }); + + it('namespaces deeply nested selectors', () => { + const result = namespace('.my-id', { + background: 'red', + button: { + background: 'violet', + span: { + background: 'green', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id button': { + background: 'violet', + }, + '.my-id button span': { + background: 'green', + }, + }); + }); + + it('namespaces deeply nested class selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '#MyButton': { + background: 'violet', + '.myDiv': { + background: 'green', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id #MyButton': { + background: 'violet', + }, + '.my-id #MyButton .myDiv': { + background: 'green', + }, + }); + }); + + it('namespaces child selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '> .myButton': { + background: 'violet', + }, + '& > .myButton': { + color: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id > .myButton': { + background: 'violet', + color: 'violet', + }, + }); + }); + + it('namespaces sibling selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '~ .myButton': { + background: 'violet', + }, + '& ~ .myButton': { + color: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id ~ .myButton': { + background: 'violet', + color: 'violet', + }, + }); + }); + + it('namespaces adjacent sibling selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '+ .myButton': { + background: 'violet', + }, + '& + .myButton': { + color: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id + .myButton': { + background: 'violet', + color: 'violet', + }, + }); + }); + + it('namespaces top-level font-face declaration', () => { + const result = namespace('', { + '@font-face': { + fontFamily: 'Untitled Sans', + fontWeight: 400, + fontDisplay: 'swap', + src: "url(UntitledSansWeb-Regular.woff2) format('woff2')", + }, + }); + expect(result).toEqual({ + '@font-face': { + '': { + fontFamily: 'Untitled Sans', + fontWeight: 400, + fontDisplay: 'swap', + src: "url(UntitledSansWeb-Regular.woff2) format('woff2')", + }, + }, + }); + }); + + it('namespaces media queries', () => { + const result = namespace('.my-id', { + background: 'red', + '@media screen and (max-width: 992px)': { + '& button': { + background: 'violet', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '@media screen and (max-width: 992px)': { + '.my-id button': { + background: 'violet', + }, + }, + }); + }); + + it('namespaces media queries multiple selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '@media screen and (max-width: 992px)': { + '& button': { + background: 'violet', + }, + '& span': { + background: 'purple', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '@media screen and (max-width: 992px)': { + '.my-id button': { + background: 'violet', + }, + '.my-id span': { + background: 'purple', + }, + }, + }); + }); + + it('namespaces media queries with nested selectors', () => { + const result = namespace('.my-id', { + background: 'red', + '@media screen and (max-width: 992px)': { + '& button': { + background: 'violet', + '& span': { + background: 'green', + }, + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '@media screen and (max-width: 992px)': { + '.my-id button': { + background: 'violet', + }, + '.my-id button span': { + background: 'green', + }, + }, + }); + }); + + it('namespaces keyframes', () => { + const result = namespace('.my-id', { + background: 'red', + '@keyframes mymove': { + from: { top: '0px' }, + to: { top: '200px' }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '@keyframes mymove': { + from: { top: '0px' }, + to: { top: '200px' }, + }, + }); + }); + + it('namespaces nested selectors with & token', () => { + const result = namespace('.my-id', { + background: 'red', + '& button': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id button': { + background: 'violet', + }, + }); + }); + + it('namespaces deeply nested selectors with & token', () => { + const result = namespace('.my-id', { + background: 'red', + '& button': { + background: 'violet', + '& span': { + background: 'green', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id button': { + background: 'violet', + }, + '.my-id button span': { + background: 'green', + }, + }); + }); + + it('namespaces nested pseudo elements', () => { + const result = namespace('.my-id', { + background: 'red', + '::before': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id::before': { + background: 'violet', + }, + }); + }); + + it('namespaces nested pseudo selectors', () => { + const result = namespace('.my-id', { + background: 'red', + ':hover': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id:hover': { + background: 'violet', + }, + }); + }); + + it('namespaces deeply nested pseudo selectors', () => { + const result = namespace('.my-id', { + background: 'red', + ':hover': { + background: 'violet', + button: { + color: 'red', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id:hover': { + background: 'violet', + }, + '.my-id:hover button': { + color: 'red', + }, + }); + }); + + it('namespaces nested pseudo selectors with &', () => { + const result = namespace('.my-id', { + background: 'red', + '&:hover': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id:hover': { + background: 'violet', + }, + }); + }); + + it('namespaces comma separated pseudo selectors with &', () => { + const result = namespace('.my-id', { + background: 'red', + '&:hover,&:active': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id:hover,.my-id:active': { + background: 'violet', + }, + }); + }); + + it('namespaces deeply nested pseudo selectors with &', () => { + const result = namespace('.my-id', { + background: 'red', + ':hover': { + background: 'violet', + '& button': { + color: 'red', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + '.my-id:hover': { + background: 'violet', + }, + '.my-id:hover button': { + color: 'red', + }, + }); + }); + + it('namespaces compound selectors', () => { + const result = namespace('.my-id', { + '& button, & span': { + color: 'red', + }, + 'div, strong': { + color: 'blue', + }, + }); + expect(result).toEqual({ + '.my-id button, .my-id span': { + color: 'red', + }, + '.my-id div, .my-id strong': { + color: 'blue', + }, + }); + }); + + it('namespaces deeply nested pseudo selectors with compound selector', () => { + const result = namespace('.my-id', { + '& button': { + color: 'red', + ':hover,:active': { + color: 'red', + }, + }, + }); + expect(result).toEqual({ + '.my-id button': { + color: 'red', + }, + '.my-id button:hover,.my-id button:active': { + color: 'red', + }, + }); + }); + + it('namespaces nested parent selectors', () => { + const result = namespace('.my-id', { + background: 'red', + 'button &': { + background: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + 'button .my-id': { + background: 'violet', + }, + }); + }); + + it('namespaces deeply nested parent selectors', () => { + const result = namespace('.my-id', { + background: 'red', + span: { + 'button &': { + background: 'violet', + }, + }, + }); + expect(result).toEqual({ + '.my-id': { + background: 'red', + }, + 'button .my-id span': { + background: 'violet', + }, + }); + }); +}); diff --git a/packages/core/src/namespace.ts b/packages/core/src/namespace.ts new file mode 100644 index 0000000..7c8182f --- /dev/null +++ b/packages/core/src/namespace.ts @@ -0,0 +1,73 @@ +export type RuleSet = Record>; + +function isObject(item: any) { + return item && typeof item === 'object' && !Array.isArray(item); +} + +function mergeDeep(target: any, ...sources: any): any { + if (!sources.length) return target; + const source = sources.shift(); + + if (isObject(target) && isObject(source)) { + for (const key in source) { + if (isObject(source[key])) { + if (!target[key]) Object.assign(target, { [key]: {} }); + mergeDeep(target[key], source[key]); + } else { + Object.assign(target, { [key]: source[key] }); + } + } + } + + return mergeDeep(target, ...sources); +} + +function namespace(id: string, style: Record): RuleSet { + return Object.entries(style).reduce((accum, [property, value]) => { + if (typeof value !== 'object') { + if (!accum[id]) accum[id] = {}; + accum[id][property] = value; + return accum; + } + + if (property.includes('@keyframe')) { + return mergeDeep(accum, { + [property]: Object.entries(value).reduce( + ( + nestedAccum, + [nestedProp, nestedValue]: [string, any], + ) => ({ + ...nestedAccum, + ...namespace(nestedProp, nestedValue), + }), + {}, + ), + }); + } else if ( + property.includes('@media') || + property.includes('@font-face') || + property.includes('@supports') + ) { + return mergeDeep(accum, { + [property]: namespace(id, value), + }); + } + + let selector = ''; + + if (property.includes('&')) { + selector = property.replace(new RegExp(/&/, 'g'), id); + } else if (property.includes('::')) { + selector = property.replace(new RegExp(/::/, 'g'), id + '::'); + } else if (property.includes(':')) { + selector = property.replace(new RegExp(/:/, 'g'), id + ':'); + } else { + selector = + id + ' ' + property.replace(new RegExp(/,/, 'g'), ', ' + id); + } + + return mergeDeep(accum, namespace(selector, value)); + }, {}); +} + +export default namespace; diff --git a/packages/core/src/prefix.spec.ts b/packages/core/src/prefix.spec.ts new file mode 100644 index 0000000..51562b2 --- /dev/null +++ b/packages/core/src/prefix.spec.ts @@ -0,0 +1,15 @@ +import prefix from './prefix'; + +describe('prefix', () => { + it('prefixes simple css property', () => { + const result = prefix('appearance', 'none'); + expect(result).toEqual( + 'appearance: none;-moz-appearance: none;-webkit-appearance: none;-moz-appearance: none;', + ); + }); + + it('does not prefix well supported rules', () => { + const result = prefix('color', 'red'); + expect(result).toEqual('color: red;'); + }); +}); diff --git a/packages/core/src/prefix.ts b/packages/core/src/prefix.ts new file mode 100644 index 0000000..a223008 --- /dev/null +++ b/packages/core/src/prefix.ts @@ -0,0 +1,12 @@ +import { prefixProperty } from 'tiny-css-prefixer'; + +const prefix = (prop: string, value: string | number) => { + const flag = prefixProperty(prop); + let css = `${prop}: ${value};`; + if (flag & 0b001) css += `-ms-${css}`; + if (flag & 0b010) css += `-moz-${css}`; + if (flag & 0b100) css += `-webkit-${css}`; + return css; +}; + +export default prefix; diff --git a/packages/core/src/process.spec.ts b/packages/core/src/process.spec.ts new file mode 100644 index 0000000..e3d30be --- /dev/null +++ b/packages/core/src/process.spec.ts @@ -0,0 +1,140 @@ +import process from './process'; + +describe('process', () => { + it('stringifies basic object css', () => { + const result = process('button', { + backgroundColor: '#b3cde8', + color: 'white', + }); + expect(result).toEqual({ + button: 'background-color: #b3cde8;color: white;', + }); + }); + + it('stringifies basic object css', () => { + const result = process('button', { + backgroundColor: '#b3cde8', + color: 'white', + }); + expect(result).toEqual({ + button: 'background-color: #b3cde8;color: white;', + }); + }); + + it('stringifies nested selectors', () => { + const result = process('.my-id', { + backgroundColor: 'red', + '& button': { + backgroundColor: 'violet', + }, + }); + expect(result).toEqual({ + '.my-id': 'background-color: red;', + '.my-id button': 'background-color: violet;', + }); + }); + + it('stringifies deeply nested selectors', () => { + const result = process('.my-id', { + backgroundColor: 'red', + button: { + backgroundColor: 'violet', + span: { + backgroundColor: 'green', + }, + }, + }); + expect(result).toEqual({ + '.my-id': 'background-color: red;', + '.my-id button': 'background-color: violet;', + '.my-id button span': 'background-color: green;', + }); + }); + + it('stringifies deeply nested class selectors', () => { + const result = process('.my-id', { + backgroundColor: 'red', + '#MyButton': { + backgroundColor: 'violet', + '.myDiv': { + backgroundColor: 'green', + }, + }, + }); + expect(result).toEqual({ + '.my-id': 'background-color: red;', + '.my-id #MyButton': 'background-color: violet;', + '.my-id #MyButton .myDiv': 'background-color: green;', + }); + }); + + it('stringifies child selectors', () => { + const result = process('.my-id', { + backgroundColor: 'red', + '> .myButton': { backgroundColor: 'violet' }, + '& > .myButton': { color: 'violet' }, + }); + expect(result).toEqual({ + '.my-id': 'background-color: red;', + '.my-id > .myButton': 'background-color: violet;color: violet;', + }); + }); + + it('stringifies keyframe animations', () => { + const result = process('.my-id', { + '@keyframes mymove': { + from: { top: '0px' }, + to: { top: '200px' }, + }, + }); + expect(result).toEqual({ + '@keyframes mymove': 'from{top: 0px;}to{top: 200px;}', + }); + }); + + it('stringifies media queries', () => { + const result = process('.my-id', { + '@media screen and (max-width: 992px)': { + '& button': { + background: 'violet', + }, + }, + }); + expect(result).toEqual({ + '@media screen and (max-width: 992px)': + '.my-id button{background: violet;}', + }); + }); + + it('stringifies top-level font-face declaration', () => { + const result = process('', { + '@font-face': { + fontFamily: 'Untitled Sans', + fontWeight: 400, + fontDisplay: 'swap', + src: "url(UntitledSansWeb-Regular.woff2) format('woff2')", + }, + }); + expect(result).toEqual({ + '@font-face': + "{font-family: Untitled Sans;font-weight: 400;font-display: swap;src: url(UntitledSansWeb-Regular.woff2) format('woff2');}", + }); + }); + + it('stringifies media queries with deeply nested selectors', () => { + const result = process('.my-id', { + '@media screen and (max-width: 992px)': { + '& button': { + background: 'violet', + '& span': { + color: 'red', + }, + }, + }, + }); + expect(result).toEqual({ + '@media screen and (max-width: 992px)': + '.my-id button{background: violet;}.my-id button span{color: red;}', + }); + }); +}); diff --git a/packages/core/src/process.ts b/packages/core/src/process.ts new file mode 100644 index 0000000..a4ec481 --- /dev/null +++ b/packages/core/src/process.ts @@ -0,0 +1,29 @@ +import namespace from './namespace'; +import hyphenate from './hyphenate'; +import prefix from './prefix'; +import { CSSObject } from './types'; + +type ProcessedRuleSet = Record; + +function stringify(styles: CSSObject): string { + return Object.entries(styles).reduce((accum, [key, properties]) => { + if (typeof properties === 'object') { + return `${accum}${key}{${stringify(properties)}}`; + } + + // @ts-ignore + return accum + prefix(hyphenate(key), styles[key]); + }, ''); +} + +function process(id: string, styles: CSSObject) { + return Object.entries(namespace(id, styles)).reduce( + (accum, [key, value]) => { + accum[key] = stringify(value); + return accum; + }, + {}, + ); +} + +export default process; diff --git a/packages/core/src/themify.spec.ts b/packages/core/src/themify.spec.ts new file mode 100644 index 0000000..67d127a --- /dev/null +++ b/packages/core/src/themify.spec.ts @@ -0,0 +1,66 @@ +import themify from './themify'; + +describe('stringify', () => { + it('converts flat theme object to string', () => { + const result = themify({ + background: 'red', + color: 'black', + }); + + expect(result).toEqual({ + '--background': 'red', + '--color': 'black', + }); + }); + + it('converts nested theme object to string', () => { + const result = themify({ + background: 'red', + typography: { + heading: 'violet', + paragraph: 'black', + }, + }); + + expect(result).toEqual({ + '--background': 'red', + '--typography-heading': 'violet', + '--typography-paragraph': 'black', + }); + }); + + it('converts deeply nested theme object to string', () => { + const result = themify({ + background: 'red', + typography: { + heading: 'violet', + paragraph: { + small: 'black', + large: 'blue', + }, + }, + }); + + expect(result).toEqual({ + '--background': 'red', + '--typography-heading': 'violet', + '--typography-paragraph-large': 'blue', + '--typography-paragraph-small': 'black', + }); + }); + + it('converts array properties', () => { + const result = themify({ + background: 'red', + size: [1, 2, 3, 4], + }); + + expect(result).toEqual({ + '--background': 'red', + '--size-0': 1, + '--size-1': 2, + '--size-2': 3, + '--size-3': 4, + }); + }); +}); diff --git a/packages/core/src/themify.ts b/packages/core/src/themify.ts new file mode 100644 index 0000000..d1cd8c6 --- /dev/null +++ b/packages/core/src/themify.ts @@ -0,0 +1,24 @@ +import hyphenate from './hyphenate'; + +function themify( + theme: Record, + prefix: string = '', +): Record { + return Object.entries(theme).reduce>( + (accum, [key, value]) => { + if (typeof value === 'object') { + return { + ...accum, + ...themify(value, prefix + hyphenate(key) + '-'), + }; + } + + accum[`--${prefix}${hyphenate(key)}`] = value; + + return accum; + }, + {}, + ); +} + +export default themify; diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index a2f213c..24871c9 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -1,15 +1,36 @@ -import { StyleCollector, CSSProps } from '@trousers/utils'; +import * as CSS from 'csstype'; -declare module 'react' { - interface DOMAttributes { - css?: StyleCollector | CSSProps; - } +type CSSProperties = CSS.PropertiesFallback; +type CSSPropertiesWithMultiValues = { + [K in keyof CSSProperties]: + | CSSProperties[K] + | Extract[]; +}; + +type CSSPseudos = { [K in CSS.Pseudos]?: CSSObject }; + +type InterpolationPrimitive = + | null + | undefined + | boolean + | number + | string + | CSSObject; + +type CSSInterpolation = InterpolationPrimitive | CSSInterpolation[]; + +interface CSSOthersObject { + [propertiesName: string]: CSSInterpolation; } -declare global { - namespace JSX { - interface IntrinsicAttributes { - css?: StyleCollector | CSSProps; - } - } +export interface CSSObject + extends CSSPropertiesWithMultiValues, + CSSPseudos, + CSSOthersObject {} + +export interface Definition { + id: string; + type: 'element' | 'modifier' | 'theme' | 'global'; + className: string; + styles: CSSObject; } diff --git a/packages/core/src/useGlobals.spec.tsx b/packages/core/src/useGlobals.spec.tsx deleted file mode 100644 index 14667ce..0000000 --- a/packages/core/src/useGlobals.spec.tsx +++ /dev/null @@ -1,240 +0,0 @@ -import React from 'react'; -import { render, cleanup } from '@testing-library/react'; - -import { StyleCollector, CSSProps } from '@trousers/utils'; -import { ThemeProvider } from '@trousers/theme'; -import styleCollector from '@trousers/collector'; - -import { css, useGlobals, useStyles } from './'; - -interface Theme { - backgroundColor: string; -} - -interface FixtureProps { - styles: - | StyleCollector - | StyleCollector[] - | CSSProps - | CSSProps[]; -} - -describe('useGlobals', () => { - let theme: Theme; - let globalStyles: StyleCollector; - let GloballyStyledComponent: React.FC; - - beforeEach(() => { - globalStyles = css` - * { - box-sizing: border-box; - } - `; - - theme = { - backgroundColor: 'red', - }; - - GloballyStyledComponent = ({ styles }: FixtureProps) => { - useGlobals(styles); - - return Ahoy!; - }; - }); - - afterEach(() => { - document.getElementsByTagName('html')[0].innerHTML = ''; - - cleanup(); - }); - - it('attaches styles to the head', () => { - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches an array of styles to the head', () => { - const additionalStyles = css` - * { - background-color: blue; - } - `; - - render( - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches new styles when a new style collector is supplied', () => { - const additionalStyles = css` - * { - background-color: blue; - } - `; - - const { rerender } = render( - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - rerender(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('styles are not duplicated on rerender', () => { - const { rerender } = render( - , - ); - rerender(); - rerender(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches themed styles to the head', () => { - const themedStyles = css` - * { - background-color: ${theme => theme.backgroundColor}; - } - `; - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches an array of themed styles to the head', () => { - const themedStyles = css` - * { - background-color: ${theme => theme.backgroundColor}; - } - `; - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches styles before data-trousers', () => { - const styles = styleCollector('hello').element` - color: blue; - `; - - const MyComponent = () => { - const classNames = useStyles(styles); - - return
Hello!
; - }; - - render( - - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('clears styles', () => { - const { unmount } = render( - , - ); - - expect(document.querySelectorAll('style').length).toEqual(1); - - unmount(); - - expect(document.querySelectorAll('style').length).toEqual(0); - }); - - it('clears an array of styles', () => { - const additionalStyles = css` - * { - background-color: blue; - } - `; - - const { unmount } = render( - , - ); - - expect(document.querySelectorAll('style').length).toEqual(1); - - unmount(); - - expect(document.querySelectorAll('style').length).toEqual(0); - }); - - it('clears altered styles', () => { - const additionalStyles = css` - '*': { - backgroundColor: 'blue', - }, - `; - - const { rerender, unmount } = render( - , - ); - - expect(document.querySelectorAll('style').length).toEqual(1); - - rerender(); - - unmount(); - - expect(document.querySelectorAll('style').length).toEqual(0); - }); - - it('mounts object styles', () => { - const objectStyles = { - '*': { - backgroundColor: 'blue', - }, - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('mounts an array of object styles', () => { - render( - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); -}); diff --git a/packages/core/src/useGlobals.tsx b/packages/core/src/useGlobals.tsx deleted file mode 100644 index 2922bb7..0000000 --- a/packages/core/src/useGlobals.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { useContext, useLayoutEffect } from 'react'; - -import { - StyleCollector, - GLOBAL_STYLE_ID, - STYLE_ID, - CSSProps, -} from '@trousers/utils'; -import { registry } from '@trousers/registry'; -import { ThemeContext, ThemeCtx } from '@trousers/theme'; -import { ServerContext, ServerCtx } from '@trousers/server'; -import { parseObject } from '@trousers/parser'; -import { toHash } from '@trousers/hash'; - -import { interpolateStyles, isBrowser } from './common'; -import css from './css'; - -export default function useGlobals( - styleCollectors: - | StyleCollector - | StyleCollector[] - | CSSProps - | CSSProps[], -) { - const { theme } = useContext(ThemeContext); - const serverStyleRegistry = useContext(ServerContext); - const collectors = - styleCollectors instanceof Array ? styleCollectors : [styleCollectors]; - - const activeStyles = collectors.map(collector => { - const parsedCollector = !(collector as StyleCollector).get - ? css([parseObject(collector)]) - : (collector as StyleCollector); - - const definition = parsedCollector.get()[0]; - const styles = interpolateStyles( - definition.styles, - definition.expressions, - theme, - ); - - return { - hash: toHash(styles).toString(), - styles, - }; - }); - - if (!isBrowser() && !serverStyleRegistry) { - throw Error( - 'Server style registry is required for SSR, did you forget to use ?', - ); - } - - if (!isBrowser() && !!serverStyleRegistry) { - activeStyles.forEach(({ hash, styles }) => { - serverStyleRegistry.register(hash, styles, true); - }); - } - - const hash = activeStyles.reduce((accum, { hash }) => accum + hash, ''); - - useLayoutEffect(() => { - const headElement = document.getElementsByTagName('head')[0]; - const clientRegistry = registry(headElement, GLOBAL_STYLE_ID, { - forceNewNode: true, - appendBefore: STYLE_ID, - }); - - activeStyles.forEach(({ hash, styles }) => { - clientRegistry.register(hash, styles, true); - }); - - return () => clientRegistry.clear(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify(theme), hash]); -} diff --git a/packages/core/src/useStyles.spec.tsx b/packages/core/src/useStyles.spec.tsx deleted file mode 100644 index 1876a78..0000000 --- a/packages/core/src/useStyles.spec.tsx +++ /dev/null @@ -1,459 +0,0 @@ -import React, { FC, Fragment } from 'react'; -import { render, cleanup } from '@testing-library/react'; -import { ThemeProvider } from '@trousers/theme'; -import styleCollector from '@trousers/collector'; - -import { css, useStyles } from './'; - -interface Props { - isRed?: boolean; - isBlue?: boolean; -} - -describe('useStyles', () => { - afterEach(() => { - document.getElementsByTagName('html')[0].innerHTML = ''; - - cleanup(); - }); - - it('returns correct className', () => { - const styles = styleCollector('foo').element` - background-color: blue; - `; - - const StyledComponent = () => { - const classNames = useStyles(styles); - - return Ahoy!; - }; - - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38890833250', - ); - }); - - it('returns correct classNames for multiple modifiers', () => { - const styles = (props: Props) => styleCollector('foo').element` - background-color: green; - `.modifier(props.isRed)` - background-color: red; - `.modifier(props.isBlue)` - background-color: blue; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - { - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38262462060', - ); - } - { - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38262462060 foo--4911895800', - ); - } - { - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38262462060 foo--38890833250', - ); - } - { - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38262462060 foo--4911895800 foo--38890833250', - ); - } - }); - - it('returns correct classNames for multiple named modifiers', () => { - const styles = (props: Props) => styleCollector('foo').element` - background-color: blue; - `.modifier('primary', props.isRed)` - background-color: red; - `.modifier('secondary', props.isBlue)` - background-color: isBlue; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - const { container } = render(); - - expect(container.querySelector('span')!.className).toEqual( - 'foo__38890833250', - ); - - const { container: secondContainer } = render( - , - ); - - expect(secondContainer.querySelector('span')!.className).toEqual( - 'foo__38890833250 foo--primary4911895800', - ); - - const { container: thirdContainer } = render( - , - ); - - expect(thirdContainer.querySelector('span')!.className).toEqual( - 'foo__38890833250 foo--secondary1129918790', - ); - - const { container: forthContainer } = render( - , - ); - - expect(forthContainer.querySelector('span')!.className).toEqual( - 'foo__38890833250 foo--primary4911895800 foo--secondary1129918790', - ); - }); - - it('attaches styles to the head', () => { - const styles = styleCollector('foo').element` - background-color: blue; - `; - - const StyledComponent = () => { - const classNames = useStyles(styles); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches styles with modifiers to the head', () => { - const styles = (props: Props) => styleCollector('foo').element` - background-color: blue; - `.modifier(props.isRed)` - background-color: red; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches styles with named modifiers to the head', () => { - const styles = (props: Props) => styleCollector('foo').element` - background-color: blue; - `.modifier('primary', props.isRed)` - background-color: red; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches styles with multiple named modifiers to the head', () => { - const styles = (props: Props) => styleCollector('foo').element` - background-color: blue; - `.modifier('primary', props.isRed)` - background-color: red; - `.modifier('secondary', props.isBlue)` - background-color: isBlue; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches themed styles to the head', () => { - interface Theme { - backgroundColor: string; - backgroundColorSecondary: string; - } - - const theme: Theme = { - backgroundColor: 'purple', - backgroundColorSecondary: 'green', - }; - - const styles = (props: Props) => styleCollector('foo').element` - background-color: ${theme => theme.backgroundColor}; - `.modifier(props.isRed)` - background-color: ${theme => theme.backgroundColor}; - `; - - const StyledComponent: React.FC = props => { - const classNames = useStyles(styles(props)); - - return Ahoy!; - }; - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches new styles when a new style collector is supplied', () => { - interface ToggleProps extends Props { - isAlternate?: boolean; - } - - const styles = styleCollector('foo').element` - background-color: blue; - `.modifier(true)` - background-color: red; - `; - - const stylesAlt = styleCollector('foo').element` - background-color: purple; - `.modifier(true)` - background-color: green; - `; - - const StyledComponent: React.FC = props => { - let activeStyles = styles; - - if (props.isAlternate) { - activeStyles = stylesAlt; - } - - const classNames = useStyles(activeStyles); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches single style to the head', () => { - const StyledComponent = () => { - const classNames = useStyles(css` - background-color: blue; - `); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches themed single style to the head', () => { - interface Theme { - backgroundColor: string; - } - - const theme = { - backgroundColor: 'Atomic Tangerine', - }; - const StyledComponent = () => { - const classNames = useStyles( - css` - background-color: ${theme => theme.backgroundColor}; - `, - ); - - return Ahoy!; - }; - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches object style to the head', () => { - const StyledComponent = () => { - const classNames = useStyles({ - backgroundColor: 'blue', - }); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches object style with pseudo states to the head', () => { - const StyledComponent = () => { - const classNames = useStyles({ - backgroundColor: 'blue', - ':hover': { - backgroundColor: 'brown', - }, - }); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches object style with media queries to the head', () => { - const StyledComponent = () => { - const classNames = useStyles({ - backgroundColor: 'blue', - '@media (min-width: 768px)': { - backgroundColor: '#deecff', - }, - }); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches object style with keyframe animations to the head', () => { - const StyledComponent = () => { - const classNames = useStyles({ - //@ts-ignore - backgroundColor: 'blue', - '@keyframes rotating': { - //@ts-ignore - from: { - transform: 'rotate(0deg)', - }, - to: { - transform: 'rotate(360deg)', - }, - }, - }); - - return Ahoy!; - }; - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('object styles with different interpolations should be mounted separately', () => { - const Box: FC<{ testId: string; size?: number }> = ({ - testId, - size = 40, - }) => { - const classNames = useStyles({ - height: `${size}px`, - width: `${size}px`, - }); - - return
; - }; - - const { getByTestId } = render( - - - - , - ); - - expect(getByTestId('box-1')!.className).toEqual('css__24024913390'); - expect(getByTestId('box-2')!.className).not.toEqual('css__24024913390'); - }); - - it('css styles with different interpolations should be mounted separately', () => { - const Box: FC<{ testId: string; size?: number }> = ({ - testId, - size = 40, - }) => { - const classNames = useStyles(css` - height: ${size}px; - width: ${size}px; - `); - - return
; - }; - - const { getByTestId } = render( - - - - , - ); - - expect(getByTestId('box-1')!.className).toEqual('css__24402206290'); - expect(getByTestId('box-2')!.className).not.toEqual('css__24402206290'); - }); -}); diff --git a/packages/core/src/useStyles.ts b/packages/core/src/useStyles.ts deleted file mode 100644 index 590fee4..0000000 --- a/packages/core/src/useStyles.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { useContext, useLayoutEffect } from 'react'; -import { STYLE_ID, StyleCollector, CSSProps } from '@trousers/utils'; -import { toHash } from '@trousers/hash'; -import { useTheme } from '@trousers/theme'; -import { ServerContext, ServerCtx } from '@trousers/server'; -import { registry, Registry } from '@trousers/registry'; -import { parseObject } from '@trousers/parser'; - -import { interpolateStyles, isBrowser } from './common'; -import css from './css'; - -interface ActiveDefinition { - componentId: string; - styles: string; -} - -function getComponentId( - name: string, - stylesHash: string, - themeHash: string = '', -) { - return `${name}${stylesHash}${themeHash}`; -} - -function registerStyle(registry: Registry, definition: ActiveDefinition) { - const className = `.${definition.componentId}`; - if (registry.has(className)) return; - registry.register(className, definition.styles); -} - -function isCollector( - collector: StyleCollector | CSSProps, -): collector is StyleCollector { - return !!(collector as StyleCollector).get; -} - -export default function useStyles( - collector: StyleCollector | CSSProps, -) { - const themeCtx = useTheme(); - const serverStyleRegistry = useContext(ServerContext); - const styleDefinitions = isCollector(collector) - ? collector.get() - : css([parseObject(collector)]).get(); - const activeDefinitions: ActiveDefinition[] = styleDefinitions - .filter(({ predicate }) => !!predicate) - .map(definition => { - const styles = interpolateStyles( - definition.styles, - definition.expressions, - themeCtx.theme, - ); - - const componentId = getComponentId( - definition.name, - toHash(styles).toString(), - themeCtx.hash.toString(), - ); - - return { - styles, - componentId, - }; - }); - - if (!isBrowser() && !serverStyleRegistry) { - throw Error( - 'Server style registry is required for SSR, did you forget to use ?', - ); - } - - if (!isBrowser() && !!serverStyleRegistry) { - registerStyle(serverStyleRegistry, activeDefinitions[0]); - } - - const hash = activeDefinitions.reduce( - (accum, { componentId }) => accum + componentId, - '', - ); - - useLayoutEffect(() => { - const headElement = document.getElementsByTagName('head')[0]; - const clientRegistry = registry(headElement, STYLE_ID); - - activeDefinitions.forEach(definition => - registerStyle(clientRegistry, definition), - ); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [hash]); - - return activeDefinitions - .reduce((accum, definition) => `${accum} ${definition.componentId}`, '') - .trim(); -} diff --git a/packages/core/src/withGlobals.spec.tsx b/packages/core/src/withGlobals.spec.tsx deleted file mode 100644 index 24e8243..0000000 --- a/packages/core/src/withGlobals.spec.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React from 'react'; -import { render, cleanup } from '@testing-library/react'; -import { ThemeProvider } from '@trousers/theme'; -import { StyleCollector } from '@trousers/utils'; - -import { css, withGlobals } from './'; - -interface Theme { - backgroundColor: string; -} - -describe('useGlobals', () => { - let theme: Theme; - let globalStyles: StyleCollector; - let UnstyledComponent: React.FC; - - beforeEach(() => { - globalStyles = css` - * { - box-sizing: border-box; - } - `; - - theme = { - backgroundColor: 'red', - }; - - UnstyledComponent = () => { - return Ahoy!; - }; - }); - - afterEach(() => { - document.getElementsByTagName('html')[0].innerHTML = ''; - - cleanup(); - }); - - it('attaches styles to the head', () => { - const GloballyStyledComponent = withGlobals( - UnstyledComponent, - globalStyles, - ); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches an array of styles to the head', () => { - const additionalStyles = css` - * { - background-color: blue; - } - `; - - const GloballyStyledComponent = withGlobals(UnstyledComponent, [ - globalStyles, - additionalStyles, - ]); - - render(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('styles are not duplicated on rerender', () => { - const GloballyStyledComponent = withGlobals( - UnstyledComponent, - globalStyles, - ); - - const { rerender } = render(); - - rerender(); - rerender(); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches themed styles to the head', () => { - const themedStyles = css` - * { - background-color: ${theme => theme.backgroundColor}; - } - `; - - const GloballyStyledComponent = withGlobals( - UnstyledComponent, - themedStyles, - ); - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('attaches an array of themed styles to the head', () => { - const themedStyles = css` - * { - background-color: ${theme => theme.backgroundColor}; - } - `; - - const GloballyStyledComponent = withGlobals(UnstyledComponent, [ - globalStyles, - themedStyles, - ]); - - render( - - - , - ); - - expect(document.getElementsByTagName('head')[0]).toMatchSnapshot(); - }); - - it('clears styles', () => { - const GloballyStyledComponent = withGlobals( - UnstyledComponent, - globalStyles, - ); - - const { unmount } = render(); - - expect(document.querySelectorAll('style').length).toEqual(1); - - unmount(); - - expect(document.querySelectorAll('style').length).toEqual(0); - }); -}); diff --git a/packages/core/src/withGlobals.tsx b/packages/core/src/withGlobals.tsx deleted file mode 100644 index e38fe1d..0000000 --- a/packages/core/src/withGlobals.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { FC, ComponentType } from 'react'; - -import { CSSProps, StyleCollector } from '@trousers/utils'; -import useGlobals from './useGlobals'; - -const withGlobal = ( - Component: ComponentType, - styleCollectors: - | StyleCollector - | StyleCollector[] - | CSSProps - | CSSProps[], -) => { - const WrappedComponent: FC = props => { - useGlobals(styleCollectors); - - return ; - }; - - WrappedComponent.displayName = Component.displayName || Component.name; - - return WrappedComponent; -}; - -export default withGlobal; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json deleted file mode 100644 index 74eed45..0000000 --- a/packages/core/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { "path": "../hash" }, - { "path": "../parser" }, - { "path": "../registry" }, - { "path": "../server" }, - { "path": "../theme" }, - { "path": "../utils" } - ] -} diff --git a/packages/hash/CHANGELOG.md b/packages/hash/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/packages/hash/README.md b/packages/hash/README.md old mode 100644 new mode 100755 index 4e0f8cd..b0cdfff --- a/packages/hash/README.md +++ b/packages/hash/README.md @@ -2,18 +2,22 @@ `@trousers/hash` is a simple hash package which accepts a string and returns the hashed equivalent. +## Installation + +`yarn add @trousers/hash` or `npm install @trousers/hash` + ## API -### `toHash` +### `hash` Accepts a string and returns a hashed number. Calling it twice with the same input should yield the same result. **Example:** ```jsx -import toHash from '@trousers/hash'; +import hash from '@trousers/hash'; -toHash(` +hash(` .yomama { width: 99999999px; } diff --git a/packages/hash/package.json b/packages/hash/package.json old mode 100644 new mode 100755 index 1af6065..842706c --- a/packages/hash/package.json +++ b/packages/hash/package.json @@ -1,8 +1,8 @@ { "name": "@trousers/hash", - "version": "3.0.0", - "main": "dist/index.js", - "module": "dist/index.js", + "version": "4.0.0-alpha6", + "main": "dist/trousers-hash.cjs.js", + "module": "dist/trousers-hash.esm.js", "types": "dist/index.d.ts", "license": "MIT", "dependencies": {}, diff --git a/packages/hash/src/__snapshots__/hash.spec.ts.snap b/packages/hash/src/__snapshots__/hash.spec.ts.snap old mode 100644 new mode 100755 index 6dd7667..b6676e6 --- a/packages/hash/src/__snapshots__/hash.spec.ts.snap +++ b/packages/hash/src/__snapshots__/hash.spec.ts.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`toHash handles css 1`] = `4658051`; +exports[`hash handles css 1`] = `4658051`; -exports[`toHash handles long css 1`] = `276237355`; +exports[`hash handles long css 1`] = `276237355`; diff --git a/packages/hash/src/hash.spec.ts b/packages/hash/src/hash.spec.ts old mode 100644 new mode 100755 index 79ac9d2..de3c869 --- a/packages/hash/src/hash.spec.ts +++ b/packages/hash/src/hash.spec.ts @@ -1,25 +1,25 @@ -import toHash from './hash'; +import hash from './hash'; -describe('toHash', () => { +describe('hash', () => { it('generates a consistent hash', () => { - const first = toHash('Hello, world!'); - const second = toHash('Hello, world!'); + const first = hash('Hello, world!'); + const second = hash('Hello, world!'); expect(first).toEqual(second); }); it('handles css', () => { - const hash = toHash(` + const result = hash(` .yomama { width: 99999999px; } `); - expect(hash).toMatchSnapshot(); + expect(result).toMatchSnapshot(); }); it('handles long css', () => { - const hash = toHash(` + const result = hash(` background-color: #b3cde8; border-radius: 6px; border: none; @@ -46,6 +46,6 @@ describe('toHash', () => { } `); - expect(hash).toMatchSnapshot(); + expect(result).toMatchSnapshot(); }); }); diff --git a/packages/hash/src/hash.ts b/packages/hash/src/hash.ts old mode 100644 new mode 100755 index 019eab0..e066cea --- a/packages/hash/src/hash.ts +++ b/packages/hash/src/hash.ts @@ -1,4 +1,4 @@ -export default function toHash(str: string) { +export default function hash(str: string) { let hash = 0; if (str.length == 0) return hash; diff --git a/packages/hash/src/index.ts b/packages/hash/src/index.ts old mode 100644 new mode 100755 index bcf748b..c018c9b --- a/packages/hash/src/index.ts +++ b/packages/hash/src/index.ts @@ -1 +1 @@ -export { default as toHash } from './hash'; +export { default } from './hash'; diff --git a/packages/hash/tsconfig.json b/packages/hash/tsconfig.json deleted file mode 100644 index ea28e21..0000000 --- a/packages/hash/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - } -} diff --git a/packages/macro/CHANGELOG.md b/packages/macro/CHANGELOG.md new file mode 100755 index 0000000..e69de29 diff --git a/packages/macro/README.md b/packages/macro/README.md new file mode 100755 index 0000000..9079a05 --- /dev/null +++ b/packages/macro/README.md @@ -0,0 +1,31 @@ +# @trousers/macro + +`@trousers/macro` is the most performant version of `trousers`! It drastically reduces the run-time implications of the library by offloading the heavy style processing logic to build time! + +Namespacing, prefixing and processing are all handled by the macro at build-time, leaving us with simply mounting and toggling classes 🎉. + +To get up and running with babel macros in your project, [see the macro user guide.](https://github.com/kentcdodds/babel-plugin-macros/blob/master/other/docs/user.md) + +## Installation + +`yarn add -D @trousers/macro` or `npm install @trousers/macro --save-dev` + +## API + +`@trousers/macro` is almost a direct API mirror of the `trousers` and `@trousers/react` modules, with some slight changes, namely to import structure (see example below). For API docs, refer to `@trousers/react`. + +**Example:** + +```diff +-/** @jsx jsx */ +-import css from '@trousers/core'; +-import jsx from '@trousers/react'; + ++import { css } from '@trousers/macro'; + +const styles = css('button', { backgroundColor: 'red' }).modifier('primary', { + backgroundColor: 'blue', +}); + +const Button = ({ primary }) => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2561700995\\": \\"color: blue;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process element collector without an identifier', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css({ color: 'blue' }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"\\", { + \\".2561700995\\": \\"color: blue;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with a single modifier', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'blue' }) + .modifier('primary', { color: 'brown' }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2561700995\\": \\"color: blue;\\" + }).modifier(\\"primary\\", { + \\".Button-2561700995--primary-2270159875\\": \\"color: brown;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + $primary: true, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with multiple modifiers', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'blue' }) + .modifier('primary', { color: 'brown' }) + .modifier('secondary', { color: 'purple' }); + const App = ({primary, secondary}) => { + + }; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2561700995\\": \\"color: blue;\\" + }).modifier(\\"primary\\", { + \\".Button-2561700995--primary-2270159875\\": \\"color: brown;\\" + }).modifier(\\"secondary\\", { + \\".Button-2561700995--secondary-3026956261\\": \\"color: purple;\\" + }); + + const App = ({ + primary, + secondary + }) => { + /*#__PURE__*/ + _jsx(TrousersNested, { + css: styles, + $primary: primary, + $secondary: secondary, + elementType: \\"button\\", + children: \\"Submit\\" + }); + };" + `); + }); + + it('should process collector with many modifiers', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'blue' }) + .modifier('primary', { color: 'brown' }) + .modifier('secondary', { color: 'purple' }) + .modifier('tertiary', { color: 'yellow' }) + .modifier('quaternary', { color: 'green' }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2561700995\\": \\"color: blue;\\" + }).modifier(\\"primary\\", { + \\".Button-2561700995--primary-2270159875\\": \\"color: brown;\\" + }).modifier(\\"secondary\\", { + \\".Button-2561700995--secondary-3026956261\\": \\"color: purple;\\" + }).modifier(\\"tertiary\\", { + \\".Button-2561700995--tertiary-41860765\\": \\"color: yellow;\\" + }).modifier(\\"quaternary\\", { + \\".Button-2561700995--quaternary-2402939536\\": \\"color: green;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with a theme', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'var(--brand-background)' }) + .theme({ brand: { background: 'green' }}); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2140373281\\": \\"color: var(--brand-background);\\" + }).theme(\\"\\", { + \\".theme-Button-2140373281-1537299292\\": \\"--brand-background: green;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with a deeply nested theme', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'var(--brand-background)' }) + .theme({ + neutral: '#fff', + brand: { + forground: 'yellow', + background: 'green', + }, + }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2140373281\\": \\"color: var(--brand-background);\\" + }).theme(\\"\\", { + \\".theme-Button-2140373281-3270977004\\": \\"--neutral: #fff;--brand-forground: yellow;--brand-background: green;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with a global', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', {}) + .global({ + ':root': { + 'backgroundColor': 'red', + } + }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", {}).global(\\"global-Button-3938-480010618\\", { + \\":root\\": \\"background-color: red;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should process collector with an aliased import name', () => { + const result = transform` + import { css as foo } from './macro'; + const styles = foo('Button', { color: 'blue' }); + + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { foo, TrousersNested } from \\"@trousers/macro/runtime\\"; + const styles = foo(\\"Button\\", { + \\".Button-2561700995\\": \\"color: blue;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should do nothing in the case of an unused import', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import React from 'react'; + + const App = () => /*#__PURE__*/_jsx(\\"button\\", { + children: \\"Submit\\" + });" + `); + }); + }); + + describe('when interpolations are detected', () => { + it('should render elements without interpolations', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 'red' }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-2313942302\\": \\"color: red;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate booleans (BooleanLiteral)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: true }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-3336976155\\": \\"color: true;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate numbers (NumericLiteral)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 5 }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-1906181116\\": \\"color: 5;\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate variables (Identifier)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const styles = css('Button', { color: foo }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate functions (CallExpression)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: foo() }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo() + }, + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate evaluations (BinaryExpression)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const styles = css('Button', { color: 5+5 }); + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": 5 + 5 + }, + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate object properties (MemberExpressions)', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + + const App = () =>
+ {props.children} +
+ `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: css(\\"dot\\", { + \\".dot-762842188\\": \\"background-color: var(--interpol0);width: 8px;height: 8px;border-radius: 100%;display: inline-block;margin: 4px;\\" + }), + elementType: \\"div\\", + style: { + \\"--interpol0\\": props.color + }, + children: props.children + });" + `); + }); + + it('should not add interpolations to jsx element if styles are not in use', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const styles = css('Button', { color: foo }); + + const App = () => ; + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(\\"button\\", { + children: \\"Submit\\" + });" + `); + }); + + it('should interpolate styles used by nested elements', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const bar = 'green'; + const styles = css('Button', { color: foo }); + const innerStyles = css('ButtonInner', { color: bar }); + + const App = () => ( + + ); + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const bar = 'green'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + const innerStyles = css(\\"ButtonInner\\", { + \\".ButtonInner-4214944499\\": \\"color: var(--interpol1);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: /*#__PURE__*/_jsx(TrousersNested, { + css: innerStyles, + elementType: \\"span\\", + style: { + \\"--interpol1\\": bar + }, + children: \\"Hello, World!\\" + }) + });" + `); + }); + + it('should interpolate styles used by sibling elements', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const bar = 'green'; + const styles = css('Button', { color: foo }); + const siblingStyles = css('ButtonInner', { color: bar }); + + const App = () => ( +
+ + Hello, World! + + +
+ ); + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { jsxs as _jsxs } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const bar = 'green'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + const siblingStyles = css(\\"ButtonInner\\", { + \\".ButtonInner-4214944499\\": \\"color: var(--interpol1);\\" + }); + + const App = () => /*#__PURE__*/_jsxs(\\"div\\", { + children: [/*#__PURE__*/_jsx(TrousersNested, { + css: siblingStyles, + elementType: \\"span\\", + style: { + \\"--interpol1\\": bar + }, + children: \\"Hello, World!\\" + }), /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: \\"Submit\\" + })] + });" + `); + }); + + it('should interpolate reused styles', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const styles = css('Button', { color: foo }); + + const App = () => ( + + ); + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"span\\", + style: { + \\"--interpol0\\": foo + }, + children: \\"Hello, World!\\" + }) + });" + `); + }); + + it('should add interpolations to an in-use style attribute', () => { + const result = transform` + import React from 'react'; + import { css } from './macro'; + const foo = 'blue'; + const styles = css('Button', { color: foo }); + + const App = () => ( + + ); + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React from 'react'; + const foo = 'blue'; + const styles = css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }); + + const App = () => /*#__PURE__*/_jsx(TrousersNested, { + css: styles, + elementType: \\"button\\", + style: { + color: 'red', + \\"--interpol0\\": foo + }, + children: \\"Hello, World!\\" + });" + `); + }); + + it('should interpolate styles passed directly into the css prop', () => { + const result = transform` + import React, { useState } from 'react'; + import { css } from './macro'; + + const App = () => { + const [foo, setFoo] = useState('blue'); + + return ( + + ); + } + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React, { useState } from 'react'; + + const App = () => { + const [foo, setFoo] = useState('blue'); + return /*#__PURE__*/_jsx(TrousersNested, { + css: css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }), + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: \\"Hello, World!\\" + }); + };" + `); + }); + + it('should interpolate styles passed directly into multiple css props', () => { + const result = transform` + import React, { useState } from 'react'; + import { css } from './macro'; + + const App = () => { + const [foo, setFoo] = useState('blue'); + const [bar, setBar] = useState('red'); + + return ( + + ); + } + `; + + expect(result).toMatchInlineSnapshot(` + "import { jsx as _jsx } from \\"react/jsx-runtime\\"; + import { css, TrousersNested } from \\"@trousers/macro/runtime\\"; + import React, { useState } from 'react'; + + const App = () => { + const [foo, setFoo] = useState('blue'); + const [bar, setBar] = useState('red'); + return /*#__PURE__*/_jsx(TrousersNested, { + css: css(\\"Button\\", { + \\".Button-4214914708\\": \\"color: var(--interpol0);\\" + }), + elementType: \\"button\\", + style: { + \\"--interpol0\\": foo + }, + children: /*#__PURE__*/_jsx(TrousersNested, { + css: css(\\"Span\\", { + \\".Span-4214944499\\": \\"color: var(--interpol1);\\" + }), + elementType: \\"span\\", + style: { + \\"--interpol1\\": bar + }, + children: \\"Hello, World!\\" + }) + }); + };" + `); + }); + }); +}); diff --git a/packages/macro/src/runtime/__snapshots__/jsx.server.spec.tsx.snap b/packages/macro/src/runtime/__snapshots__/jsx.server.spec.tsx.snap new file mode 100644 index 0000000..2504978 --- /dev/null +++ b/packages/macro/src/runtime/__snapshots__/jsx.server.spec.tsx.snap @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`jsx (ssr mode) does not render modifier if prop false 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) does not render modifier if prop is not provided 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) does not render modifier if prop undefined 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element and modifier styles 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element and modifier styles without id 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element styles 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element styles without id 2`] = ` +
+ +
+
+`; diff --git a/packages/macro/src/runtime/css.ts b/packages/macro/src/runtime/css.ts new file mode 100644 index 0000000..bf474e9 --- /dev/null +++ b/packages/macro/src/runtime/css.ts @@ -0,0 +1,66 @@ +interface Definition { + type: 'element' | 'modifier' | 'global' | 'theme'; + id: string; + styles: Record; +} + +export interface CollectorReturn { + modifier: ( + id: Definition['id'], + styles: Definition['styles'], + ) => CollectorReturn; + global: ( + id: Definition['id'], + styles: Definition['styles'], + ) => CollectorReturn; + theme: ( + id: Definition['id'], + styles: Definition['styles'], + ) => CollectorReturn; + _get: () => Definition[]; +} + +function css(elementId: Definition['id'], elementStyles: Definition['styles']) { + const styleMap: Definition[] = [ + { + type: 'element', + id: elementId, + styles: elementStyles, + }, + ]; + + const self: CollectorReturn = { + _get: () => styleMap, + modifier: (modifierId, modifierStyles) => { + styleMap.push({ + type: 'modifier', + id: modifierId, + styles: modifierStyles, + }); + + return self; + }, + global: (globalId, globalStyles) => { + styleMap.push({ + type: 'global', + id: globalId, + styles: globalStyles, + }); + + return self; + }, + theme: (themeId, themeStyles) => { + styleMap.push({ + type: 'theme', + id: themeId, + styles: themeStyles, + }); + + return self; + }, + }; + + return self; +} + +export default css; diff --git a/packages/macro/src/runtime/index.ts b/packages/macro/src/runtime/index.ts new file mode 100644 index 0000000..3cd358c --- /dev/null +++ b/packages/macro/src/runtime/index.ts @@ -0,0 +1,2 @@ +export { default as css } from './css'; +export { default as TrousersNested } from './jsx'; diff --git a/packages/macro/src/runtime/jsx.server.spec.tsx b/packages/macro/src/runtime/jsx.server.spec.tsx new file mode 100644 index 0000000..ba30641 --- /dev/null +++ b/packages/macro/src/runtime/jsx.server.spec.tsx @@ -0,0 +1,150 @@ +import React from 'react'; +import css from './css'; +import TrousersNested from './jsx'; +import { render } from '@testing-library/react'; + +jest.mock('@trousers/core', () => ({ + __esModule: true, + ...(jest.requireActual('@trousers/core') as object), + isBrowser: () => false, +})); + +describe('jsx (ssr mode)', () => { + it('renders element styles', () => { + const styles = css('element', { '.element-2313942302': 'color: red;' }); + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element styles without id', () => { + const styles = css('', { '.2313942302': 'color: red;' }); + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop is not provided', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { '.primary-2561700995': 'color: blue;' }); + + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop false', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop undefined', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element and modifier styles', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 primary-2561700995"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element and modifier styles without id', () => { + const styles = css('element', { + '.2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + const { container, getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302 primary-2561700995"`, + ); + expect(container).toMatchSnapshot(); + }); +}); diff --git a/packages/macro/src/runtime/jsx.spec.tsx b/packages/macro/src/runtime/jsx.spec.tsx new file mode 100644 index 0000000..2af1ad9 --- /dev/null +++ b/packages/macro/src/runtime/jsx.spec.tsx @@ -0,0 +1,219 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ +import React from 'react'; +import css from './css'; +import TrousersNested from './jsx'; +import { render } from '@testing-library/react'; + +let mountMock = jest.fn(); +jest.mock('@trousers/sheet', () => ({ + __esModule: true, + default: () => ({ + mount: (...args: any[]) => mountMock(...args), + has: () => false, + }), +})); + +describe('jsx', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('mounts element styles', () => { + const styles = css('element', { '.element-2313942302': 'color: red;' }); + const { getByTestId } = render( + , + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('mounts element styles without id', () => { + const styles = css('', { '.2313942302': 'color: red;' }); + const { getByTestId } = render( + , + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302"`, + ); + expect(mountMock).toHaveBeenCalledWith( + '.2313942302', + '.2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop is not provided', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { getByTestId } = render( + , + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop false', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop undefined', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { getByTestId } = render( + , + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('mounts modifier if prop is true', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { getByTestId } = render( + , + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 primary-2561700995"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.primary-2561700995', + '.primary-2561700995{color: blue;}', + false, + ); + }); + + it('mounts modifier if prop is supplied with no value', () => { + const styles = css('element', { + '.element-2313942302': 'color: red;', + }).modifier('primary', { + '.primary-2561700995': 'color: blue;', + }); + + const { getByTestId } = render( + , + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 primary-2561700995"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.primary-2561700995', + '.primary-2561700995{color: blue;}', + false, + ); + }); + + it.todo('mounts multiple modifiers'); + it.todo('mounts element and modifier styles without id'); + it.todo('mounts themed elements'); + it.todo('mounts themed modifiers'); + it.todo('mounts themed globals'); + it.todo('mounts single global'); + it.todo('mounts multiple globals'); + it.todo('cleans-up globals on dismount'); +}); diff --git a/packages/macro/src/runtime/jsx.tsx b/packages/macro/src/runtime/jsx.tsx new file mode 100644 index 0000000..ceedd4a --- /dev/null +++ b/packages/macro/src/runtime/jsx.tsx @@ -0,0 +1,105 @@ +import React, { FC, createElement, useLayoutEffect, Fragment } from 'react'; + +import { isBrowser } from '@trousers/core'; +import Sheet from '@trousers/sheet'; + +import { CollectorReturn } from './css'; + +export interface TrousersProps { + css?: CollectorReturn; + [key: string]: any; // Will need to use template literal types in ts 4.1 +} + +let sheet: ReturnType | null = null; +if (isBrowser()) { + const headElement = document.getElementsByTagName('head')[0]; + sheet = Sheet(headElement, 'data-trousers'); +} + +const TrousersNested: FC = props => { + const definitions = props + .css!._get() + .filter( + ({ id, type }) => + type !== 'modifier' || + (props.hasOwnProperty(`$${id}`) && !!props[`$${id}`]), + ); + + const classes = definitions + .map(({ styles }) => Object.keys(styles)[0].substring(1)) + .join(' ') + .trim(); + + const cleanProps = Object.keys(props) + .filter( + key => + !key.startsWith('$') && + key !== 'css' && + key !== 'elementType' && + key !== 'children', + ) + .reduce((obj: Record, key: string) => { + obj[key] = props[key]; + return obj; + }, {}); + + const Element = createElement( + props.elementType, + { + ...cleanProps, + className: classes, + }, + props.children, + ); + + if (!isBrowser()) { + const styles = definitions + .map(({ styles }) => + Object.entries(styles).reduce( + (accum, [key, value]) => `${accum}${key} {${value}}`, + '', + ), + ) + .join('\n'); + + return ( + + +
+
+`; + +exports[`jsx (ssr mode) does not render modifier if prop is not provided 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) does not render modifier if prop undefined 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element and modifier styles 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element and modifier styles without id 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element styles 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders element styles without id 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders multiple globals 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders single global 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders themed elements 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders themed globals 2`] = ` +
+ +
+
+`; + +exports[`jsx (ssr mode) renders themed modifiers 2`] = ` +
+ +
+
+`; diff --git a/packages/react/src/global-types.ts b/packages/react/src/global-types.ts new file mode 100644 index 0000000..93902e9 --- /dev/null +++ b/packages/react/src/global-types.ts @@ -0,0 +1,12 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ +import { TrousersProps } from './types'; + +declare module 'react' { + interface DOMAttributes extends TrousersProps {} +} + +declare global { + namespace JSX { + interface IntrinsicAttributes extends TrousersProps {} + } +} diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts new file mode 100755 index 0000000..62df80a --- /dev/null +++ b/packages/react/src/index.ts @@ -0,0 +1,4 @@ +// eslint-disable-next-line prettier/prettier +export type { TrousersProps } from './types'; + +export { default } from './jsx'; diff --git a/packages/react/src/jsx.server.spec.tsx b/packages/react/src/jsx.server.spec.tsx new file mode 100644 index 0000000..66b73c3 --- /dev/null +++ b/packages/react/src/jsx.server.spec.tsx @@ -0,0 +1,206 @@ +/** @jsx jsx */ +import jsx from './jsx'; +import { render } from '@testing-library/react'; +import css from '@trousers/core'; + +jest.mock('@trousers/core', () => ({ + __esModule: true, + ...(jest.requireActual('@trousers/core') as object), + isBrowser: () => false, +})); + +describe('jsx (ssr mode)', () => { + it('renders element styles', () => { + const styles = css('element', { + color: 'red', + }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element styles without id', () => { + const styles = css({ + color: 'red', + }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop is not provided', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop false', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('does not render modifier if prop undefined', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element and modifier styles', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 element-2313942302--primary-2561700995"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders element and modifier styles without id', () => { + const styles = css({ + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302 2313942302--primary-2561700995"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders themed elements', () => { + const styles = css('element', { + color: 'var(--primary-color)', + }).theme({ primaryColor: 'red' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-1937164027 theme-element-4276149098"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders themed modifiers', () => { + const styles = css('element', { + color: 'var(--primary-color)', + }) + .modifier('secondary', { + color: 'var(--secondary-color)', + }) + .theme({ + primaryColor: 'red', + secondaryColor: 'blue', + }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-1937164027 theme-element-2013313543"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders themed globals', () => { + const styles = css('element', { + color: 'red', + }) + .global({ + ':root': { + color: 'var(--color)', + }, + }) + .theme({ color: 'red' }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 theme-element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders single global', () => { + const styles = css('element', { + color: 'red', + }).global({ + ':root': { + boxSizing: 'border-box', + }, + }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(container).toMatchSnapshot(); + }); + + it('renders multiple globals', () => { + const styles = css('element', {}) + .global({ + ':root': { + boxSizing: 'border-box', + }, + }) + .global({ + // @ts-ignore + body: { + color: 'green', + }, + }); + + const { container, getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-3938"`, + ); + expect(container).toMatchSnapshot(); + }); +}); diff --git a/packages/react/src/jsx.spec.tsx b/packages/react/src/jsx.spec.tsx new file mode 100644 index 0000000..9245df6 --- /dev/null +++ b/packages/react/src/jsx.spec.tsx @@ -0,0 +1,376 @@ +/** @jsx jsx */ +import css from '@trousers/core'; +import jsx from './jsx'; +import { render } from '@testing-library/react'; + +let mountMock = jest.fn(); +let unmountMock = jest.fn(); +jest.mock('@trousers/sheet', () => ({ + __esModule: true, + default: () => ({ + // @ts-ignore + mount: (...args) => mountMock(...args), + has: () => false, + unmount: (id: string) => unmountMock(id), + }), +})); + +describe('jsx', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('mounts element styles', () => { + const styles = css('element', { + color: 'red', + }); + + const { getByTestId } = render(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('mounts element styles without id', () => { + const styles = css({ + color: 'red', + }); + + const { getByTestId } = render(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302"`, + ); + expect(mountMock).toHaveBeenCalledWith( + '.2313942302', + '.2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop is not provided', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { getByTestId } = render(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop false', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('does not mount modifier if prop undefined', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(1); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + }); + + it('mounts modifier if prop is true', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 element-2313942302--primary-2561700995"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.element-2313942302--primary-2561700995', + '.element-2313942302--primary-2561700995{color: blue;}', + false, + ); + }); + + it('mounts modifier if prop is supplied with no value', () => { + const styles = css('element', { + color: 'red', + }).modifier('primary', { color: 'blue' }); + + const { getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 element-2313942302--primary-2561700995"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.element-2313942302--primary-2561700995', + '.element-2313942302--primary-2561700995{color: blue;}', + false, + ); + }); + + it('mounts multiple modifiers', () => { + const styles = css('element', { + color: 'red', + }) + .modifier('primary', { color: 'blue' }) + .modifier('secondary', { color: 'green' }); + + const { getByTestId } = render( +
, + ); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 element-2313942302--primary-2561700995 element-2313942302--secondary-2402939536"`, + ); + expect(mountMock).toHaveBeenCalledTimes(3); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-2313942302', + '.element-2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.element-2313942302--primary-2561700995', + '.element-2313942302--primary-2561700995{color: blue;}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'secondary.element-2313942302--secondary-2402939536', + '.element-2313942302--secondary-2402939536{color: green;}', + false, + ); + }); + + it('mounts element and modifier styles without id', () => { + const styles = css({ + color: 'red', + }).modifier('primary', { + color: 'blue', + }); + + const { getByTestId, rerender } = render( +
, + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302"`, + ); + expect(mountMock).toHaveBeenCalledWith( + '.2313942302', + '.2313942302{color: red;}', + false, + ); + expect(mountMock).toHaveBeenCalledTimes(1); + + rerender(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"2313942302 2313942302--primary-2561700995"`, + ); + expect(mountMock).toHaveBeenCalledWith( + 'primary.2313942302--primary-2561700995', + '.2313942302--primary-2561700995{color: blue;}', + false, + ); + }); + + it('mounts themed elements', () => { + const styles = css('element', { + color: 'var(--primary-color)', + }).theme({ primaryColor: 'red' }); + + const { getByTestId } = render(
); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-1937164027 theme-element-4276149098"`, + ); + + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-1937164027', + '.element-1937164027{color: var(--primary-color);}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'theme-element-4276149098.theme-element-4276149098', + '.theme-element-4276149098{--primary-color: red;}', + false, + ); + }); + + it('mounts themed modifiers', () => { + const styles = css('element', { + color: 'var(--primary-color)', + }) + .modifier('secondary', { + color: 'var(--secondary-color)', + }) + .theme({ primaryColor: 'red', secondaryColor: 'blue' }); + + const { rerender, getByTestId } = render( +
, + ); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-1937164027 theme-element-2013313543"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'element.element-1937164027', + '.element-1937164027{color: var(--primary-color);}', + false, + ); + expect(mountMock).toHaveBeenCalledWith( + 'theme-element-2013313543.theme-element-2013313543', + '.theme-element-2013313543{--primary-color: red;--secondary-color: blue;}', + false, + ); + + rerender(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-1937164027 element-1937164027--secondary-4258827273 theme-element-2013313543"`, + ); + }); + + it('mounts themed globals', () => { + const styles = css('element', { + color: 'red', + }) + .global({ + ':root': { + color: 'var(--color)', + }, + }) + .theme({ color: 'red' }); + + const { getByTestId } = render(
); + + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302 theme-element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(3); + expect(mountMock).toHaveBeenCalledWith( + 'global-element-1166090240:root', + ':root{color: var(--color);}', + true, + ); + expect(mountMock).toHaveBeenCalledWith( + 'theme-element-2313942302.theme-element-2313942302', + '.theme-element-2313942302{--color: red;}', + false, + ); + }); + + it('mounts single global', () => { + const styles = css('element', { + color: 'red', + }).global({ + ':root': { + boxSizing: 'border-box', + }, + }); + + const { getByTestId } = render(
); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-2313942302"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'global-element-694683171:root', + ':root{box-sizing: border-box;}', + true, + ); + }); + + it('mounts multiple globals', () => { + const styles = css('element', {}) + .global({ + ':root': { + boxSizing: 'border-box', + }, + }) + .global({ + // @ts-ignore + body: { + color: 'green', + }, + }); + + const { getByTestId } = render(
); + expect(getByTestId('test').className).toMatchInlineSnapshot( + `"element-3938"`, + ); + expect(mountMock).toHaveBeenCalledTimes(2); + expect(mountMock).toHaveBeenCalledWith( + 'global-element-694683171:root', + ':root{box-sizing: border-box;}', + true, + ); + expect(mountMock).toHaveBeenCalledWith( + 'global-element-1251294446 body', + ' body{color: green;}', + true, + ); + }); + + it('cleans-up globals on dismount', () => { + const styles = css({}).global({ + ':root': { boxSizing: 'border-box' }, + }); + + const { unmount } = render(
); + + unmount(); + + expect(unmountMock).toHaveBeenCalledWith('global--694683171:root'); + }); +}); diff --git a/packages/react/src/jsx.tsx b/packages/react/src/jsx.tsx new file mode 100755 index 0000000..2279662 --- /dev/null +++ b/packages/react/src/jsx.tsx @@ -0,0 +1,124 @@ +import './global-types'; +import React, { + createElement, + hasOwnProperty, + ElementType, + ReactNode, + useLayoutEffect, + Fragment, +} from 'react'; + +import { process, isBrowser } from '@trousers/core'; +import Sheet from '@trousers/sheet'; +import { TrousersProps } from './types'; + +let sheet: ReturnType | null = null; +if (isBrowser()) { + const headElement = document.getElementsByTagName('head')[0]; + sheet = Sheet(headElement, 'data-trousers'); +} + +const TrousersNested =

(props: P) => { + const definitions = props + .css!._get() + .filter( + ({ id, type }) => + type !== 'modifier' || + (props.hasOwnProperty(`$${id}`) && !!props[`$${id}`]), + ); + + const classes = definitions + .map(({ className }) => className.substring(1)) + .join(' ') + .trim(); + + const cleanProps = Object.keys(props) + .filter( + key => + !key.startsWith('$') && + key !== 'css' && + key !== 'elementType' && + key !== 'children', + ) + .reduce((obj: Record, key: string) => { + obj[key] = props[key]; + return obj; + }, {}); + + const Element = createElement( + props.elementType, + { + ...cleanProps, + className: classes, + }, + props.children, + ); + + if (!isBrowser()) { + const styles = definitions + .map(({ className, styles }) => + Object.entries(process(className, styles)).reduce( + (accum, [key, value]) => `${accum}${key} {${value}}`, + '', + ), + ) + .join('\n'); + + return ( + + -`; - -exports[`Registry (Prod mode) registers a global style 1`] = ` - -`; - -exports[`Registry (Prod mode) registers a global, with preexisting style tag 1`] = ` - -`; - -exports[`Registry (Prod mode) registers a new style 1`] = ` - -`; - -exports[`Registry (Prod mode) registers multiple styles 1`] = ` - -`; - -exports[`Registry (Prod mode) registries can hoist style tags to the top 1`] = ` - - -`; - -exports[`Registry (Prod mode) registries can mount their own style tags 1`] = ` - - -`; - -exports[`Registry (Prod mode) registries will append style node if append before selector returns null 1`] = ` - - -`; diff --git a/packages/registry/src/__snapshots__/registry.spec.ts.snap b/packages/registry/src/__snapshots__/registry.spec.ts.snap deleted file mode 100644 index 3ffac8a..0000000 --- a/packages/registry/src/__snapshots__/registry.spec.ts.snap +++ /dev/null @@ -1,58 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Registry registering an existing key does not update the style 1`] = ` - -`; - -exports[`Registry registers a global style 1`] = ` - -`; - -exports[`Registry registers a global, with preexisting style tag 1`] = ` - -`; - -exports[`Registry registers a new style 1`] = ` - -`; - -exports[`Registry registers multiple styles 1`] = ` - -`; - -exports[`Registry registries can hoist style tags to the top 1`] = ` - - -`; - -exports[`Registry registries can mount their own style tags 1`] = ` - - -`; - -exports[`Registry registries will append style node if append before selector returns null 1`] = ` - - -`; diff --git a/packages/registry/src/index.ts b/packages/registry/src/index.ts deleted file mode 100644 index b1231b8..0000000 --- a/packages/registry/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as registry, Registry } from './registry'; diff --git a/packages/registry/src/registry-prod.spec.ts b/packages/registry/src/registry-prod.spec.ts deleted file mode 100644 index e417fa3..0000000 --- a/packages/registry/src/registry-prod.spec.ts +++ /dev/null @@ -1,127 +0,0 @@ -import registry, { Registry } from './registry'; - -describe('Registry (Prod mode)', () => { - let clientRegistry: Registry; - let element: HTMLHeadElement; - let attributeId: string; - - beforeEach(() => { - process.env.NODE_ENV = 'production'; - element = document.createElement('head'); - attributeId = 'data-testing-trousers'; - clientRegistry = registry(element, attributeId); - }); - - afterEach(() => { - process.env.NODE_ENV = 'test'; - }); - - it.skip('registers a new style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registers multiple styles', () => { - clientRegistry.register('1', 'background-color:red;'); - clientRegistry.register('2', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registers a global style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style, true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registers a global, with preexisting style tag', () => { - clientRegistry.register('1', 'background-color:red;'); - clientRegistry.register('2', 'background-color:blue;', true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registering an existing key does not update the style', () => { - const key = '1'; - const style = 'background-color:red;'; - const styleBlue = 'background-color:blue;'; - - clientRegistry.register(key, style); - clientRegistry.register(key, styleBlue); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('detects an existing style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style); - - expect(clientRegistry.has('1')).toBe(true); - }); - - it.skip('detects a non existing style', () => { - expect(clientRegistry.has('123')).toBe(false); - }); - - it.skip('registries can mount their own style tags', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registries can hoist style tags to the top', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - appendBefore: attributeId, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;', true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('registries will append style node if append before selector returns null', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - appendBefore: 'data-unknown-element', - }); - - secondaryRegistry.register('1', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it.skip('clears multiple mounted style tags', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;'); - - expect(element.childElementCount).toEqual(2); - - secondaryRegistry.clear(); - - expect(element.childElementCount).toEqual(1); - - clientRegistry.clear(); - - expect(element.childElementCount).toEqual(0); - }); -}); diff --git a/packages/registry/src/registry.spec.ts b/packages/registry/src/registry.spec.ts deleted file mode 100644 index de4b656..0000000 --- a/packages/registry/src/registry.spec.ts +++ /dev/null @@ -1,123 +0,0 @@ -import registry, { Registry } from './registry'; - -describe('Registry', () => { - let clientRegistry: Registry; - let element: HTMLHeadElement; - let attributeId: string; - - beforeEach(() => { - element = document.createElement('head'); - attributeId = 'data-testing-trousers'; - - clientRegistry = registry(element, attributeId); - }); - - it('registers a new style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registers multiple styles', () => { - clientRegistry.register('1', 'background-color:red;'); - clientRegistry.register('2', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registers a global style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style, true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registers a global, with preexisting style tag', () => { - clientRegistry.register('1', 'background-color:red;'); - clientRegistry.register('2', 'background-color:blue;', true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registering an existing key does not update the style', () => { - const key = '1'; - const style = 'background-color:red;'; - const styleBlue = 'background-color:blue;'; - - clientRegistry.register(key, style); - clientRegistry.register(key, styleBlue); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('detects an existing style', () => { - const key = '1'; - const style = 'background-color:red;'; - - clientRegistry.register(key, style); - - expect(clientRegistry.has('1')).toBe(true); - }); - - it('detects a non existing style', () => { - expect(clientRegistry.has('123')).toBe(false); - }); - - it('registries can mount their own style tags', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registries can hoist style tags to the top', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - appendBefore: attributeId, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;', true); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('registries will append style node if append before selector returns null', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - appendBefore: 'data-unknown-element', - }); - - secondaryRegistry.register('1', 'background-color:blue;'); - - expect(element.innerHTML).toMatchSnapshot(); - }); - - it('clears multiple mounted style tags', () => { - const secondaryRegistry = registry(element, 'data-testing-secondary', { - forceNewNode: true, - }); - - clientRegistry.register('1', 'background-color:red;'); - secondaryRegistry.register('2', 'background-color:blue;'); - - expect(element.childElementCount).toEqual(2); - - secondaryRegistry.clear(); - - expect(element.childElementCount).toEqual(1); - - clientRegistry.clear(); - - expect(element.childElementCount).toEqual(0); - }); -}); diff --git a/packages/registry/src/registry.ts b/packages/registry/src/registry.ts deleted file mode 100644 index f9664ec..0000000 --- a/packages/registry/src/registry.ts +++ /dev/null @@ -1,113 +0,0 @@ -import stylis from 'stylis'; -import { splitRules } from '@trousers/parser'; - -export interface Registry { - register: (id: string, styles: string, isGlobal?: boolean) => void; - has: (id: string) => boolean; - clear: (isGlobal?: boolean) => void; -} - -interface RegistryOptions { - forceNewNode: boolean; - appendBefore?: string; -} - -const createStyleElement = (attributeId: string) => { - const element = document.createElement('style'); - element.setAttribute(attributeId, ''); - element.setAttribute('type', 'text/css'); - element.appendChild(document.createTextNode('')); - return element; -}; - -const getStyleElement = (targetElement: HTMLElement, attributeId: string) => - targetElement.querySelector(`style[${attributeId}]`); - -const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => { - if (tag.sheet) { - // @ts-ignore - return tag.sheet; - } - - for (let i = 0; i < document.styleSheets.length; i++) { - if (document.styleSheets[i].ownerNode === tag) { - // @ts-ignore - return document.styleSheets[i]; - } - } - - throw 'Unable to get StyleSheet'; -}; - -const registry = ( - parentElement: HTMLElement, - attributeId: string, - options: RegistryOptions = { - forceNewNode: false, - appendBefore: undefined, - }, -): Registry => { - let styleElement = getStyleElement(parentElement, attributeId); - - if (styleElement === null || options.forceNewNode) { - styleElement = createStyleElement(attributeId); - - if (!options.appendBefore) { - parentElement.appendChild(styleElement); - } else { - parentElement.insertBefore( - styleElement, - parentElement.querySelector( - `style[${options.appendBefore}]`, - ), - ); - } - } - - const clear = () => styleElement!.remove(); - const has = (id: string): boolean => - styleElement!.getAttribute(attributeId)!.includes(id); - - const register = (id: string, styles: string, isGlobal?: boolean) => { - if (has(id)) return; - - const selector = !isGlobal ? id : ``; - const processedStyles = stylis(selector, styles); - - if (process.env.NODE_ENV === 'production') { - try { - splitRules(processedStyles).forEach(styles => { - const sheet = getSheet(styleElement!); - sheet.insertRule( - styles, - isGlobal ? 0 : sheet.cssRules.length, - ); - }); - - return; - } catch (error) { - console.warn( - `Trousers: unable to insert rule: ${styles}`, - error, - ); - } - } - - const styleNode = document.createTextNode(`${processedStyles}\n`); - const mountedStyles = styleElement!.getAttribute(attributeId); - - styleElement!.appendChild(styleNode); - styleElement!.setAttribute( - attributeId, - `${mountedStyles} ${id}`.trim(), - ); - }; - - return { - has, - clear, - register, - }; -}; - -export default registry; diff --git a/packages/registry/tsconfig.json b/packages/registry/tsconfig.json deleted file mode 100644 index 3af28f7..0000000 --- a/packages/registry/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [{ "path": "../parser" }] -} diff --git a/packages/server/CHANGELOG.md b/packages/server/CHANGELOG.md deleted file mode 100644 index 7053c3f..0000000 --- a/packages/server/CHANGELOG.md +++ /dev/null @@ -1,70 +0,0 @@ -# @trousers/server - -## 3.0.2 - -### Patch Changes - -- Updated dependencies [635f6fc] -- Updated dependencies [16fd640] - - @trousers/registry@3.0.2 - - @trousers/utils@3.0.2 - -## 3.0.1 - -### Patch Changes - -- @trousers/registry@3.0.1 - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - -### Patch Changes - -- Updated dependencies [e6a3323] -- Updated dependencies [c9c8187] - - @trousers/registry@3.0.0 - - @trousers/utils@3.0.0 diff --git a/packages/server/README.md b/packages/server/README.md deleted file mode 100644 index c96611f..0000000 --- a/packages/server/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# @trousers/server - -`@trousers/server` provides everything you need for Server side rendering (SSR) with Trousers. - -SSR with Trousers follows a similar approach to [styled-components](https://www.styled-components.com/docs/advanced#server-side-rendering). It works by firstly instantiating a `serverStyleRegistry`, wrapping your application in a `ServerProvider`, then passing that registry into the provider as a prop. Then when you render your application to a string with `react-dom/server`, Trousers will push styles into the style registry. You can then pull the styles from the registry and manually append them to the head of your document. - -```jsx -import React, { FC, ReactNode } from 'react'; -import { renderToString } from 'react-dom/server'; - -import { serverRegistry, ServerProvider } from 'trousers'; -import App from './'; - -const registry = serverRegistry(); - -const html = renderToString( - - - , -); - -// Your styles will be accessible here -const styleTags = registry.get(); -``` - -## API - -### `serverRegistry` - -A style registry **for use on the server** - -**Example:** - -```jsx -import { serverRegistry, ServerProvider } from 'trousers'; - -const registry = serverRegistry(); -const styleTags = registry.get(); -``` - -### `ServerProvider` - -A context provider which tells Trousers to push styles into the supplied registry, rather than `document.head`. **For use on the server.** - -**Props:** - -- `registry`: serverRegistry -- `children`: ReactChildren - -**Example:** - -```jsx -import React, { FC, ReactNode } from 'react'; -import { renderToString } from 'react-dom/server'; - -import { serverRegistry, ServerProvider } from 'trousers'; -import App from './'; - -const registry = serverRegistry(); - -const html = renderToString( - - - , -); - -const styleTags = registry.get(); -``` diff --git a/packages/server/package.json b/packages/server/package.json deleted file mode 100644 index b2994dd..0000000 --- a/packages/server/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@trousers/server", - "version": "3.0.2", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "license": "MIT", - "dependencies": { - "@trousers/registry": "3.0.2", - "@trousers/utils": "3.0.2" - }, - "devDependencies": { - "react": "^16.8.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/server" -} diff --git a/packages/server/src/ServerContext.tsx b/packages/server/src/ServerContext.tsx deleted file mode 100644 index 562136a..0000000 --- a/packages/server/src/ServerContext.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React, { createContext, FC, ReactNode } from 'react'; - -import { ServerRegistry } from './registry'; - -export type ServerCtx = ServerRegistry | undefined; - -export interface ServerProviderProps { - registry: ServerRegistry; - children: ReactNode; -} - -export const ServerContext = createContext(undefined); - -export const ServerConsumer = ServerContext.Consumer; - -export const ServerProvider: FC = ({ - registry, - children, -}) => ( - {children} -); diff --git a/packages/server/src/__snapshots__/registry.spec.ts.snap b/packages/server/src/__snapshots__/registry.spec.ts.snap deleted file mode 100644 index 745ba4f..0000000 --- a/packages/server/src/__snapshots__/registry.spec.ts.snap +++ /dev/null @@ -1,32 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ServerRegistry registering an existing key does not update the style 1`] = ` -Array [ - , -] -`; - -exports[`ServerRegistry registers a new style 1`] = ` -Array [ - , -] -`; - -exports[`ServerRegistry renders registered styles in the right format 1`] = ` -Array [ - , -] -`; diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts deleted file mode 100644 index 3124e68..0000000 --- a/packages/server/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { default as serverRegistry, ServerRegistry } from './registry'; -export { - ServerCtx, - ServerContext, - ServerConsumer, - ServerProvider, - ServerProviderProps, -} from './ServerContext'; diff --git a/packages/server/src/registry.spec.ts b/packages/server/src/registry.spec.ts deleted file mode 100644 index 7d9cabd..0000000 --- a/packages/server/src/registry.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @jest-environment node - */ - -import serverRegistry, { ServerRegistry } from './registry'; - -describe('ServerRegistry', () => { - let registry: ServerRegistry; - - beforeEach(() => { - registry = serverRegistry(); - }); - - it('registers a new style', () => { - const key = '1'; - const style = 'background-color:red;'; - - registry.register(key, style); - - expect(registry.get()).toMatchSnapshot(); - }); - - it('registering an existing key does not update the style', () => { - const key = '1'; - const style = 'background-color:red;'; - const styleBlue = 'background-color:blue;'; - - registry.register(key, style); - registry.register(key, styleBlue); - - expect(registry.get()).toMatchSnapshot(); - }); - - it('detects an existing style', () => { - const key = '1'; - const style = 'background-color:red;'; - - registry.register(key, style); - - expect(registry.has('1')).toBe(true); - }); - - it('detects a non existing style', () => { - expect(registry.has('123')).toBe(false); - }); - - it('renders registered styles in the right format', () => { - registry.register('1', 'background-color:red;'); - registry.register('2', 'background-color:blue;'); - - expect(registry.get()).toMatchSnapshot(); - }); - - it('globals are rendered before styles', () => { - // TO-DO - }); - - it('multiple globals are rendered in their own tags', () => { - // TO-DO - }); -}); diff --git a/packages/server/src/registry.tsx b/packages/server/src/registry.tsx deleted file mode 100644 index 532a0b1..0000000 --- a/packages/server/src/registry.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { ReactNode, ReactChild } from 'react'; -import stylis from 'stylis'; - -import { STYLE_ID, GLOBAL_STYLE_ID } from '@trousers/utils'; -import { Registry } from '@trousers/registry'; - -export type ServerRegistry = Registry & { get: () => ReactNode }; - -const serverRegistry = (): ServerRegistry => { - const globalMap = new Map(); - const styleMap = new Map(); - const has = (id: string) => styleMap.has(id); - - const clear = () => {}; - const register = (id: string, style: string, isGlobal?: boolean) => { - if (has(id)) return; - - const selector = !isGlobal ? id : ``; - const processedStyles: string = stylis(selector, style); - - if (!isGlobal) { - styleMap.set(id, processedStyles); - } else { - globalMap.set(id, processedStyles); - } - }; - - const renderStyles = () => { - const ids: string[] = []; - const styles: string[] = []; - - styleMap.forEach((value, key) => { - ids.push(key); - styles.push(value); - }); - - return ( - - ); - }; - - const renderGlobals = () => { - const styles: ReactChild[] = []; - - globalMap.forEach((value, key) => { - styles.push( - , - ); - }); - - return styles; - }; - - const get = () => [...renderGlobals(), renderStyles()]; - - return { - get, - has, - clear, - register, - }; -}; - -export default serverRegistry; diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json deleted file mode 100644 index 50f9ada..0000000 --- a/packages/server/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { - "path": "../registry" - }, - { - "path": "../utils" - } - ] -} diff --git a/packages/registry/CHANGELOG.md b/packages/sheet/CHANGELOG.md old mode 100644 new mode 100755 similarity index 100% rename from packages/registry/CHANGELOG.md rename to packages/sheet/CHANGELOG.md diff --git a/packages/sheet/README.md b/packages/sheet/README.md new file mode 100755 index 0000000..f000089 --- /dev/null +++ b/packages/sheet/README.md @@ -0,0 +1,101 @@ +# @trousers/sheet + +`@trousers/sheet` is responsible for managing the styles that are mounted to the page. + +## Installation + +`yarn add @trousers/sheet` or `npm install @trousers/sheet` + +## API + +### `sheet()` + +Is the factory function which exposes the sheet API. + +**Arguments:** + +- `targetEl` (`HTMLElement`): Element which will have style tags mounted to +- `attributeId` (`string`): The attribute which Trousers will use to identify the style tag + +**Returns:** + +- `has`: (`(id: string) => boolean`): Will return true if id has been mounted to the page +- `mount`: (`(id: string, styles: string, isGlobal?: boolean => void`): Will mount provided styles to the page. If `isGlobal` is provided style will be mounted globally. +- `unmount`: (`(id: string) => void`): unmounts all styles associated with the provided `id` + +**Example:** + +```js +import Sheet from '@trousers/sheet'; + +const sheet = Sheet(head, 'i-love-trousers'); +``` + +### `sheet().has()` + +Will return true if id has been mounted to the page. + +**Arguments:** + +- `id` (`string`): The id of the style you're checking for + +**Returns:** + +- `boolean`: The status of the style + +**Example:** + +```js +import Sheet from '@trousers/sheet'; + +const sheet = Sheet(head, 'i-love-trousers'); + +sheet.has('bar'); // returns false; +``` + +### `sheet().mount()` + +Will mount provided styles to the page. + +**Arguments:** + +- `id` (`string`): unique identifier for the provided style +- `styles` (`string`): style string +- `isGlobal` (`boolean`)?: The styles should be treated as global or not + +**Returns:** + +- `void` + +**Example:** + +```js +import Sheet from '@trousers/sheet'; + +const sheet = Sheet(head, 'i-love-trousers'); + +sheet.mount('1', '.foo{background-color:red;}'); +``` + +### `sheet().unmount()` + +Flushes all styles tracked by the provides `id` + +**Arguments:** + +- `id` (`string`): unique identifier for the provided style + +**Returns:** + +- `void` + +**Example:** + +```js +import Sheet from '@trousers/sheet'; + +const sheet = Sheet(head, 'i-love-trousers'); + +sheet.mount('1', '.foo{background-color:red;}'); +sheet.unmount('1'); +``` diff --git a/packages/parser/package.json b/packages/sheet/package.json old mode 100644 new mode 100755 similarity index 50% rename from packages/parser/package.json rename to packages/sheet/package.json index f41b058..0183579 --- a/packages/parser/package.json +++ b/packages/sheet/package.json @@ -1,11 +1,11 @@ { - "name": "@trousers/parser", - "version": "3.0.1", - "main": "dist/index.js", - "module": "dist/index.js", + "name": "@trousers/sheet", + "version": "4.0.0-alpha6", + "main": "dist/trousers-sheet.cjs.js", + "module": "dist/trousers-sheet.esm.js", "types": "dist/index.d.ts", "license": "MIT", "dependencies": {}, "devDependencies": {}, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/parser" + "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/sheet" } diff --git a/packages/sheet/src/__snapshots__/sheet.spec.ts.snap b/packages/sheet/src/__snapshots__/sheet.spec.ts.snap new file mode 100644 index 0000000..64d331b --- /dev/null +++ b/packages/sheet/src/__snapshots__/sheet.spec.ts.snap @@ -0,0 +1,8 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Sheet can mount a style tag 1`] = ` + + +`; + +exports[`Sheet mounts a new style 1`] = ``; diff --git a/packages/sheet/src/index.ts b/packages/sheet/src/index.ts new file mode 100755 index 0000000..28f18da --- /dev/null +++ b/packages/sheet/src/index.ts @@ -0,0 +1 @@ +export { default } from './sheet'; diff --git a/packages/sheet/src/sheet.spec.ts b/packages/sheet/src/sheet.spec.ts new file mode 100755 index 0000000..d1d99b8 --- /dev/null +++ b/packages/sheet/src/sheet.spec.ts @@ -0,0 +1,306 @@ +import Sheet from './sheet'; + +declare global { + namespace jest { + interface Matchers { + toHaveMountedStyles(key: string, style: object): R; + } + } +} + +const objectContaining = ( + obj: Record, + subObj: Record, +) => + Object.keys(subObj).reduce((accum, key) => { + if (accum === false || !obj.hasOwnProperty(key)) return false; + return obj[key] === subObj[key]; + }, true); + +const styleToString = (key: string, style: object) => { + const styles = Object.entries(style).reduce( + (accum, [rule, property]) => `${accum}${rule}:${property};`, + '', + ); + + return `${key}{${styles}}`; +}; + +expect.extend({ + toHaveMountedStyles(cssRuleList, selectorText, rules) { + const pass = + cssRuleList.selectorText === selectorText && + objectContaining(cssRuleList.style, rules); + + const message = pass + ? () => + `Expected: not ${selectorText} ${this.utils.printExpected( + cssRuleList, + )}\n` + + `Received: ${ + cssRuleList.selectorText + }${this.utils.printReceived(rules)}` + : () => + `Expected: ${selectorText} ${this.utils.printExpected( + cssRuleList, + )}\n` + + `Received: ${ + cssRuleList.selectorText + }${this.utils.printReceived(rules)}`; + + return { + pass, + message, + }; + }, +}); + +describe('Sheet', () => { + let sheet: ReturnType; + let headEl = window.document.head; + let attributeId = 'data-testing-trousers'; + let styleSheet: CSSStyleSheet; + + beforeEach(() => { + sheet = Sheet(headEl, attributeId); + styleSheet = document.styleSheets[0]; + }); + + afterEach(() => { + window.document.head.innerHTML = ''; + }); + + it('can mount a style tag', () => { + Sheet(headEl, 'data-testing-secondary'); + expect(headEl.innerHTML).toMatchSnapshot(); + }); + + it('detects an existing style', () => { + const key = '.foo'; + sheet.mount(key, styleToString(key, { color: 'red' })); + + expect(sheet.has(key)).toEqual(true); + }); + + it('detects a non existing style', () => { + expect(sheet.has('123')).toBe(false); + }); + + it('mounts a new style', () => { + const key = '.foo'; + const style = { color: 'red' }; + const styleRule = styleToString(key, style); + + sheet.mount(key, styleRule); + + expect(sheet.has(key)).toEqual(true); + expect(headEl.innerHTML).toMatchSnapshot(); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + }); + + it('mounts style with multiple properties', () => { + const key = '.foo'; + const style = { color: 'blue', backgroundColor: 'red' }; + const styleRule = styleToString(key, style); + + sheet.mount(key, styleRule); + + expect(sheet.has(key)).toEqual(true); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + }); + + it('mounts multiple styles', () => { + const key1 = '.blue'; + const key2 = '.red'; + const style1 = { color: 'blue' }; + const style2 = { color: 'red' }; + + sheet.mount(key1, styleToString(key1, style1)); + sheet.mount(key2, styleToString(key2, style2)); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key1, style1); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key2, style2); + }); + + it('mounts a global style', () => { + const key = '.1'; + const style = { color: 'red' }; + + sheet.mount(key, styleToString(key, style)); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + }); + + it('mounts a global, with pre-existing style tag', () => { + const key1 = '.blue'; + const key2 = 'body'; + const style1 = { color: 'blue' }; + const style2 = { color: 'red' }; + + sheet.mount(key1, styleToString(key1, style1)); + sheet.mount(key2, styleToString(key2, style2), true); + + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key1, style1); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key2, style2); + }); + + it('registering an existing key does not update the style', () => { + const key = '.blue'; + const style1 = { color: 'blue' }; + const style2 = { color: 'red' }; + + sheet.mount(key, styleToString(key, style1)); + sheet.mount(key, styleToString(key, style2)); + + expect(styleSheet.cssRules.length).toEqual(1); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style1); + }); + + it('unmounts style as the only mounted style', () => { + const key = '.foo'; + const style = { color: 'red' }; + const styleRule = styleToString(key, style); + + sheet.mount(key, styleRule); + + expect(sheet.has(key)).toEqual(true); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + + sheet.unmount(key); + }); + + it('unmounts style as one of many mounted styles', () => { + const key = '.foo'; + const style = { + color: 'red', + }; + + sheet.mount('.bar', '.bar{color: blue;}'); + sheet.mount(key, styleToString(key, style)); + sheet.mount('.baz', '.baz{color: green;}'); + + expect(sheet.has(key)).toEqual(true); + expect(styleSheet.cssRules.length).toEqual(3); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key, style); + + sheet.unmount(key); + + expect(sheet.has(key)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(2); + expect(styleSheet.cssRules[0]).not.toHaveMountedStyles(key, style); + expect(styleSheet.cssRules[1]).not.toHaveMountedStyles(key, style); + }); + + it('mounts then unmount all styles in order', () => { + const key = '.foo'; + const style = { + color: 'red', + }; + const key2 = '.bar'; + const style2 = { + color: 'blue', + }; + const key3 = '.baz'; + const style3 = { + color: 'green', + }; + + sheet.mount(key, styleToString(key, style)); + sheet.mount(key2, styleToString(key2, style2)); + sheet.mount(key3, styleToString(key3, style3)); + + expect(styleSheet.cssRules.length).toEqual(3); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key2, style2); + expect(styleSheet.cssRules[2]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key); + expect(sheet.has(key)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(2); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key2, style2); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key2); + expect(sheet.has(key2)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(1); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key3); + expect(sheet.has(key3)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(0); + }); + + it('mounts then unmounts all styles from middle of array', () => { + const key = '.foo'; + const style = { + color: 'red', + }; + const key2 = '.bar'; + const style2 = { + color: 'blue', + }; + const key3 = '.baz'; + const style3 = { + color: 'green', + }; + + sheet.mount(key, styleToString(key, style)); + sheet.mount(key2, styleToString(key2, style2)); + sheet.mount(key3, styleToString(key3, style3)); + + expect(styleSheet.cssRules.length).toEqual(3); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key2, style2); + expect(styleSheet.cssRules[2]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key2); + expect(sheet.has(key2)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(2); + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key); + expect(sheet.has(key)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(1); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key3, style3); + + sheet.unmount(key3); + expect(sheet.has(key3)).toEqual(false); + expect(styleSheet.cssRules.length).toEqual(0); + }); + + it('unmounts a global style', () => { + const key = ':root'; + const style = { color: 'red' }; + + sheet.mount(key, styleToString(key, style), true); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key, style); + }); + + it('unmounts a global style as one of many mounted global styles', () => { + const key = ':root'; + const style = { color: 'red' }; + const key2 = 'body'; + const style2 = { color: 'blue' }; + const key3 = '*'; + const style3 = { color: 'green' }; + + sheet.mount(key, styleToString(key, style), true); + sheet.mount(key2, styleToString(key2, style2), true); + sheet.mount(key3, styleToString(key3, style3), true); + + expect(sheet.has(key)).toEqual(true); + expect(styleSheet.cssRules.length).toEqual(3); + expect(styleSheet.cssRules[2]).toHaveMountedStyles(key, style); + + sheet.unmount(key); + + expect(styleSheet.cssRules.length).toEqual(2); + + expect(styleSheet.cssRules[0]).toHaveMountedStyles(key3, style3); + expect(styleSheet.cssRules[1]).toHaveMountedStyles(key2, style2); + }); +}); diff --git a/packages/sheet/src/sheet.ts b/packages/sheet/src/sheet.ts new file mode 100755 index 0000000..bd7608c --- /dev/null +++ b/packages/sheet/src/sheet.ts @@ -0,0 +1,81 @@ +const createStyleElement = (attributeId: string) => { + const element = document.createElement('style'); + element.setAttribute(attributeId, ''); + element.setAttribute('type', 'text/css'); + element.appendChild(document.createTextNode('')); + return element; +}; + +const getElement = (targetEl: HTMLElement, attributeId: string) => + targetEl.querySelector(`style[${attributeId}]`); + +const getSheet = (targetEl: HTMLStyleElement) => { + if (targetEl.sheet) return targetEl.sheet; + + for (let i = 0; i < document.styleSheets.length; i++) { + if (document.styleSheets[i].ownerNode === targetEl) { + return document.styleSheets[i]; + } + } + + throw Error('Unable to get StyleSheet'); +}; + +const Sheet = (targetEl: HTMLElement, attributeId: string) => { + let styleEl = getElement(targetEl, attributeId); + const styleMap = new Map(); + + if (styleEl === null) { + styleEl = createStyleElement(attributeId); + targetEl.appendChild(styleEl); + } + + const pushOrder = () => + styleMap.forEach((value, key, map) => map.set(key, (value += 1))); + + const popOrder = (popIndex: number) => { + styleMap.forEach((value, key, map) => { + const index = Array.from(map.keys()).indexOf(key); + + if (popIndex <= index) { + map.set(key, (value -= 1)); + } + }); + }; + + const has = (id: string) => styleMap.has(id); + + const mount = (id: string, styles: string, isGlobal?: boolean) => { + if (has(id)) return; + + try { + const activeSheet = getSheet(styleEl!); + const index = isGlobal ? 0 : activeSheet.cssRules.length; + activeSheet.insertRule(styles, index); + + if (isGlobal) pushOrder(); + + styleMap.set(id, index); + } catch (error) { + console.warn(`Trousers - unable to insert rule: ${styles}`, error); + } + }; + + const unmount = (id: string) => { + if (!has(id)) return; + + const index = styleMap.get(id) as number; + const activeSheet = getSheet(styleEl!); + activeSheet.deleteRule(index); + styleMap.delete(id); + popOrder(index); + }; + + return { + has, + mount, + unmount, + }; +}; + +export default Sheet; diff --git a/packages/styled/CHANGELOG.md b/packages/styled/CHANGELOG.md new file mode 100755 index 0000000..69dc5eb --- /dev/null +++ b/packages/styled/CHANGELOG.md @@ -0,0 +1 @@ +# @trousers/styled diff --git a/packages/styled/README.md b/packages/styled/README.md new file mode 100755 index 0000000..6f5ac11 --- /dev/null +++ b/packages/styled/README.md @@ -0,0 +1,38 @@ +# @trousers/styled + +`@trousers/styles` is an implementation of Trousers for lovers of the Styled Components API (with a few tweaks). + +## Installation + +`yarn add @trousers/styled` or `npm install @trousers/styled` + +## API + +### `styled` + +The `styled` method is a factory function which provides you with a way to quickly create and style components. +It is able to be used in two separate ways... + +1. Dot notation `styled.div` +2. Function notation `styled('div')` + +**Arguments:** + +- `tagId` (`string`)?: The id of the element tag you wish to create (ie. div, button, span, etc) + +**Returns:** + +- `Record`: HTML elements ids as an object (see Dot notation) +- `(styles: Collector) => ReactComponent`: Returns a method which accepts a css collector + +**Example:** + +```js +import styled, { css } from '@trousers/styled'; + +// Dot notation +const StyledDiv = styled.div(css('element', { color: 'red' })); + +// Function notation +const StyledDiv = styled('div')(css('element', { color: 'red' })); +``` diff --git a/packages/styled/package.json b/packages/styled/package.json new file mode 100755 index 0000000..cd8cf13 --- /dev/null +++ b/packages/styled/package.json @@ -0,0 +1,19 @@ +{ + "name": "@trousers/styled", + "version": "4.0.0-alpha6", + "main": "dist/trousers-styled.cjs.js", + "module": "dist/trousers-styled.esm.js", + "types": "dist/index.d.ts", + "license": "MIT", + "dependencies": { + "@trousers/core": "4.0.0-alpha6", + "@trousers/react": "4.0.0-alpha6" + }, + "devDependencies": { + "react": "^17.0.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/styled" +} diff --git a/packages/styled/src/__snapshots__/styled.spec.tsx.snap b/packages/styled/src/__snapshots__/styled.spec.tsx.snap new file mode 100644 index 0000000..8690d69 --- /dev/null +++ b/packages/styled/src/__snapshots__/styled.spec.tsx.snap @@ -0,0 +1,42 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`styled creates a styled component from dot notation element id 1`] = ` +

+
+
+`; + +exports[`styled creates a styled component from string element id 1`] = ` +
+
+
+`; + +exports[`styled passes through html attributes 1`] = ` +
+
+
+`; + +exports[`styled passes through modifier props 1`] = ` +
+
+
+`; + +exports[`styled passes through multiple modifier props 1`] = ` +
+
+
+`; diff --git a/packages/styled/src/index.ts b/packages/styled/src/index.ts new file mode 100755 index 0000000..d128170 --- /dev/null +++ b/packages/styled/src/index.ts @@ -0,0 +1,2 @@ +export { default } from './styled'; +export { default as css } from '@trousers/core'; diff --git a/packages/styled/src/styled.spec.tsx b/packages/styled/src/styled.spec.tsx new file mode 100644 index 0000000..2536953 --- /dev/null +++ b/packages/styled/src/styled.spec.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import css from '@trousers/core'; +import styled from './styled'; +import { render } from '@testing-library/react'; + +describe('styled', () => { + it('creates a styled component from dot notation element id', () => { + const StyledDiv = styled.div( + css('element', { + color: 'red', + }), + ); + + const { container } = render(); + + expect(container).toMatchSnapshot(); + }); + + it('creates a styled component from string element id', () => { + const StyledDiv = styled('div')( + css('element', { + color: 'red', + }), + ); + + const { container } = render(); + + expect(container).toMatchSnapshot(); + }); + + it('passes through html attributes', () => { + const StyledDiv = styled('div')( + css('element', { + color: 'red', + }), + ); + + const { container } = render(); + + expect(container).toMatchSnapshot(); + }); + + it('passes through modifier props', () => { + const StyledDiv = styled('div')( + css('element', { + color: 'red', + }).modifier('primary', { color: 'green' }), + ); + + const { container } = render(); + + expect(container).toMatchSnapshot(); + }); + + it('passes through multiple modifier props', () => { + const StyledDiv = styled('div')( + css('element', { + color: 'red', + }) + .modifier('primary', { color: 'green' }) + .modifier('secondary', { color: 'purple' }), + ); + + const { container } = render(); + + expect(container).toMatchSnapshot(); + }); +}); diff --git a/packages/styled/src/styled.tsx b/packages/styled/src/styled.tsx new file mode 100755 index 0000000..2b3ad75 --- /dev/null +++ b/packages/styled/src/styled.tsx @@ -0,0 +1,172 @@ +/** @jsx jsx */ +import { ComponentType, forwardRef } from 'react'; +import jsx from '@trousers/react'; +import { Collector } from '@trousers/core'; +import { TrousersProps } from '@trousers/react'; + +type Elements = keyof JSX.IntrinsicElements; +const domElements: Elements[] = [ + 'a', + 'abbr', + 'address', + 'area', + 'article', + 'aside', + 'audio', + 'b', + 'base', + 'bdi', + 'bdo', + 'big', + 'blockquote', + 'body', + 'br', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'col', + 'colgroup', + 'data', + 'datalist', + 'dd', + 'del', + 'details', + 'dfn', + 'dialog', + 'div', + 'dl', + 'dt', + 'em', + 'embed', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'keygen', + 'label', + 'legend', + 'li', + 'link', + 'main', + 'map', + 'mark', + 'menu', + 'menuitem', + 'meta', + 'meter', + 'nav', + 'noscript', + 'object', + 'ol', + 'optgroup', + 'option', + 'output', + 'p', + 'param', + 'picture', + 'pre', + 'progress', + 'q', + 'rp', + 'rt', + 'ruby', + 's', + 'samp', + 'script', + 'section', + 'select', + 'small', + 'source', + 'span', + 'strong', + 'style', + 'sub', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'title', + 'tr', + 'track', + 'u', + 'ul', + 'var', + 'video', + 'wbr', + 'circle', + 'clipPath', + 'defs', + 'ellipse', + 'foreignObject', + 'g', + 'image', + 'line', + 'linearGradient', + 'marker', + 'mask', + 'path', + 'pattern', + 'polygon', + 'polyline', + 'radialGradient', + 'rect', + 'stop', + 'svg', + 'text', + 'tspan', +]; + +interface StyledProps + extends JSX.IntrinsicAttributes, + Omit {} +type CollectorHOC = (css: ReturnType) => ComponentType; +type ElementMap = { + [key in Elements]: CollectorHOC; +}; + +interface Styled extends ElementMap { + (Tag: Elements): CollectorHOC; +} + +let styledBase = (Tag: Elements) => (css: ReturnType) => + forwardRef((props, ref) => { + //@ts-ignore union type is too complex + return ; + }); + +const styled: Styled = Object.assign( + styledBase, + domElements.reduce((accum, element) => { + accum[element] = styledBase(element); + return accum; + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + }, {} as ElementMap), +); + +export default styled; diff --git a/packages/theme-css/CHANGELOG.md b/packages/theme-css/CHANGELOG.md deleted file mode 100644 index f6288fb..0000000 --- a/packages/theme-css/CHANGELOG.md +++ /dev/null @@ -1,55 +0,0 @@ -# @trousers/theme-css - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - -### Patch Changes - -- Updated dependencies [e6a3323] -- Updated dependencies [c9c8187] - - @trousers/hash@3.0.0 - - @trousers/theme@3.0.0 diff --git a/packages/theme-css/README.md b/packages/theme-css/README.md deleted file mode 100644 index 542137e..0000000 --- a/packages/theme-css/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# @trousers/theme-css - -`@trousers/theme-css` is an alternate theme provider which uses [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/var) under the hood. Use this package to reduce the run-time burden theming would otherwise have on your application. - -It has the same API as `@trousers/theme` so please refer to that modules [API docs for guidance](../theme). - -**Please note:** Using CSS vars in legacy browsers such as IE 11 and older is not supported, you will need to consider using a polyfill or the base `@trousers/theme` package if this is a problem. diff --git a/packages/theme-css/package.json b/packages/theme-css/package.json deleted file mode 100644 index ca2edb7..0000000 --- a/packages/theme-css/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@trousers/theme-css", - "version": "3.0.0", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "license": "MIT", - "dependencies": { - "@trousers/hash": "3.0.0", - "@trousers/theme": "3.0.0" - }, - "devDependencies": { - "react": "^16.8.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/theme-css" -} diff --git a/packages/theme-css/src/ThemeContext.tsx b/packages/theme-css/src/ThemeContext.tsx deleted file mode 100644 index fb99a57..0000000 --- a/packages/theme-css/src/ThemeContext.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { FC } from 'react'; - -import { toHash } from '@trousers/hash'; -import { ThemeProviderProps, ThemeContext } from '@trousers/theme'; - -function buildTheme(theme: Record, prefix: string = '') { - return Object.keys(theme).reduce>( - (accum, key) => { - if (typeof theme[key] === 'object') { - const { vars, values } = buildTheme(theme[key], key); - accum = { - vars: { ...accum.vars, ...vars }, - values: { ...accum.values, ...values }, - }; - } else { - accum.values[key] = `var(--${prefix}${key})`; - accum.vars[`--${prefix}${key}`] = theme[key]; - } - - return accum; - }, - { - values: {}, - vars: {}, - }, - ); -} - -export const ThemeProvider: FC = ({ theme, children }) => { - const hash = toHash(JSON.stringify(theme)); - const { values, vars } = React.useMemo(() => buildTheme(theme), [theme]); - - return ( - -
{children}
-
- ); -}; diff --git a/packages/theme-css/src/index.ts b/packages/theme-css/src/index.ts deleted file mode 100644 index df7f822..0000000 --- a/packages/theme-css/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { - ThemeCtx, - ThemeProviderProps, - ThemeContext, - ThemeConsumer, - useTheme, -} from '@trousers/theme'; - -export { ThemeProvider } from './ThemeContext'; diff --git a/packages/theme-css/tsconfig.json b/packages/theme-css/tsconfig.json deleted file mode 100644 index 7804194..0000000 --- a/packages/theme-css/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { - "path": "../hash" - }, - { - "path": "../theme" - } - ] -} diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md deleted file mode 100644 index b128539..0000000 --- a/packages/theme/CHANGELOG.md +++ /dev/null @@ -1,54 +0,0 @@ -# @trousers/theme - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - -### Patch Changes - -- Updated dependencies [e6a3323] -- Updated dependencies [c9c8187] - - @trousers/hash@3.0.0 diff --git a/packages/theme/README.md b/packages/theme/README.md deleted file mode 100644 index 2445c82..0000000 --- a/packages/theme/README.md +++ /dev/null @@ -1,113 +0,0 @@ -# @trousers/theme - -`@trousers/theme` provides tools for theming your application. - -Theming is achieved via React's Context API. Use the `ThemeProvider` to send your theme down the react tree and give all usages of `useStyles` and `useGlobals` access to your theme. You can even choose to nest themes and present a section of your app in a different way. - -It looks a little something like this: - -```jsx -import { ThemeProvider } from 'trousers'; - -const lightTheme = { - primaryColor: 'white', - secondaryColor: 'blue', - disabledColor: 'grey', -}; - -const darkTheme = { - primaryColor: 'black', - secondaryColor: 'purple', - disabledColor: 'grey', -}; - -const MyApp = () => { - return ( - -

Hello World

-

Rest of my app lives here and has access to the light theme!

- -

This subtree will have access to the dark theme!

-
-
- ); -}; -``` - -When a Trousers component is mounted within a new theme context, it will render new styles and apply them to the component. - -You can define how your component handles themes like this: - -```jsx -const buttonStyles = props => styleCollector('button').element` - background-color: ${theme => theme.secondaryColor}; - `.modifier(props.primary)` - background-color: ${theme => theme.primaryColor}; - `.modifier(props.disabled)` - background-color: ${theme => theme.disabledColor}; - `; -``` - -Now your component will render different styles based on the context it is mounted in. - -## API - -### `` - -Responsible for pushing the supplied theme into React's Context API. - -**Props:** - -- `theme`: Object - -**Example:** - -```jsx -import React from 'react'; -import { ThemeProvider } from '@trousers/theme'; - -const theme = { - primaryColor: 'red', - secondaryColor: 'blue', -}; - -const App = () => ( - - {* Every child node will have access to the theme *} - -); -``` - -### `useTheme` - -A handy utility hook which pulls the theme from context. Useful when you want to use the CSS prop with object notation. - -```jsx -/** @jsx jsx */ -import React from 'react'; -import { jsx } from '@trousers/core'; -import { ThemeProvider, useTheme } from '@trousers/theme'; - -const theme = { - primaryColor: 'red', - secondaryColor: 'blue', -}; - -const Foo = () => { - const theme = useTheme(); - - return ( -
- Foo bar -
- ); -} - -const App = () => ( - - - -); -``` diff --git a/packages/theme/package.json b/packages/theme/package.json deleted file mode 100644 index e11b2f7..0000000 --- a/packages/theme/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@trousers/theme", - "version": "3.0.0", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "license": "MIT", - "dependencies": { - "@trousers/hash": "3.0.0" - }, - "devDependencies": { - "react": "^16.8.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/theme" -} diff --git a/packages/theme/src/ThemeContext.tsx b/packages/theme/src/ThemeContext.tsx deleted file mode 100644 index 223f5c6..0000000 --- a/packages/theme/src/ThemeContext.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, { createContext, FC, ReactNode } from 'react'; - -import { toHash } from '@trousers/hash'; - -export interface ThemeCtx { - hash: number; - theme: Record; -} - -export interface ThemeProviderProps { - theme: Record; - children: ReactNode; -} - -export const ThemeContext = createContext({ - hash: 0, - theme: {}, -}); - -export const ThemeConsumer = ThemeContext.Consumer; - -export const ThemeProvider: FC = ({ theme, children }) => { - const hash = toHash(JSON.stringify(theme)); - const { theme: cachedTheme } = React.useMemo( - () => ({ - theme, - }), - // eslint-disable-next-line react-hooks/exhaustive-deps - [hash], - ); - - return ( - - {children} - - ); -}; diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts deleted file mode 100644 index efb20b6..0000000 --- a/packages/theme/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { - ThemeProvider, - ThemeConsumer, - ThemeContext, - ThemeCtx, - ThemeProviderProps, -} from './ThemeContext'; -export { default as useTheme } from './useTheme'; diff --git a/packages/theme/src/useTheme.tsx b/packages/theme/src/useTheme.tsx deleted file mode 100644 index f09d13d..0000000 --- a/packages/theme/src/useTheme.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { useContext } from 'react'; -import { ThemeCtx, ThemeContext } from './ThemeContext'; - -const useTheme = () => { - const themeCtx = useContext(ThemeContext); - - return themeCtx; -}; - -export default useTheme; diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json deleted file mode 100644 index fea492c..0000000 --- a/packages/theme/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { - "path": "../hash" - } - ] -} diff --git a/packages/trousers/CHANGELOG.md b/packages/trousers/CHANGELOG.md old mode 100644 new mode 100755 diff --git a/packages/trousers/README.md b/packages/trousers/README.md old mode 100644 new mode 100755 index 5d6d552..acf9ffe --- a/packages/trousers/README.md +++ b/packages/trousers/README.md @@ -1,6 +1,10 @@ # trousers `trousers` is the base package which re-exports all necessary functionality from its sub-packages. -Use this package when you want to get up and running quickly or if you don't want to compose your own version of trousers from the sub-packages like `@trousers/core` or `@trousers/theme`. +Use this package when you want to get up and running quickly or if you don't want to compose your own version of Trousers from the sub-packages like `@trousers/core` or `@trousers/react`. For API docs, [please see README.md](../README.md#api-reference) + +## Installation + +`yarn add trousers` or `npm install trousers` diff --git a/packages/trousers/package.json b/packages/trousers/package.json old mode 100644 new mode 100755 index 1d82acb..be25489 --- a/packages/trousers/package.json +++ b/packages/trousers/package.json @@ -1,19 +1,17 @@ { "name": "trousers", - "version": "3.0.2", - "main": "dist/index.js", - "module": "dist/index.js", + "version": "4.0.0-alpha6", + "main": "dist/trousers.cjs.js", + "module": "dist/trousers.esm.js", "types": "dist/index.d.ts", "license": "MIT", "dependencies": { - "@trousers/collector": "3.0.2", - "@trousers/core": "3.0.2", - "@trousers/server": "3.0.2", - "@trousers/theme": "3.0.0", - "@trousers/utils": "3.0.2" + "@trousers/core": "4.0.0-alpha6", + "@trousers/react": "4.0.0-alpha6", + "@trousers/styled": "4.0.0-alpha6" }, "devDependencies": { - "react": "^16.8.1" + "react": "^17.0.1" }, "peerDependencies": { "react": ">=16.8.0" diff --git a/packages/trousers/src/__snapshots__/index.spec.tsx.snap b/packages/trousers/src/__snapshots__/index.spec.tsx.snap deleted file mode 100644 index 271333a..0000000 --- a/packages/trousers/src/__snapshots__/index.spec.tsx.snap +++ /dev/null @@ -1,48 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Server side rendering (SSR) stringify globals on server and hydrate on client 1`] = `

Hello world

`; - -exports[`Server side rendering (SSR) stringify globals on server and hydrate on client 2`] = ` -Array [ - , - , -] -`; - -exports[`Server side rendering (SSR) stringify styles on server and hydrate on client 1`] = ` - - -`; - -exports[`Server side rendering (SSR) stringify styles on server and hydrate on client 2`] = ` -Array [ - , -] -`; - -exports[`Server side rendering (SSR) stringify styles(css prop) on server and hydrate on client 1`] = ` - - -`; - -exports[`Server side rendering (SSR) stringify styles(css prop) on server and hydrate on client 2`] = ` -Array [ - , -] -`; diff --git a/packages/trousers/src/index.spec.tsx b/packages/trousers/src/index.spec.tsx deleted file mode 100644 index bd21472..0000000 --- a/packages/trousers/src/index.spec.tsx +++ /dev/null @@ -1,206 +0,0 @@ -/** - * @jest-environment node - */ - -/** @jsx jsx */ -import { FC, ReactNode } from 'react'; -import { renderToString } from 'react-dom/server'; -import { hydrate } from 'react-dom'; -import { JSDOM } from 'jsdom'; - -import { - styleCollector, - ServerProvider, - serverRegistry, - ThemeProvider, - StyleCollector, - jsx, - useStyles, - useGlobals, - css, -} from './'; - -interface ButtonProps { - children: ReactNode; - primary?: boolean; -} - -interface Theme { - default: string; - primary: string; -} - -describe('Server side rendering (SSR)', () => { - let styles: (props: ButtonProps) => StyleCollector; - let globalStyles: StyleCollector; - let Button: FC; - let theme: Theme; - - beforeEach(() => { - theme = { - default: '#b3cde8', - primary: '#f95b5b', - }; - - globalStyles = css` - * { - background-color: red; - } - `; - - styles = (props: ButtonProps) => styleCollector('button') - .element` - background-color: ${theme => theme.default}; - color: white; - `.modifier(props.primary)` - background-color: ${theme => theme.primary}; - color: #ffffff; - `; - - Button = props => { - const classNames = useStyles(styles(props)); - - return ; - }; - }); - - afterEach(() => { - // @ts-ignore - global.window = undefined; - // @ts-ignore - global.document = undefined; - }); - - it('stringify styles on server and hydrate on client', () => { - jest.spyOn(console, 'warn'); - - const App: FC = () => ( - - - - - ); - - const registry = serverRegistry(); - - const html = renderToString( - - - , - ); - - const jsdom = new JSDOM(``); - const { window } = jsdom; - - // @ts-ignore - global.window = window; - // @ts-ignore - global.document = window.document; - - const root = document.createElement('div'); - root.innerHTML = html; - - expect(() => hydrate(, root)).not.toThrow(); - expect(html).toMatchSnapshot(); - expect(registry.get()).toMatchSnapshot(); - expect(console.warn).not.toHaveBeenCalled(); - }); - - it('stringify styles(css prop) on server and hydrate on client', () => { - jest.spyOn(console, 'warn'); - - Button = props => { - return ; - }; - - const App: FC = () => ( - - - - - ); - - const registry = serverRegistry(); - - const html = renderToString( - - - , - ); - - const jsdom = new JSDOM(``); - const { window } = jsdom; - - // @ts-ignore - global.window = window; - // @ts-ignore - global.document = window.document; - - const root = document.createElement('div'); - root.innerHTML = html; - - expect(() => hydrate(, root)).not.toThrow(); - expect(html).toMatchSnapshot(); - expect(registry.get()).toMatchSnapshot(); - expect(console.warn).not.toHaveBeenCalled(); - }); - - it('stringify globals on server and hydrate on client', () => { - jest.spyOn(console, 'warn'); - - const App: FC = () => { - useGlobals(globalStyles); - - return

Hello world

; - }; - - const registry = serverRegistry(); - - const html = renderToString( - - - , - ); - - const jsdom = new JSDOM(``); - const { window } = jsdom; - - // @ts-ignore - global.window = window; - // @ts-ignore - global.document = window.document; - - const root = document.createElement('div'); - root.innerHTML = html; - - expect(() => hydrate(, root)).not.toThrow(); - expect(html).toMatchSnapshot(); - expect(registry.get()).toMatchSnapshot(); - expect(console.warn).not.toHaveBeenCalled(); - }); - - it('throws if ServerProvider was not used with globals', () => { - const App: FC = () => { - useGlobals(globalStyles); - - return

Hello world

; - }; - - expect(() => renderToString()).toThrowError( - 'Server style registry is required for SSR, did you forget to use ?', - ); - }); - - it('throws if ServerProvider was not used', () => { - const App: FC = () => ( - - - - - ); - - expect(() => renderToString()).toThrowError( - 'Server style registry is required for SSR, did you forget to use ?', - ); - }); -}); diff --git a/packages/trousers/src/index.ts b/packages/trousers/src/index.ts old mode 100644 new mode 100755 index 4199e09..76039dd --- a/packages/trousers/src/index.ts +++ b/packages/trousers/src/index.ts @@ -1,28 +1,10 @@ -export { default as styleCollector } from '@trousers/collector'; -export { css, jsx, useStyles, useGlobals, withGlobals } from '@trousers/core'; export { - serverRegistry, - ServerRegistry, - ServerCtx, - ServerContext, - ServerConsumer, - ServerProvider, - ServerProviderProps, -} from '@trousers/server'; -export { - ThemeProvider, - ThemeConsumer, - ThemeContext, - ThemeCtx, - ThemeProviderProps, - useTheme, -} from '@trousers/theme'; -export { - STYLE_ID, - GLOBAL_STYLE_ID, - StyleCollector, - StyleDefinition, - Predicate, - Expression, - CSSProps, -} from '@trousers/utils'; + default as css, + Collector, + Definition, + namespace, + prefix, + process, +} from '@trousers/core'; +export { default as jsx } from '@trousers/react'; +export { default as styled } from '@trousers/styled'; diff --git a/packages/trousers/tsconfig.json b/packages/trousers/tsconfig.json deleted file mode 100644 index 494729f..0000000 --- a/packages/trousers/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [ - { "path": "../collector" }, - { "path": "../core" }, - { "path": "../server" }, - { "path": "../theme" }, - { "path": "../utils" } - ] -} diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md deleted file mode 100644 index 9a44f4e..0000000 --- a/packages/utils/CHANGELOG.md +++ /dev/null @@ -1,54 +0,0 @@ -# @trousers/utils - -## 3.0.2 - -### Patch Changes - -- 16fd640: Style collector instances with differing expressions will now be mounted separately - -## 3.0.0 - -### Major Changes - -- e6a3323: # Version 3 🎉 - - This is Trousers' biggest update yet! - - Including: - - - Support for the CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - insertRule 🏹 - - Smaller bundles 🐭 - - Custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - ## Removed - - - withStyles HOC (please use css prop for class components) - - ### Developer experience - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) - - Adds [manypkg](https://github.com/Thinkmill/manypkg) - -- c9c8187: **Trousers v3!** - - - CSS prop 👩‍🎤 - - Mono-repo setup and decomposition 📦 - - Object notation CSS 🍞 - - Theme CSS var package 🎨 - - prod mode support for `insertRule` 🏹 - - Smaller bundles 🐭 - - Support for custom style collectors 🕺 - - Trousers package with all exports for backwards compatibility - - **Dev** - - - Adds [storybook-addon-performance](https://github.com/atlassian-labs/storybook-addon-performance) - - Adds [react-stable-ref](https://github.com/danieldelcore/react-stable-ref) to test for re-renders - - Adds [atlassian/changesets](https://github.com/atlassian/changesets) diff --git a/packages/utils/README.md b/packages/utils/README.md deleted file mode 100644 index e3b7ac8..0000000 --- a/packages/utils/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @trousers/utils - -A collection of types, constants and helpers used in various @trousers packages. diff --git a/packages/utils/package.json b/packages/utils/package.json deleted file mode 100644 index c46cc01..0000000 --- a/packages/utils/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@trousers/utils", - "version": "3.0.2", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "license": "MIT", - "dependencies": {}, - "devDependencies": {}, - "peerDependencies": {}, - "repository": "https://github.com/danieldelcore/trousers/tree/master/packages/utils" -} diff --git a/packages/utils/src/constants.ts b/packages/utils/src/constants.ts deleted file mode 100644 index acece35..0000000 --- a/packages/utils/src/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const STYLE_ID = 'data-trousers'; -export const GLOBAL_STYLE_ID = 'data-trousers-global'; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts deleted file mode 100644 index a73b2fa..0000000 --- a/packages/utils/src/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { STYLE_ID, GLOBAL_STYLE_ID } from './constants'; -export { - StyleCollector, - StyleDefinition, - Predicate, - Expression, - CSSProps, -} from './types'; diff --git a/packages/utils/src/types.ts b/packages/utils/src/types.ts deleted file mode 100644 index d31d6e8..0000000 --- a/packages/utils/src/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { CSSProperties } from 'react'; - -export type Predicate = boolean | undefined | null; -export type Expression = - | string - | number - | ((theme: Theme) => string | number); - -export interface TaggedTemplate { - styles: TemplateStringsArray | string[]; - expressions: Expression[]; -} - -export interface StyleDefinition extends TaggedTemplate { - predicate: Predicate; - name: string; -} - -export interface StyleCollector { - get: () => StyleDefinition[]; -} - -export type CSSProps = CSSProperties | { [key: string]: CSSProperties }; diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json deleted file mode 100644 index b1fcb59..0000000 --- a/packages/utils/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "include": ["src"], - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "src", - "baseUrl": "src" - }, - "references": [] -} diff --git a/tsconfig.json b/tsconfig.json index f74d8d6..e0a67df 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,32 @@ { "compilerOptions": { "baseUrl": ".", - "rootDir": ".", - "module": "es6", "target": "es5", - "outDir": "lib", - "moduleResolution": "node", - "lib": ["dom", "es2016", "es2017.object"], + "module": "commonjs", + "lib": ["dom", "es2017"], "jsx": "react", + "preserveSymlinks": true, + "moduleResolution": "node", + "importHelpers": true, + "declaration": true, + "pretty": true, + "sourceMap": true, + "inlineSources": true, + "resolveJsonModule": true, + "noEmit": true, "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, - "composite": true, - "incremental": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "downlevelIteration": true, + "allowJs": true, "paths": { "trousers": ["packages/trousers/src"], "@trousers/*": ["packages/*/src"], "@emotion/core": ["typings/emotion.d.ts"] } }, - "files": [], "exclude": [ "node_modules", "dist", @@ -35,16 +35,5 @@ "**/*.test*", "**/*.spec*", "examples" - ], - "references": [ - { "path": "packages/collector" }, - { "path": "packages/core" }, - { "path": "packages/hash" }, - { "path": "packages/registry" }, - { "path": "packages/server" }, - { "path": "packages/theme" }, - { "path": "packages/theme-css" }, - { "path": "packages/trousers" }, - { "path": "packages/utils" } ] } diff --git a/yarn.lock b/yarn.lock index d8a3805..0134f94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,374 +2,499 @@ # yarn lockfile v1 -"@babel/code-frame@7.5.5": - version "7.5.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha1-vAeC9tafe31JUxIZaZuYj2aaj50= - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" - integrity sha1-1UgcUJXaocV+FuVMb5GYRDr7Sf8= - dependencies: - "@babel/highlight" "^7.10.1" +"@babel/code-frame@7.8.3": + version "7.8.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4= + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha1-Fo2ho26Q2miujUnA8bSMfGJJITo= + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.12.5.tgz#f56db0c4bb1bbbf221b4e81345aab4141e7cb0e9" + integrity sha1-9W2wxLsbu/IhtOgTRaq0FB58sOk= + +"@babel/compat-data@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha1-kym0eCp9a71+71fhGt35HuPvHkE= + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5": + version "7.12.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha1-G0NohOHjv/b7EyjcArIIdZ3pKtg= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" -"@babel/compat-data@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.10.1.tgz#b1085ffe72cd17bf2c0ee790fc09f9626011b2db" - integrity sha1-sQhf/nLNF78sDueQ/An5YmARsts= - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" +"@babel/core@^7.12.7": + version "7.12.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha1-/UUMTsEM27mA4pKLeqeihIRZP8g= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.7.5": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.10.2.tgz#bd6786046668a925ac2bd2fd95b579b92a23b36a" - integrity sha1-vWeGBGZoqSWsK9L9lbV5uSojs2o= - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.2" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.2" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.2" +"@babel/core@^7.7.7": + version "7.12.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.12.8.tgz#8ad76c1a7d2a6a3beecc4395fa4f7b4cb88390e6" + integrity sha1-itdsGn0qajvuzEOV+k97TLiDkOY= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.8" + "@babel/types" "^7.12.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" - lodash "^4.17.13" + lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" - integrity sha1-D6W1sjiduL/fzDSStVHuIPXdaak= +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha1-osUN5ci21wirlb5eYFOTbBiEpN4= dependencies: - "@babel/types" "^7.10.2" + "@babel/types" "^7.12.5" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" - integrity sha1-9tCKzG9wu9WbQ2JiVT+y4lmhomg= +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha1-W/DUlaP3V6w72ki1vzs7ownHK6M= dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz#0ec7d9be8174934532661f87783eb18d72290059" - integrity sha1-DsfZvoF0k0UyZh+HeD6xjXIpAFk= +"@babel/helper-annotate-as-pure@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" + integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/types" "^7.12.10" -"@babel/helper-builder-react-jsx-experimental@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz#9a7d58ad184d3ac3bafb1a452cec2bad7e4a0bc8" - integrity sha1-mn1YrRhNOsO6+xpFLOwrrX5KC8g= +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha1-uwt18xv5jL+f8UPBrleLhydK4aM= dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-module-imports" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz#a327f0cf983af5554701b1215de54a019f09b532" - integrity sha1-oyfwz5g69VVHAbEhXeVKAZ8JtTI= +"@babel/helper-builder-react-jsx-experimental@^7.12.4": + version "7.12.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha1-VfwerVJCyqDKKHXcuO7W0xHlD0g= dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" -"@babel/helper-compilation-targets@^7.10.2": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" - integrity sha1-oX2XI7bix1ApnSoU1GN8dpNtgoU= +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha1-gJXN2/+Fjm+pwyba7lSi8nMsHV0= dependencies: - "@babel/compat-data" "^7.10.1" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha1-y0cMdhmNtqJOnbyJhydWMeXSmDE= + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.1": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz#7474295770f217dbcf288bf7572eb213db46ee67" - integrity sha1-dHQpV3DyF9vPKIv3Vy6yE9tG7mc= - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - -"@babel/helper-create-regexp-features-plugin@^7.10.1", "@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" - integrity sha1-G4/uqxWUy8+/OrWju8q6wEaO/b0= - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz#5e69ee8308648470dd7900d159c044c10285221d" - integrity sha1-XmnugwhkhHDdeQDRWcBEwQKFIh0= - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz#e9d76305ee1162ca467357ae25df94f179af2b7e" - integrity sha1-6ddjBe4RYspGc1euJd+U8XmvK34= - dependencies: - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-function-name@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" - integrity sha1-kr1jgpv8khWsqdne+oX1a1OUVPQ= - dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-get-function-arity@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" - integrity sha1-cwM5CoG6fLWWE4laGSuThQ43P30= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-hoist-variables@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz#7e77c82e5dcae1ebf123174c385aaadbf787d077" - integrity sha1-fnfILl3K4evxIxdMOFqq2/eH0Hc= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" - integrity sha1-Qyln/X4SpK/vZsRofUyiK8BFbxU= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" - integrity sha1-3TMb1FvMxWbOdwBOnQX+F63ROHY= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha1-JOLwjuaDLGCxV7sJNshr73IQxiI= - dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" - integrity sha1-tKHyVhhwzhJHzt2wKjhg+pbXJUM= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" - integrity sha1-7Fpc8O7JJbZsYFgDKLEiwBIwoSc= - -"@babel/helper-regex@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" - integrity sha1-Ahzxp7qZgi+ZMiKgAcw/7IMlW5Y= - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz#bad6aaa4ff39ce8d4b82ccaae0bfe0f7dbb5f432" - integrity sha1-utaqpP85zo1Lgsyq4L/g99u19DI= - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-wrap-function" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha1-7GhZ0gxdgIf2otxOAU23Iol18T0= - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha1-CPt+Iqzp64Mm9+OSChwgUvE9hR4= - dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha1-xvS+HLwV46ho5MZKF9XTHXVNo18= - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-validator-identifier@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" - integrity sha1-V3CwwagmxPU/Xt5eFTFj4DGOlLU= - -"@babel/helper-wrap-function@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" - integrity sha1-lW0TENZpYlenr9R+TELf2l387ck= - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helpers@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" - integrity sha1-poJ7fLl1ydnO9f1h2Rn2DYhEqXM= - dependencies: - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/highlight@^7.0.0", "@babel/highlight@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" - integrity sha1-hB0Ji6YTuhpCeis4PXnjVVLDiuA= - dependencies: - "@babel/helper-validator-identifier" "^7.10.1" +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha1-PEWZj0Me3UqSFMXx060USKYTf24= + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha1-GLEwLUZ3+dxHQP6MntlmgOKdN+g= + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha1-tTwQ23imQIABUmkrEzkxR6y5uzA= + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha1-gAakZmlcSthqKl8vsVtfLDGtVjM= + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo= + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha1-mMHL6g4jMvM/mkZhuM4VBbLBm6I= + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha1-1JsAHR1aaMpeZgTdoBpil/fJOB4= + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha1-+6Dy/P8/ugDm7LZku15uJuLWFlw= + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha1-G/wCKfeUmI927QpNTpCGCFC1Tfs= + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha1-eVT+xx9bMsSOSzA7Q3w0RT/XJHw= + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha1-UNyWQT1ZT5lad5BZBbBYk813lnM= + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha1-L3WoMSadT2d95JmG3/WZJ1M883U= + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha1-Mt+7eYmQc8QVVXBToZvQVarlCuA= + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha1-jE27+RYxT2BH3AXmoiFwdCODR/0= + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha1-8AmhdUO7u84WsGIGrnO2PT/KaNk= + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha1-MkJ+WqYVR9OOsebq9f0UJv2tkTY= + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha1-Ri3GOn5DWt6EaDhcY9K4TM5LPL8= + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha1-+KSRJErPamdhWKxCBykRuoOtCZ8= + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI= + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha1-F1VnOAw+d9YP+YpUuwFf548heNk= + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha1-MzIzn8TR+78cJ9eVjCfTRwjpkNk= + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha1-Ghukp2jZtYMQ7aUWxEmRP+ZHEW4= + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha1-fRvf1ldTU4+r5sOFls23bZrGAUM= + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" - integrity sha1-hxgH8QRCuS/5fkeDubVPagyoEtA= +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha1-tK8y3dRzwL+mQ71/8HKLjnG4HqA= + +"@babel/parser@^7.12.10": + version "7.12.10" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" + integrity sha1-gkYA1Z6WrqJqWir1qdgSrwXDroE= + +"@babel/parser@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" + integrity sha1-/uezn+gJ0Oc+WyXuyvV4DvPXMFY= -"@babel/plugin-proposal-async-generator-functions@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz#6911af5ba2e615c4ff3c497fe2f47b35bf6d7e55" - integrity sha1-aRGvW6LmFcT/PEl/4vR7Nb9tflU= +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha1-3GwRcOJ9isqZ/2X0klvQaxyQVQ4= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.7.0": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" - integrity sha1-BGvH9lULsI2b0dTwYPX1pPEIfgE= +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha1-oIL/VB8qKaSCEGW4rdk0bAwW5d4= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-decorators@^7.12.1": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.12.tgz#067a6d3d6ca86d54cf56bb183239199c20daeafe" + integrity sha512-fhkE9lJYpw2mjHelBpM2zCbaA11aov2GJs7q4cFaXNrWx0H3bW58H9Esy2rdtYOghFBEYUDRIpvlgi+ZD+AvvQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" -"@babel/plugin-proposal-dynamic-import@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" - integrity sha1-42l53B3Dtz9taBb8SVHaI2NIjvA= +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha1-Q+tcKjSH7NmMXI6otf22midJstw= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" - integrity sha1-seaR7iTGUbWl4yITIisjeXNK/wk= +"@babel/plugin-proposal-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a" + integrity sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.12.1" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha1-i5uPN2stiPXdd05NJKXMLjZ5ttQ= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha1-1FQjtRdxTu3VYhqd/cA/qfTrJBw= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" - integrity sha1-AtyiFnOEL/L+djrCU3d/I16bv3g= +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha1-8sSQ024bPJZZJBA0pdLNUCY6J1E= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha1-PtT/8xwBXn8/FGfxkNvlRc17BGw= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" - integrity sha1-qaOLw094vf2YHnkcJ8b9zsR4wSM= +"@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz#b1ce757156d40ed79d59d467cb2b154a5c4149ba" + integrity sha1-sc51cVbUDtedWdRnyysVSlxBSbo= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-numeric-separator@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha1-i/JT3oE5CZ/qGTspfSOp1AbvBWs= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.10.1", "@babel/plugin-proposal-object-rest-spread@^7.6.2": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" - integrity sha1-y6RJCKyfFCZQtKZbiqBr80eNX7Y= +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha1-3vm9A86g+bcig9rA7CLSicdpEGk= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" - integrity sha1-yfhtmTBfn6UxtWj/WrjJZLiyI9I= +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha1-zMJCGvZNOq5QtVinHO3pKaWrKUI= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz#15f5d6d22708629451a91be28f8facc55b0e818c" - integrity sha1-FfXW0icIYpRRqRvij4+sxVsOgYw= +"@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha1-zOEiID/IoyeUKW/Dd8be2vQ2N5c= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" - integrity sha1-7YXoBYqw/jCcP0SOXhtzyonNtZg= +"@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha1-4C8OobXcWdQB7Bb7gkZ59oPTMDw= dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" - integrity sha1-3AT+sl4t1wwSsF1oAZDhOPosDG8= +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha1-hoFPbnohN0yYDBDTi0ST5wP0o4k= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha1-Khg5WNQXdluerjNPR3WOXWqC4HI= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -385,33 +510,54 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.1", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" - integrity sha1-1bwGRZE99bF61+2g+iMIMwveNMU= +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha1-vLKXxTZueb663vUJVJzZOwTxmXg= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd" + integrity sha1-gai1NbKER2xBvm3gaFOogCuYxd0= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM= dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-flow@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz#cd4bbca62fb402babacb174f64f8734310d742f0" - integrity sha1-zUu8pi+0Arq6yxdPZPhzQxDXQvA= +"@babel/plugin-syntax-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz#a9eb31881f4f9a1115a3d2c6d64ac3f6016b5a9d" + integrity sha1-qesxiB9PmhEVo9LG1krD9gFrWp0= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha1-AolkqbqA28CUyRXEh618TnpmRlo= + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha1-p3Zw2avm1j6Kyt9MMbsetaUGu90= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.1.tgz#3e59120ed8b3c2ccc5abb1cfc7aaa3ea01cd36b6" - integrity sha1-PlkSDtizwszFq7HPx6qj6gHNNrY= + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha1-7mATSMNw+jNNIge+FYd3SWUh/VE= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -420,19 +566,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz#0ae371134a42b91d5418feb3c8c8d43e1565d2da" - integrity sha1-CuNxE0pCuR1UGP6zyMjUPhVl0to= +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha1-nZ01fMgYqnrnk1kXwSV/Z2d6CSY= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.1.tgz#fffee77b4934ce77f3b427649ecdddbec1958550" - integrity sha1-//7ne0k0znfztCdkns3dvsGVhVA= +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha1-ypHvRjA1MESLkGZSusLp/plB9pk= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" @@ -441,12 +587,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.1", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" - integrity sha1-JXYe50ELyM+XMnunQe6U5KYbfZk= +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" @@ -469,411 +615,509 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" - integrity sha1-i4cz+MVzl7PqpH3bqIQVhtyu82I= +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha1-3WwLNXrBuxQtmFN0UKMZYl0T0qA= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha1-Rgup13B3ZTgDw90uZz921mtAKeU= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" - integrity sha1-y17jo28IY8BurQtAm0zEOoibKVs= +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha1-gIP/yGrI53f74ktZZ8SyUh88srM= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" - integrity sha1-5RU+saPgKPeRlO2Kekv1X4YrIGI= +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha1-OEmknMKiLpdDy9a1KSbTAzcimvE= dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" - integrity sha1-FGhW51bVSyD/8UuBlFaz4BgguF0= +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha1-8qGjZb3itxEuCm3tkGf918B5Bdk= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" - integrity sha1-Rwktico0WBFFHNDcXZFgWYJwXV4= +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha1-8O5yeHS0KiCKSKWGuEw9IiwrvvE= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" - integrity sha1-bhHdbE365w9UBICkcCR37XZtcz8= +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha1-ZeZQ/K3dPYjdzmfA+DSj1DajLbY= dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-define-map" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz#59aa399064429d64dce5cf76ef9b90b7245ebd07" - integrity sha1-Wao5kGRCnWTc5c9275uQtyRevQc= +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha1-1oz2ybf4OKikFEutvpdUHqCQSFI= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" - integrity sha1-q9WOUTN4Fco6IqM2uF9iuZjnGQc= +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha1-uaVw/g0KjUYBFkE8tPl+jgiy+Ec= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" - integrity sha1-kguf7C14u1frtkpkTVwrpnzBBO4= +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha1-odFsFIYoF7ZAnApnjW+Tc8qc2XU= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" - integrity sha1-yQCnk76wlrydTQqdDN4ZUY/8g7k= +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha1-dFZhuropWsBuaGgieXpp+6osoig= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" - integrity sha1-J5wxFnVqYN1ub15Ii6eVfbnFnrM= +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha1-sPLtNWuhvhQo7K8Sj/iiTwKDCuA= dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz#59eafbff9ae85ec8932d4c16c068654be814ec5e" - integrity sha1-Wer7/5roXsiTLUwWwGhlS+gU7F4= +"@babel/plugin-transform-flow-strip-types@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha1-hDDez6frKupUFO1KP6bhZSt9d8Q= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-flow" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-for-of@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" - integrity sha1-/wERl4TrDuMiWOhkYVe6JQH8/aU= +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha1-B2QPKIZ+0W+VEcmciIKR9WCSHPo= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" - integrity sha1-TtRv1uHY/eKi7HsDxm2FPSySQn0= +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha1-LsdiWMcP4IxtfaFUADpIBiDrpmc= dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" - integrity sha1-V5T42oKEayLk5mMeoWWLznCOtGo= +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha1-1zuAOiazcBfd+dO7j03Fi/uAb1c= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" - integrity sha1-kDR8ujG8pvOUs/e9ldK7/Z/OLzk= +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha1-SWA4YC2vFRSmTUPY4Xy7J1Xgw60= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" - integrity sha1-ZZUOjgV5fr0v5TK5bhn8VIKh1So= +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha1-MVQwCwJhhWZu67DA7X+EFf789vk= dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" - integrity sha1-1f9LRBPtl//e2ZlhBW4fuYD7kwE= +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.7.5": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha1-+kAxJFQmNseGz5tGCg/7tIqG5kg= dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz#9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6" - integrity sha1-mWLksKxqry4gQxraPY7HIILL/7Y= +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha1-Zj/qYg1ZPJPyFKRkzTmb9txoMIY= dependencies: - "@babel/helper-hoist-variables" "^7.10.1" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" - integrity sha1-6ggJEf/G6yGEClGXo57eTuZ7FZU= +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha1-61ohjWscaPPWIXuPosyC/sZUeQI= dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw= +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha1-tAf1yWvg2fX4hGdJf6grMKw+h1M= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" - integrity sha1-buQaXmSNp2MuIrb7VAEuh/YS8yQ= +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha1-gAc/Au4bstNlw0FkkOCFyVdZ3sA= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" - integrity sha1-LjAWsK2/JimDvw1RIdZ2pe2cT94= +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha1-TqCGlrjS5lhB0MdwZIKwSL7RBm4= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" - integrity sha1-slk4o8X64DVBRKcgsHsydm9oPd0= +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha1-0uljsDh3FlDJIu/1k3mclthTJV0= dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" - integrity sha1-z/xzFSGSMO2B3FPkYlv4aBW2BQ0= +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha1-QbyBIA1zCrtEVquLP71VN7Wa3s0= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.2.0", "@babel/plugin-transform-react-constant-elements@^7.6.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz#c7f117a54657cba3f9d32012e050fc89982df9e1" - integrity sha1-x/EXpUZXy6P50yAS4FD8iZgt+eE= +"@babel/plugin-transform-react-display-name@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha1-HLzQw7HWZIxVN0oi/JtrflNBwA0= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz#e6a33f6d48dfb213dda5e007d0c7ff82b6a3d8ef" - integrity sha1-5qM/bUjfshPdpeAH0Mf/graj2O8= +"@babel/plugin-transform-react-jsx-development@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz#4c2a647de79c7e2b16bfe4540677ba3121e82a08" + integrity sha1-TCpkfeecfisWv+RUBne6MSHoKgg= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-builder-react-jsx-experimental" "^7.12.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-jsx-development@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz#1ac6300d8b28ef381ee48e6fec430cc38047b7f3" - integrity sha1-GsYwDYso7zge5I5v7EMMw4BHt/M= +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha1-70PLyioU8b0XgH2+Q3b/idcUzyg= dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-self@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz#22143e14388d72eb88649606bb9e46f421bc3821" - integrity sha1-IhQ+FDiNcuuIZJYGu55G9CG8OCE= +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha1-0H3mhj9GjaCAntz3mhqoziqComs= dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz#30db3d4ee3cdebbb26a82a9703673714777a4273" - integrity sha1-MNs9TuPN67smqCqXA2c3FHd6QnM= +"@babel/plugin-transform-react-jsx@^7.12.10": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e" + integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.12.10" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/types" "^7.12.12" -"@babel/plugin-transform-react-jsx@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz#91f544248ba131486decb5d9806da6a6e19a2896" - integrity sha1-kfVEJIuhMUht7LXZgG2mpuGaKJY= +"@babel/plugin-transform-react-jsx@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f" + integrity sha1-ixTUX27M1Bt/kkvLZcAh6fCgb38= dependencies: - "@babel/helper-builder-react-jsx" "^7.10.1" - "@babel/helper-builder-react-jsx-experimental" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-pure-annotations@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.1.tgz#f5e7c755d3e7614d4c926e144f501648a5277b70" - integrity sha1-9efHVdPnYU1Mkm4UT1AWSKUne3A= +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha1-BdRvCrTRM5rFmt8goUYskbN6GkI= dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz#10e175cbe7bdb63cc9b39f9b3f823c5c7c5c5490" - integrity sha1-EOF1y+e9tjzJs5+bP4I8XHxcVJA= +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha1-Xwoo2EL2RiKB8GqWToi6jXq0l1M= dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" - integrity sha1-D8ECcxK00cMnaleJDIrjvMC2SoY= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-shorthand-properties@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" - integrity sha1-6LVPI4ocy65ILE3OlGGArnsxQ/M= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-spread@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" - integrity sha1-DG1higxEYaJ0QYRgooycz1I5p8g= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-sticky-regex@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" - integrity sha1-kPyJt1JiKL7ZhCz/NYgnCno5OwA= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - -"@babel/plugin-transform-template-literals@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz#914c7b7f4752c570ea00553b4284dad8070e8628" - integrity sha1-kUx7f0dSxXDqAFU7QoTa2AcOhig= - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-typeof-symbol@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" - integrity sha1-YMAjm2mWXRZrgKhN5zFcG8fguw4= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-unicode-escapes@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" - integrity sha1-rdD4SD2rYFcNngPOzvbAI6qMmUA= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-unicode-regex@^7.10.1": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" - integrity sha1-a1jyrqe2jfN6xQJdnIh1JEOmtD8= - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/preset-env@^7.4.5": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-env/-/preset-env-7.10.2.tgz#715930f2cf8573b0928005ee562bed52fb65fdfb" - integrity sha1-cVkw8s+Fc7CSgAXuVivtUvtl/fs= - dependencies: - "@babel/compat-data" "^7.10.1" - "@babel/helper-compilation-targets" "^7.10.2" - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-proposal-async-generator-functions" "^7.10.1" - "@babel/plugin-proposal-class-properties" "^7.10.1" - "@babel/plugin-proposal-dynamic-import" "^7.10.1" - "@babel/plugin-proposal-json-strings" "^7.10.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" - "@babel/plugin-proposal-numeric-separator" "^7.10.1" - "@babel/plugin-proposal-object-rest-spread" "^7.10.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" - "@babel/plugin-proposal-optional-chaining" "^7.10.1" - "@babel/plugin-proposal-private-methods" "^7.10.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha1-b9/IzH7cxCs2p8EhiMZ4fIc63Ng= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha1-C/nKxVUPzgz98ENCD2YdZF/cdeM= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha1-Un+fMRvk7H/cK3m7ife/iEs+Hh4= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha1-XCTPUN45bTDpmvyNHHAOi84PXK8= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha1-VgIkYTqyOYdFOUjtIdCwsZP6f60= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha1-tD7ObtmnnAxxEZ9XbSme8J2UKEM= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha1-nKa+ND1CUS+8LmgjaoKuZLx694o= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha1-2SzAr1BNUQ4mp1Sn28LlyM2cerQ= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha1-UjK5+BzLBwcLfDw2xnobePGEVwk= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha1-zJZh9hOQ21xl4/66zO/Vxqw/rss= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.12.1": + version "7.12.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha1-nH5cqCoZ78hlOEu0mJFI0u5desI= + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-class-properties" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.1" - "@babel/plugin-transform-arrow-functions" "^7.10.1" - "@babel/plugin-transform-async-to-generator" "^7.10.1" - "@babel/plugin-transform-block-scoped-functions" "^7.10.1" - "@babel/plugin-transform-block-scoping" "^7.10.1" - "@babel/plugin-transform-classes" "^7.10.1" - "@babel/plugin-transform-computed-properties" "^7.10.1" - "@babel/plugin-transform-destructuring" "^7.10.1" - "@babel/plugin-transform-dotall-regex" "^7.10.1" - "@babel/plugin-transform-duplicate-keys" "^7.10.1" - "@babel/plugin-transform-exponentiation-operator" "^7.10.1" - "@babel/plugin-transform-for-of" "^7.10.1" - "@babel/plugin-transform-function-name" "^7.10.1" - "@babel/plugin-transform-literals" "^7.10.1" - "@babel/plugin-transform-member-expression-literals" "^7.10.1" - "@babel/plugin-transform-modules-amd" "^7.10.1" - "@babel/plugin-transform-modules-commonjs" "^7.10.1" - "@babel/plugin-transform-modules-systemjs" "^7.10.1" - "@babel/plugin-transform-modules-umd" "^7.10.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.10.1" - "@babel/plugin-transform-object-super" "^7.10.1" - "@babel/plugin-transform-parameters" "^7.10.1" - "@babel/plugin-transform-property-literals" "^7.10.1" - "@babel/plugin-transform-regenerator" "^7.10.1" - "@babel/plugin-transform-reserved-words" "^7.10.1" - "@babel/plugin-transform-shorthand-properties" "^7.10.1" - "@babel/plugin-transform-spread" "^7.10.1" - "@babel/plugin-transform-sticky-regex" "^7.10.1" - "@babel/plugin-transform-template-literals" "^7.10.1" - "@babel/plugin-transform-typeof-symbol" "^7.10.1" - "@babel/plugin-transform-unicode-escapes" "^7.10.1" - "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.2" - browserslist "^4.12.0" + "@babel/types" "^7.12.1" core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-flow@^7.0.0": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-flow/-/preset-flow-7.10.1.tgz#29498ec23baf9aa6dae50c568ceba09d71692b82" - integrity sha1-KUmOwjuvmqba5QxWjOugnXFpK4I= +"@babel/preset-env@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55" + integrity sha1-VOoh2+ksr28QyxoKV2rcTr8JS1U= + dependencies: + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.7" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.7" + core-js-compat "^3.7.0" + semver "^5.5.0" + +"@babel/preset-flow@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.12.1.tgz#1a81d376c5a9549e75352a3888f8c273455ae940" + integrity sha512-UAoyMdioAhM6H99qPoKvpHMzxmNVXno8GYU/7vZmGaHk6/KqfDYL1W0NxszVbJ2EP271b7e6Ox+Vk2A9QsB3Sw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-transform-flow-strip-types" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.12.1" "@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha1-EyQrU7XvjIg8PPfd3VWzbOgPvHI= + version "0.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha1-Ni8raMZihClw/bXiVP/I/BwuQV4= dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -881,65 +1125,153 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.0.0": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-react/-/preset-react-7.10.1.tgz#e2ab8ae9a363ec307b936589f07ed753192de041" - integrity sha1-4quK6aNj7DB7k2WJ8H7XUxkt4EE= - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-transform-react-display-name" "^7.10.1" - "@babel/plugin-transform-react-jsx" "^7.10.1" - "@babel/plugin-transform-react-jsx-development" "^7.10.1" - "@babel/plugin-transform-react-jsx-self" "^7.10.1" - "@babel/plugin-transform-react-jsx-source" "^7.10.1" - "@babel/plugin-transform-react-pure-annotations" "^7.10.1" - -"@babel/runtime-corejs3@^7.7.4", "@babel/runtime-corejs3@^7.8.3": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz#3511797ddf9a3d6f3ce46b99cc835184817eaa4e" - integrity sha1-NRF5fd+aPW885GuZzINRhIF+qk4= +"@babel/preset-react@^7.12.1": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9" + integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.10" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-react@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b" + integrity sha1-NtYdgyI7B7asTsVc8BarsPcL6Ds= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.7" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@^7.12.1", "@babel/preset-typescript@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" + integrity sha1-/H34GZ1qrnR4lvHmxh/IcgVmMqM= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-transform-typescript" "^7.12.1" + +"@babel/register@^7.12.1": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.10.tgz#19b87143f17128af4dbe7af54c735663b3999f60" + integrity sha512-EvX/BvMMJRAA3jZgILWgbsrHwBQvllC5T8B29McyME8DvkdOxk4ujESfrMvME8IHSDvWXrmMXxPvA/lx2gqPLQ== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.19" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime-corejs3@^7.10.2": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" + integrity sha1-/+6R2g60xtrggHdOlLpgY2jkFPQ= dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" - integrity sha1-0QPyHyYCSX04NIoy4AhjfVBtuDk= +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha1-QQ5+SHRB4bNgwpvnFdhw2bmFiC4= dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.1", "@babel/template@^7.3.3": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" - integrity sha1-4WcVSpTLXxSyjcWPU1bSFi9TmBE= - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.5": - version "7.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" - integrity sha1-u87zAx5BUqbAtQFH9JWN9Uyg3Sc= - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" +"@babel/template@^7.10.4", "@babel/template@^7.3.3": + version "7.10.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha1-MlGZbEIA68cdGo/EBfupQPNrong= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.5": + version "7.12.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" + integrity sha1-eKDGjI6KNeTKz9MduLswPVYG8JU= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.5" + "@babel/types" "^7.12.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/traverse@^7.12.8": + version "7.12.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.12.8.tgz#c1c2983bf9ba0f4f0eaa11dff7e77fa63307b2a4" + integrity sha1-wcKYO/m6D08OqhHf9+d/pjMHsqQ= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/traverse@^7.12.9": + version "7.12.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" + integrity sha1-+tJsly6rvBE1DgtpWXjebMjoWW8= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.10.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" - integrity sha1-MCg74xytDb9vsAvUBkHKDqZ1Fy0= +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.12.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha1-rg5V7xzOH7yIHNJvgjTrPmV+3JY= dependencies: - "@babel/helper-validator-identifier" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.10", "@babel/types@^7.12.12": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.7": + version "7.12.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" + integrity sha1-YDn/HiQmQKKUUsmuVyFi7JqPXRM= + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -947,80 +1279,85 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha1-daLotRy3WKdVPWgEpZMteqznXDk= -"@changesets/apply-release-plan@^3.1.0": - version "3.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/apply-release-plan/-/apply-release-plan-3.1.0.tgz#f0d8c4bd45cc65838be2c145186b137fae1d0842" - integrity sha1-8NjEvUXMZYOL4sFFGGsTf64dCEI= +"@changesets/apply-release-plan@^4.0.0": + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/apply-release-plan/-/apply-release-plan-4.1.0.tgz#ec67c9a0f507c19740d9344766e37dd51fc981ee" + integrity sha1-7GfJoPUHwZdA2TRHZuN91R/Jge4= dependencies: - "@babel/runtime" "^7.4.4" - "@changesets/config" "^1.1.0" + "@babel/runtime" "^7.10.4" + "@changesets/config" "^1.2.0" "@changesets/get-version-range-type" "^0.3.2" "@changesets/git" "^1.0.5" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" + detect-indent "^6.0.0" fs-extra "^7.0.1" lodash.startcase "^4.4.0" outdent "^0.5.0" - prettier "^1.18.2" + prettier "^1.19.1" resolve-from "^5.0.0" semver "^5.4.1" -"@changesets/assemble-release-plan@^2.0.4", "@changesets/assemble-release-plan@^2.1.0": - version "2.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/assemble-release-plan/-/assemble-release-plan-2.1.0.tgz#35295e13a29a6836f44f08176f4700b80eb22e64" - integrity sha1-NSleE6KaaDb0TwgXb0cAuA6yLmQ= +"@changesets/assemble-release-plan@^4.0.0": + version "4.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/assemble-release-plan/-/assemble-release-plan-4.0.1.tgz#37906bd89226274c6a67ba2598de001b617e01ab" + integrity sha1-N5Br2JImJ0xqZ7olmN4AG2F+Aas= dependencies: - "@babel/runtime" "^7.4.4" + "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" "@changesets/get-dependents-graph" "^1.1.3" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" semver "^5.4.1" "@changesets/cli@^2.6.2": - version "2.8.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/cli/-/cli-2.8.0.tgz#7cbaf05bdf262340ed3b65adb366c60b90f0e07b" - integrity sha1-fLrwW98mI0DtO2Wts2bGC5Dw4Hs= + version "2.11.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/cli/-/cli-2.11.2.tgz#6c2d9470a9c89e7389db5ac80069a77072079413" + integrity sha1-bC2UcKnInnOJ21rIAGmncHIHlBM= dependencies: - "@babel/runtime" "^7.4.4" - "@changesets/apply-release-plan" "^3.1.0" - "@changesets/assemble-release-plan" "^2.1.0" - "@changesets/config" "^1.1.0" + "@babel/runtime" "^7.10.4" + "@changesets/apply-release-plan" "^4.0.0" + "@changesets/assemble-release-plan" "^4.0.0" + "@changesets/config" "^1.4.0" "@changesets/errors" "^0.1.4" - "@changesets/get-release-plan" "^1.0.4" - "@changesets/git" "^1.0.5" + "@changesets/get-dependents-graph" "^1.1.3" + "@changesets/get-release-plan" "^2.0.1" + "@changesets/git" "^1.0.6" "@changesets/logger" "^0.0.5" "@changesets/pre" "^1.0.4" "@changesets/read" "^0.4.6" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.2.0" "@changesets/write" "^0.1.3" "@manypkg/get-packages" "^1.0.1" "@types/semver" "^6.0.0" boxen "^1.3.0" chalk "^2.1.0" enquirer "^2.3.0" + external-editor "^3.1.0" fs-extra "^7.0.1" human-id "^1.0.2" is-ci "^2.0.0" - meow "^5.0.0" + meow "^6.0.0" outdent "^0.5.0" p-limit "^2.2.0" preferred-pm "^3.0.0" semver "^5.4.1" spawndamnit "^2.0.0" term-size "^2.1.0" - tty-table "^2.7.0" + tty-table "^2.8.10" -"@changesets/config@^1.1.0": - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/config/-/config-1.1.0.tgz#35d96d12b27df905cc6d706eecf1cc378bf6cffe" - integrity sha1-NdltErJ9+QXMbXBu7PHMN4v2z/4= +"@changesets/config@^1.2.0", "@changesets/config@^1.4.0": + version "1.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/config/-/config-1.4.0.tgz#c157a4121f198b749f2bbc2e9015b6e976ece7d6" + integrity sha1-wVekEh8Zi3SfK7wukBW26Xbs59Y= dependencies: "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.1.3" "@changesets/logger" "^0.0.5" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.2.0" "@manypkg/get-packages" "^1.0.1" fs-extra "^7.0.1" + micromatch "^4.0.2" "@changesets/errors@^0.1.4": version "0.1.4" @@ -1040,17 +1377,17 @@ fs-extra "^7.0.1" semver "^5.4.1" -"@changesets/get-release-plan@^1.0.4": - version "1.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/get-release-plan/-/get-release-plan-1.0.4.tgz#9c0b830d8ef4aa0988379e7405d2d2ece29d604e" - integrity sha1-nAuDDY70qgmIN550BdLS7OKdYE4= +"@changesets/get-release-plan@^2.0.1": + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/get-release-plan/-/get-release-plan-2.0.1.tgz#b95d8f1a3cc719ff4b42b9b9aae72458d8787c13" + integrity sha1-uV2PGjzHGf9LQrm5quckWNh4fBM= dependencies: - "@babel/runtime" "^7.4.4" - "@changesets/assemble-release-plan" "^2.0.4" - "@changesets/config" "^1.1.0" + "@babel/runtime" "^7.10.4" + "@changesets/assemble-release-plan" "^4.0.0" + "@changesets/config" "^1.2.0" "@changesets/pre" "^1.0.4" "@changesets/read" "^0.4.6" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" "@changesets/get-version-range-type@^0.3.2": @@ -1058,14 +1395,14 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha1-gTGpkDXt0RqnpEw0HLsF5mhhjGc= -"@changesets/git@^1.0.5": - version "1.0.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/git/-/git-1.0.5.tgz#e392128a13b210c482324d0d329029a3f7613b10" - integrity sha1-45ISihOyEMSCMk0NMpApo/dhOxA= +"@changesets/git@^1.0.5", "@changesets/git@^1.0.6": + version "1.0.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/git/-/git-1.0.6.tgz#057e627e5d3fcb74bf6c18d7284e130ba5a7632e" + integrity sha1-BX5ifl0/y3S/bBjXKE4TC6WnYy4= dependencies: - "@babel/runtime" "^7.4.4" + "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^3.0.0" + "@changesets/types" "^3.1.1" "@manypkg/get-packages" "^1.0.1" is-subdir "^1.1.1" spawndamnit "^2.0.0" @@ -1078,17 +1415,17 @@ chalk "^2.1.0" "@changesets/parse@^0.3.6": - version "0.3.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/parse/-/parse-0.3.6.tgz#8c2c8480fc07d2db2c37469d4a8df10906a989c6" - integrity sha1-jCyEgPwH0tssN0adSo3xCQapicY= + version "0.3.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/parse/-/parse-0.3.7.tgz#1368136e2b83d5cff11b4d383a3032723530db99" + integrity sha1-E2gTbiuD1c/xG004OjAycjUw25k= dependencies: "@changesets/types" "^3.0.0" js-yaml "^3.13.1" "@changesets/pre@^1.0.4": - version "1.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/pre/-/pre-1.0.4.tgz#32aa9040f3798e8a46adc6c30cc4c02a617d1889" - integrity sha1-MqqQQPN5jopGrcbDDMTAKmF9GIk= + version "1.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/pre/-/pre-1.0.5.tgz#91e5e3b31b4a85ce37de72f6511a786f62f29b51" + integrity sha1-keXjsxtKhc433nL2URp4b2Lym1E= dependencies: "@babel/runtime" "^7.4.4" "@changesets/errors" "^0.1.4" @@ -1115,10 +1452,10 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/types/-/types-0.4.0.tgz#3413badb2c3904357a36268cb9f8c7e0afc3a804" integrity sha1-NBO62yw5BDV6NiaMufjH4K/DqAQ= -"@changesets/types@^3.0.0": - version "3.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/types/-/types-3.0.0.tgz#3804662aa455c1622282ec3253cf6ddd309eee65" - integrity sha1-OARmKqRVwWIiguwyU89t3TCe7mU= +"@changesets/types@^3.0.0", "@changesets/types@^3.1.0", "@changesets/types@^3.1.1", "@changesets/types@^3.2.0": + version "3.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@changesets/types/-/types-3.2.0.tgz#d8306d7219c3b19b6d860ddeb9d7374e2dd6b035" + integrity sha1-2DBtchnDsZtthg3eudc3Ti3WsDU= "@changesets/write@^0.1.3": version "0.1.3" @@ -1149,10 +1486,10 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.20": - version "10.0.28" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" - integrity sha1-u2WvcmKiNFk6npUsBB0PHJub7z0= +"@emotion/core@^10.1.1": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" + integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== dependencies: "@babel/runtime" "^7.5.5" "@emotion/cache" "^10.0.27" @@ -1175,7 +1512,7 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha1-u7/2iXj+/b5ozLUzvIy+HRr7VBM= -"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.8": +"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.6", "@emotion/is-prop-valid@^0.8.8": version "0.8.8" resolved "https://packages.atlassian.com/api/npm/npm-remote/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" integrity sha1-2yixxDaKJZtgqXMR1qlS1P0BrBo= @@ -1213,10 +1550,10 @@ "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.17": +"@emotion/styled@^10.0.23": version "10.0.27" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" - integrity sha1-Estn6R9610MeGHWx2DqUuBQTPq8= + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" + integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== dependencies: "@emotion/styled-base" "^10.0.27" babel-plugin-emotion "^10.0.27" @@ -1241,6 +1578,11 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha1-ju2YLi7m9/TkTCU+EpYpgHke/UY= +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha1-6QyfcXaLNzbnbX3WeD/Gwq+oi8g= + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1266,59 +1608,61 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha1-dwgAeZ1RDzcynFCKnt0Le0R9mrs= +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha1-TgS8RkAUNYsDq0k3gF7jagrrmPI= dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^25.5.4": - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" - integrity sha1-PvdBL3M5IQ8APN82ZGu8p4bv57Q= +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha1-djn8s4M9dIpGVq2lS94ZMFHkX60= dependencies: - "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.1" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^25.5.0" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-resolve-dependencies "^25.5.4" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - jest-watcher "^25.5.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha1-qjOwwhpxbGVoZjjn74FsDjoMezc= +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha1-ujZMxy4iHnnMjwqZVVv111d8+Sw= dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" "@jest/fake-timers@^24.9.0": version "24.9.0" @@ -1329,57 +1673,58 @@ jest-message-util "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha1-RjUuAFM8AkyQwrwq2fKVn38RQYU= +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha1-RZwym89wzuSvTX4/PmeEgSNTWq0= dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha1-XkXp3o0ihxavMlfus5kcwuFiyog= +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha1-W2E7eKGqJlWukI66Y4zJaiDfcgo= dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^25.5.1": - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" - integrity sha1-y2hrzGgPZkwtuvfthz6TqmgRU4s= +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha1-H1GLmWN6Xxgwe9Ps+SdfaIKmZ/Y= dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.5.1" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" - string-length "^3.1.0" + string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" + v8-to-istanbul "^7.0.0" optionalDependencies: - node-notifier "^6.0.0" + node-notifier "^8.0.0" "@jest/source-map@^24.9.0": version "24.9.0" @@ -1390,10 +1735,10 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha1-31wg1gUKopLCxtPw0sdgavMVvRs= +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha1-Ka9eHi4yTK/MyTbyGDCfVKtp1TU= dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" @@ -1408,45 +1753,44 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha1-E5oEMjDN7/6botg0Gyfy78d86Hw= +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha1-VdpYti3xNFdsyVR276X3lJ4/Xxg= dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha1-m05oWzaVTDjQ8FLlltKBYb3Itzc= +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha1-mOikUQCGOIbQdCBej/3Fp+tYKxc= dependencies: - "@jest/test-result" "^25.5.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha1-BGndwXaZ3Sv5hdtV+g+5MJ9cLbM= +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha1-WsV8X6GtF7Kq6D5z5FgTiU3PLks= dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -1460,15 +1804,16 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha1-TWpHk/e5WZ/DaAh3uFapfbzPKp0= +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha1-vvWlMgMOHYii9abZM/hOlyJu1I4= dependencies: "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" "@manypkg/cli@^0.11.1": version "0.11.1" @@ -1491,10 +1836,10 @@ spawndamnit "^2.0.0" validate-npm-package-name "^3.0.0" -"@manypkg/find-root@^1.0.0": - version "1.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@manypkg/find-root/-/find-root-1.0.0.tgz#b8e96d7c24678b1b65c2057ae47df750669197d7" - integrity sha1-uOltfCRnixtlwgV65H33UGaRl9c= +"@manypkg/find-root@^1.1.0": + version "1.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" + integrity sha1-pi2O0c1+fUwR2dUqg5dGC11K0p8= dependencies: "@babel/runtime" "^7.5.5" "@types/node" "^12.7.1" @@ -1502,12 +1847,12 @@ fs-extra "^8.1.0" "@manypkg/get-packages@^1.0.1": - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@manypkg/get-packages/-/get-packages-1.0.1.tgz#0b46907555626ae773abb828e6c1cb313aa44777" - integrity sha1-C0aQdVViaudzq7go5sHLMTqkR3c= + version "1.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@manypkg/get-packages/-/get-packages-1.1.1.tgz#7c7e72d0061ab2e61d2ce4da58ce91290a60ac8d" + integrity sha1-fH5y0AYasuYdLOTaWM6RKQpgrI0= dependencies: "@babel/runtime" "^7.5.5" - "@manypkg/find-root" "^1.0.0" + "@manypkg/find-root" "^1.1.0" fs-extra "^8.1.0" globby "^11.0.0" read-yaml-file "^1.1.0" @@ -1546,210 +1891,473 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@reach/router@^1.2.1": - version "1.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@reach/router/-/router-1.3.3.tgz#58162860dce6c9449d49be86b0561b5ef46d80db" - integrity sha1-WBYoYNzmyUSdSb6GsFYbXvRtgNs= +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha1-3hAwcNrA9IzknPZpPCOvWcD3BGQ= + dependencies: + mkdirp "^1.0.4" + +"@pmmmwh/react-refresh-webpack-plugin@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@popperjs/core@^2.5.4": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.6.0.tgz#f022195afdfc942e088ee2101285a1d31c7d727f" + integrity sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw== + +"@preconstruct/cli@^2.0.0": + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@preconstruct/cli/-/cli-2.0.0.tgz#bface3fb95da6dabc8da6eae60802b6867f3fb72" + integrity sha1-v6zj+5XabavI2m6uYIAraGfz+3I= + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/core" "^7.7.7" + "@babel/helper-module-imports" "^7.10.4" + "@babel/runtime" "^7.7.7" + "@preconstruct/hook" "^0.4.0" + "@rollup/plugin-alias" "^3.1.1" + "@rollup/plugin-commonjs" "^15.0.0" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^9.0.0" + "@rollup/plugin-replace" "^2.3.3" + builtin-modules "^3.1.0" + chalk "^4.1.0" + dataloader "^2.0.0" + detect-indent "^6.0.0" + enquirer "^2.3.6" + estree-walker "^2.0.1" + fast-deep-equal "^2.0.1" + fast-glob "^3.2.4" + fs-extra "^9.0.1" + is-ci "^2.0.0" + is-reference "^1.2.1" + jest-worker "^26.3.0" + magic-string "^0.25.7" + meow "^7.1.0" + ms "^2.1.2" + normalize-path "^3.0.0" + npm-packlist "^2.1.2" + p-limit "^3.0.2" + parse-glob "^3.0.4" + parse-json "^5.1.0" + quick-lru "^5.1.1" + resolve "^1.17.0" + resolve-from "^5.0.0" + rollup "^2.32.0" + terser "^5.2.1" + v8-compile-cache "^2.1.1" + +"@preconstruct/hook@^0.4.0": + version "0.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@preconstruct/hook/-/hook-0.4.0.tgz#c15dfacfc6e60652a6837209c2fd87f0240b099e" + integrity sha1-wV36z8bmBlKmg3IJwv2H8CQLCZ4= + dependencies: + "@babel/core" "^7.7.7" + "@babel/plugin-transform-modules-commonjs" "^7.7.5" + pirates "^4.0.1" + source-map-support "^0.5.16" + +"@reach/router@^1.3.3": + version "1.3.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" + integrity sha1-0ldLGTcKcMgEgO2R89qEATbRD4w= dependencies: create-react-context "0.3.0" invariant "^2.2.3" prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@rollup/plugin-alias@^3.1.1": + version "3.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz#bb96cf37fefeb0a953a6566c284855c7d1cd290c" + integrity sha1-u5bPN/7+sKlTplZsKEhVx9HNKQw= + dependencies: + slash "^3.0.0" + +"@rollup/plugin-commonjs@^15.0.0": + version "15.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz#1e7d076c4f1b2abf7e65248570e555defc37c238" + integrity sha1-Hn0HbE8bKr9+ZSSFcOVV3vw3wjg= + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha1-VOCYZ65pY8WThE2L16nHGClElvM= + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^9.0.0": + version "9.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" + integrity sha1-Ob0ANM6RJrOcFplpX0QLS30rYuY= + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/plugin-replace@^2.3.3": + version "2.3.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" + integrity sha1-fdhMF3VdYrUJV38ts361JNfKiMo= + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s= + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinonjs/commons@^1.7.0": - version "1.8.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" - integrity sha1-yNaIIahUxVW7oXLzsGlZoAObI20= + version "1.8.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + integrity sha1-598A+YogMyT23HzGBsrZ1KirIhc= dependencies: type-detect "4.0.8" -"@storybook/addon-storysource@^5.2.8": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/addon-storysource/-/addon-storysource-5.3.19.tgz#ae693e88db5d220cb256a9ef4a2366c300e8d88c" - integrity sha1-rmk+iNtdIgyyVqnvSiNmwwDo2Iw= +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha1-KTZ0/MsyYqx4LHqt/eyoaxDHXEA= dependencies: - "@storybook/addons" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/router" "5.3.19" - "@storybook/source-loader" "5.3.19" - "@storybook/theming" "5.3.19" + "@sinonjs/commons" "^1.7.0" + +"@storybook/addon-storysource@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-storysource/-/addon-storysource-6.1.18.tgz#d66cb074b005a101bfcbf9b8b8163b271a83f849" + integrity sha512-Wkm5dvUYD6dQZq4kdav6VmEgP12uStn0QJfMycEqfztuZdeZWhFk6gLOsaK74v6/YB5whrDF+PlJTCLBrxseIw== + dependencies: + "@storybook/addons" "6.1.18" + "@storybook/api" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/components" "6.1.18" + "@storybook/router" "6.1.18" + "@storybook/source-loader" "6.1.18" + "@storybook/theming" "6.1.18" core-js "^3.0.1" estraverse "^4.2.0" - loader-utils "^1.2.3" - prettier "^1.16.4" + loader-utils "^2.0.0" + prettier "~2.0.5" prop-types "^15.7.2" - react-syntax-highlighter "^11.0.2" - regenerator-runtime "^0.13.3" - util-deprecate "^1.0.2" + react-syntax-highlighter "^13.5.0" + regenerator-runtime "^0.13.7" + +"@storybook/addons@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.1.18.tgz#b953f355350376808914f015b689dbda4e20b864" + integrity sha512-sI/ifk3RLswItRUejt4tCi3IMS9oBUd2NK4Kns1PF+x4NIry/yuOeE/de3Dz5tPjJhg9jJuBDLhxEaqRFq3Uzg== + dependencies: + "@storybook/api" "6.1.18" + "@storybook/channels" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/core-events" "6.1.18" + "@storybook/router" "6.1.18" + "@storybook/theming" "6.1.18" + core-js "^3.0.1" + global "^4.3.2" + regenerator-runtime "^0.13.7" + +"@storybook/addons@^6.1.11": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.1.15.tgz#09eb8d962f58bd20b4ac2f83b515831c83226352" + integrity sha512-ENyHapLFOG93VaoQXPX8O3IWjLRyVBox9C9P20LMruKX/SfXAXx20qsoAWKKPGssopyOin17aoQX9pj+lFmCZQ== + dependencies: + "@storybook/api" "6.1.15" + "@storybook/channels" "6.1.15" + "@storybook/client-logger" "6.1.15" + "@storybook/core-events" "6.1.15" + "@storybook/router" "6.1.15" + "@storybook/theming" "6.1.15" + core-js "^3.0.1" + global "^4.3.2" + regenerator-runtime "^0.13.7" -"@storybook/addons@5.3.19", "@storybook/addons@^5.2.8", "@storybook/addons@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/addons/-/addons-5.3.19.tgz#3a7010697afd6df9a41b8c8a7351d9a06ff490a4" - integrity sha1-OnAQaXr9bfmkG4yKc1HZoG/0kKQ= +"@storybook/api@6.1.15", "@storybook/api@^6.1.11": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.1.15.tgz#285ba42f7a8efcd3bd0e586a5e978487d826fbb4" + integrity sha512-C4D08e2ZbSe62nNKtmh9YBraoWb2j6Chw8VCkuj91kuKHh3YDNc1gjj5Fi+KYZwIcy0EllzW3RFQs+YR1/Vg1g== dependencies: - "@storybook/api" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + "@reach/router" "^1.3.3" + "@storybook/channels" "6.1.15" + "@storybook/client-logger" "6.1.15" + "@storybook/core-events" "6.1.15" + "@storybook/csf" "0.0.1" + "@storybook/router" "6.1.15" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.1.15" + "@types/reach__router" "^1.3.7" core-js "^3.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" + lodash "^4.17.15" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + store2 "^2.7.1" + telejson "^5.0.2" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/api@5.3.19", "@storybook/api@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/api/-/api-5.3.19.tgz#77f15e9e2eee59fe1ddeaba1ef39bc34713a6297" - integrity sha1-d/Feni7uWf4d3quh7zm8NHE6Ypc= +"@storybook/api@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.1.18.tgz#289d9907ed36a0c2af933c871a36a72acd911c43" + integrity sha512-VfntmrMEijkbdNDncpr9bv2RXVn12hCui1YcK3S6bCXnMi/OFp6aO5+jrb/GZqqZzLeVK005N1HTE2Ivq1IBJg== dependencies: - "@reach/router" "^1.2.1" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + "@reach/router" "^1.3.3" + "@storybook/channels" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/core-events" "6.1.18" "@storybook/csf" "0.0.1" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" - "@types/reach__router" "^1.2.3" + "@storybook/router" "6.1.18" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.1.18" + "@types/reach__router" "^1.3.7" core-js "^3.0.1" - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" memoizerific "^1.11.3" - prop-types "^15.6.2" - react "^16.8.3" - semver "^6.0.0" - shallow-equal "^1.1.0" + regenerator-runtime "^0.13.7" store2 "^2.7.1" - telejson "^3.2.0" + telejson "^5.0.2" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/channel-postmessage/-/channel-postmessage-5.3.19.tgz#ef9fe974c2a529d89ce342ff7acf5cc22805bae9" - integrity sha1-75/pdMKlKdic40L/es9cwigFuuk= +"@storybook/channel-postmessage@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.1.18.tgz#9f4aa17612cc3c52a040c99c64d80838f835c410" + integrity sha512-49Tae2wwY+b2BL6b+Z+tqM/k8pX5ox/SE23ahtWtovrp/OHOYoXrMXTYuU8MA58xqjR4QhB4KjVB5e0V/iQxYQ== dependencies: - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" + "@storybook/channels" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/core-events" "6.1.18" core-js "^3.0.1" global "^4.3.2" - telejson "^3.2.0" + qs "^6.6.0" + telejson "^5.0.2" -"@storybook/channels@5.3.19", "@storybook/channels@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/channels/-/channels-5.3.19.tgz#65ad7cd19d70aa5eabbb2e5e39ceef5e510bcb7f" - integrity sha1-Za180Z1wql6ruy5eOc7vXlELy38= +"@storybook/channels@6.1.15", "@storybook/channels@^6.1.11": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.1.15.tgz#22bb06a671a5ae09d2537bcf63aaf90d7f6b9f6b" + integrity sha512-HIKHDeL/0BDk9a7xc2PLiFFoHjUMKUd2djhUGdeKgdKqoWejp4JJ60fI68+2QuSRbkB8k+rAwmuWJzV7EfB5fg== dependencies: core-js "^3.0.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/client-api@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/client-api/-/client-api-5.3.19.tgz#7a5630bb8fffb92742b1773881e9004ee7fdf8e0" - integrity sha1-elYwu4//uSdCsXc4gekATuf9+OA= +"@storybook/channels@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.1.18.tgz#834cafb45e91d39c99160dbaa2ac74720bbaef5a" + integrity sha512-XMuHD15B7SWpUJgaTP/6Axa66bykObN1YBcyZ2mOqBVQK4DVf51yI/zp/4ZndgE/MxG5uqVWuOEDOJvSAENREw== dependencies: - "@storybook/addons" "5.3.19" - "@storybook/channel-postmessage" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" + core-js "^3.0.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/client-api@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.1.18.tgz#7569830375d6618e8b0f3b48c5789798e7474751" + integrity sha512-iwHLrirUFM4zQuzrKD+mN14F8/IdpMz4aYRBRDHf/FbG9F0dM27RF8S9a3y7thhAVPiNNT8HJ4YO0ZMTdZ5idg== + dependencies: + "@storybook/addons" "6.1.18" + "@storybook/channel-postmessage" "6.1.18" + "@storybook/channels" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/core-events" "6.1.18" "@storybook/csf" "0.0.1" - "@types/webpack-env" "^1.15.0" + "@types/qs" "^6.9.0" + "@types/webpack-env" "^1.15.3" core-js "^3.0.1" - eventemitter3 "^4.0.0" global "^4.3.2" - is-plain-object "^3.0.0" lodash "^4.17.15" memoizerific "^1.11.3" qs "^6.6.0" + regenerator-runtime "^0.13.7" stable "^0.1.8" - ts-dedent "^1.1.0" + store2 "^2.7.1" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/client-logger/-/client-logger-5.3.19.tgz#fbbd186e82102eaca1d6a5cca640271cae862921" - integrity sha1-+70YboIQLqyh1qXMpkAnHK6GKSE= +"@storybook/client-logger@6.1.15": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.1.15.tgz#b558d6ecbee82c038d684717d8c598eaa4a9324d" + integrity sha512-lUpatG8SxzrUapWMsIPWiR+5qRVT5ebn8tGHQeBeRHXbdmEqyq5DOlrotLUemkA5nNTCs1pMFNvKSpCHznG+fg== + dependencies: + core-js "^3.0.1" + global "^4.3.2" + +"@storybook/client-logger@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.1.18.tgz#36c7e33090e70bc274e1a39ef5ebbfe31c886f6a" + integrity sha512-o+lXoi61SLgNbDGrfDJsUdkbc2eDzNL1DMkSenksis7kiblOsBzO+7S0UiguyQ/gku2wYyksGx71A/TzE5JsgQ== dependencies: core-js "^3.0.1" + global "^4.3.2" -"@storybook/components@5.3.19", "@storybook/components@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/components/-/components-5.3.19.tgz#aac1f9eea1247cc85bd93b10fca803876fb84a6b" - integrity sha1-qsH57qEkfMhb2TsQ/KgDh2+4Sms= +"@storybook/components@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.1.18.tgz#23ab5a7d735bd8e09cad2e487f8636aa099998a9" + integrity sha512-YUF/JpkZ6ghcxm26V6zOXl4iS2OOhNhfCp1CxVBu+71k78nziOQdxBmT0aG0LXzZ+WSF8pMiXzvBTrei+YTxyg== dependencies: - "@storybook/client-logger" "5.3.19" - "@storybook/theming" "5.3.19" + "@popperjs/core" "^2.5.4" + "@storybook/client-logger" "6.1.18" + "@storybook/csf" "0.0.1" + "@storybook/theming" "6.1.18" + "@types/overlayscrollbars" "^1.9.0" + "@types/react-color" "^3.0.1" + "@types/react-syntax-highlighter" "11.0.4" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + markdown-to-jsx "^6.11.4" + memoizerific "^1.11.3" + overlayscrollbars "^1.10.2" + polished "^3.4.4" + react-color "^2.17.0" + react-popper-tooltip "^3.1.1" + react-syntax-highlighter "^13.5.0" + react-textarea-autosize "^8.1.1" + ts-dedent "^2.0.0" + +"@storybook/components@^6.1.0": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.1.15.tgz#b4a2af23ee6b9cba4c255191eae3d3463e29bfb7" + integrity sha512-lPbA/zyBfctdlpDhRTcRFLWlZPJ3PB4+wI0FUvYs69iG3/bNbQPYu8vRmNhCZOsaGt+b+dik4Tfcth8Bu+eQug== + dependencies: + "@popperjs/core" "^2.5.4" + "@storybook/client-logger" "6.1.15" + "@storybook/csf" "0.0.1" + "@storybook/theming" "6.1.15" + "@types/overlayscrollbars" "^1.9.0" + "@types/react-color" "^3.0.1" "@types/react-syntax-highlighter" "11.0.4" - "@types/react-textarea-autosize" "^4.3.3" core-js "^3.0.1" + fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^3.3.1" - popper.js "^1.14.7" - prop-types "^15.7.2" - react "^16.8.3" - react-dom "^16.8.3" - react-focus-lock "^2.1.0" - react-helmet-async "^1.0.2" - react-popper-tooltip "^2.8.3" - react-syntax-highlighter "^11.0.2" - react-textarea-autosize "^7.1.0" - simplebar-react "^1.0.0-alpha.6" - ts-dedent "^1.1.0" + overlayscrollbars "^1.10.2" + polished "^3.4.4" + react-color "^2.17.0" + react-popper-tooltip "^3.1.1" + react-syntax-highlighter "^13.5.0" + react-textarea-autosize "^8.1.1" + ts-dedent "^2.0.0" + +"@storybook/core-events@6.1.15", "@storybook/core-events@^6.1.11": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.1.15.tgz#f66e30cbed8afdb8df2254d2aa47fe139e641c60" + integrity sha512-2sz02hdGZshanoq83jaB+goAcapVEWrxe+RJZn/gu2OymlEioWNjPPtOVGgi5DNIiJFnYvc66adayNwX39+tDA== + dependencies: + core-js "^3.0.1" -"@storybook/core-events@5.3.19", "@storybook/core-events@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/core-events/-/core-events-5.3.19.tgz#18020cd52e0d8ef0973a8e9622a10d5f99796f79" - integrity sha1-GAIM1S4NjvCXOo6WIqENX5l5b3k= +"@storybook/core-events@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.1.18.tgz#6417eb25d36d7e26b990552dc1d3c4db1679e0d4" + integrity sha512-FdhDTsL8u9759jJ4nDthen5x8+mpmdMXIXat1HYL1RNgjXZFRUiwcWha8ELQFVTgpjJ9U5ZTF8C5B0B1W47Etw== dependencies: core-js "^3.0.1" -"@storybook/core@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/core/-/core-5.3.19.tgz#1e61f35c5148343a0c580f5d5efb77f3b4243a30" - integrity sha1-HmHzXFFINDoMWA9dXvt387QkOjA= - dependencies: - "@babel/plugin-proposal-class-properties" "^7.7.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-transform-react-constant-elements" "^7.2.0" - "@babel/preset-env" "^7.4.5" - "@storybook/addons" "5.3.19" - "@storybook/channel-postmessage" "5.3.19" - "@storybook/client-api" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/core-events" "5.3.19" +"@storybook/core@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.1.18.tgz#0186007c97a3e64f936eac784590d45eee6473d7" + integrity sha512-FJAJX39HvyL85riUBjRaiyKmbyppNmzZ4dU/hZpinmXHJDk9d857lmkjSz96N24vwRc5uinsodaPs+ccIUONNg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.1" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.1" + "@babel/preset-typescript" "^7.12.1" + "@babel/register" "^7.12.1" + "@storybook/addons" "6.1.18" + "@storybook/api" "6.1.18" + "@storybook/channel-postmessage" "6.1.18" + "@storybook/channels" "6.1.18" + "@storybook/client-api" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/components" "6.1.18" + "@storybook/core-events" "6.1.18" "@storybook/csf" "0.0.1" - "@storybook/node-logger" "5.3.19" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" - "@storybook/ui" "5.3.19" + "@storybook/node-logger" "6.1.18" + "@storybook/router" "6.1.18" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.1.18" + "@storybook/ui" "6.1.18" + "@types/glob-base" "^0.3.0" + "@types/micromatch" "^4.0.1" + "@types/node-fetch" "^2.5.4" airbnb-js-shims "^2.2.1" ansi-to-html "^0.6.11" autoprefixer "^9.7.2" - babel-plugin-add-react-displayname "^0.0.5" + babel-loader "^8.0.6" babel-plugin-emotion "^10.0.20" - babel-plugin-macros "^2.7.0" + babel-plugin-macros "^2.8.0" babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" + better-opn "^2.0.0" boxen "^4.1.0" case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^3.0.0" - cli-table3 "0.5.1" - commander "^4.0.1" + chalk "^4.0.0" + cli-table3 "0.6.0" + commander "^5.0.0" core-js "^3.0.1" - corejs-upgrade-webpack-plugin "^2.2.0" - css-loader "^3.0.0" + cpy "^8.1.1" + css-loader "^3.5.3" detect-port "^1.3.0" dotenv-webpack "^1.7.0" - ejs "^2.7.4" + ejs "^3.1.2" express "^4.17.0" - file-loader "^4.2.0" + file-loader "^6.0.0" file-system-cache "^1.0.5" - find-cache-dir "^3.0.0" find-up "^4.1.0" - fs-extra "^8.0.1" + fork-ts-checker-webpack-plugin "^4.1.4" + fs-extra "^9.0.0" + glob "^7.1.6" glob-base "^0.3.0" + glob-promise "^3.4.0" global "^4.3.2" - html-webpack-plugin "^4.0.0-beta.2" + html-webpack-plugin "^4.2.1" inquirer "^7.0.0" interpret "^2.0.0" ip "^1.1.5" @@ -1757,30 +2365,31 @@ lazy-universal-dotenv "^3.0.1" micromatch "^4.0.2" node-fetch "^2.6.0" - open "^7.0.0" - pnp-webpack-plugin "1.5.0" + pkg-dir "^4.2.0" + pnp-webpack-plugin "1.6.4" postcss-flexbugs-fixes "^4.1.0" postcss-loader "^3.0.0" pretty-hrtime "^1.0.3" qs "^6.6.0" - raw-loader "^3.1.0" - react-dev-utils "^9.0.0" - regenerator-runtime "^0.13.3" - resolve "^1.11.0" + raw-loader "^4.0.1" + react-dev-utils "^10.0.0" + regenerator-runtime "^0.13.7" resolve-from "^5.0.0" - semver "^6.0.0" serve-favicon "^2.5.0" - shelljs "^0.8.3" - style-loader "^1.0.0" - terser-webpack-plugin "^2.1.2" - ts-dedent "^1.1.0" + shelljs "^0.8.4" + stable "^0.1.8" + style-loader "^1.2.1" + telejson "^5.0.2" + terser-webpack-plugin "^3.0.0" + ts-dedent "^2.0.0" unfetch "^4.1.0" - url-loader "^2.0.1" + url-loader "^4.0.0" util-deprecate "^1.0.2" - webpack "^4.33.0" + webpack "^4.44.2" webpack-dev-middleware "^3.7.0" + webpack-filter-warnings-plugin "^1.2.1" webpack-hot-middleware "^2.25.0" - webpack-virtual-modules "^0.2.0" + webpack-virtual-modules "^0.2.2" "@storybook/csf@0.0.1": version "0.0.1" @@ -1789,80 +2398,97 @@ dependencies: lodash "^4.17.15" -"@storybook/node-logger@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/node-logger/-/node-logger-5.3.19.tgz#c414e4d3781aeb06298715220012f552a36dff29" - integrity sha1-xBTk03ga6wYphxUiABL1UqNt/yk= +"@storybook/node-logger@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.1.18.tgz#cf45d30f3456b7eeb664233df05f654e5773cb18" + integrity sha512-gsiHQVratKBSoP11IqU2Td5W+KUc0qg+czqhzzp1JNMJ25/xBtCJ8MAIOX5JFhovzvB7H0j8y8VNF1YgmcmOQg== dependencies: "@types/npmlog" "^4.1.2" - chalk "^3.0.0" + chalk "^4.0.0" core-js "^3.0.1" npmlog "^4.1.2" pretty-hrtime "^1.0.3" - regenerator-runtime "^0.13.3" - -"@storybook/react@^5.2.8": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/react/-/react-5.3.19.tgz#ad7e7a5538399e2794cdb5a1b844a2b77c10bd09" - integrity sha1-rX56VTg5nieUzbWhuESit3wQvQk= - dependencies: - "@babel/plugin-transform-react-constant-elements" "^7.6.3" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-react" "^7.0.0" - "@storybook/addons" "5.3.19" - "@storybook/core" "5.3.19" - "@storybook/node-logger" "5.3.19" - "@svgr/webpack" "^4.0.3" - "@types/webpack-env" "^1.15.0" + +"@storybook/react@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.1.18.tgz#895cdc252299a181442131f0b3b2506f273888c0" + integrity sha512-wAkUn3LPzoo10LgIZ28beJT9hrWAKR5rEl6g3Y4yTqmvfWdaXZOtHomEchq7Cru7C+1jQ60mDMtwu+D2FZP4bQ== + dependencies: + "@babel/preset-flow" "^7.12.1" + "@babel/preset-react" "^7.12.1" + "@pmmmwh/react-refresh-webpack-plugin" "^0.4.2" + "@storybook/addons" "6.1.18" + "@storybook/core" "6.1.18" + "@storybook/node-logger" "6.1.18" + "@storybook/semver" "^7.3.2" + "@types/webpack-env" "^1.15.3" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" - babel-plugin-react-docgen "^4.0.0" + babel-plugin-react-docgen "^4.2.1" core-js "^3.0.1" global "^4.3.2" lodash "^4.17.15" - mini-css-extract-plugin "^0.7.0" prop-types "^15.7.2" - react-dev-utils "^9.0.0" - regenerator-runtime "^0.13.3" - semver "^6.0.0" - ts-dedent "^1.1.0" - webpack "^4.33.0" + react-dev-utils "^10.0.0" + react-docgen-typescript-plugin "^0.6.2" + react-refresh "^0.8.3" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + webpack "^4.44.2" + +"@storybook/router@6.1.15": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.1.15.tgz#e0cd7440a2ddc9b265e506b1cb590d3eeab56476" + integrity sha512-HlxDkGpiTSxXCJuqRoZ9Viq6Y/h/7efI8LPhhopr50qWRBTh/PEQzDqWBXG3sj8ISmi9GyUaTSAuqRwdA3lJQQ== + dependencies: + "@reach/router" "^1.3.3" + "@types/reach__router" "^1.3.7" + core-js "^3.0.1" + global "^4.3.2" + memoizerific "^1.11.3" + qs "^6.6.0" -"@storybook/router@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/router/-/router-5.3.19.tgz#0f783b85658f99e4007f74347ad7ef17dbf7fc3a" - integrity sha1-D3g7hWWPmeQAf3Q0etfvF9v3/Do= +"@storybook/router@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.1.18.tgz#e9ed563bd06f4a2a746709415f0c20d116b4cac5" + integrity sha512-eY8snYjAESgDdC4sZFJIZ6FTJU4hY1oRqk24nTxhUiEV7U7JAqcXPpz+kaoiAoXnB+H9vXh5MADs9pXS654pBw== dependencies: - "@reach/router" "^1.2.1" - "@storybook/csf" "0.0.1" - "@types/reach__router" "^1.2.3" + "@reach/router" "^1.3.3" + "@types/reach__router" "^1.3.7" core-js "^3.0.1" global "^4.3.2" - lodash "^4.17.15" memoizerific "^1.11.3" qs "^6.6.0" - util-deprecate "^1.0.2" -"@storybook/source-loader@5.3.19", "@storybook/source-loader@^5.2.8": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/source-loader/-/source-loader-5.3.19.tgz#ff0a00731c24c61721d8b9d84152f8542913a3b7" - integrity sha1-/woAcxwkxhch2LnYQVL4VCkTo7c= +"@storybook/semver@^7.3.2": + version "7.3.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" + integrity sha1-87nEShyaC5M8BOZtAEj88voQ2sA= + dependencies: + core-js "^3.6.5" + find-up "^4.1.0" + +"@storybook/source-loader@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.1.18.tgz#5221b9408f30454ae514f5d19fafdd81650647bf" + integrity sha512-Fca8gGqQ5rosXLZpBdqpwItbl7iQ4QZZ5MqJkt7FyEqVX7n4O8WjIiAqNbeCGJnc1keohoGIPWOMt1gXvwZQkA== dependencies: - "@storybook/addons" "5.3.19" - "@storybook/client-logger" "5.3.19" + "@storybook/addons" "6.1.18" + "@storybook/client-logger" "6.1.18" "@storybook/csf" "0.0.1" core-js "^3.0.1" estraverse "^4.2.0" global "^4.3.2" - loader-utils "^1.2.3" - prettier "^1.16.4" - prop-types "^15.7.2" - regenerator-runtime "^0.13.3" + loader-utils "^2.0.0" + lodash "^4.17.15" + prettier "~2.0.5" + regenerator-runtime "^0.13.7" + source-map "^0.7.3" -"@storybook/storybook-deployer@^2.8.1": - version "2.8.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/storybook-deployer/-/storybook-deployer-2.8.6.tgz#00c2e84f27dfaa88cb0785361453f23b1ebb4ea3" - integrity sha1-AMLoTyffqojLB4U2FFPyOx67TqM= +"@storybook/storybook-deployer@^2.8.7": + version "2.8.7" + resolved "https://registry.yarnpkg.com/@storybook/storybook-deployer/-/storybook-deployer-2.8.7.tgz#c1eed33d03bd9267f884c60eea8e03dc3261ec11" + integrity sha512-O0hKHV6hg93fPMvKGC5M/sd7KTL473+SzMKm+WZNVEyLEfXXcVU+Ts9/VL1IhmC1P2A8Bg9oBnkcPqAqjAN46w== dependencies: git-url-parse "^11.1.2" glob "^7.1.3" @@ -1870,209 +2496,149 @@ shelljs "^0.8.1" yargs "^15.0.0" -"@storybook/theming@5.3.19", "@storybook/theming@^5.3.18": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/theming/-/theming-5.3.19.tgz#177d9819bd64f7a1a6ea2f1920ffa5baf9a5f467" - integrity sha1-F32YGb1k96Gm6i8ZIP+luvml9Gc= +"@storybook/theming@6.1.15", "@storybook/theming@^6.1.11": + version "6.1.15" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.1.15.tgz#01083ab89904dd959429b0b3fd1c76bd0ecc59ef" + integrity sha512-88IdYaPzp4NMKf/GKBrPggxD6/d/lkdQ4SNowXxN9g9eONd9M7HtTbjuJGRCbGMJ52xGcbpj2exEnAqKQ2iodA== dependencies: - "@emotion/core" "^10.0.20" - "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "5.3.19" + "@emotion/core" "^10.1.1" + "@emotion/is-prop-valid" "^0.8.6" + "@emotion/styled" "^10.0.23" + "@storybook/client-logger" "6.1.15" core-js "^3.0.1" deep-object-diff "^1.1.0" emotion-theming "^10.0.19" global "^4.3.2" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" + polished "^3.4.4" + resolve-from "^5.0.0" + ts-dedent "^2.0.0" + +"@storybook/theming@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.1.18.tgz#a2aa08a52d589ce9662b9e789506ffa42d97da24" + integrity sha512-q97mKSLLnB2LmjzKiNpip7jvvrVPDi+bnYoUCWCt04zuXiaIVU8Bu4i0Y/w3Y3bHqfRbae3gZErFr89Z+f77vA== + dependencies: + "@emotion/core" "^10.1.1" + "@emotion/is-prop-valid" "^0.8.6" + "@emotion/styled" "^10.0.23" + "@storybook/client-logger" "6.1.18" + core-js "^3.0.1" + deep-object-diff "^1.1.0" + emotion-theming "^10.0.19" + global "^4.3.2" + memoizerific "^1.11.3" + polished "^3.4.4" resolve-from "^5.0.0" - ts-dedent "^1.1.0" - -"@storybook/ui@5.3.19": - version "5.3.19" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@storybook/ui/-/ui-5.3.19.tgz#ac03b67320044a3892ee784111d4436b61874332" - integrity sha1-rAO2cyAESjiS7nhBEdRDa2GHQzI= - dependencies: - "@emotion/core" "^10.0.20" - "@storybook/addons" "5.3.19" - "@storybook/api" "5.3.19" - "@storybook/channels" "5.3.19" - "@storybook/client-logger" "5.3.19" - "@storybook/components" "5.3.19" - "@storybook/core-events" "5.3.19" - "@storybook/router" "5.3.19" - "@storybook/theming" "5.3.19" + ts-dedent "^2.0.0" + +"@storybook/ui@6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.1.18.tgz#e88ad5ba0e041127c8624f15b3071e796348b817" + integrity sha512-EKOja3ji0gHxnKWFBt+nK7xuBOzKTEKJ3+PiW0+QS0jZ18EkR7U7h0U052jNXdiI1c6Sck5n9+gI5EylzN18+Q== + dependencies: + "@emotion/core" "^10.1.1" + "@storybook/addons" "6.1.18" + "@storybook/api" "6.1.18" + "@storybook/channels" "6.1.18" + "@storybook/client-logger" "6.1.18" + "@storybook/components" "6.1.18" + "@storybook/core-events" "6.1.18" + "@storybook/router" "6.1.18" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.1.18" + "@types/markdown-to-jsx" "^6.11.0" copy-to-clipboard "^3.0.8" core-js "^3.0.1" core-js-pure "^3.0.1" + downshift "^6.0.6" emotion-theming "^10.0.19" - fast-deep-equal "^2.0.1" - fuse.js "^3.4.6" + fuse.js "^3.6.1" global "^4.3.2" lodash "^4.17.15" markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" + polished "^3.4.4" qs "^6.6.0" - react "^16.8.3" - react-dom "^16.8.3" react-draggable "^4.0.3" react-helmet-async "^1.0.2" react-hotkeys "2.0.0" react-sizeme "^2.6.7" - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.7" resolve-from "^5.0.0" - semver "^6.0.0" store2 "^2.7.1" - telejson "^3.2.0" - util-deprecate "^1.0.2" - -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha1-2ty2IYUDUy1ohLIQ5/PFAsqqRLE= - -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha1-KXVQuajAxzN76hK9/IqAu2b4Wrw= - -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha1-wZYwLz5o6ragXpivnKhXC8ExMcc= - -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha1-MQ7Ad13oCKai5P1CaMJF/XNMEWU= - -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" - integrity sha1-LN7ddH5bGyntTCQeRiVqrIEQ3ZM= - -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha1-mpR5HJoogQjSCp0sxkysgg8UE5E= -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha1-FRSHMihDNZocqGsho4Ff0hqItxc= - -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha1-Xx4viGsshcZ+dtpC8Pa+Gxdntpc= - -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - integrity sha1-p12MLyAqwOV3Tmv8Fl0CizmhMWw= - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - integrity sha1-s3uJ1bdX3Gbox0FW0Aw2gzjSQpM= - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" - -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - integrity sha1-HVoIL3uSnvjx9XiVAjj2MOFFMrg= - dependencies: - "@babel/types" "^7.4.4" - -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - integrity sha1-4rqRPb376FJSo02xAavH69UJkvo= - dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" - -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - integrity sha1-2qwKPYcuP1WTXGWI3TcDNoZenjI= - dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/webpack@^4.0.3": - version "4.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha1-E8wkI789/y1JTxaxfrfqy4aJUBc= - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" - -"@testing-library/dom@^7.2.1", "@testing-library/dom@^7.9.0": - version "7.16.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@testing-library/dom/-/dom-7.16.1.tgz#a6881d53612f2e8f7bcc0e0bd8825c6788cf57f2" - integrity sha1-pogdU2EvLo97zA4L2IJcZ4jPV/I= - dependencies: - "@babel/runtime" "^7.10.2" - aria-query "^4.0.2" - dom-accessibility-api "^0.4.5" - pretty-format "^25.5.0" - -"@testing-library/jest-dom@^5.3.0": - version "5.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@testing-library/jest-dom/-/jest-dom-5.10.1.tgz#6508a9f007bd74e5d3c0b3135b668027ab663989" - integrity sha1-ZQip8Ae9dOXTwLMTW2aAJ6tmOYk= +"@testing-library/dom@^7.22.0": + version "7.29.4" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.4.tgz#1647c2b478789621ead7a50614ad81ab5ae5b86c" + integrity sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.4" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/dom@^7.22.3": + version "7.26.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@testing-library/dom/-/dom-7.26.7.tgz#b9008b21524288fb09f7bc20bf366a3aa1f0ce72" + integrity sha1-uQCLIVJCiPsJ97wgvzZqOqHwznI= + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.4" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/jest-dom@^5.11.2": + version "5.11.9" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz#e6b3cd687021f89f261bd53cbe367041fbd3e975" + integrity sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^4.2.2" chalk "^3.0.0" - css "^2.2.4" + css "^3.0.0" css.escape "^1.5.1" - jest-diff "^25.1.0" - jest-matcher-utils "^25.1.0" lodash "^4.17.15" redent "^3.0.0" "@testing-library/react@^10.0.0": - version "10.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@testing-library/react/-/react-10.2.1.tgz#f0c5ac9072ad54c29672150943f35d6617263f26" - integrity sha1-8MWskHKtVMKWchUJQ/NdZhcmPyY= + version "10.4.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@testing-library/react/-/react-10.4.9.tgz#9faa29c6a1a217bf8bbb96a28bd29d7a847ca150" + integrity sha1-n6opxqGiF7+Lu5aii9KdeoR8oVA= dependencies: - "@babel/runtime" "^7.10.2" - "@testing-library/dom" "^7.9.0" + "@babel/runtime" "^7.10.3" + "@testing-library/dom" "^7.22.3" "@types/anymatch@*": version "1.3.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha1-M2utwb7sudrMOL6izzKt9ieoQho= -"@types/babel__core@^7.1.7": - version "7.1.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__core/-/babel__core-7.1.8.tgz#057f725aca3641f49fc11c7a87a9de5ec588a5d7" - integrity sha1-BX9yWso2QfSfwRx6h6neXsWIpdc= +"@types/aria-query@^4.2.0": + version "4.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha1-FCZGkqnW4vpNs99eVulLXiVkesA= + +"@types/babel-plugin-macros@^2.8.4": + version "2.8.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel-plugin-macros/-/babel-plugin-macros-2.8.4.tgz#5e0a11093e1902faf23e803f1cf880364e943505" + integrity sha1-XgoRCT4ZAvryPoA/HPiANk6UNQU= + dependencies: + "@types/babel__core" "*" + +"@types/babel__core@*", "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha1-TY6eUesmVVKn5PH/IhmrYTO9+y0= dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2081,61 +2647,78 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha1-SQF2ezl+hxGuuZ3405bXunt/DgQ= + version "7.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha1-89cReOGHhY98ReMDgPjxt0FaEtg= dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha1-T/Y9a1Lt2sHee5daUiPtMuzqkwc= + version "7.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha1-DIiN1ws+6e67bk8gDoCdoAdiYr4= dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.12" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__traverse/-/babel__traverse-7.0.12.tgz#22f49a028e69465390f87bb103ebd61bd086b8f5" - integrity sha1-IvSaAo5pRlOQ+HuxA+vWG9CGuPU= +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.0.15" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" + integrity sha1-255COJMetp74qrCtZSPU1MqjnQM= dependencies: "@babel/types" "^7.3.0" -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA= +"@types/braces@*": + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" + integrity sha1-faHA1E/xx+tmCjbsB46mG6frQss= "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0= -"@types/glob@^7.1.1": - version "7.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" - integrity sha1-BsomUhNTpUXZSgrcdPOKWdIyyYc= +"@types/estree@*": + version "0.0.45" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha1-6Th1cpmOXs2sIhlQ2rPow7Fq+IQ= + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8= + +"@types/glob-base@^0.3.0": + version "0.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" + integrity sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0= + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.1.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha1-5rqA82t9qtLGhazZJmOC5omFwYM= dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha1-A5rzX+Jr7DUAPo2G0u6cWGNUNI8= + version "4.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + integrity sha1-T/n2QafG0aNQj/iLwxQbFSdy51M= dependencies: "@types/node" "*" -"@types/history@*": - version "4.7.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/history/-/history-4.7.6.tgz#ed8fc802c45b8e8f54419c2d054e55c9ea344356" - integrity sha1-7Y/IAsRbjo9UQZwtBU5Vyeo0Q1Y= +"@types/hast@^2.0.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" + integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + dependencies: + "@types/unist" "*" "@types/html-minifier-terser@^5.0.0": - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" - integrity sha1-VRpFibbuLMnB3/CAVhKK7Cm5SIA= + version "5.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha1-PJ7pgPGhDWAhrmYyyj55yi7E+1A= "@types/is-function@^1.0.0": version "1.0.0" @@ -2162,21 +2745,20 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@*": - version "26.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/jest/-/jest-26.0.0.tgz#a6d7573dffa9c68cbbdf38f2e0de26f159e11134" - integrity sha1-ptdXPf+pxoy73zjy4N4m8VnhETQ= +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha1-UIsTqjRPpJdiNOdd3cw0klc32CE= dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" + "@types/istanbul-lib-report" "*" -"@types/jest@^25.2.0": - version "25.2.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha1-M9J+TEcWyq5OztNVCXpHrTY/3K8= +"@types/jest@*", "@types/jest@26.x", "@types/jest@^26.0.15": + version "26.0.15" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/jest/-/jest-26.0.15.tgz#12e02c0372ad0548e07b9f4e19132b834cb1effe" + integrity sha1-EuAsA3KtBUjge59OGRMrg0yx7/4= dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" + jest-diff "^26.0.0" + pretty-format "^26.0.0" "@types/jsdom@^12.2.3": version "12.2.4" @@ -2187,25 +2769,52 @@ "@types/tough-cookie" "*" parse5 "^4.0.0" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": - version "7.0.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" - integrity sha1-3M5EMOZLRDuolF8CkPtWStW6xt0= +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA= + +"@types/markdown-to-jsx@^6.11.0": + version "6.11.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz#cdd1619308fecbc8be7e6a26f3751260249b020e" + integrity sha1-zdFhkwj+y8i+fmom83USYCSbAg4= + dependencies: + "@types/react" "*" + +"@types/micromatch@^4.0.1": + version "4.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7" + integrity sha1-k4FEndZZ/Dgj/SpBkM6syYUIO8c= + dependencies: + "@types/braces" "*" "@types/minimatch@*": version "3.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= +"@types/minimist@^1.2.0": + version "1.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha1-KD9mn/dte4Jg34q3pCYsyD2YglY= + +"@types/node-fetch@^2.5.4": + version "2.5.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" + integrity sha1-IKKv/6iCqwTUTKeGRJonb59rvzw= + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": - version "14.0.13" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9" - integrity sha1-7hEo6IG4dMNxN0wfciAYk2FkF8k= + version "14.14.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-14.14.8.tgz#2127bd81949a95c8b7d3240f3254352d72563aec" + integrity sha1-ISe9gZSalci30yQPMlQ1LXJWOuw= "@types/node@^12.7.1": - version "12.12.47" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-12.12.47.tgz#5007b8866a2f9150de82335ca7e24dd1d59bdfb5" - integrity sha1-UAe4hmovkVDegjNcp+JN0dWb37U= + version "12.19.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node/-/node-12.19.5.tgz#9be3946136e818597c71c62d04240d0602c645d4" + integrity sha1-m+OUYTboGFl8ccYtBCQNBgLGRdQ= "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2217,38 +2826,50 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" integrity sha1-0HD+amt4dV0QkqPcSS00w9j4ccQ= +"@types/overlayscrollbars@^1.9.0": + version "1.12.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#98456caceca8ad73bd5bb572632a585074e70764" + integrity sha1-mEVsrOyorXO9W7VyYypYUHTnB2Q= + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA= -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha1-M1CYSfjmeeSt0ViVn9sIZEDpVT8= +"@types/prettier@^2.0.0": + version "2.1.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + integrity sha1-tqs7uinha4IdhOCez63tRiuBawA= "@types/prop-types@*": version "15.7.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha1-KrDV2i5YFflLC51LldHl8kOrLKc= -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ= +"@types/qs@^6.9.0": + version "6.9.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" + integrity sha1-Q0cRvdSete5p2QwdZ8NUqajssYs= -"@types/reach__router@^1.2.3": - version "1.3.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/reach__router/-/reach__router-1.3.5.tgz#14e1e981cccd3a5e50dc9e969a72de0b9d472f6d" - integrity sha1-FOHpgczNOl5Q3J6WmnLeC51HL20= +"@types/reach__router@^1.3.7": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.7.tgz#de8ab374259ae7f7499fc1373b9697a5f3cd6428" + integrity sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg== + dependencies: + "@types/react" "*" + +"@types/react-color@^3.0.1": + version "3.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react-color/-/react-color-3.0.4.tgz#c63daf012ad067ac0127bdd86725f079d02082bd" + integrity sha1-xj2vASrQZ6wBJ73YZyXwedAggr0= dependencies: - "@types/history" "*" "@types/react" "*" + "@types/reactcss" "*" -"@types/react-dom@^16.8.2": - version "16.9.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha1-/kweEd/GcVVzPfpqplEItJcctCM= +"@types/react-dom@^17.0.0": + version "17.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a" + integrity sha1-s7aR65VsSzQBd37me5AMsoQV2Vo= dependencies: "@types/react" "*" @@ -2259,25 +2880,40 @@ dependencies: "@types/react" "*" -"@types/react-textarea-autosize@^4.3.3": - version "4.3.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz#6c4d2753fa1864c98c0b2b517f67bb1f6e4c46de" - integrity sha1-bE0nU/oYZMmMCytRf2e7H25MRt4= +"@types/react@*": + version "16.9.56" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react/-/react-16.9.56.tgz#ea25847b53c5bec064933095fc366b1462e2adf0" + integrity sha1-6iWEe1PFvsBkkzCV/DZrFGLirfA= dependencies: - "@types/react" "*" + "@types/prop-types" "*" + csstype "^3.0.2" -"@types/react@*", "@types/react@^16.8.1": - version "16.9.36" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react/-/react-16.9.36.tgz#ade589ff51e2a903e34ee4669e05dbfa0c1ce849" - integrity sha1-reWJ/1HiqQPjTuRmngXb+gwc6Ek= +"@types/react@^17.0.0": + version "17.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" + integrity sha1-WvPrf60oBwkvAEahMCt4I+J5Gbg= dependencies: "@types/prop-types" "*" - csstype "^2.2.0" + csstype "^3.0.2" + +"@types/reactcss@*": + version "1.2.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/reactcss/-/reactcss-1.2.3.tgz#af28ae11bbb277978b99d04d1eedfd068ca71834" + integrity sha1-ryiuEbuyd5eLmdBNHu39BoynGDQ= + dependencies: + "@types/react" "*" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY= + dependencies: + "@types/node" "*" "@types/semver@^6.0.0", "@types/semver@^6.0.1": - version "6.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" - integrity sha1-ojYYVnCnhg8Vl89zvqLhbQAUYbo= + version "6.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/semver/-/semver-6.2.2.tgz#5c27df09ca39e3c9beb4fae6b95f4d71426df0a9" + integrity sha1-XCffCco548m+tPrmuV9NcUJt8Kk= "@types/source-list-map@*": version "0.1.2" @@ -2289,15 +2925,25 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha1-CoUdO9lkmPolwzq3J47TvWXwbD4= +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha1-cDZkC04hzC8lmugmzoQ9J32tjP8= + +"@types/stylis@^4.0.0": + version "4.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/stylis/-/stylis-4.0.0.tgz#ad0f07d60dd7291676d968498fa21d6b9bb1afe8" + integrity sha1-rQ8H1g3XKRZ22WhJj6Ida5uxr+g= + "@types/tapable@*", "@types/tapable@^1.0.5": version "1.0.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" integrity sha1-qcpLcKGLJwzLK8Cqr+/R1Ia36nQ= "@types/testing-library__jest-dom@^5.9.1": - version "5.9.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.1.tgz#aba5ee062b7880f69c212ef769389f30752806e5" - integrity sha1-q6XuBit4gPacIS73aTifMHUoBuU= + version "5.9.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz#5bf25c91ad2d7b38f264b12275e5c92a66d849b0" + integrity sha1-W/Jcka0tezjyZLEideXJKmbYSbA= dependencies: "@types/jest" "*" @@ -2307,30 +2953,35 @@ integrity sha1-/vGQTkZotuXs7mDFLMageP+maX0= "@types/uglify-js@*": - version "3.9.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" - integrity sha1-AZkled67pnTh41nNa8saHQqy4Cs= + version "3.11.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb" + integrity sha1-l/8w5hoKpodsJwtfU4c34tarjOs= dependencies: source-map "^0.6.1" -"@types/webpack-env@^1.15.0": - version "1.15.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/webpack-env/-/webpack-env-1.15.2.tgz#927997342bb9f4a5185a86e6579a0a18afc33b0a" - integrity sha1-knmXNCu59KUYWobmV5oKGK/DOwo= +"@types/unist@*": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/webpack-env@^1.15.3": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" + integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== "@types/webpack-sources@*": - version "1.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" - integrity sha1-5Y8fBfh9OaXGTPhXBb29u5TU1X4= + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" + integrity sha1-CCFqub4r4uFJm+rrxNRpzsgegqc= dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.17" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/webpack/-/webpack-4.41.17.tgz#0a69005e644d657c85b7d6ec1c826a71bebd1c93" - integrity sha1-CmkAXmRNZXyFt9bsHIJqcb69HJM= + version "4.41.25" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/webpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" + integrity sha1-TTta7MTkQRezdigPv9LcNml5aMQ= dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -2345,16 +2996,16 @@ integrity sha1-yz+fdBhp4gzOMw/765JxWQSDiC0= "@types/yargs@^13.0.0": - version "13.0.9" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" - integrity sha1-RAKOl0NDx6/POWDxorEJnDmnteE= + version "13.0.11" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" + integrity sha1-3vLwyT5L3yxh1+NImbF+NL4o07E= dependencies: "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha1-lH6aZWFIO97prf/Jg+kaaQKvi3k= + version "15.0.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19" + integrity sha1-UkzXmY/oEM2wLyYQG2mczNFW/xk= dependencies: "@types/yargs-parser" "*" @@ -2558,10 +3209,10 @@ resolved "https://packages.atlassian.com/api/npm/npm-remote/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0= -abab@^2.0.0: - version "2.0.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha1-Yj4gdeAustPyR15J+ZyRhGRnkHo= +abab@^2.0.3: + version "2.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha1-wLZ4+zLWD8EhnHhNaoJv44Wut5o= accepts@~1.3.7: version "1.3.7" @@ -2571,33 +3222,33 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.3.0, acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha1-n6GSat3BHJcwjE5m163Q1Awycuc= +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha1-Rs3Tnw+P8IqHZhm1X1rIptx3C0U= dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" acorn-jsx@^5.0.0: - version "5.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha1-TGYGkXPW/daO2FI5/CViJhgrLr4= + version "5.3.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns= -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha1-Ejy487hMIXHx9/slJhWxx4prGow= +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w= -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.4.1: - version "6.4.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ= +acorn@^6.0.7, acorn@^6.4.1: + version "6.4.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha1-NYZv1xBSjpLeEM8GAWSY5H454eY= -acorn@^7.1.0: - version "7.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" - integrity sha1-hQEHVNtTw/uvO56j4IOqXF0Uf/0= +acorn@^7.1.1: + version "7.4.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo= address@1.1.2, address@^1.0.1: version "1.1.2" @@ -2605,9 +3256,9 @@ address@1.1.2, address@^1.0.1: integrity sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY= aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA= + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo= dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" @@ -2640,15 +3291,15 @@ ajv-errors@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha1-81mGrOuRr63sQQL72FAUlQzvpk0= -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo= +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0= -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5, ajv@^6.9.1: - version "6.12.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha1-xinF7O0XuvMUQ3kY0tqIyZ1ZWM0= +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ= dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2669,11 +3320,16 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-colors@^3.0.0, ansi-colors@^3.2.1: +ansi-colors@^3.0.0: version "3.2.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha1-46PaS/uubIapwoViXeEkojQCb78= +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha1-y7muJWv3UK8eqzRPIpqif+lLo0g= + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2686,9 +3342,9 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-html@0.0.7: +ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-red@^0.1.1: @@ -2731,11 +3387,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha1-kK51xCTQCNJiTFvynq0xd+v881k= + version "4.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha1-7dgDYornHATIWuegkG7a00tkiTc= dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-to-html@^0.6.11: @@ -2791,13 +3446,13 @@ argparse@^1.0.10, argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^4.0.2: - version "4.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/aria-query/-/aria-query-4.0.2.tgz#250687b4ccde1ab86d127da0432ae3552fc7b145" - integrity sha1-JQaHtMzeGrhtEn2gQyrjVS/HsUU= +aria-query@^4.2.2: + version "4.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha1-DSymyazrVriXfp/tau1+FbvS+Ds= dependencies: - "@babel/runtime" "^7.7.4" - "@babel/runtime-corejs3" "^7.7.4" + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" arr-diff@^4.0.0: version "4.0.0" @@ -2814,11 +3469,6 @@ arr-union@^3.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -2868,7 +3518,7 @@ array.prototype.flat@^1.2.1: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -array.prototype.flatmap@^1.2.1: +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.3: version "1.2.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" integrity sha1-HBP4SheFZgQt1j3kQURA25Ii5EM= @@ -2892,14 +3542,20 @@ arrify@^1.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha1-EamAuE67kXgc41sP3C7ilON4Pwc= dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" @@ -2926,15 +3582,12 @@ assign-symbols@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types@0.11.3: - version "0.11.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" - integrity sha1-wgdX/nLucSeOoP89h+XCyjDZ7fg= - -ast-types@^0.13.2: - version "0.13.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" - integrity sha1-UNo/KNF728eWmjotg6DkpyrnVac= +ast-types@^0.14.2: + version "0.14.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha1-YAuILfhYPjzU8t9fog+oN1nUvf0= + dependencies: + tslib "^2.0.1" astral-regex@^1.0.0: version "1.0.0" @@ -2946,16 +3599,21 @@ async-each@^1.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8= -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0= +async@0.9.x: + version "0.9.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= asynckit@^0.4.0: version "0.4.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha1-YCzUtG6EStTv/JKoARo8RuAjjcI= + atob@^2.1.2: version "2.1.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2969,16 +3627,16 @@ autolinker@~0.28.0: gulp-header "^1.7.1" autoprefixer@^9.7.2: - version "9.8.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" - integrity sha1-aOLSvve6TDplQ29mLQpWp0HlZRE= + version "9.8.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8= dependencies: browserslist "^4.12.0" - caniuse-lite "^1.0.30001061" - chalk "^2.4.2" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.30" + postcss "^7.0.32" postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: @@ -2987,9 +3645,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha1-oXs6jqgRBg501H0wYSJACtRJeuI= + version "1.11.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk= babel-code-frame@^6.22.0: version "6.26.0" @@ -3035,28 +3693,28 @@ babel-helper-to-multiple-sequence-expressions@^0.5.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" integrity sha1-o/kk41YYgtQvz0iQeqmPeXmkWI0= -babel-jest@^25.5.1: - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha1-vC5hAfhJ1vauwJcg/8e8UzLmKFM= +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha1-2H0lywA3V3oMifguV1XF0pPAEFY= dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" babel-loader@^8.0.6: - version "8.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha1-xhHVESvVIJq+i5+oTD5NolJ18cM= + version "8.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-loader/-/babel-loader-8.2.1.tgz#e53313254677e86f27536f5071d807e01d24ec00" + integrity sha1-5TMTJUZ36G8nU29QcdgH4B0k7AA= dependencies: find-cache-dir "^2.1.0" loader-utils "^1.4.0" - mkdirp "^0.5.3" + make-dir "^2.1.0" pify "^4.0.1" schema-utils "^2.6.5" @@ -3099,16 +3757,17 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha1-EpyAulx/x1uvOkW5Pi43LVfKJnc= +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha1-gYW9AwNI0lTG192XQ1Xmoosh5i0= dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0: +babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: version "2.8.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha1-D5WKfMZVax5lNERl2ZERoeXhATg= @@ -3117,6 +3776,16 @@ babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0: cosmiconfig "^6.0.0" resolve "^1.12.0" +babel-plugin-macros@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-macros/-/babel-plugin-macros-3.0.0.tgz#de9ad21283f8493b2aa70ba0abe82efafb65f5bd" + integrity sha1-3prSEoP4STsqpwugq+gu+vtl9b0= + dependencies: + "@babel/runtime" "^7.12.5" + "@babel/traverse" "^7.12.9" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + babel-plugin-minify-builtins@^0.5.0: version "0.5.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" @@ -3194,23 +3863,23 @@ babel-plugin-minify-type-constructors@^0.4.3: babel-helper-is-void-0 "^0.4.3" babel-plugin-named-asset-import@^0.3.1: - version "0.3.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" - integrity sha1-yXUKGzjYURLJ4Wa/PvfF28YF9L4= + version "0.3.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha1-FWzVXT8SKKV2V3Q0CTevyDmAZ90= -babel-plugin-react-docgen@^4.0.0: - version "4.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz#1dfa447dac9ca32d625a123df5733a9e47287c26" - integrity sha1-HfpEfaycoy1iWhI99XM6nkcofCY= +babel-plugin-react-docgen@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" + integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== dependencies: + ast-types "^0.14.2" lodash "^4.17.15" react-docgen "^5.0.0" - recast "^0.14.7" "babel-plugin-styled-components@>= 1": - version "1.10.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c" - integrity sha1-NJTneRTpmJszzC17OylSepSdY1w= + version "1.11.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-styled-components/-/babel-plugin-styled-components-1.11.1.tgz#5296a9e557d736c3186be079fff27c6665d63d76" + integrity sha1-Upap5VfXNsMYa+B5//J8ZmXWPXY= dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-module-imports" "^7.0.0" @@ -3281,10 +3950,10 @@ babel-plugin-transform-undefined-to-void@^6.9.4: resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= -babel-preset-current-node-syntax@^0.1.2: - version "0.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha1-tLVHrN2/ljy6VVup+cu7cL/QRNo= +babel-preset-current-node-syntax@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha1-z1/u8pVRJTRxz6gvyOD1Bj3wenc= dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -3297,14 +3966,15 @@ babel-preset-current-node-syntax@^0.1.2: "@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-top-level-await" "^7.8.3" -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha1-wdfxkYKUh6kHdkxlMH+qDmZZC0k= +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha1-dHhysRcd8DIlJCZYaIHWLTF5j+4= dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" "babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": version "0.5.1" @@ -3341,9 +4011,9 @@ balanced-match@^1.0.0: integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.0.2: - version "1.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE= + version "1.5.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo= base@^0.11.1: version "0.11.2" @@ -3370,6 +4040,13 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +better-opn@^2.0.0: + version "2.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + integrity sha1-lKVbRpXceSiPMdfQ5fZYMgdZ98Y= + dependencies: + open "^7.0.3" + better-path-resolve@1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" @@ -3388,9 +4065,9 @@ binary-extensions@^1.0.0: integrity sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U= binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w= + version "2.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha1-MPpAyef+B9vIlWeM0ocCTeokHdk= bindings@^1.5.0: version "1.5.0" @@ -3409,10 +4086,10 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg= -bn.js@^5.1.1: - version "5.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha1-yWhpAtPJoncp9DqxD515wgBNp7A= +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha1-vsoAVAj2Quvr6oCwQrTRjSrA7ms= body-parser@1.19.0: version "1.19.0" @@ -3430,7 +4107,7 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@~1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -3510,13 +4187,6 @@ browser-process-hrtime@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha1-PJtLfXgsgSHlbxAQbYTA0P/JRiY= -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY= - dependencies: - resolve "1.1.7" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -3549,23 +4219,23 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0= dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha1-VF0LGwfmssmSEQgr8bEsznoLDhE= + version "4.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM= dependencies: bn.js "^5.1.1" browserify-rsa "^4.0.1" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.2" + elliptic "^6.5.3" inherits "^2.0.4" parse-asn1 "^5.1.5" readable-stream "^3.6.0" @@ -3578,24 +4248,26 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0: - version "4.7.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha1-nuiSJf/AfbA0CfL+5STcgidFihc= +browserslist@4.10.0: + version "4.10.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha1-8XlzeRPq8NK5jkkmrBymoVy8xqk= dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" -browserslist@^4.12.0, browserslist@^4.8.5: - version "4.12.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha1-BsbVcVoe3mxR/Dn/Z/1kf3QLZW0= +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.6: + version "4.14.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" + integrity sha1-wHHBs2IsHC55B5mje7CUc6Q1HLY= dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" + caniuse-lite "^1.0.30001157" + colorette "^1.2.1" + electron-to-chromium "^1.3.591" + escalade "^3.1.1" + node-releases "^1.1.66" bs-logger@0.x: version "0.2.6" @@ -3630,6 +4302,11 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha1-qtl8FRMet2tltQ7yCOdYTNdqdIQ= + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -3666,28 +4343,27 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^13.0.1: - version "13.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw= +cacache@^15.0.5: + version "15.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha1-aRYoM9opFw1nMjNGQ8YOAF9fF9A= dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" - graceful-fs "^4.2.2" infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" + lru-cache "^6.0.0" + minipass "^3.1.1" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" + mkdirp "^1.0.3" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" unique-filename "^1.1.1" cache-base@^1.0.1: @@ -3705,6 +4381,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha1-JBJwVLs/m9y0sfuCQYGGBy93uM4= + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -3751,6 +4435,15 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha1-XnVda6UaoiPsfT1S8ld4IQ+dw8A= + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -3761,20 +4454,20 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= +camelcase@^6.0.0: + version "6.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk= + camelize@^1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -can-use-dom@^0.1.0: - version "0.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" - integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo= - -caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: - version "1.0.30001084" - resolved "https://packages.atlassian.com/api/npm/npm-remote/caniuse-lite/-/caniuse-lite-1.0.30001084.tgz#00e471931eaefbeef54f46aa2203914d3c165669" - integrity sha1-AORxkx6u++71T0aqIgORTTwWVmk= +caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: + version "1.0.30001158" + resolved "https://packages.atlassian.com/api/npm/npm-remote/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz#fce86d321369603c2bc855ee0e901a7f49f8310b" + integrity sha1-/OhtMhNpYDwryFXuDpAaf0n4MQs= capture-exit@^2.0.0: version "2.0.0" @@ -3821,6 +4514,19 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo= + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8= + character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -3841,7 +4547,7 @@ chardet@^0.7.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= -chokidar@^2.0.4, chokidar@^2.1.8: +chokidar@^2.1.8: version "2.1.8" resolved "https://packages.atlassian.com/api/npm/npm-remote/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc= @@ -3860,10 +4566,10 @@ chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.0: - version "3.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha1-swYRQjzjdjV8dlubj5BLn7o8C+g= +chokidar@^3.3.0, chokidar@^3.4.1: + version "3.4.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha1-wd84IxRI5FykrFiObHlXO6alfVs= dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -3871,15 +4577,20 @@ chokidar@^3.4.0: is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.5.0" optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs= +chownr@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha1-Fb++U9LqtM9w8YqM1o6+Wzyx3s4= + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -3900,6 +4611,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha1-QYb8yg6uF1lwruhwuf4tbPjVZV8= + class-utils@^0.3.5: version "0.3.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3933,9 +4649,9 @@ cli-boxes@^1.0.0: integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha1-U47K6PnGylCOPDyVtFP+k8tMFo0= + version "2.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha1-3dUDXSUJT84iDpyrQKRYQKRAMY8= cli-cursor@^2.1.0: version "2.1.0" @@ -3951,13 +4667,13 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@0.5.1: - version "0.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha1-AlI3LZTfxA29jfBgBfSPMfZW8gI= +cli-table3@0.6.0: + version "0.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha1-t7G8ZcqOe1zvkSThPcKyHizk+u4= dependencies: object-assign "^4.1.0" - string-width "^2.1.1" + string-width "^4.2.0" optionalDependencies: colors "^1.1.2" @@ -3966,6 +4682,11 @@ cli-width@^2.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha1-sEM9C06chH7xiGik7xb9X8gnHEg= +cli-width@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha1-ovSEN6LKqaIkNueUvwceyeYc7fY= + clipboard@^2.0.0: version "2.0.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" @@ -3984,17 +4705,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - clone@^1.0.2: version "1.0.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -4005,15 +4715,6 @@ co@^4.6.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM= - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4061,12 +4762,17 @@ color-name@~1.1.4: resolved "https://packages.atlassian.com/api/npm/npm-remote/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= +colorette@^1.2.1: + version "1.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha1-TQuSEyXBT6+SYzCGpTbbbolWSxs= + colors@^1.1.2: version "1.4.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha1-xQSRR51MG9rtLJztMs98fcI2D3g= -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://packages.atlassian.com/api/npm/npm-remote/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= @@ -4083,11 +4789,16 @@ commander@^2.19.0, commander@^2.20.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM= -commander@^4.0.1, commander@^4.1.1: +commander@^4.1.1: version "4.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha1-n9YCvZNilOnp70aj9NaWQESxgGg= +commander@^5.0.0: + version "5.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha1-Rqu9FlL44Fm92u+Zu9yyrZzxea4= + commondir@^1.0.1: version "1.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -4098,6 +4809,11 @@ component-emitter@^1.2.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= +compute-scroll-into-view@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" + integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== + concat-map@0.0.1: version "0.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -4188,38 +4904,30 @@ copy-to-clipboard@^3.0.8: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha1-KlHZpOJd/W5pAlGqgfmePAVIHxw= +core-js-compat@^3.6.2, core-js-compat@^3.7.0: + version "3.7.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed" + integrity sha1-hHnF09Zy2D8fWrlM81PlcRPgZe0= dependencies: - browserslist "^4.8.5" + browserslist "^4.14.6" semver "7.0.0" core-js-pure@^3.0.0, core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha1-x5519eONvIWmYtke6lK4JW1TuBM= + version "3.7.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js-pure/-/core-js-pure-3.7.0.tgz#28a57c861d5698e053f0ff36905f7a3301b4191e" + integrity sha1-KKV8hh1WmOBT8P82kF96MwG0GR4= -core-js@^3.0.1, core-js@^3.0.4: - version "3.6.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo= +core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5: + version "3.7.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f" + integrity sha1-sKdhoCSIV3r7+XF55Ggb9JVoUg8= core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -corejs-upgrade-webpack-plugin@^2.2.0: - version "2.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz#503293bf1fdcb104918eb40d0294e4776ad6923a" - integrity sha1-UDKTvx/csQSRjrQNApTkd2rWkjo= - dependencies: - resolve-from "^5.0.0" - webpack "^4.38.0" - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0: version "5.2.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha1-BA9yaAnFked6F8CjYmykW08Wixo= @@ -4240,18 +4948,54 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha1-75tE13OVnK5j3ezRIt4jhTtg+NM= + 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" + +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cpy@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.1.tgz#066ed4c6eaeed9577df96dae4db9438c1a90df62" + integrity sha512-vqHT+9o67sMwJ5hUd/BAOYeemkU+MuFRsK2c36Xc3eefQpAsp1kAsyDxEDcc5JS1+y9l/XHPrIsVTcyGGmkUUQ== + dependencies: + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" + "crc32@>= 0.2.2": version "0.2.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/crc32/-/crc32-0.2.2.tgz#7ad220d6ffdcd119f9fc127a7772cacea390a4ba" integrity sha1-etIg1v/c0Rn5/BJ6d3LKzqOQpLo= create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8= + version "4.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4= dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" @@ -4276,7 +5020,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@0.3.0, create-react-context@^0.3.0: +create-react-context@0.3.0: version "0.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" integrity sha1-VG3t6dxCLe8NP8L+A6/gvA9PfYw= @@ -4284,16 +5028,14 @@ create-react-context@0.3.0, create-react-context@^0.3.0: gud "^1.0.0" warning "^4.0.3" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha1-CrVihuD3wk4VPQTMKqAn5DqaXRQ= dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" @@ -4304,6 +5046,17 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= + 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: version "7.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4335,7 +5088,7 @@ css-color-keywords@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= -css-loader@^3.0.0: +css-loader@^3.5.3: version "3.6.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" integrity sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU= @@ -4354,11 +5107,6 @@ css-loader@^3.0.0: schema-utils "^2.7.0" semver "^6.3.0" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc= - css-select@^1.1.0: version "1.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -4369,16 +5117,6 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" -css-select@^2.0.0: - version "2.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8= - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-to-react-native@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" @@ -4388,102 +5126,71 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha1-mL69YsTB2flg7DQM+fdSLjBwmiI= - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha1-K/8//huz93bPfu/ZHuXLp3oUnus= - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - css-what@2.1: version "2.1.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI= -css-what@^3.2.1: - version "3.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" - integrity sha1-EP7Glqns4uWRrHctdZqsq6w4zTk= - css.escape@^1.5.1: version "1.5.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^2.2.4: - version "2.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha1-xkZ1XHOXHyu6amAeLPL9cbEpiSk= +css@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha1-REek1Y/dAzZ8UWyp9krjZc7kql0= dependencies: - inherits "^2.0.3" + inherits "^2.0.4" source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" + source-map-resolve "^0.6.0" cssesc@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4= -csso@^4.0.2: - version "4.0.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha1-DZmF3IUsfMKyys+74QeQFNGo6QM= - dependencies: - css-tree "1.0.0-alpha.39" - -cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: - version "0.3.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o= - -cssom@^0.4.1: +cssom@^0.4.4: version "0.4.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha1-WmbPk9LQtmHYC/akT7ZfXC5OChA= -cssstyle@^1.1.1: - version "1.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha1-nTEyginTxWXGHlhrAgQaKPzNzPE= - dependencies: - cssom "0.3.x" +cssom@~0.3.6: + version "0.3.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o= -cssstyle@^2.0.0: +cssstyle@^2.2.0: version "2.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha1-/2ZaDdvcMYZLCWR/NBY0Q9kLCFI= dependencies: cssom "~0.3.6" -csstype@^2.2.0, csstype@^2.5.7: - version "2.6.10" - resolved "https://packages.atlassian.com/api/npm/npm-remote/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha1-5jr1DmbXwmbttrMpCc/Qqr4Dkos= +csstype@^2.5.7: + version "2.6.14" + resolved "https://packages.atlassian.com/api/npm/npm-remote/csstype/-/csstype-2.6.14.tgz#004822a4050345b55ad4dcc00be1d9cf2f4296de" + integrity sha1-AEgipAUDRbVa1NzAC+HZzy9Clt4= + +csstype@^3.0.2: + version "3.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" + integrity sha1-f97GoopnrhhkfFFmip/5W7L6e7g= csv-generate@^3.2.4: - version "3.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-generate/-/csv-generate-3.2.4.tgz#440dab9177339ee0676c9e5c16f50e2b3463c019" - integrity sha1-RA2rkXcznuBnbJ5cFvUOKzRjwBk= + version "3.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-generate/-/csv-generate-3.3.0.tgz#0e25658f1bb9806d94fec7b270896a35c7eedf1a" + integrity sha1-DiVljxu5gG2U/seycIlqNcfu3xo= csv-parse@^4.8.8: - version "4.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-parse/-/csv-parse-4.10.1.tgz#1e26ba63d29c75e94d0eba6e9de9a8aaf89d72a6" - integrity sha1-Hia6Y9KcdelNDrpunemoqvidcqY= + version "4.14.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-parse/-/csv-parse-4.14.1.tgz#b6b3736508fb94682fa6d450fe1755237221d291" + integrity sha1-trNzZQj7lGgvptRQ/hdVI3Ih0pE= csv-stringify@^5.3.6: - version "5.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-stringify/-/csv-stringify-5.5.0.tgz#0bdeaaf60d6e15b89c752a0eceb4b4c2c8af5a8a" - integrity sha1-C96q9g1uFbicdSoOzrS0wsivWoo= + version "5.5.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/csv-stringify/-/csv-stringify-5.5.3.tgz#b7a287daee7492de3722b13dccb238f2d60db522" + integrity sha1-t6KH2u50kt43IrE9zLI48tYNtSI= csv@^5.3.1: version "5.3.2" @@ -4514,14 +5221,19 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha1-Fe4Fgrql4iu1nHcUDaj5x2lju/4= +data-urls@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha1-FWSFpyljqXD11YIar2Qr7yvy25s= dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +dataloader@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" + integrity sha1-QerxI9sRWYfiHKk8AFzXdTxV/m8= debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" @@ -4530,7 +5242,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5: +debug@^3.0.0: version "3.2.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= @@ -4538,13 +5250,13 @@ debug@^3.0.0, debug@^3.2.5: ms "^2.1.1" debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= + version "4.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha1-fxUPk5IOlMWPVXTC/QGjEQ7/5/E= dependencies: - ms "^2.1.1" + ms "2.1.2" -decamelize-keys@^1.0.0: +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= @@ -4557,22 +5269,20 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha1-I4rnsPDHk9PjzqQQEIs1osAUJqM= + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-equal@^1.1.1: - version "1.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o= - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-is@~0.1.3: version "0.1.3" @@ -4673,11 +5383,6 @@ detect-newline@^3.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE= -detect-node@^2.0.4: - version "2.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha1-AU7o+PZpxcWAI9pkuBecCDooxGw= - detect-port-alt@1.1.6: version "1.1.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" @@ -4699,10 +5404,10 @@ diacritics-map@^0.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af" integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68= -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha1-X0Z8AO3TU1K3vKRteSfWDmh6dt0= +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha1-SLqZFX3hkjQS7tQdtrbUqpynwLE= diffie-hellman@^5.0.0: version "5.0.3" @@ -4749,10 +5454,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.4.5: - version "0.4.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/dom-accessibility-api/-/dom-accessibility-api-0.4.5.tgz#d9c1cefa89f509d8cf132ab5d250004d755e76e3" - integrity sha1-2cHO+on1CdjPEyq10lAATXVeduM= +dom-accessibility-api@^0.5.4: + version "0.5.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" + integrity sha1-sG0FnN1KStmnknX51BSlwSYkEWY= dom-converter@^0.2: version "0.2.0" @@ -4785,16 +5490,16 @@ domelementtype@1, domelementtype@^1.3.1: integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= domelementtype@^2.0.1: - version "2.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha1-H4vf6R9aeAYydOgDtL3O326U+U0= + version "2.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" + integrity sha1-87blSSAeRvWItZRj3XcYcTH+aXE= -domexception@^1.0.1: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA= +domexception@^2.0.1: + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha1-+0Su+6eT4VdLCvau0oAdBXUp8wQ= dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" domhandler@^2.3.0: version "2.4.2" @@ -4811,7 +5516,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= @@ -4856,10 +5561,20 @@ dotenv@^8.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha1-l+YZJZradQ7qPk6j4mvO6lQksWo= +downshift@^6.0.6: + version "6.1.0" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.0.tgz#f008063d9b63935910d9db12ead07979ab51ce66" + integrity sha512-MnEJERij+1pTVAsOPsH3q9MJGNIZuu2sT90uxOCEOZYH6sEzkVGtUcTBVDRQkE8y96zpB7uEbRn24aE9VpHnZg== + dependencies: + "@babel/runtime" "^7.12.5" + compute-scroll-into-view "^1.0.16" + prop-types "^15.7.2" + react-is "^17.0.1" + duplexer@^0.1.1: - version "0.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + version "0.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY= duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" @@ -4884,15 +5599,17 @@ ee-first@1.1.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.7.4: - version "2.7.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha1-SGYSh1c9zFPjZsehrlLDoSDuybo= +ejs@^3.1.2: + version "3.1.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" + integrity sha1-rtcjhE3CCstLFwzZqxAX5Hag2Ts= + dependencies: + jake "^10.6.1" -electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.413: - version "1.3.474" - resolved "https://packages.atlassian.com/api/npm/npm-remote/electron-to-chromium/-/electron-to-chromium-1.3.474.tgz#161af012e11f96795eade84bf03b8ddc039621b9" - integrity sha1-FhrwEuEflnlerehL8DuN3AOWIbk= +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591: + version "1.3.598" + resolved "https://packages.atlassian.com/api/npm/npm-remote/electron-to-chromium/-/electron-to-chromium-1.3.598.tgz#8f757018902ab6190323a8c5f6124d854893a35b" + integrity sha1-j3VwGJAqthkDI6jF9hJNhUiTo1s= element-resize-detector@^1.2.1: version "1.2.1" @@ -4901,10 +5618,10 @@ element-resize-detector@^1.2.1: dependencies: batch-processor "1.0.0" -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I= +elliptic@^6.5.3: + version "6.5.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha1-y1nrLv2vc6C9eMzXAVpirW4Pk9Y= dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -4914,6 +5631,11 @@ elliptic@^6.0.0, elliptic@^6.5.2: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emittery@^0.7.1: + version "0.7.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha1-JVlZCOE68PVnSrQZOW4vs5TN+oI= + emoji-regex@^7.0.1: version "7.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -4955,21 +5677,39 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" - integrity sha1-XUO9pKD9RHyw675xvvje/4gFrQ0= +endent@^2.0.1: + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/endent/-/endent-2.0.1.tgz#fb18383a3f37ae3213a5d9f6c4a880d1061eb4c5" + integrity sha1-+xg4Oj83rjITpdn2xKiA0QYetMU= + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.4" + +enhanced-resolve@^4.0.0: + version "4.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha1-O4BvO/r8HsfeaVUe+TzKRsFwQSY= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.0: - version "2.3.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" - integrity sha1-OrK4ON8KnYq559/yNbDocS75I4E= +enquirer@^2.3.0, enquirer@^2.3.6: + version "2.3.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00= dependencies: - ansi-colors "^3.2.1" + ansi-colors "^4.1.1" entities@^1.1.1, entities@^1.1.2: version "1.1.2" @@ -4977,9 +5717,9 @@ entities@^1.1.1, entities@^1.1.2: integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= entities@^2.0.0: - version "2.0.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha1-XEh+V0Krk8Fau12iJ1m4WQ7AO38= + version "2.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha1-mS0xKc999ocLlsV4WMJJoSD4uLU= errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -4995,20 +5735,45 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha1-kUIHFweFeyysx7iey2cDFsPi1So= +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha1-pN5hsvZpifx0IWdsHLl4dXOs5Uw= dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" object-keys "^1.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha1-bjoKS9pxflAjqzuOkL7DYQjSLGg= + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" @@ -5018,11 +5783,12 @@ es-array-method-boxes-properly@^1.0.0: integrity sha1-hz8+hEGN5O4Zxb51KZCy5EcY0J4= es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha1-u5itnW1jsxqs3I+J1dDuV7y1tMg= + version "1.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha1-uT3dhnrxbVEY4AiBOWUzwcZketk= dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -5045,24 +5811,34 @@ es5-shim@^4.5.13: integrity sha1-kACeEBnQ6jJ0R8tSPer/j+RWl+8= es6-shim@^0.35.5: - version "0.35.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" - integrity sha1-RvWdwKhKHFAp6P8RZsoKkCB3qas= + version "0.35.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es6-shim/-/es6-shim-0.35.6.tgz#d10578301a83af2de58b9eadb7c2c9945f7388a0" + integrity sha1-0QV4MBqDry3li56tt8LJlF9ziKA= + +escalade@^3.1.1: + version "3.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= escape-html@~1.0.3: version "1.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.0, escodegen@^1.11.1: - version "1.14.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/escodegen/-/escodegen-1.14.2.tgz#14ab71bf5026c2aa08173afba22c6f3173284a84" - integrity sha1-FKtxv1AmwqoIFzr7oixvMXMoSoQ= +escodegen@^1.14.1: + version "1.14.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha1-TnuB+6YVgdyXWC7XjKt/Do1j9QM= dependencies: esprima "^4.0.1" estraverse "^4.2.0" @@ -5091,21 +5867,21 @@ eslint-plugin-react-hooks@^1.5.0: integrity sha1-YhC21aNyBfC5KFj4laToJwIKfQQ= eslint-plugin-react@^7.12.4: - version "7.20.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3" - integrity sha1-+YcS8KXlff0+VULvBgS4c5zUe+M= + version "7.21.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" + integrity sha1-ULIaQSuVdL/gWyHbF26LezsVv/M= dependencies: array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" object.fromentries "^2.0.2" object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.15.1" + resolve "^1.18.1" string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" @@ -5123,9 +5899,9 @@ eslint-utils@^1.3.1: eslint-visitor-keys "^1.1.0" eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz#74415ac884874495f78ec2a97349525344c981fa" - integrity sha1-dEFayISHRJX3jsKpc0lSU0TJgfo= + version "1.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha1-MOvR73wv3/AcOk8VEESvJfqwUj4= eslint@^5.15.1: version "5.16.0" @@ -5178,7 +5954,7 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= @@ -5191,21 +5967,31 @@ esquery@^1.0.1: estraverse "^5.1.0" esrecurse@^4.1.0: - version "4.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8= + version "4.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE= dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= -estraverse@^5.1.0: - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha1-N0MJ05/ZNa5QDnuS6Ka0xyDllkI= +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA= + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA= + +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha1-+OAw+yHO+hg7RLetUWt0dDTno+A= esutils@^2.0.2: version "2.0.3" @@ -5217,22 +6003,10 @@ etag@~1.8.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha1-tUY6zmNaCD0Bi9x8kXtMXxCoU4Q= - events@^3.0.0: - version "3.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk= - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA= - dependencies: - original "^1.0.0" + version "3.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha1-k7h8GPjvzUICpGGuxN/AVWtjk3k= evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -5273,10 +6047,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0: - version "3.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha1-wI7UVQ72XYWPrCaf/IVyRG8364k= +execa@^4.0.0: + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha1-TlSRrRVy8vF6d9OIxshXE1sihHo= dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -5285,7 +6059,6 @@ execa@^3.2.0: merge-stream "^2.0.0" npm-run-path "^4.0.0" onetime "^5.1.0" - p-finally "^2.0.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" @@ -5314,17 +6087,17 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expect@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha1-8H+EhxKigTu1kWfaP7goyiH1i7o= +expect@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha1-xrmWvya/P+GLZ7LQ9R/JgbqTRBc= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" express@^4.17.0: version "4.17.1" @@ -5383,11 +6156,11 @@ extend@~3.0.2: integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= extendable-error@^0.1.5: - version "0.1.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/extendable-error/-/extendable-error-0.1.5.tgz#122308a7097bc89a263b2c4fbf089c78140e3b6d" - integrity sha1-EiMIpwl7yJomOyxPvwiceBQOO20= + version "0.1.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" + integrity sha1-YLmt8gYmSskgBYpzlWha5GcMK5Y= -external-editor@^3.0.3: +external-editor@^3.0.3, external-editor@^3.1.0: version "3.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= @@ -5447,7 +6220,7 @@ fast-glob@^2.0.2, fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1: +fast-glob@^3.1.1, fast-glob@^3.2.4: version "3.2.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" integrity sha1-0grvv5lXk4Pn88xmUpFYybmFVNM= @@ -5459,6 +6232,11 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha1-Q+XGHuTvqSZWMwRrdw+2gqdXfE0= + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -5470,26 +6248,19 @@ fast-levenshtein@~2.0.6: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: - version "1.8.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha1-VQ4fn1m7xl/hhctqm02VNXEH9IE= + version "1.9.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" + integrity sha1-4Wpy8zjqykjpG1wjWTvMLvZreUc= dependencies: reusify "^1.0.4" -fault@^1.0.2: +fault@^1.0.0: version "1.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha1-6vz8Cm0hT8lGAeFw3ymVSk+ELxM= + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: format "^0.2.0" -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha1-XA6aiWjokSwoZjn96XeosgnyUI4= - dependencies: - websocket-driver ">=0.5.1" - fb-watchman@^2.0.0: version "2.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -5523,13 +6294,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^4.2.0: - version "4.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8= +file-loader@^6.0.0: + version "6.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha1-uu98+OGEDfMl5DkLRISHlIDuvk0= dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-system-cache@^1.0.5: version "1.0.5" @@ -5545,10 +6316,17 @@ file-uri-to-path@1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90= -filesize@3.6.1: - version "3.6.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc= +filelist@^1.0.1: + version "1.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha1-8Q0aOuhsFpSAjo8gkG9D1MkTLbs= + dependencies: + minimatch "^3.0.4" + +filesize@6.0.1: + version "6.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha1-+FC1CZCcfIb35FDqGQBsMcLtPS8= fill-range@^2.1.0: version "2.2.4" @@ -5591,7 +6369,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc= @@ -5600,7 +6378,7 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha1-ibM/rUpGcNqpT4Vff74x1thP6IA= @@ -5614,26 +6392,34 @@ find-root@^1.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ= -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= dependencies: - locate-path "^3.0.0" + locate-path "^5.0.0" + path-exists "^4.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= +find-up@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= dependencies: - locate-path "^5.0.0" + locate-path "^3.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw= + dependencies: + locate-path "^6.0.0" path-exists "^4.0.0" find-workspaces-root@^0.2.0: @@ -5646,7 +6432,7 @@ find-workspaces-root@^0.2.0: find-up "^4.1.0" get-workspaces "^0.6.0" -find-yarn-workspace-root2@^1.2.11: +find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://packages.atlassian.com/api/npm/npm-remote/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" integrity sha1-YChwCd0vMk9ZZGvbS3YQprMBwqk= @@ -5676,47 +6462,52 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -focus-lock@^0.6.7: - version "0.6.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/focus-lock/-/focus-lock-0.6.8.tgz#61985fadfa92f02f2ee1d90bc738efaf7f3c9f46" - integrity sha1-YZhfrfqS8C8u4dkLxzjvr388n0Y= - -for-in@^0.1.3: - version "0.1.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3: - version "0.1.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha1-zh13GQtE2Bp2GxC2KEo3N5XkHww= +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha1-oWQsDT5l9QwswXQunAqA9EH4axk= dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" - chokidar "^2.0.4" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +fork-ts-checker-webpack-plugin@^4.1.4: + version "4.1.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha1-UFXHA/6883+gZAXUAMEiuQUWf8U= + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" micromatch "^3.1.10" minimatch "^3.0.4" semver "^5.6.0" tapable "^1.0.0" worker-rpc "^0.1.0" +form-data@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha1-MbfjnIXxNVtxOe4MZHzw3n+DxoI= + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5776,7 +6567,7 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1, fs-extra@^8.1.0: +fs-extra@^8.1.0: version "8.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA= @@ -5785,6 +6576,16 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha1-kQ2gBiQ3ukw5/t2GPxZ1zP78ufw= + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5815,7 +6616,12 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.1.2: +fsevents@^2.1.2: + version "2.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" + integrity sha1-H7At7SA2qKwojVB6ZZYr2HuXYo0= + +fsevents@~2.1.2: version "2.1.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4= @@ -5844,7 +6650,7 @@ functions-have-names@^1.2.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha1-qYGsOX+gyZZFUUAs3FUz16TVL5E= -fuse.js@^3.4.6: +fuse.js@^3.6.1: version "3.6.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" integrity sha1-fehf3W4bM3fCPOAQiSZWOF/ZsQw= @@ -5864,15 +6670,24 @@ gauge@~2.7.3: wide-align "^1.1.0" gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk= + version "1.0.0-beta.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA= get-caller-file@^2.0.1: version "2.0.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: + version "1.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha1-lKl2j8vdBZWhySc6rPTInQdWMb4= + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5896,9 +6711,9 @@ get-stream@^4.0.0: pump "^3.0.0" get-stream@^5.0.0: - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha1-ASA83JJZf5uQkGfD5lbMH008Tck= + version "5.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha1-SWaheV7lrOZecGxLe+txJX1uItM= dependencies: pump "^3.0.0" @@ -5925,17 +6740,17 @@ getpass@^0.1.1: assert-plus "^1.0.0" git-up@^4.0.0: - version "4.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha1-yy7whmU2QOch0gQv4xBIV9iQB8A= + version "4.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" + integrity sha1-EMPXMQUbNm3BnT30VL/KP3eROnw= dependencies: is-ssh "^1.3.0" parse-url "^5.0.0" git-url-parse@^11.1.2: - version "11.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" - integrity sha1-r/Gol8NsyTaZJwWHvqPby7uV3mc= + version "11.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/git-url-parse/-/git-url-parse-11.4.0.tgz#f2bb1f2b00f05552540e95a62e31399a639a6aa6" + integrity sha1-8rsfKwDwVVJUDpWmLjE5mmOaaqY= dependencies: git-up "^4.0.0" @@ -5969,12 +6784,19 @@ glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" + integrity sha1-trjwhFBCFvcC3CzoybyayIZv2yA= + dependencies: + "@types/glob" "*" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= @@ -6068,7 +6890,7 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha1-Ila94U02MpWMRl68ltxGfKB6Kfs= @@ -6130,13 +6952,18 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA= + version "5.1.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha1-HwgDufjLIMD6E4It8ezds2veHv0= dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha1-HG7aXBaFxjlCdm15u0Cudzzs2IM= + has-ansi@^2.0.0: version "2.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -6154,7 +6981,14 @@ has-flag@^4.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= + dependencies: + is-glob "^3.0.0" + +has-symbols@^1.0.1: version "1.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= @@ -6220,15 +7054,16 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha1-YMmdC1GeEqtO0y5Y8VDsP2HtGXQ= + version "2.2.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha1-1Xwj9NoWrjxjs7bKRhZoMxNJnDo= -hastscript@^5.0.0: - version "5.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" - integrity sha1-veLC5W0Exi3SToxd8ojQUKNV+4o= +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.0.0" property-information "^5.0.0" @@ -6239,10 +7074,10 @@ he@^1.2.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= -highlight.js@~9.13.0: - version "9.13.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" - integrity sha1-BUWG1TpoYzERaEiKD1jWxQXOZB4= +highlight.js@^10.1.1, highlight.js@~10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f" + integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw== hmac-drbg@^1.0.0: version "1.0.1" @@ -6265,18 +7100,23 @@ hosted-git-info@^2.1.4: resolved "https://packages.atlassian.com/api/npm/npm-remote/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg= -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg= +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha1-QqbcT9M/ACgRduiyN1nKTk+hhfM= dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-entities@^1.2.0: version "1.3.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" integrity sha1-+5oaS1sUxdq6gtPjTGrk/nAaDkQ= +html-entities@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + html-escaper@^2.0.0: version "2.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -6300,10 +7140,10 @@ html-tags@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98" integrity sha1-x43mW1Zjqll5id0rerSSANfk25g= -html-webpack-plugin@^4.0.0-beta.2: - version "4.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" - integrity sha1-U7+PbWlsRjfVtlbT2YY9ic6BdP0= +html-webpack-plugin@^4.2.1: + version "4.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha1-YlCXZQiGuX6l2uMxwyDjI49sEhw= dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" @@ -6356,11 +7196,6 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha1-2i4x0jezk6rnKs5DiC3X4nCo/3c= - http-signature@~1.2.0: version "1.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -6400,15 +7235,22 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: postcss "^7.0.14" ieee754@^1.1.4: - version "1.1.13" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q= + version "1.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I= iferr@^0.1.5: version "0.1.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= +ignore-walk@^3.0.3: + version "3.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha1-AX4kRxhL/q3nwjjkrv3R6PlbHjc= + dependencies: + minimatch "^3.0.4" + ignore@^3.3.5: version "3.3.10" resolved "https://packages.atlassian.com/api/npm/npm-remote/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -6444,10 +7286,10 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY= +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha1-/BKcFgxdaCNVB/QzGmuq0Ya9vD4= dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -6520,22 +7362,22 @@ ini@^1.3.5: resolved "https://packages.atlassian.com/api/npm/npm-remote/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= -inquirer@6.5.0: - version "6.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha1-IwMxfvyaTqfsLi32+GVptzSsz0I= +inquirer@7.0.4: + version "7.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha1-ma9b3kcVOryiP1x/ww2yR/OdpwM= dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -6559,20 +7401,20 @@ inquirer@^6.2.2: through "^2.3.6" inquirer@^7.0.0: - version "7.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a" - integrity sha1-Y86Z2CMJDefrQg5LsF5vNEmqOJo= + version "7.3.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM= dependencies: ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.1.0" cli-cursor "^3.1.0" - cli-width "^2.0.0" + cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.15" + lodash "^4.17.19" mute-stream "0.0.8" run-async "^2.4.0" - rxjs "^6.5.3" + rxjs "^6.6.0" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" @@ -6596,7 +7438,7 @@ interpret@^2.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha1-GnigtZZcQKVBbQB61vUK0nxBffk= -invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: +invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY= @@ -6669,15 +7511,15 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha1-76ouqdqg16suoTqXsritUf776L4= -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha1-gzNlYLVKOONeOi33r9BFTWkUaLs= +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha1-x8ZxXNItTdtI0+GZcCI6zquwgNk= is-ci@^2.0.0: version "2.0.0" @@ -6686,6 +7528,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha1-pMwDHZsaymPuy9GKZQ4Ty07quUY= + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6734,9 +7583,14 @@ is-directory@^0.3.1: integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-docker@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha1-LLDfDnXi0GT+GGTDfN6st7Lc8ls= + version "2.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha1-QSWojkTkUNOE4JBH7eca3C0UQVY= + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -6777,7 +7631,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= -is-function@^1.0.1: +is-function@^1.0.2: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha1-Twl/MKv2762smDOxfKXcA/gUTgg= @@ -6794,7 +7648,7 @@ is-glob@^2.0.0: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: +is-glob@^3.0.0, is-glob@^3.1.0: version "3.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= @@ -6825,6 +7679,16 @@ is-map@^2.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha1-Ug2vxDB7uOvDO4E95c58lADWRKE= +is-module@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + is-number@^2.1.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -6849,29 +7713,34 @@ is-number@^7.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc= dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha1-R7/F2htdUNZBEIBsGZNZSC51qSg= +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha1-iy2sCzcfS8mU/eq6nrVC0DAC0Lc= dependencies: - isobject "^4.0.0" + "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.0: - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" - integrity sha1-7OOOOJ5JDfDcIcrqK9WW+Yf3Z/8= +is-regex@^1.1.1: + version "1.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k= dependencies: has-symbols "^1.0.1" @@ -6886,9 +7755,9 @@ is-set@^2.0.1: integrity sha1-0WBK/asXJJhtMAkVdfVJRdp+X0M= is-ssh@^1.3.0: - version "1.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha1-80moyt0k5lKYA3pSLPdSDy6BoPM= + version "1.3.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b" + integrity sha1-pLgqtj1zl2/YJjzO7if5moi9ris= dependencies: protocols "^1.1.0" @@ -6936,7 +7805,7 @@ is-wsl@^1.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE= @@ -6985,7 +7854,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha1-9ZRKN8cLVQsCp4pcOyBVsoDOyOw= -istanbul-lib-instrument@^4.0.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha1-hzxv/4l0UBGCIndGlqPyiQLXfB0= @@ -7034,177 +7903,188 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -jest-changed-files@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" - integrity sha1-FBzCNWfOs/U0Um+GFLo5QhODY0w= +jake@^10.6.1: + version "10.8.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha1-68nehVgWCmbYLQ6txqLlj7xQCns= + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha1-9hmEeeHMZvIvmuHiKsqgtCnAQtA= dependencies: - "@jest/types" "^25.5.0" - execa "^3.2.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" throat "^5.0.0" -jest-cli@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" - integrity sha1-ufGoTRMBqSxcIXaEy3mECDHbnw0= +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha1-QxF8/vJLxM1pGhdKh5alMuE16So= dependencies: - "@jest/core" "^25.5.4" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.5.4" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha1-OOIFez+Xbvcwmyssjc0qcIpn8Cw= +jest-config@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha1-ZPQURO756wPcUdXFO3XIxx9kU0k= dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" + pretty-format "^26.6.2" -jest-diff@^25.1.0, jest-diff@^25.2.1, jest-diff@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha1-HdJu1k+WZnwGjO8Ca2d9+gGvz6k= +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha1-GqdGi1LDpo19XF/c381eSb0WQ5Q= dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha1-i3d6J+NHfNd6FowFKQxHGldWI+8= +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha1-Pi+iCJn8koyxO9D/aL03EaNoibU= dependencies: detect-newline "^3.0.0" -jest-each@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha1-DDwnl+giXLe+x+TSSdzZa5NL5RY= - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" - -jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha1-3L5NouqZdweZcEDs9uJWCuxOmDQ= - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" - -jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha1-D1UnDZSASQKYjmStyjfGzg99B6E= - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" +jest-each@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha1-AlJkOKd6Z0AcimOC3+WZmVLBZ8s= + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha1-eNCf6c8BmjVwCbm34fEB0jvR2j4= + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha1-gk5Mf7SURkY1bxGsdbIpsANfKww= + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha1-Cwoy+riQi0TVCL6BaBSH26u42Hc= +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha1-6X3Dw/U8K0Bsp6+u1Ek7HQmRmeA= -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha1-HfEPcWwdlOYKHr93mMn7PaJiCUM= +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha1-3X5g/n3A6fkRoj15xf9/tcLK/qo= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" + "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" - which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha1-ZsqLMo+xo8U2SBb4lY9pcKhSaWg= +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha1-rcPPkV3qy1ISyTufNUfNEpWPLt0= dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.5.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha1-IpHGKUsM5AQkG7Vv5g4tDD408Ls= +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha1-dxfPEYuSI48uumUFTIoMnGU6ka8= dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^25.1.0, jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha1-+8mKEtcw5dJFPX8e1KTZSONLeGc= +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha1-jm/W6GPIstMaxkcu6yN7xZXlPno= dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" jest-message-util@^24.9.0: version "24.9.0" @@ -7220,19 +8100,20 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha1-6hHZMgTMeul0VuHYcWJRGFuIgOo= +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha1-WBc3RK1vwFBrXSEVC5vlbvABygc= dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" - stack-utils "^1.0.1" + stack-utils "^2.0.2" jest-mock@^24.9.0: version "24.9.0" @@ -7241,108 +8122,110 @@ jest-mock@^24.9.0: dependencies: "@jest/types" "^24.9.0" -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha1-qRpU2r0U437NYWZda24GNgpVOHo= +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha1-1stxKwQe1H/g2bb8NHS8ZUP+swI= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" + "@types/node" "*" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha1-7NrmBMB3p/vHDe+21RfDwciYkjo= +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha1-twSsCuAoqJEIpNBAs/kZ393I4zw= jest-regex-util@^24.9.0: version "24.9.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha1-wT+zOAveIr9ldUMsST6o/jeWVjY= -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha1-2EfTi6FdIRjTsGOQBWAo0PL9OWQ= +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha1-0l5xhLNuOf1GbDvEG+CXHoIf7ig= -jest-resolve-dependencies@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" - integrity sha1-hVAfU5V8jjvkRuhjp0d3taFzl6c= +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha1-ZoCFnuXSLuXc2WH+SHH1n0x4T7Y= dependencies: - "@jest/types" "^25.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" -jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha1-Dm+8+nwm0qX+j0VgiNwzKnkmaCk= +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha1-o6sVFyF/RptQTxtWYDxbtUH7tQc= dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" read-pkg-up "^7.0.1" - realpath-native "^2.0.0" - resolve "^1.17.0" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha1-/+xd84ddpfXIeK5tChe45OzXxx0= +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha1-LR/tPUbhDyM/0dvTv6o/6JJL4Vk= dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha1-3Jgf4sshN6vNMZ50zK5/fu/7+qs= - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha1-T2TvvPrDmDMbdLSzyC0n1AG4+is= + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" jest-serializer-html-string@^1.0.1: version "1.0.1" @@ -7352,33 +8235,35 @@ jest-serializer-html-string@^1.0.1: html "^1.0.0" is-html "^1.1.0" -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha1-qZP0hOdptO1U5w4O/bdAB/UDBys= +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha1-0Tmq/UaVfTpEjzps2r4pGboHQtE= dependencies: + "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha1-GipXZJH5lh640AwuX9R5vCjl/38= +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha1-87CvGssiMxaFC9FOG+6pg3+znIQ= dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" + pretty-format "^26.6.2" + semver "^7.3.2" jest-util@^24.9.0: version "24.9.0" @@ -7398,28 +8283,29 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-util@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha1-McY7XW6QEnTSZKT+yEkjCqP6NbA= +jest-util@^26.1.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha1-kHU12+TVpstMR6ybkm9q8pV2y8E= dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha1-+0yT8zLC5M9wFRpijlijXkWaQTo= +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha1-I9OAlxWHFQRnNCkRw9e0rFerIOw= dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^25.5.0" + pretty-format "^26.6.2" jest-watch-typeahead@^0.4.2: version "0.4.2" @@ -7447,34 +8333,36 @@ jest-watcher@^24.3.0: jest-util "^24.9.0" string-length "^2.0.0" -jest-watcher@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha1-1hENEB35i63r5DUAOVb9SkZehFY= +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha1-pbaDuPnWjbyx19rjIXLSzKBZKXU= dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^25.4.0, jest-worker@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha1-JhHQcbec6g9D7lej0RhZOsFUfbE= +jest-worker@^26.2.1, jest-worker@^26.3.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha1-f3LLxNZDw2Xie5/XdfnQ6qnHqO0= dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.3.0: - version "25.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" - integrity sha1-8hEHtkic/jKwds4q3K3uNYesuds= +jest@^26.6.0: + version "26.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha1-QOj9vkjwDfofDOgSHKdLiKyRSO8= dependencies: - "@jest/core" "^25.5.4" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^25.5.4" + jest-cli "^26.6.3" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -7499,68 +8387,36 @@ jsbn@~0.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^14.0.0: - version "14.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha1-kWRjtglJVrCmwXgslOOAzTDhmBs= - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - -jsdom@^15.2.1: - version "15.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha1-0v6xrvcYP4a+UhuMaDP/UpbQfsU= - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" +jsdom@^16.4.0: + version "16.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha1-NgBb3i0Tb3Pu4agwxtReVUCO3ds= + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.0.0" + ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -7578,6 +8434,11 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk= +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -7598,11 +8459,6 @@ json-stringify-safe@~5.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json3@^3.3.2: - version "3.3.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E= - json5@2.x, json5@^2.1.1, json5@^2.1.2: version "2.1.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -7631,6 +8487,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4= + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsprim@^1.2.2: version "1.4.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7641,20 +8506,18 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.3: - version "2.4.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha1-ERSkwSCUgdsGxpDCtPSIzGZfZX4= +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" + integrity sha1-ZC8de4iqbX652PIhDhZkeERPqJE= dependencies: array-includes "^3.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" -kind-of@^2.0.1: - version "2.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -7675,7 +8538,7 @@ kind-of@^5.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0= -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0= @@ -7692,16 +8555,6 @@ kleur@^3.0.3: resolved "https://packages.atlassian.com/api/npm/npm-remote/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4= -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - lazy-cache@^2.0.2: version "2.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" @@ -7725,13 +8578,6 @@ leven@^3.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I= -levenary@^1.1.1: - version "1.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha1-hCqe6Y0gdap/ru2+MmeekgX0b3c= - dependencies: - leven "^3.1.0" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7830,17 +8676,24 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha1-VTIeswn+u8WcSAHZMackUqaB0oY= + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.15: + version "4.17.15" + resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" + integrity sha1-Ib2Wg5NUQS8j16EDQOXqxu5FXXg= + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.memoize@4.x, lodash.memoize@^4.1.2: +lodash.memoize@4.x: version "4.1.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= @@ -7870,27 +8723,15 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= - lodash.unescape@4.0.1: version "4.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lolex@^5.0.0: - version "5.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha1-lTaU0JjOfAe8XtbQ5CvGwMbVo2c= - dependencies: - "@sinonjs/commons" "^1.7.0" +lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: + version "4.17.20" + resolved "https://packages.atlassian.com/api/npm/npm-remote/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -7914,13 +8755,13 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" -lowlight@~1.11.0: - version "1.11.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/lowlight/-/lowlight-1.11.0.tgz#1304d83005126d4e8b1dc0f07981e9b689ec2efc" - integrity sha1-EwTYMAUSbU6LHcDweYHptonsLvw= +lowlight@^1.14.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.18.0.tgz#cfff11cfb125ca66f1c12cb43d27fff68cbeafa9" + integrity sha512-Zlc3GqclU71HRw5fTOy00zz5EOlqAdKMYhOFIO8ay4SQEDQgFuhR8JNwDIzAGMLoqTsWxe0elUNmq5o2USRAzw== dependencies: - fault "^1.0.2" - highlight.js "~9.13.0" + fault "^1.0.0" + highlight.js "~10.5.0" lru-cache@^4.0.1: version "4.1.5" @@ -7937,7 +8778,26 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -make-dir@^2.0.0: +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ= + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.7: + version "0.25.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE= + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU= @@ -7979,6 +8839,11 @@ map-obj@^2.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= +map-obj@^4.0.0: + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha1-uRIhtUJzS58UJWwBMsiXxdclb9U= + map-or-similar@^1.5.0: version "1.5.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" @@ -8022,6 +8887,11 @@ markdown-toc@^1.2.0: repeat-string "^1.6.1" strip-color "^0.1.0" +material-colors@^1.2.1: + version "1.2.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha1-bRlYhxEmmSzuzHL0vMTY8BCGX0Y= + math-random@^1.0.1: version "1.0.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -8036,16 +8906,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@2.0.4: - version "2.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs= - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha1-hS3GD8ql2qLoz2yRicRA7T4EKXg= - media-typer@0.3.0: version "0.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8094,14 +8954,39 @@ meow@^5.0.0: trim-newlines "^2.0.0" yargs-parser "^10.0.0" -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - integrity sha1-85+hAKTxvTT/KffSv0UI+7jYOtI= +meow@^6.0.0: + version "6.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" + integrity sha1-GtZMS3ayok37L2Nf3crfMg0lFGc= dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + +meow@^7.1.0: + version "7.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" + integrity sha1-fAFZXj0zf8sOxOju0WZuqVkD0wY= + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" merge-descriptors@1.0.1: version "1.0.1" @@ -8128,14 +9013,6 @@ microevent.ts@~0.1.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha1-cLCbg/Q99RctAgWmMCW84Pc1f6A= -micromatch@4.x, micromatch@^4.0.0, micromatch@^4.0.2: - version "4.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha1-T8sJmb+fvC/L3SEvbWKbmlbDklk= - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://packages.atlassian.com/api/npm/npm-remote/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -8155,6 +9032,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha1-T8sJmb+fvC/L3SEvbWKbmlbDklk= + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -8168,7 +9053,7 @@ mime-db@1.44.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I= -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://packages.atlassian.com/api/npm/npm-remote/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8= @@ -8207,16 +9092,6 @@ min-indent@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha1-pj9oFnOzBXH76LwlaGrnRu76mGk= -mini-css-extract-plugin@^0.7.0: - version "0.7.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" - integrity sha1-W6gpD7tBeaQ90nzKREuhUL7nQ6A= - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -8234,6 +9109,15 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimist-options@4.1.0, minimist-options@^4.0.2: + version "4.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha1-wGVXE8U6ii69d/+iR9NCxA8BBhk= + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + minimist-options@^3.0.1: version "3.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" @@ -8262,9 +9146,9 @@ minipass-flush@^1.0.5: minipass "^3.0.0" minipass-pipeline@^1.2.2: - version "1.2.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" - integrity sha1-VfeDkwfXSFnW6K2pw+vnLOwhajQ= + version "1.2.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha1-aEcveXEcCEZXwGfFxq2Tzd6oIUw= dependencies: minipass "^3.0.0" @@ -8275,6 +9159,14 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha1-6Q00Zrogm5MkUVCKEc49NjIUWTE= + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -8299,20 +9191,17 @@ mixin-deep@^1.1.3, mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" +mixme@^0.4.0: + version "0.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/mixme/-/mixme-0.4.0.tgz#a1aee27f0d63cc905e1cc6ddc98abf94d414435e" + integrity sha1-oa7ifw1jzJBeHMbdyYq/lNQUQ14= -mixme@^0.3.1: - version "0.3.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/mixme/-/mixme-0.3.5.tgz#304652cdaf24a3df0487205e61ac6162c6906ddd" - integrity sha1-MEZSza8ko98EhyBeYaxhYsaQbd0= +mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha1-PrXtYmInVteaXw4qIh3+utdcL34= -mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8= @@ -8341,7 +9230,7 @@ ms@2.1.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1, ms@^2.1.2: version "2.1.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= @@ -8357,9 +9246,9 @@ mute-stream@0.0.8: integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0= nan@^2.12.1: - version "2.14.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha1-174036MQW5FJTDFHCJMV7/iHSwE= + version "2.14.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk= nanomatch@^1.2.9: version "1.2.13" @@ -8378,6 +9267,13 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + natural-compare@^1.4.0: version "1.4.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8389,9 +9285,14 @@ negotiator@0.6.2: integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw= + version "2.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha1-tKr7k+OustgXTKU88WOrfXMIMF8= + +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== nice-try@^1.0.4: version "1.0.5" @@ -8414,9 +9315,9 @@ node-dir@^0.1.10: minimatch "^3.0.2" node-fetch@^2.6.0: - version "2.6.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha1-5jNFY4bUqlWGP2dqerDaqP3ssP0= + version "2.6.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha1-BFvTI2Mfdu0uK1VXM5RBa2OaAFI= node-int64@^0.4.0: version "0.4.0" @@ -8457,21 +9358,22 @@ node-modules-regexp@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha1-zqMZ4GuqFt7sjOXNfxM8Ska2jhI= +node-notifier@^8.0.0: + version "8.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" + integrity sha1-p+7i1R2m0Pf/UJS8cQjJESQMFiA= dependencies: growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.1" + uuid "^8.3.0" + which "^2.0.2" -node-releases@^1.1.29, node-releases@^1.1.53: - version "1.1.58" - resolved "https://packages.atlassian.com/api/npm/npm-remote/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha1-juIO7zD6YOUnVfzAlC3vWnNP6TU= +node-releases@^1.1.52, node-releases@^1.1.66: + version "1.1.67" + resolved "https://packages.atlassian.com/api/npm/npm-remote/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" + integrity sha1-KOv8zNC6pqrY6NTY/ky8Sa4jnBI= normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" @@ -8500,21 +9402,33 @@ normalize-range@^0.1.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: - version "1.9.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - normalize-url@^3.3.0: version "3.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk= +npm-bundled@^1.1.1: + version "1.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha1-Ht1XCGWpTNsbyCIHdeKUZsn7I0s= + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha1-bnmkHyP9I1wGIyGCKNp9nCO49uI= + +npm-packlist@^2.1.2: + version "2.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" + integrity sha1-QOlrK0N4fQVGpXRULQHgZmQNCdo= + dependencies: + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + npm-run-all@^4.1.5: version "4.1.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -8554,7 +9468,7 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@~1.0.1: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw= @@ -8571,7 +9485,7 @@ number-is-nan@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.1.3, nwsapi@^2.2.0: +nwsapi@^2.2.0: version "2.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha1-IEh5qePQaP8qVROcLHcngGgaOLc= @@ -8581,7 +9495,7 @@ oauth-sign@~0.9.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -8595,20 +9509,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= - -object-is@^1.0.1: - version "1.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" +object-inspect@^1.8.0: + version "1.8.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA= -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= @@ -8620,17 +9526,17 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA= dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.1: +object.entries@^1.1.0, object.entries@^1.1.2: version "1.1.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" integrity sha1-vHPwCstra7FsIDQ0sQ+afnl9Ot0= @@ -8649,7 +9555,7 @@ object.entries@^1.1.0, object.entries@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha1-Npvx+VktiridcS3O1cuBx8U1Jkk= @@ -8674,6 +9580,11 @@ object.values@^1.1.0, object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +objectorarray@^1.0.4: + version "1.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/objectorarray/-/objectorarray-1.0.4.tgz#d69b2f0ff7dc2701903d308bb85882f4ddb49483" + integrity sha1-1psvD/fcJwGQPTCLuFiC9N20lIM= + on-finished@~2.3.0: version "2.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -8696,23 +9607,16 @@ onetime@^2.0.0: mimic-fn "^1.0.0" onetime@^5.1.0: - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U= + version "5.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4= dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk= - dependencies: - is-wsl "^1.1.0" - -open@^7.0.0: - version "7.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" - integrity sha1-woqdMV5cmDQL+Xn9yy5YZkqhDYM= +open@^7.0.2, open@^7.0.3: + version "7.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha1-RUYf3uRkRPNkW24U6zypS4Lhvmk= dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" @@ -8729,13 +9633,6 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" -original@^1.0.0: - version "1.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8= - dependencies: - url-parse "^1.4.3" - os-browserify@^0.3.0: version "0.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -8751,11 +9648,30 @@ outdent@^0.5.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha1-nhCYL9xBSSu0c60ThA0i+WVb4v8= +overlayscrollbars@^1.10.2: + version "1.13.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/overlayscrollbars/-/overlayscrollbars-1.13.0.tgz#1edb436328133b94877b558f77966d5497ca36a7" + integrity sha1-HttDYygTO5SHe1WPd5ZtVJfKNqc= + +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== + dependencies: + p-map "^2.0.0" + p-each-series@^2.1.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" integrity sha1-lhyN0/GV6pbHR+Y2smK4AKaxr0g= +p-event@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + p-filter@^2.1.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" @@ -8768,11 +9684,6 @@ p-finally@^1.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE= - p-limit@^1.1.0: version "1.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -8780,13 +9691,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: version "2.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE= dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha1-FmTgEK88rcaBuq/T4qQ3vnsPtf4= + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -8808,6 +9726,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ= + dependencies: + p-limit "^3.0.2" + p-map@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -8815,11 +9740,25 @@ p-map@^2.0.0: p-map@^3.0.0: version "3.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha1-1wTZr4orpoTiYA2aIVmD1BQal50= + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs= dependencies: aggregate-error "^3.0.0" +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8860,21 +9799,20 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha1-ADJxND2ljclMrOSU+u89IUfs6g4= + version "5.1.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ= dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-entities@^1.1.2: - version "1.2.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha1-wxvw9lO2ZhNU+Jc1WcuG3R1e31A= +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" character-entities-legacy "^1.0.0" @@ -8888,6 +9826,16 @@ parse-github-url@^1.0.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" integrity sha1-JC07ZcvN2hS7UEOeMkKs9pcds5U= +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8896,20 +9844,20 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: - version "5.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha1-c+URTJhtFD76NxLU6iTbmkJm9g8= +parse-json@^5.0.0, parse-json@^5.1.0: + version "5.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha1-+WCIzfJKj6qa6poAny2dlCyZlkY= dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse-path@^4.0.0: - version "4.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha1-DsdpcElJd4yzuO2l6ZTDIHOhrf8= + version "4.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-path/-/parse-path-4.0.2.tgz#ef14f0d3d77bae8dd4bc66563a4c151aac9e65aa" + integrity sha1-7xTw09d7ro3UvGZWOkwVGqyeZao= dependencies: is-ssh "^1.3.0" protocols "^1.4.0" @@ -8920,19 +9868,19 @@ parse-repo@^1.0.4: integrity sha1-dLkdLLhnXRG5mXagBl9s4X+hvMg= parse-url@^5.0.0: - version "5.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha1-mcQIT8Eb4UFB76QbPRF6lvy5Un8= + version "5.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59" + integrity sha1-hWo74fzfeNyT/Is3kfFpBy2Ji1k= dependencies: is-ssh "^1.3.0" normalize-url "^3.3.0" parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.0: - version "5.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha1-xZNByXI/QUxFKXVWTHwApo1YrNI= +parse5@5.1.1: + version "5.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg= parse5@^4.0.0: version "4.0.0" @@ -9035,7 +9983,7 @@ performance-now@^2.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha1-IfMz6ba46v8CRo9RRupAbTRfTa0= @@ -9055,7 +10003,7 @@ pify@^4.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE= -pirates@^4.0.1: +pirates@^4.0.0, pirates@^4.0.1: version "4.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha1-ZDqSyviUVm+RsrmG0sZpUKji+4c= @@ -9076,37 +10024,27 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@2.0.0, pkg-up@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha1-EA7CNcwVDk/UJRlBJZaihRKg3vU= dependencies: - find-up "^2.1.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs= + find-up "^3.0.0" -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" - integrity sha1-YqHNMGj0bVZLszxW6yUOTVhmdus= +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha1-yXEaxNxIpoXauvyG+Lbdn434QUk= dependencies: - ts-pnp "^1.1.2" + ts-pnp "^1.1.6" -polished@^3.3.1: - version "3.6.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/polished/-/polished-3.6.5.tgz#dbefdde64c675935ec55119fe2a2ab627ca82e9c" - integrity sha1-2+/d5kxnWTXsVRGf4qKrYnyoLpw= +polished@^3.4.4: + version "3.6.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/polished/-/polished-3.6.7.tgz#44cbd0047f3187d83db0c479ef0c7d5583af5fb6" + integrity sha1-RMvQBH8xh9g9sMR57wx9VYOvX7Y= dependencies: "@babel/runtime" "^7.9.2" -popper.js@^1.14.4, popper.js@^1.14.7: - version "1.16.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha1-KiI8s9x7YhPXQOQDcr5A3kPmWxs= - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -9120,9 +10058,9 @@ postcss-flexbugs-fixes@^4.1.0: postcss "^7.0.26" postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM= + version "2.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha1-xepQTyxK7zPHNZo03jVzdyrXUCo= dependencies: cosmiconfig "^5.0.0" import-cwd "^2.0.0" @@ -9145,14 +10083,14 @@ postcss-modules-extract-imports@^2.0.0: postcss "^7.0.5" postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha1-6KZWG+kUqvPAUodjd1JMqQ27eRU= + version "3.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A= dependencies: icss-utils "^4.1.1" - postcss "^7.0.16" + postcss "^7.0.32" postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" + postcss-value-parser "^4.1.0" postcss-modules-scope@^2.2.0: version "2.2.0" @@ -9171,35 +10109,36 @@ postcss-modules-values@^3.0.0: postcss "^7.0.6" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw= + version "6.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha1-VgdaE4CgRgTDiwY+p3Z6Epr1wrM= dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" + util-deprecate "^1.0.2" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha1-RD9qIM7WSBor2k+oUypuVdeJoss= -postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.26, postcss@^7.0.30, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.32" - resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0= +postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://packages.atlassian.com/api/npm/npm-remote/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha1-0r4AuZj38hHYonaXQHny6SuXDiQ= dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" preferred-pm@^3.0.0: - version "3.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/preferred-pm/-/preferred-pm-3.0.0.tgz#26cc7fbbfc1815e4cb8272d5fdde15dc96220fb8" - integrity sha1-Jsx/u/wYFeTLgnLV/d4V3JYiD7g= + version "3.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/preferred-pm/-/preferred-pm-3.0.2.tgz#bbdbef1014e34a7490349bf70d6d244b8d57a5e1" + integrity sha1-u9vvEBTjSnSQNJv3DW0kS41XpeE= dependencies: - find-up "^4.1.0" - find-yarn-workspace-root2 "^1.2.11" + find-up "^5.0.0" + find-yarn-workspace-root2 "1.2.16" path-exists "^4.0.0" which-pm "2.0.0" @@ -9208,11 +10147,6 @@ prelude-ls@~1.1.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -9220,53 +10154,46 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.16.4, prettier@^1.18.2: +prettier@^1.16.4, prettier@^1.18.2, prettier@^1.19.1: version "1.19.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha1-99f1/4qc2HKnvkyhQglZVqYHl8s= +prettier@~2.0.5: + version "2.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ= + pretty-error@^2.1.1: - version "2.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + version "2.1.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y= dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha1-eHPB13T2gsNLjUi2dDor8qxVeRo= +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha1-41wnBfFMt/4v6U+geDRbREEg/JM= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -prismjs@^1.8.4: - version "1.20.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03" - integrity sha1-m2hfxICjUU7nGY6sajv1AkMZ/wM= - optionalDependencies: - clipboard "^2.0.0" - -prismjs@~1.17.0: - version "1.17.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" - integrity sha1-5mn8vUzdhzw1ECiBwzsU0NaFGb4= +prismjs@^1.21.0, prismjs@~1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33" + integrity sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA== optionalDependencies: clipboard "^2.0.0" -private@^0.1.8, private@~0.1.5: - version "0.1.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8= - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -9308,14 +10235,14 @@ promise.prototype.finally@^3.1.0: function-bind "^1.1.1" prompts@^2.0.1: - version "2.3.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha1-SAVy2J7POVZtK9P+LJ/Mt8TAsGg= + version "2.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha1-SqXeByOiMdHukSHED99mPfc/Ydc= dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" -prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha1-UsQedbjIfnK52TYOAga5ncv/psU= @@ -9325,16 +10252,16 @@ prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: react-is "^16.8.1" property-information@^5.0.0: - version "5.5.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" - integrity sha1-TcB11JMGGoLit9CW9Abgdu2FmUM= + version "5.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha1-YWdVRfsjAC8kXGVA7EYHfU2j7Wk= dependencies: xtend "^4.0.0" protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha1-lfeIpPDpebKR/+/PVjatET0DfTI= + version "1.4.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + integrity sha1-SO6i2PWNlkSkoyyq5dXbKQoHXOg= proxy-addr@~2.0.5: version "2.0.6" @@ -9411,11 +10338,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= -q@^1.1.2: - version "1.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -9431,14 +10353,6 @@ qs@~6.5.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= -query-string@^4.1.0: - version "4.3.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9449,16 +10363,21 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.1.1: - version "2.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= - quick-lru@^1.0.0: version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha1-W4h48ROlgheEjGSCAmxz4bpXcn8= + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha1-NmST5rPkKjpoheLpnRj4D7eoyTI= + ramda@^0.21.0: version "0.21.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" @@ -9503,75 +10422,95 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@^3.1.0: - version "3.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/raw-loader/-/raw-loader-3.1.0.tgz#5e9d399a5a222cc0de18f42c3bc5e49677532b3f" - integrity sha1-Xp05mloiLMDeGPQsO8XklndTKz8= +raw-loader@^4.0.1: + version "4.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha1-GqxrfRrRUB5m79rBUixz5ZpYTrY= dependencies: - loader-utils "^1.1.0" - schema-utils "^2.0.1" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -react-clientside-effect@^1.2.2: - version "1.2.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" - integrity sha1-YhL7DgeyBOcUWB3VGZJgPRrMyDc= +react-color@^2.17.0: + version "2.19.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha1-7GxrRWgxKjxqGEIKsEcuFGqlaD0= dependencies: - "@babel/runtime" "^7.0.0" + "@icons/material" "^0.2.4" + lodash "^4.17.15" + lodash-es "^4.17.15" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" -react-dev-utils@^9.0.0: - version "9.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - integrity sha1-OtK7iEijIxnXYNCoTFbBS9quXoE= +react-dev-utils@^10.0.0: + version "10.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha1-9t4yWuJfpNVG0J30uxvv3G3RnBk= dependencies: - "@babel/code-frame" "7.5.5" + "@babel/code-frame" "7.8.3" address "1.1.2" - browserslist "4.7.0" + browserslist "4.10.0" chalk "2.4.2" - cross-spawn "6.0.5" + cross-spawn "7.0.1" detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" immer "1.10.0" - inquirer "6.5.0" + inquirer "7.0.4" is-root "2.1.0" loader-utils "1.2.3" - open "^6.3.0" - pkg-up "2.0.0" - react-error-overlay "^6.0.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" recursive-readdir "2.2.2" shell-quote "1.7.2" - sockjs-client "1.4.0" - strip-ansi "5.2.0" + strip-ansi "6.0.0" text-table "0.2.0" +react-docgen-typescript-plugin@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.6.3.tgz#664b22601df083597ecb1e60bd21beca60125fdf" + integrity sha512-av1S/fmWBNFGgNa4qtkidFjjOz23eEi6EdCtwSWo9WNhGzUMyMygbD/DosMWoeFlZpk9R3MXPkRE7PDH6j5GMQ== + dependencies: + debug "^4.1.1" + endent "^2.0.1" + micromatch "^4.0.2" + react-docgen-typescript "^1.20.5" + tslib "^2.0.0" + +react-docgen-typescript@^1.20.5: + version "1.20.5" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.20.5.tgz#fb8d78a707243498436c2952bd3f6f488a68d4f3" + integrity sha512-AbLGMtn76bn7SYBJSSaKJrZ0lgNRRR3qL60PucM5M4v/AXyC8221cKBXW5Pyt9TfDRfe+LDnPNlg7TibxX0ovA== + react-docgen@^5.0.0: - version "5.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" - integrity sha1-mqveXmnxmTyLqDn9moZpZQRlRYk= + version "5.3.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-docgen/-/react-docgen-5.3.1.tgz#940b519646a6c285c2950b96512aed59e8f90934" + integrity sha1-lAtRlkamwoXClQuWUSrtWej5CTQ= dependencies: "@babel/core" "^7.7.5" "@babel/runtime" "^7.7.6" - ast-types "^0.13.2" + ast-types "^0.14.2" commander "^2.19.0" doctrine "^3.0.0" neo-async "^2.6.1" node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@^16.8.3, react-dom@^16.8.4: - version "16.13.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha1-wb03MxoEhsB47lTEdAcgmTsuDn8= +react-dom@^17.0.1: + version "17.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha1-HeJWBHTsnw4zQoVmLt5S28VCb8Y= dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.1" react-draggable@^4.0.3: version "4.4.3" @@ -9581,37 +10520,25 @@ react-draggable@^4.0.3: classnames "^2.2.5" prop-types "^15.6.0" -react-error-overlay@^6.0.3: - version "6.0.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - integrity sha1-Hc+0WatnHVP2YKmRUTyy8KBVMQg= +react-error-overlay@^6.0.7: + version "6.0.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" + integrity sha1-R07RHQT8a9o69kNEfYXpEn7Wtd4= -react-fast-compare@^3.0.1: +react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: version "3.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha1-ZBqdqBtqYyDycOiXJPtFoLOeQ7s= - -react-focus-lock@^2.1.0: - version "2.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-focus-lock/-/react-focus-lock-2.3.1.tgz#9d5d85899773609c7eefa4fc54fff6a0f5f2fc47" - integrity sha1-nV2FiZdzYJx+76T8VP/2oPXy/Ec= - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.6.7" - prop-types "^15.6.2" - react-clientside-effect "^1.2.2" - use-callback-ref "^1.2.1" - use-sidecar "^1.0.1" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== react-helmet-async@^1.0.2: - version "1.0.6" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-helmet-async/-/react-helmet-async-1.0.6.tgz#11c15c74e79b3f66670c73779bef3e0e352b1d4e" - integrity sha1-EcFcdOebP2ZnDHN3m+8+DjUrHU4= + version "1.0.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-helmet-async/-/react-helmet-async-1.0.7.tgz#b988fbc3abdc4b704982bb74b9cb4a08fcf062c1" + integrity sha1-uYj7w6vcS3BJgrt0uctKCPzwYsE= dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.11.2" invariant "^2.2.4" prop-types "^15.7.2" - react-fast-compare "^3.0.1" + react-fast-compare "^3.2.0" shallowequal "^1.1.0" react-hotkeys@2.0.0: @@ -9621,37 +10548,43 @@ react-hotkeys@2.0.0: dependencies: prop-types "^15.6.1" -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= +react-is@^17.0.1: + version "17.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha1-WzUxvXamRaTJ+25pPtNkGeMwEzk= + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha1-TxonOv38jzSIqMUWv9p4+HI1I2I= -react-popper-tooltip@^2.8.3: - version "2.11.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" - integrity sha1-PEvf2LwQ0cK5oWLoWbq4lY9bJkQ= +react-popper-tooltip@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac" + integrity sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ== dependencies: - "@babel/runtime" "^7.9.2" - react-popper "^1.3.7" + "@babel/runtime" "^7.12.5" + "@popperjs/core" "^2.5.4" + react-popper "^2.2.4" -react-popper@^1.3.7: - version "1.3.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" - integrity sha1-9qNHE2LvHw0QpJY2c3id4brKIyQ= +react-popper@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.4.tgz#d2ad3d2474ac9f1abf93df3099d408e5aa6a2e22" + integrity sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew== dependencies: - "@babel/runtime" "^7.1.2" - create-react-context "^0.3.0" - deep-equal "^1.1.1" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" + react-fast-compare "^3.0.1" warning "^4.0.2" +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + react-sizeme@^2.6.7: version "2.6.12" resolved "https://packages.atlassian.com/api/npm/npm-remote/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" @@ -9667,33 +10600,40 @@ react-stable-ref@^0.4.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/react-stable-ref/-/react-stable-ref-0.4.0.tgz#4eb3a9cc0aaf8a4ce73927272bf9ba4fe4c69c06" integrity sha1-TrOpzAqvikznOScnK/m6T+TGnAY= -react-syntax-highlighter@^11.0.2: - version "11.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz#4e3f376e752b20d2f54e4c55652fd663149e4029" - integrity sha1-Tj83bnUrINL1TkxVZS/WYxSeQCk= +react-syntax-highlighter@^13.5.0: + version "13.5.3" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" + integrity sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg== dependencies: "@babel/runtime" "^7.3.1" - highlight.js "~9.13.0" - lowlight "~1.11.0" - prismjs "^1.8.4" - refractor "^2.4.1" + highlight.js "^10.1.1" + lowlight "^1.14.0" + prismjs "^1.21.0" + refractor "^3.1.0" -react-textarea-autosize@^7.1.0: - version "7.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz#70fdb333ef86bcca72717e25e623e90c336e2cda" - integrity sha1-cP2zM++GvMpycX4l5iPpDDNuLNo= +react-textarea-autosize@^8.1.1: + version "8.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react-textarea-autosize/-/react-textarea-autosize-8.3.0.tgz#e6e2fd186d9f61bb80ac6e2dcb4c55504f93c2fa" + integrity sha1-5uL9GG2fYbuArG4ty0xVUE+Twvo= dependencies: - "@babel/runtime" "^7.1.2" - prop-types "^15.6.0" + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.0.0" + use-latest "^1.0.0" -react@^16.8.1, react@^16.8.3: - version "16.13.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha1-LoGIIvGpdDEiwGPWQQ2FweOv5I4= +react@^17.0.1: + version "17.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha1-bgYAQWvVdXTj+G2S7bo9kAhyYSc= dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" + +reactcss@^1.2.0: + version "1.2.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha1-wAATh15Vexzw39mjaKHD2rO1SN0= + dependencies: + lodash "^4.0.1" read-pkg-up@^3.0.0: version "3.0.0" @@ -9772,28 +10712,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha1-n9zN+ekVWAVEkiGsZF6DA6tbmto= +readdirp@~3.5.0: + version "3.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4= dependencies: picomatch "^2.2.1" -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha1-c3esQptuH9WZ3DjQjtlC0Ne+uGY= - -recast@^0.14.7: - version "0.14.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" - integrity sha1-TxSXwrWCbUKmbo48nYDFEpg/9h0= - dependencies: - ast-types "0.11.3" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -9824,14 +10749,14 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -refractor@^2.4.1: - version "2.10.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e" - integrity sha1-Fmwy8RTtFv2WGQrSHVGT06/H004= +refractor@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.3.1.tgz#ebbc04b427ea81dc25ad333f7f67a0b5f4f0be3a" + integrity sha512-vaN6R56kLMuBszHSWlwTpcZ8KTMG6aUCok4GrxYDT20UIOXxOc5o6oDc8tNTzSlH3m2sI+Eu9Jo2kVdDcUTWYw== dependencies: - hastscript "^5.0.0" - parse-entities "^1.1.2" - prismjs "~1.17.0" + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.23.0" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -9841,22 +10766,21 @@ regenerate-unicode-properties@^8.2.0: regenerate "^1.4.0" regenerate@^1.4.0: - version "1.4.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha1-ytkq2Oa1kXc0hfvgWkhcr09Ffm8= + version "1.4.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo= -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc= +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha1-ysLazIoepnX+qrrriugziYrkb1U= regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha1-UmaFeJZRjRYWp4oEeTN6MOqXTMc= + version "0.14.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ= dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -9866,7 +10790,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha1-erqJs8E6ZFCdq888qNn7ub31y3U= @@ -9879,10 +10803,10 @@ regexpp@^2.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha1-/L9FjFBDGwu3tF1pZ7gZLZHz2Tg= +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha1-LepamgcjMpj78NuR+pq8TG4PitY= dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" @@ -9921,16 +10845,16 @@ remove-trailing-separator@^1.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^2.0.1: - version "2.0.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk= +renderkid@^2.0.4: + version "2.0.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" + integrity sha1-0yXlMq+yjT+Hlv/uMGvo/9b8hkw= dependencies: css-select "^1.1.0" dom-converter "^0.2" htmlparser2 "^3.3.0" + lodash "^4.17.20" strip-ansi "^3.0.0" - utila "^0.4.0" repeat-element@^1.1.2: version "1.1.3" @@ -9942,23 +10866,23 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk= +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha1-Pu3UIjII1BmGe3jOgVFn0QWToi8= dependencies: - lodash "^4.17.15" + lodash "^4.17.19" -request-promise-native@^1.0.5, request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://packages.atlassian.com/api/npm/npm-remote/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY= +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha1-5AcSBSal79yaObKKVnm/R7nZ3Cg= dependencies: - request-promise-core "1.1.3" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.2: version "2.88.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM= @@ -9994,16 +10918,6 @@ require-main-filename@^2.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= -requires-port@^1.0.0: - version "1.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ= - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -10031,16 +10945,12 @@ resolve-url@^0.2.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha1-sllBtUloIxzC0bt2p5y38sC/hEQ= +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.3.2: + version "1.19.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha1-GvW/YwQJc0oGfK4pMYqsf6KaJnw= dependencies: + is-core-module "^2.1.0" path-parse "^1.0.6" restore-cursor@^2.0.0: @@ -10076,14 +10986,14 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho= @@ -10098,6 +11008,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup@^2.32.0: + version "2.33.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/rollup/-/rollup-2.33.3.tgz#ae72ce31f992b09a580072951bfea76e9df17342" + integrity sha1-rnLOMfmSsJpYAHKVG/6nbp3xc0I= + optionalDependencies: + fsevents "~2.1.2" + rsvp@^4.8.4: version "4.8.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -10109,9 +11026,9 @@ run-async@^2.2.0, run-async@^2.4.0: integrity sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU= run-parallel@^1.1.9: - version "1.1.9" - resolved "https://packages.atlassian.com/api/npm/npm-remote/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha1-yd06fPn0ssS2JE4XOm7YZuYd1nk= + version "1.1.10" + resolved "https://packages.atlassian.com/api/npm/npm-remote/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha1-YKUbKug2Y2yBN33xbLEHNRvNE+8= run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -10120,10 +11037,10 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0, rxjs@^6.5.3: - version "6.5.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha1-xciE4wlMjP7jG/J+uH5UzPyH+ew= +rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.0: + version "6.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha1-jKhGNcTaqQDA05Z6buesYCce5VI= dependencies: tslib "^1.9.0" @@ -10137,7 +11054,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= @@ -10169,22 +11086,17 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@~1.2.4: - version "1.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= - -saxes@^3.1.9: - version "3.1.11" - resolved "https://packages.atlassian.com/api/npm/npm-remote/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha1-1Z0f0zLskq2YouCy7mRHAjhLHFs= +saxes@^5.0.0: + version "5.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha1-7rq5U/o7dgjb6U5drbFciI+maW0= dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha1-Tz4u0sGn1laB9MhU+oxaHMtA8ZY= +scheduler@^0.20.1: + version "0.20.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha1-2guQfiQCawEYHsvHXv3H8ntaAAw= dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -10198,14 +11110,23 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: - version "2.7.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha1-FxUfdtjq5n+793lgwzxnatn078c= +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc= + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha1-Z1AvaqK2ai1AMrQnmilEl4oJE+8= dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" select@^1.1.2: version "1.1.2" @@ -10213,9 +11134,9 @@ select@^1.1.2: integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= sembear@^0.5.0: - version "0.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/sembear/-/sembear-0.5.1.tgz#52ce0631b2f63057e1f44a937580019e7cf059e5" - integrity sha1-Us4GMbL2MFfh9EqTdYABnnzwWeU= + version "0.5.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/sembear/-/sembear-0.5.2.tgz#679da95f1cf1a39b7fcd54a1ae89cd5badedb7b3" + integrity sha1-Z52pXxzxo5t/zVShronNW63tt7M= dependencies: "@types/semver" "^6.0.1" semver "^6.3.0" @@ -10230,16 +11151,21 @@ semver@5.5.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs= -semver@6.x, semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= - semver@7.0.0: version "7.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha1-XzyjV2HkfgWyBsba/yz4FPAxa44= +semver@7.x, semver@^7.3.2: + version "7.3.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg= + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= + send@0.17.1: version "0.17.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -10259,10 +11185,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha1-i/OpFwcSZk7yVhtEtpHq/jmSFOo= +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao= dependencies: randombytes "^2.1.0" @@ -10327,21 +11253,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shallow-equal@^1.1.0: - version "1.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" - integrity sha1-TBar+lYEOqINBQMk76aJQLDaedo= - shallowequal@^1.1.0: version "1.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -10376,10 +11287,10 @@ shell-quote@1.7.2, shell-quote@^1.6.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I= -shelljs@^0.8.1, shelljs@^0.8.3: +shelljs@^0.8.1, shelljs@^0.8.4: version "0.8.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha1-3naE/ut2f4cWsyYHiooAh1iQ48I= + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -10391,39 +11302,19 @@ shellwords@^0.1.1: integrity sha1-1rkYHBpI05cyTISHHvvPxz/AZUs= side-channel@^1.0.2: - version "1.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha1-310auttOS/SvHNiFK/Ey0veHaUc= + version "1.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" + integrity sha1-zcRrBXVQu6tjcGIQg4311MGVGcM= dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" + es-abstract "^1.18.0-next.0" + object-inspect "^1.8.0" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw= -simplebar-react@^1.0.0-alpha.6: - version "1.2.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/simplebar-react/-/simplebar-react-1.2.3.tgz#bd81fa9827628470e9470d06caef6ece15e1c882" - integrity sha1-vYH6mCdihHDpRw0Gyu9uzhXhyII= - dependencies: - prop-types "^15.6.1" - simplebar "^4.2.3" - -simplebar@^4.2.3: - version "4.2.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/simplebar/-/simplebar-4.2.3.tgz#dac40aced299c17928329eab3d5e6e795fafc10c" - integrity sha1-2sQKztKZwXkoMp6rPV5ueV+vwQw= - dependencies: - can-use-dom "^0.1.0" - core-js "^3.0.1" - lodash.debounce "^4.0.8" - lodash.memoize "^4.1.2" - lodash.throttle "^4.1.1" - resize-observer-polyfill "^1.5.1" - -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha1-E01oEpd1ZDfMBcoBNw06elcQde0= @@ -10493,31 +11384,12 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U= - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ= -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0: version "0.5.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha1-GQhmvs51U+H48mei7oLGBrVQmho= @@ -10528,7 +11400,15 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha1-PZ34fiNrU/FtAeWBUPx3EROOXtI= + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://packages.atlassian.com/api/npm/npm-remote/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha1-qYti+G3K9PZzmWSMCFKRq56P7WE= @@ -10551,11 +11431,16 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha1-UwL4FpAxc1ImVECS5kmB91F1A4M= +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ= + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -10591,9 +11476,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ= + version "3.0.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha1-yAdXODwoq/cpZ0SZjLwQaui4VM4= split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -10629,12 +11514,11 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^7.0.0: - version "7.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha1-ksJBv23oI2W1x/tL126XVSLhKU0= +ssri@^8.0.0: + version "8.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha1-ecp04h+M6u3fy0uQFDxFi42YiAg= dependencies: - figgy-pudding "^3.5.1" minipass "^3.1.1" stable@^0.1.8: @@ -10643,9 +11527,23 @@ stable@^0.1.8: integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88= stack-utils@^1.0.1: - version "1.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha1-M+ujiXeIVYvr/C2wWdwVjsNs67g= + version "1.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/stack-utils/-/stack-utils-1.0.3.tgz#db7a475733b5b8bf6521907b18891d29006f7751" + integrity sha1-23pHVzO1uL9lIZB7GIkdKQBvd1E= + dependencies: + escape-string-regexp "^2.0.0" + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha1-zV8DASb/EWt4zLPAJ/4wJxO2Enc= + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== static-extend@^0.1.1: version "0.1.2" @@ -10666,28 +11564,28 @@ stealthy-require@^1.1.1: integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= store2@^2.7.1: - version "2.11.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/store2/-/store2-2.11.2.tgz#a298e5e97b21b3ce7419b732540bc7c79cb007db" - integrity sha1-opjl6Xshs850GbcyVAvHx5ywB9s= - -storybook-addon-performance@^0.10.0: - version "0.10.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/storybook-addon-performance/-/storybook-addon-performance-0.10.0.tgz#3647f57a5d0a7bce5e35c485ff85dcda2ffe8111" - integrity sha1-Nkf1el0Ke85eNcSF/4Xc2i/+gRE= - dependencies: - "@storybook/addons" "^5.3.18" - "@storybook/api" "^5.3.18" - "@storybook/channels" "^5.3.18" - "@storybook/components" "^5.3.18" - "@storybook/core-events" "^5.3.18" - "@storybook/theming" "^5.3.18" - "@testing-library/dom" "^7.2.1" - "@testing-library/jest-dom" "^5.3.0" + version "2.12.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf" + integrity sha1-4fG34aWbYIOyWWqNBn9u6I/U088= + +storybook-addon-performance@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/storybook-addon-performance/-/storybook-addon-performance-0.14.0.tgz#d5cf3afc1bbc630f626b67d489ba55e9cd76a12b" + integrity sha512-Aa/d2B0N2lEc2bTM6arrNkPRELphwp5n90mzvcjT6ls69q486g3e11CLUE/g0roR6dk1hdOkENJLr+ELoMq41g== + dependencies: + "@storybook/addons" "^6.1.11" + "@storybook/api" "^6.1.11" + "@storybook/channels" "^6.1.11" + "@storybook/components" "^6.1.0" + "@storybook/core-events" "^6.1.11" + "@storybook/theming" "^6.1.11" + "@testing-library/dom" "^7.22.0" + "@testing-library/jest-dom" "^5.11.2" "@xstate/react" "1.0.0-rc.3" gzip-js "^0.3.2" - styled-components "^5.1.0" + styled-components "^5.1.1" tiny-invariant "^1.1.0" - xstate "^4.8.0" + xstate "^4.11.0" stream-browserify@^2.0.1: version "2.0.2" @@ -10722,16 +11620,11 @@ stream-shift@^1.0.0: integrity sha1-1wiCgVWasneEJCebCHfaPDktWj0= stream-transform@^2.0.1: - version "2.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/stream-transform/-/stream-transform-2.0.2.tgz#3cb7a14c802eb39bc40caaab0535e584f3a65caf" - integrity sha1-PLehTIAus5vEDKqrBTXlhPOmXK8= + version "2.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/stream-transform/-/stream-transform-2.0.3.tgz#e3f6bac78b7d81a1452bf84bee9f340a1786bd60" + integrity sha1-4/a6x4t9gaFFK/hL7p80CheGvWA= dependencies: - mixme "^0.3.1" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + mixme "^0.4.0" string-length@^2.0.0: version "2.0.0" @@ -10749,6 +11642,14 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" +string-length@^4.0.1: + version "4.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha1-Spc78x73fE7bzq3WryYRmWmF+KE= + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^1.0.1: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -10813,20 +11714,20 @@ string.prototype.padstart@^3.0.0: es-abstract "^1.17.0-next.1" string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM= + version "1.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" + integrity sha1-bd2ah5a8cUtImjriIkaiCPN7+kY= dependencies: define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ= + version "1.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" + integrity sha1-ItRdqBAVMJzQzdeXh+iRn8XGE+c= dependencies: define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -10842,12 +11743,12 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= dependencies: - ansi-regex "^4.1.0" + ansi-regex "^5.0.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -10863,12 +11764,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= dependencies: - ansi-regex "^5.0.0" + ansi-regex "^4.1.0" strip-bom@^3.0.0: version "3.0.0" @@ -10912,18 +11813,18 @@ strip-json-comments@^2.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^1.0.0: - version "1.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" - integrity sha1-xcu/vxFw0HbP3YbgEJxbuhFLqho= +style-loader@^1.2.1: + version "1.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha1-gotKOzt+eqWEfOe66eh0USEUJJ4= dependencies: loader-utils "^2.0.0" - schema-utils "^2.6.6" + schema-utils "^2.7.0" -styled-components@^5.1.0: - version "5.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/styled-components/-/styled-components-5.1.1.tgz#96dfb02a8025794960863b9e8e365e3b6be5518d" - integrity sha1-lt+wKoAleUlghjuejjZeO2vlUY0= +styled-components@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a" + integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" @@ -10936,11 +11837,6 @@ styled-components@^5.1.0: shallowequal "^1.1.0" supports-color "^5.5.0" -stylis@^3.5.4: - version "3.5.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" - integrity sha1-9mXyX14pnPPWRlSrlJpXx2i3P74= - supports-color@^2.0.0: version "2.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -10961,9 +11857,9 @@ supports-color@^6.1.0: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E= + version "7.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= dependencies: has-flag "^4.0.0" @@ -10975,31 +11871,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -svg-parser@^2.0.0: - version "2.0.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha1-/cLinhOVFzYUC3bLEiyO5mMOtrU= - -svgo@^1.2.2: - version "1.3.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc= - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://packages.atlassian.com/api/npm/npm-remote/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I= @@ -11027,18 +11899,30 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://packages.atlassian.com/api/npm/npm-remote/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha1-ofzMBrWNth/XpF2i2kT186Pme6I= -telejson@^3.2.0: - version "3.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/telejson/-/telejson-3.3.0.tgz#6d814f3c0d254d5c4770085aad063e266b56ad03" - integrity sha1-bYFPPA0lTVxHcAharQY+JmtWrQM= +tar@^6.0.2: + version "6.0.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha1-vegVCG4Qs58dzSmOidWW4VNeIA8= + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +telejson@^5.0.2: + version "5.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/telejson/-/telejson-5.1.0.tgz#cc04e4c2a355f9eb6af557e37acd6449feb1d146" + integrity sha1-zATkwqNV+etq9Vfjes1kSf6x0UY= dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" - is-function "^1.0.1" - is-regex "^1.0.4" + is-function "^1.0.2" + is-regex "^1.1.1" is-symbol "^1.0.3" isobject "^4.0.0" - lodash "^4.17.15" + lodash "^4.17.20" memoizerific "^1.11.3" term-size@^1.2.0: @@ -11049,9 +11933,9 @@ term-size@^1.2.0: execa "^0.7.0" term-size@^2.1.0: - version "2.2.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha1-Hxat7f6b3BiADhd2ghc0CG/MZ1M= + version "2.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha1-KmpUhAQywvtjIP6g9BVTHpAYn1Q= terminal-link@^2.0.0: version "2.1.1" @@ -11062,36 +11946,36 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@^1.4.3: - version "1.4.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" - integrity sha1-LGNUQ0cyS6r6mla6rd8WNMir/C8= + version "1.4.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha1-oheu+uozDnNP+sthIOwfoxLWBAs= dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^3.1.0" + serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^2.1.2: - version "2.3.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz#4910ff5d1a872168cc7fa6cd3749e2b0d60a8a0b" - integrity sha1-SRD/XRqHIWjMf6bNN0nisNYKigs= +terser-webpack-plugin@^3.0.0: + version "3.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz#91e6d39571460ed240c0cf69d295bcf30ebf98cb" + integrity sha1-kebTlXFGDtJAwM9p0pW88w6/mMs= dependencies: - cacache "^13.0.1" + cacache "^15.0.5" find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" + jest-worker "^26.2.1" + p-limit "^3.0.2" schema-utils "^2.6.6" - serialize-javascript "^3.1.0" + serialize-javascript "^4.0.0" source-map "^0.6.1" - terser "^4.6.12" + terser "^4.8.0" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: version "4.8.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc= @@ -11100,6 +11984,15 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.2.1: + version "5.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/terser/-/terser-5.5.0.tgz#1406fcb4d4bc517add3b22a9694284c040e33448" + integrity sha1-FAb8tNS8UXrdOyKpaUKEwEDjNEg= + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^6.0.0: version "6.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -11120,9 +12013,9 @@ throat@^5.0.0: integrity sha1-xRmSNYA6rRh1SmZ9ZZtecs4Wdks= throttle-debounce@^2.1.0: - version "2.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/throttle-debounce/-/throttle-debounce-2.2.1.tgz#fbd933ae6793448816f7d5b3cae259d464c98137" - integrity sha1-+9kzrmeTRIgW99WzyuJZ1GTJgTc= + version "2.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2" + integrity sha1-/TGGXmZQIHHkEYF+JBRls+nDcuI= through2@^2.0.0: version "2.0.5" @@ -11138,12 +12031,17 @@ through@^2.3.6: integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://packages.atlassian.com/api/npm/npm-remote/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8= + version "2.0.12" + resolved "https://packages.atlassian.com/api/npm/npm-remote/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4= dependencies: setimmediate "^1.0.4" +tiny-css-prefixer@^1.1.4: + version "1.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tiny-css-prefixer/-/tiny-css-prefixer-1.1.4.tgz#b96a0aa6b312227d996e9c303645e3ae2f194086" + integrity sha1-uWoKprMSIn2ZbpwwNkXjri8ZQIY= + tiny-emitter@^2.0.0: version "2.1.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" @@ -11154,6 +12052,11 @@ tiny-invariant@^1.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" integrity sha1-Y0xfjv3CdxS384bDXmdgmR0jCHU= +tinycolor2@^1.4.1: + version "1.4.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" + integrity sha1-P2pNEHGtB2dtf6Ry4frECnGdiAM= + tmp@^0.0.33: version "0.0.33" resolved "https://packages.atlassian.com/api/npm/npm-remote/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -11223,7 +12126,7 @@ toml@^2.3.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/toml/-/toml-2.3.6.tgz#25b0866483a9722474895559088b436fd11f861b" integrity sha1-JbCGZIOpciR0iVVZCItDb9Efhhs= -tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI= @@ -11240,38 +12143,49 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tr46@^2.0.2: + version "2.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha1-Ayc1ht7xWVrgj+2zjXczzukdJHk= dependencies: - punycode "^2.1.0" + punycode "^2.1.1" trim-newlines@^2.0.0: version "2.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= -ts-dedent@^1.1.0: - version "1.1.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-dedent/-/ts-dedent-1.1.1.tgz#68fad040d7dbd53a90f545b450702340e17d18f3" - integrity sha1-aPrQQNfb1TqQ9UW0UHAjQOF9GPM= +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha1-eXJjBKaomKqDc0JymNVMLuixyzA= + +ts-dedent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.0.0.tgz#47c5eb23d9096f3237cc413bc82d387d36dbe690" + integrity sha512-DfxKjSFQfw9+uf7N9Cy8Ebx9fv5fquK4hZ6SD3Rzr+1jKP6AVA6H8+B5457ZpUs0JKsGpGqIevbpZ9DMQJDp1A== + +ts-essentials@^2.0.3: + version "2.0.12" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" + integrity sha1-yTA/PXT3X6dSjD1JuA4ImrCdh0U= -ts-jest@^25.3.1: - version "25.5.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-jest/-/ts-jest-25.5.1.tgz#2913afd08f28385d54f2f4e828be4d261f4337c7" - integrity sha1-KROv0I8oOF1U8vToKL5NJh9DN8c= +ts-jest@^26.4.4: + version "26.4.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-jest/-/ts-jest-26.4.4.tgz#61f13fb21ab400853c532270e52cc0ed7e502c49" + integrity sha1-YfE/shq0AIU8UyJw5SzA7X5QLEk= dependencies: + "@types/jest" "26.x" bs-logger "0.x" buffer-from "1.x" fast-json-stable-stringify "2.x" + jest-util "^26.1.0" json5 "2.x" lodash.memoize "4.x" make-error "1.x" - micromatch "4.x" - mkdirp "0.x" - semver "6.x" - yargs-parser "18.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" ts-loader@^6.2.1: version "6.2.2" @@ -11284,15 +12198,20 @@ ts-loader@^6.2.1: micromatch "^4.0.0" semver "^6.0.0" -ts-pnp@^1.1.2: +ts-pnp@^1.1.6: version "1.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha1-pQCtCEsHmPHDBxrzkeZZEshrypI= -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM= +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= + +tslib@^2.0.0, tslib@^2.0.1: + version "2.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha1-jgdBrEX8DCJuWKF7/D5kubxsphw= tsutils@^3.7.0: version "3.17.1" @@ -11306,7 +12225,7 @@ tty-browserify@0.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= -tty-table@^2.7.0: +tty-table@^2.8.10: version "2.8.13" resolved "https://packages.atlassian.com/api/npm/npm-remote/tty-table/-/tty-table-2.8.13.tgz#d484a416381973eaebbdf19c79136b390e5c6d70" integrity sha1-1ISkFjgZc+rrvfGceRNrOQ5cbXA= @@ -11347,6 +12266,11 @@ type-fest@^0.11.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E= +type-fest@^0.13.1: + version "0.13.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha1-AXLLW86AsL1ULqNI21DH4hg02TQ= + type-fest@^0.6.0: version "0.6.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -11365,11 +12289,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - integrity sha1-kzkqAIeUxFlRGf9i3eaAnbxAo9k= - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -11382,15 +12301,15 @@ typedarray@^0.0.6: resolved "https://packages.atlassian.com/api/npm/npm-remote/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.8.1: - version "3.9.5" - resolved "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36" - integrity sha1-WG8NujAM3ovlLdGsT34QCcGxPzY= +typescript@^4.1.3: + version "4.1.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha1-UZ1YK9lMugz4k0x9joRn5HP1O7c= unfetch@^4.1.0: - version "4.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db" - integrity sha1-bsLdDeiH5YpN7oOgUN7YD/xBN9s= + version "4.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha1-fiGw7302PY2a8PuSmlVV9u+Xo74= unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -11449,12 +12368,22 @@ universalify@^0.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY= +universalify@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha1-thodoXPoQ1sv48Z9Kbmt+FlL0W0= + +universalify@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc= + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@^1.1.0, unquote@~1.1.1: +unquote@^1.1.0: version "1.1.1" resolved "https://packages.atlassian.com/api/npm/npm-remote/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= @@ -11473,9 +12402,9 @@ upath@^1.1.1: integrity sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ= uri-js@^4.2.2: - version "4.2.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= + version "4.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha1-qnFCYd55PoqCNHp7zJznTobyhgI= dependencies: punycode "^2.1.0" @@ -11484,22 +12413,14 @@ urix@^0.1.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@^2.0.1: - version "2.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs= - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://packages.atlassian.com/api/npm/npm-remote/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng= +url-loader@^4.0.0: + version "4.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha1-KFBekFyuFYzwfJLKYi1/I35wpOI= dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" url@^0.11.0: version "0.11.0" @@ -11509,23 +12430,29 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-callback-ref@^1.2.1: - version "1.2.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/use-callback-ref/-/use-callback-ref-1.2.4.tgz#d86d1577bfd0b955b6e04aaf5971025f406bea3c" - integrity sha1-2G0Vd7/QuVW24EqvWXECX0Br6jw= +use-composed-ref@^1.0.0: + version "1.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" + integrity sha1-kiDk6UqXt7AtfSfq6rCzcDRDi7w= + dependencies: + ts-essentials "^2.0.3" -use-sidecar@^1.0.1: - version "1.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/use-sidecar/-/use-sidecar-1.0.2.tgz#e72f582a75842f7de4ef8becd6235a4720ad8af6" - integrity sha1-5y9YKnWEL33k74vs1iNaRyCtivY= +use-isomorphic-layout-effect@^1.0.0: + version "1.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.0.tgz#4db2111e0d53ca694187ea5fd5cb2ba610286fe0" + integrity sha1-TbIRHg1TymlBh+pf1csrphAob+A= + +use-latest@^1.0.0: + version "1.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" + integrity sha1-pE9lcrgojgly7EEb3QhAraNm8jI= dependencies: - detect-node "^2.0.4" - tslib "^1.9.3" + use-isomorphic-layout-effect "^1.0.0" use-subscription@^1.3.0: - version "1.4.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/use-subscription/-/use-subscription-1.4.1.tgz#edcbcc220f1adb2dd4fa0b2f61b6cc308e620069" - integrity sha1-7cvMIg8a2y3U+gsvYbbMMI5iAGk= + version "1.5.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha1-c1ARB/AvrYTG3VeWW+sLdcaMQtE= dependencies: object-assign "^4.1.1" @@ -11547,16 +12474,6 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha1-a693dLgO6w91INi4HQeYKlmruu4= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - util@0.10.3: version "0.10.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -11571,7 +12488,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= @@ -11586,10 +12503,20 @@ uuid@^3.3.2: resolved "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha1-uXk28hwOLZmW1JheXFFW6dTknNY= +uuid@^8.3.0: + version "8.3.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" + integrity sha1-K6LmygANpg/OWhlpVKskETHgWjE= + +v8-compile-cache@^2.1.1: + version "2.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha1-lHHvo++RKNL3xqfKOcTda1BVsTI= + +v8-to-istanbul@^7.0.0: + version "7.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha1-tP4A41ZJ73eFqbf8686gXzfDMvw= dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -11629,20 +12556,18 @@ vm-browserify@^1.0.1: resolved "https://packages.atlassian.com/api/npm/npm-remote/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha1-eGQcSIuObKkadfUR56OzKobl3aA= -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha1-ConN9cwVgi35w2BUNnaWPgzDCM0= dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha1-MEhcp9cKb9BSQgo9Ev2Q5jOc55Q= +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha1-PnEEoFt1FGzGD1ZDgLf2g6zxAgo= dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -11659,23 +12584,23 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha1-mUihhmy71suCTeoTp+1pH2yN3/A= +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc= dependencies: chokidar "^2.1.8" -watchpack@^1.6.1: - version "1.7.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha1-wC5NTUmRPD5+EiwzJTZa+dMx6ao= +watchpack@^1.7.4: + version "1.7.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM= dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" wcwidth@^1.0.1: version "1.0.1" @@ -11684,10 +12609,15 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://packages.atlassian.com/api/npm/npm-remote/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha1-qFWYCx8LazWbodXZ+zmulB+qY60= +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha1-rlnIoAsSFUOirMZcBDT1ew/BGv8= + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha1-kRG01+qArNQPUnDWZmIa+ni2lRQ= webpack-dev-middleware@^3.7.0: version "3.7.2" @@ -11700,6 +12630,11 @@ webpack-dev-middleware@^3.7.0: range-parser "^1.2.1" webpack-log "^2.0.0" +webpack-filter-warnings-plugin@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" + integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== + webpack-hot-middleware@^2.25.0: version "2.25.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" @@ -11718,7 +12653,7 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha1-7t2OwLko+/HL/plOItLYkPMwqTM= @@ -11726,17 +12661,17 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack-virtual-modules@^0.2.0: +webpack-virtual-modules@^0.2.2: version "0.2.2" resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" integrity sha1-IIY9w8trshBHKf/5UfvhSxi9Apk= dependencies: debug "^3.0.0" -webpack@^4.33.0, webpack@^4.38.0: - version "4.43.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" - integrity sha1-xIVHsR1WMiTFYdrRFyyKoLimeOY= +webpack@^4.44.2: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -11746,7 +12681,7 @@ webpack@^4.33.0, webpack@^4.38.0: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -11759,43 +12694,29 @@ webpack@^4.33.0, webpack@^4.38.0: schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" - watchpack "^1.6.1" + watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A= - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://packages.atlassian.com/api/npm/npm-remote/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha1-f4RzvIOd/YdgituV1+sHUhFXikI= - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://packages.atlassian.com/api/npm/npm-remote/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha1-WrrPd3wyFmpR0IXWtPPn0nET3bA= dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78= -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha1-wsSS8eymEpiO/T0iZr4bn8YXDQY= +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha1-UPuWFbBUaVkdKyvW367SlC7XKDc= dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" @@ -11895,39 +12816,25 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^6.1.2: - version "6.2.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha1-Sy9/IZs9Nze8Gi+/FF2CW5TTj/0= +ws@^7.2.3: + version "7.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" + integrity sha1-pd12okGXlA1Ki7ng4VK7RQN2Tac= xml-name-validator@^3.0.0: version "3.0.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo= -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha1-Bg/hvLf5x2/ioX24apvDq4lCEMs= -xregexp@^4.3.0: - version "4.3.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA= - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - -xstate@^4.8.0: - version "4.10.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/xstate/-/xstate-4.10.0.tgz#f87e4ef593fe40300b8eec50a5d9f0763aa4f622" - integrity sha1-+H5O9ZP+QDALjuxQpdnwdjqk9iI= +xstate@^4.11.0: + version "4.16.0" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.16.0.tgz#e434d0558c0f9a7e9212802834992a6c2f47bca6" + integrity sha512-2k/49QYLdzG6Ye1JQWYFuPdU6dnRqHXcuFLxuORiuel04GjApSPct7wp2SOz9RAlNME5EkzclRKw1fHm5yejuA== xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" @@ -11954,18 +12861,15 @@ yallist@^4.0.0: resolved "https://packages.atlassian.com/api/npm/npm-remote/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI= -yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.0" resolved "https://packages.atlassian.com/api/npm/npm-remote/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha1-O1k63ZRIdgd9TWg/7gEIG9n/8x4= -yargs-parser@18.x, yargs-parser@^18.1.1: - version "18.1.3" - resolved "https://packages.atlassian.com/api/npm/npm-remote/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A= - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@20.x: + version "20.2.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha1-tCiQ8UVmeW+Fro46JSkNIF8VSlQ= yargs-parser@^10.0.0: version "10.1.0" @@ -11974,10 +12878,18 @@ yargs-parser@^10.0.0: dependencies: camelcase "^4.1.0" -yargs@^15.0.0, yargs@^15.1.0, yargs@^15.3.1: - version "15.3.1" - resolved "https://packages.atlassian.com/api/npm/npm-remote/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys= +yargs-parser@^18.1.2, yargs-parser@^18.1.3: + version "18.1.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A= + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.0.0, yargs@^15.1.0, yargs@^15.4.1: + version "15.4.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg= dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -11989,4 +12901,4 @@ yargs@^15.0.0, yargs@^15.1.0, yargs@^15.3.1: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.1" + yargs-parser "^18.1.2"