diff --git a/package.json b/package.json index 7f4f5d7c..151f7554 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,9 @@ } }, "dependencies": { - "@babel/helper-module-imports": "7.12.5", - "@babel/types": "7.8.3", - "babel-plugin-syntax-jsx": "6.18.0", + "@babel/helper-module-imports": "7.14.5", + "@babel/plugin-syntax-jsx": "7.14.5", + "@babel/types": "7.15.0", "convert-source-map": "1.7.0", "loader-utils": "1.2.3", "source-map": "0.7.3", @@ -78,7 +78,6 @@ "@babel/register": "7.12.1", "@babel/runtime": "7.12.5", "ava": "1.2.1", - "babel-core": "6.26.3", "babel-plugin-macros": "2.8.0", "eslint-config-prettier": "4.0.0", "husky": "4.3.0", diff --git a/src/babel-test.js b/src/babel-test.js index 1bf8a2a7..3e0d3232 100644 --- a/src/babel-test.js +++ b/src/babel-test.js @@ -1,4 +1,4 @@ -import jsx from 'babel-plugin-syntax-jsx' +import jsx from '@babel/plugin-syntax-jsx' export default function() { return { diff --git a/src/babel.js b/src/babel.js index 0f9dc188..2b7aa3eb 100644 --- a/src/babel.js +++ b/src/babel.js @@ -1,5 +1,5 @@ // Packages -import jsx from 'babel-plugin-syntax-jsx' +import jsx from '@babel/plugin-syntax-jsx' import { visitor as externalStylesVisitor } from './babel-external' diff --git a/test/babel6/_transform.js b/test/babel6/_transform.js deleted file mode 100644 index 67bc90dc..00000000 --- a/test/babel6/_transform.js +++ /dev/null @@ -1,35 +0,0 @@ -import path from 'path' -import { transformFile, transform } from 'babel-core' - -export default (file, opts = {}) => - new Promise((resolve, reject) => { - transformFile( - path.resolve(__dirname, file), - { - babelrc: false, - ...opts - }, - (error, data) => { - if (error) { - return reject(error) - } - - resolve(data) - } - ) - }) - -export const transformSource = (src, opts = {}) => - new Promise((resolve, reject) => { - try { - resolve( - // In Babel 7 this will be async - transform(src, { - babelrc: false, - ...opts - }) - ) - } catch (error) { - reject(error) - } - }) diff --git a/test/babel6/attribute.js b/test/babel6/attribute.js deleted file mode 100644 index 8fc10b22..00000000 --- a/test/babel6/attribute.js +++ /dev/null @@ -1,24 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import plugin from '../../src/babel' -import _transform from './_transform' - -const transform = (file, opts = {}) => - _transform(file, { - plugins: [plugin], - ...opts - }) - -test('rewrites className', async t => { - const { code } = await transform( - '../fixtures/attribute-generation-classname-rewriting.js' - ) - t.snapshot(code) -}) - -test('generate attribute for mixed modes (global, static, dynamic)', async t => { - const { code } = await transform('../fixtures/attribute-generation-modes.js') - t.snapshot(code) -}) diff --git a/test/babel6/external.js b/test/babel6/external.js deleted file mode 100644 index 457ba31b..00000000 --- a/test/babel6/external.js +++ /dev/null @@ -1,95 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import plugin from '../../src/babel' -import _transform, { transformSource as _transformSource } from './_transform' - -const transform = (file, opts = {}) => - _transform(file, { - plugins: [[plugin, opts]] - }) - -const transformSource = (src, opts = {}) => - _transformSource(src.trim(), { - plugins: [[plugin, opts]], - ...opts - }) - -test('transpiles external stylesheets', async t => { - const { code } = await transform('../fixtures/styles.js') - t.snapshot(code) -}) - -test('(optimized) transpiles external stylesheets', async t => { - const { code } = await transform('../fixtures/styles.js', { - optimizeForSpeed: true - }) - t.snapshot(code) -}) - -test('transpiles external stylesheets (CommonJS modules)', async t => { - const { code } = await transform('../fixtures/styles2.js') - t.snapshot(code) -}) - -test('(optimized) transpiles external stylesheets (CommonJS modules)', async t => { - const { code } = await transform('../fixtures/styles2.js', { - optimizeForSpeed: true - }) - t.snapshot(code) -}) - -test('does not transpile non-styled-jsx tagged teplate literals', async t => { - const { code } = await transform( - '../fixtures/not-styled-jsx-tagged-templates.js' - ) - t.snapshot(code) -}) - -test('throws when using `this.something` in external stylesheets', async t => { - const { message } = await t.throwsAsync(() => - transform('../fixtures/styles-external-invalid.js') - ) - t.regex(message, /this\.props/) -}) - -test('throws when referring an undefined value in external stylesheets', async t => { - const { message } = await t.throwsAsync(() => - transform('../fixtures/styles-external-invalid2.js') - ) - t.regex(message, /props\.color/) -}) - -test('use external stylesheets', async t => { - const { code } = await transform('../fixtures/external-stylesheet.js') - t.snapshot(code) -}) - -test('use external stylesheets (multi-line)', async t => { - const { code } = await transform( - '../fixtures/external-stylesheet-multi-line.js' - ) - t.snapshot(code) -}) - -test('use external stylesheets (global only)', async t => { - const { code } = await transform('../fixtures/external-stylesheet-global.js') - t.snapshot(code) -}) - -test('injects JSXStyle for nested scope', async t => { - const { code } = await transformSource(` - import css from 'styled-jsx/css' - - function test() { - css.resolve\`div { color: red }\` - } - `) - t.snapshot(code) -}) - -test('use external stylesheet and dynamic element', async t => { - const { code } = await transform('../fixtures/dynamic-element-external.js') - t.snapshot(code) -}) diff --git a/test/babel6/index.js b/test/babel6/index.js deleted file mode 100644 index c30c8b64..00000000 --- a/test/babel6/index.js +++ /dev/null @@ -1,221 +0,0 @@ -// Packages -import test from 'ava' -import React from 'react' -import ReactDOM from 'react-dom/server' - -// Ours -import plugin from '../../src/babel' -import JSXStyle from '../../src/style' -import flush, { flushToHTML } from '../../src/server' -import _transform from './_transform' - -const transform = (file, opts = {}) => - _transform(file, { - plugins: [plugin], - ...opts - }) - -test('works with stateless', async t => { - const { code } = await transform('../fixtures/stateless.js') - t.snapshot(code) -}) - -test('does not handle shorthand fragment <>', async t => { - const { message } = await t.throwsAsync(() => - transform('../fixtures/simple-fragment.js') - ) - t.regex(message, /Unexpected token/) -}) - -test('ignores whitespace around expression container', async t => { - const { code } = await transform('../fixtures/whitespace.js') - t.snapshot(code) -}) - -test('works with class', async t => { - const { code } = await transform('../fixtures/class.js') - t.snapshot(code) -}) - -test('ignores when attribute is absent', async t => { - const { code } = await transform('../fixtures/absent.js') - t.snapshot(code) -}) - -test('works with global styles', async t => { - const { code } = await transform('../fixtures/global.js') - t.snapshot(code) -}) - -test('generates source maps', async t => { - const { code } = await transform('../fixtures/source-maps.js', { - plugins: [[plugin, { sourceMaps: true }]] - }) - t.snapshot(code) -}) - -test('mixed global and scoped', async t => { - const { code } = await transform('../fixtures/mixed-global-scoped.js') - t.snapshot(code) -}) - -test('works with multiple jsx blocks', async t => { - const { code } = await transform('../fixtures/multiple-jsx.js') - t.snapshot(code) -}) - -test('should not add the data-jsx attribute to components instances', async t => { - const { code } = await transform('../fixtures/component-attribute.js') - t.snapshot(code) -}) - -test('works with expressions in template literals', async t => { - const { code } = await transform('../fixtures/expressions.js') - t.snapshot(code) -}) - -test('should have different jsx ids', async t => { - const { code } = await transform('../fixtures/different-jsx-ids.js') - t.snapshot(code) -}) - -test('works with non styled-jsx styles', async t => { - const { code } = await transform('../fixtures/non-styled-jsx-style.js') - t.snapshot(code) -}) - -test('works with css tagged template literals in the same file', async t => { - const { code } = await transform('../fixtures/css-tag-same-file.js') - t.snapshot(code) -}) - -test('works with dynamic element', async t => { - const { code } = await transform('../fixtures/dynamic-element.js') - t.snapshot(code) -}) - -test('works with dynamic element in class', async t => { - const { code } = await transform('../fixtures/dynamic-element-class.js') - t.snapshot(code) -}) - -test('does not transpile nested style tags', async t => { - const { message } = await t.throwsAsync(() => - transform('../fixtures/nested-style-tags.js') - ) - t.regex(message, /detected nested style tag/i) -}) - -test('server rendering', t => { - function App() { - const color = 'green' - return React.createElement( - 'div', - null, - React.createElement( - JSXStyle, - { - id: 1 - }, - 'p { color: red }' - ), - React.createElement( - JSXStyle, - { - id: 2 - }, - 'div { color: blue }' - ), - React.createElement( - JSXStyle, - { - id: 3 - }, - `div { color: ${color} }` - ) - ) - } - - // Expected CSS - const expected = - '' + - '' + - '' - - // Render using react - ReactDOM.renderToString(React.createElement(App)) - const html = ReactDOM.renderToStaticMarkup( - React.createElement('head', null, flush()) - ) - - t.is(html, `${expected}`) - - // Assert that memory is empty - t.is(0, flush().length) - t.is('', flushToHTML()) - - // Render to html again - ReactDOM.renderToString(React.createElement(App)) - t.is(expected, flushToHTML()) - - // Assert that memory is empty - t.is(0, flush().length) - t.is('', flushToHTML()) -}) - -test('server rendering with nonce', t => { - function App() { - const color = 'green' - return React.createElement( - 'div', - null, - React.createElement( - JSXStyle, - { - id: 1 - }, - 'p { color: red }' - ), - React.createElement( - JSXStyle, - { - id: 2 - }, - 'div { color: blue }' - ), - React.createElement( - JSXStyle, - { - id: 3 - }, - `div { color: ${color} }` - ) - ) - } - - // Expected CSS - const expected = - '' + - '' + - '' - - // Render using react - ReactDOM.renderToString(React.createElement(App)) - const html = ReactDOM.renderToStaticMarkup( - React.createElement('head', null, flush({ nonce: 'test-nonce' })) - ) - - t.is(html, `${expected}`) - - // Assert that memory is empty - t.is(0, flush({ nonce: 'test-nonce' }).length) - t.is('', flushToHTML({ nonce: 'test-nonce' })) - - // Render to html again - ReactDOM.renderToString(React.createElement(App)) - t.is(expected, flushToHTML({ nonce: 'test-nonce' })) - - // Assert that memory is empty - t.is(0, flush({ nonce: 'test-nonce' }).length) - t.is('', flushToHTML({ nonce: 'test-nonce' })) -}) diff --git a/test/babel6/macro.js b/test/babel6/macro.js deleted file mode 100644 index 37bb638d..00000000 --- a/test/babel6/macro.js +++ /dev/null @@ -1,117 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import macros from 'babel-plugin-macros' -import jsx from 'babel-plugin-syntax-jsx' -import _transform, { transformSource as _transformSource } from './_transform' - -const transform = (file, opts = {}) => - _transform(file, { - plugins: [macros, jsx], - ...opts - }) - -const transformSource = (src, opts = {}) => - _transformSource(src.trim(), { - filename: './index.js', - plugins: [macros, jsx], - ...opts - }) - -test('transpiles correctly', async t => { - const { code } = await transform('../fixtures/macro.js') - t.snapshot(code) -}) - -test('throws when using the default export directly', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import css from './src/macro' - - css\`div { color: red }\` - `) - ) - - t.regex(message, /can't use default import directly/i) -}) - -test('throws when using the default export directly and it is not called css', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import foo from './src/macro' - - foo\`div { color: red }\` - `) - ) - - t.regex(message, /can't use default import directly/i) -}) - -test('throws when using the default export directly and it is not called resolve', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import resolve from './src/macro' - - resolve\`div { color: red }\` - `) - ) - - t.regex(message, /can't use default import directly/i) -}) - -test('throws when using an invalid method from the default export', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import css from './src/macro' - - css.foo\`div { color: red }\` - `) - ) - - t.regex(message, /using an invalid tag/i) -}) - -test('throws when using a named import different than resolve', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import { foo } from './src/macro' - - foo\`div { color: red }\` - `) - ) - - t.regex(message, /imported an invalid named import/i) -}) - -test('throws when using a named import as a member expression', async t => { - const { message } = await t.throwsAsync(() => - transformSource(` - import { resolve } from './src/macro' - - resolve.foo\`div { color: red }\` - `) - ) - - t.regex(message, /can't use named import/i) -}) - -test('can alias the named import', async t => { - const { code } = await transformSource(` - import { resolve as foo } from './src/macro' - - foo\`div { color: red }\` - `) - t.snapshot(code) -}) - -test('injects JSXStyle for nested scope', async t => { - const { code } = await transformSource(` - import { resolve } from './src/macro' - - function test() { - resolve\`div { color: red }\` - } - `) - t.snapshot(code) -}) diff --git a/test/babel6/plugins.js b/test/babel6/plugins.js deleted file mode 100644 index 886e6f60..00000000 --- a/test/babel6/plugins.js +++ /dev/null @@ -1,133 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import babelPlugin from '../../src/babel' -import babelTestPlugin from '../../src/babel-test' -import { combinePlugins } from '../../src/_utils' -import testPlugin1 from '../fixtures/plugins/plugin' -import testPlugin2 from '../fixtures/plugins/another-plugin' -import _transform from './_transform' - -const transform = (file, opts = {}) => - _transform(file, { - plugins: [ - [ - babelPlugin, - { plugins: [require.resolve('../fixtures/plugins/another-plugin')] } - ] - ], - ...opts - }) - -test('combinePlugins returns an identity function when plugins is undefined', t => { - const test = 'test' - const plugins = combinePlugins() - t.is(plugins(test), test) -}) - -test('combinePlugins throws if plugins is not an array', t => { - t.throws(() => { - combinePlugins(2) - }) -}) - -test('combinePlugins throws if plugins is not an array of strings', t => { - t.throws(() => { - combinePlugins(['test', 2]) - }) -}) - -test('combinePlugins throws if loaded plugins are not functions', t => { - t.throws(() => { - combinePlugins([ - require.resolve('../fixtures/plugins/plugin'), - require.resolve('../fixtures/plugins/invalid-plugin') - ]) - }) -}) - -test('combinePlugins works with a single plugin', t => { - const plugins = combinePlugins([ - require.resolve('../fixtures/plugins/plugin') - ]) - - t.is(testPlugin1('test'), plugins('test')) -}) - -test('combinePlugins works with options', t => { - const expectedOption = 'my-test' - const plugins = combinePlugins([ - [ - require.resolve('../fixtures/plugins/options'), - { - test: expectedOption - } - ] - ]) - t.is(plugins(''), expectedOption) -}) - -test('combinePlugins applies plugins left to right', t => { - const plugins = combinePlugins([ - require.resolve('../fixtures/plugins/plugin'), - require.resolve('../fixtures/plugins/another-plugin') - ]) - - t.is(testPlugin2(testPlugin1('test')), plugins('test')) -}) - -test('applies plugins', async t => { - const { code } = await transform('../fixtures/with-plugins.js') - t.snapshot(code) -}) - -test('babel-test plugin strips jsx attribute', async t => { - const { code } = await transform('../fixtures/with-plugins.js', { - plugins: [babelTestPlugin] - }) - - t.snapshot(code) -}) - -test('passes options to plugins', async t => { - const { code } = await transform('../fixtures/with-plugins.js', { - plugins: [ - [ - babelPlugin, - { - plugins: [ - [require.resolve('../fixtures/plugins/options'), { foo: true }], - require.resolve('../fixtures/plugins/multiple-options'), - [ - require.resolve('../fixtures/plugins/multiple-options'), - { foo: false } - ] - ], - vendorPrefixes: false - } - ] - ] - }) - t.snapshot(code) -}) - -test('combinePlugins throws if passing an option called `babel`', t => { - t.throws(() => { - combinePlugins([['test', { babel: true }]]) - }) -}) - -test('combinePlugins memoizes calls', t => { - const v1 = combinePlugins([require.resolve('../fixtures/plugins/plugin')]) - const v2 = combinePlugins([require.resolve('../fixtures/plugins/plugin')]) - - t.is(v1('test div'), v2('test div')) - - const v3 = combinePlugins([ - require.resolve('../fixtures/plugins/plugin'), - require.resolve('../fixtures/plugins/another-plugin') - ]) - - t.not(v2('test div'), v3('test div')) -}) diff --git a/test/babel6/snapshots/attribute.js.md b/test/babel6/snapshots/attribute.js.md deleted file mode 100644 index 341808cf..00000000 --- a/test/babel6/snapshots/attribute.js.md +++ /dev/null @@ -1,166 +0,0 @@ -# Snapshot report for `test/babel6/attribute.js` - -The actual snapshot is saved in `attribute.js.snap`. - -Generated by [AVA](https://ava.li). - -## generate attribute for mixed modes (global, static, dynamic) - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles from './styles';␊ - ␊ - const styles2 = require('./styles2');␊ - ␊ - // external only␊ - export const Test1 = () =>
␊ -

external only

␊ - <_JSXStyle id={styles.__hash}>{styles}␊ - <_JSXStyle id={styles2.__hash}>{styles2}␊ -
;␊ - ␊ - // external and static␊ - export const Test2 = () =>
␊ -

external and static

␊ - <_JSXStyle id={"2982525546"}>{"p.jsx-2982525546{color:red;}"}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
;␊ - ␊ - // external and dynamic␊ - export const Test3 = ({ color }) =>
␊ -

external and dynamic

␊ - <_JSXStyle id={"1947484460"} dynamic={[color]}>{`p.__jsx-style-dynamic-selector{color:${color};}`}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
;␊ - ␊ - // external, static and dynamic␊ - export const Test4 = ({ color }) =>
␊ -

external, static and dynamic

␊ - <_JSXStyle id={"3190985107"}>{"p.jsx-3190985107{display:inline-block;}"}␊ - <_JSXStyle id={"1336444426"} dynamic={[color]}>{`p.__jsx-style-dynamic-selector{color:${color};}`}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
;␊ - ␊ - // static only␊ - export const Test5 = () =>
␊ -

static only

␊ - <_JSXStyle id={"3190985107"}>{"p.jsx-1372669040{display:inline-block;}"}␊ - <_JSXStyle id={"2982525546"}>{"p.jsx-1372669040{color:red;}"}␊ -
;␊ - ␊ - // static and dynamic␊ - export const Test6 = ({ color }) =>
␊ -

static and dynamic

␊ - <_JSXStyle id={"3190985107"}>{"p.jsx-3190985107{display:inline-block;}"}␊ - <_JSXStyle id={"1336444426"} dynamic={[color]}>{`p.__jsx-style-dynamic-selector{color:${color};}`}␊ -
;␊ - ␊ - // dynamic only␊ - export const Test7 = ({ color }) =>
␊ -

dynamic only

␊ - <_JSXStyle id={"1947484460"} dynamic={[color]}>{`p.__jsx-style-dynamic-selector{color:${color};}`}␊ -
;␊ - ␊ - // dynamic with scoped compound variable␊ - export const Test8 = ({ color }) => {␊ - if (color) {␊ - const innerProps = { color };␊ - ␊ - return
␊ -

dynamic with scoped compound variable

␊ - <_JSXStyle id={"1791723528"} dynamic={[innerProps.color]}>{`p.__jsx-style-dynamic-selector{color:${innerProps.color};}`}␊ -
;␊ - }␊ - };␊ - ␊ - // dynamic with compound variable␊ - export const Test9 = ({ color }) => {␊ - const innerProps = { color };␊ - ␊ - return
␊ -

dynamic with compound variable

␊ - <_JSXStyle id={"248922593"} dynamic={[innerProps.color]}>{`p.__jsx-style-dynamic-selector{color:${innerProps.color};}`}␊ -
;␊ - };␊ - ␊ - const foo = 'red';␊ - ␊ - // dynamic with constant variable␊ - export const Test10 = () =>
␊ -

dynamic with constant variable

␊ - <_JSXStyle id={"461505126"}>{`p.jsx-461505126{color:${foo};}`}␊ -
;␊ - ␊ - // dynamic with complex scope␊ - export const Test11 = ({ color }) => {␊ - const items = Array.from({ length: 5 }).map((item, i) =>
  • ␊ - <_JSXStyle id={"2172653867"} dynamic={[color]}>{`.item.__jsx-style-dynamic-selector{color:${color};}`}␊ - Item #{i + 1}␊ -
  • );␊ - ␊ - return ;␊ - };` - -## rewrites className - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - ␊ - var _this = this;␊ - ␊ - export default (() => {␊ - const Element = 'div';␊ - return
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ -
    ␊ - ␊ - ␊ - ␊ - <_JSXStyle id={"2886504620"}>{"div.jsx-2886504620{color:red;}"}␊ -
    ;␊ - });` diff --git a/test/babel6/snapshots/attribute.js.snap b/test/babel6/snapshots/attribute.js.snap deleted file mode 100644 index f885e861..00000000 Binary files a/test/babel6/snapshots/attribute.js.snap and /dev/null differ diff --git a/test/babel6/snapshots/external.js.md b/test/babel6/snapshots/external.js.md deleted file mode 100644 index 7e7ce819..00000000 --- a/test/babel6/snapshots/external.js.md +++ /dev/null @@ -1,238 +0,0 @@ -# Snapshot report for `test/babel6/external.js` - -The actual snapshot is saved in `external.js.snap`. - -Generated by [AVA](https://ava.li). - -## (optimized) transpiles external stylesheets - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - import colors, { size } from './constants';␊ - const color = 'red';␊ - ␊ - const bar = ['div.jsx-2141779268{font-size:3em;}'];␊ - ␊ - bar.__hash = '2141779268';␊ - const baz = ['div{font-size:3em;}'];␊ - ␊ - baz.__hash = '2141779268';␊ - const a = [`div{font-size:${size}em;}`];␊ - ␊ - a.__hash = '262929833';␊ - export const uh = bar;␊ - ␊ - export const foo = [`div.jsx-2299908427{color:${color};}`];␊ - ␊ - foo.__hash = '2299908427';␊ - ({␊ - styles: <_JSXStyle id={"1329679275"}>{[`div.jsx-1329679275{color:${colors.green.light};}`, 'a.jsx-1329679275{color:red;}']},␊ - className: 'jsx-1329679275'␊ - });␊ - ␊ - const b = {␊ - styles: <_JSXStyle id={"1329679275"}>{[`div.jsx-1329679275{color:${colors.green.light};}`, 'a.jsx-1329679275{color:red;}']},␊ - className: 'jsx-1329679275'␊ - };␊ - ␊ - const dynamic = colors => {␊ - const b = {␊ - styles: <_JSXStyle id={"3325296745"} dynamic={[colors.green.light]}>{[`div.__jsx-style-dynamic-selector{color:${colors.green.light};}`, 'a.__jsx-style-dynamic-selector{color:red;}']},␊ - className: _JSXStyle.dynamic([['3325296745', [colors.green.light]]])␊ - };␊ - };␊ - ␊ - export default {␊ - styles: <_JSXStyle id={"3290112549"}>{['div.jsx-3290112549{font-size:3em;}', `p.jsx-3290112549{color:${color};}`]},␊ - className: 'jsx-3290112549'␊ - };` - -## (optimized) transpiles external stylesheets (CommonJS modules) - -> Snapshot 1 - - `const _defaultExport = ['div.jsx-2292456818{font-size:3em;}'];␊ - _defaultExport.__hash = '2292456818';␊ - ␊ - ␊ - module.exports = _defaultExport;` - -## does not transpile non-styled-jsx tagged teplate literals - -> Snapshot 1 - - `import css from 'hell';␊ - ␊ - const color = 'red';␊ - ␊ - const bar = css`␊ - div {␊ - font-size: 3em;␊ - }␊ - `;␊ - export const uh = bar;␊ - ␊ - export const foo = css`div { color: ${color}}`;␊ - ␊ - export default css`␊ - div {␊ - font-size: 3em;␊ - }␊ - p {␊ - color: ${color};␊ - }␊ - `;␊ - ␊ - const Title = styled.h1`␊ - color: red;␊ - font-size: 50px;␊ - `;␊ - ␊ - const AnotherTitle = Title.extend`color: blue;`;␊ - ␊ - export const Component = () => My page;` - -## injects JSXStyle for nested scope - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - ␊ - function test() {␊ - ({␊ - styles: <_JSXStyle id={"2886504620"}>{"div.jsx-2886504620{color:red;}"},␊ - className: 'jsx-2886504620'␊ - });␊ - }` - -## transpiles external stylesheets - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - import colors, { size } from './constants';␊ - const color = 'red';␊ - ␊ - const bar = new String('div.jsx-2141779268{font-size:3em;}');␊ - ␊ - bar.__hash = '2141779268';␊ - const baz = new String('div{font-size:3em;}');␊ - ␊ - baz.__hash = '2141779268';␊ - const a = new String(`div{font-size:${size}em;}`);␊ - ␊ - a.__hash = '262929833';␊ - export const uh = bar;␊ - ␊ - export const foo = new String(`div.jsx-2299908427{color:${color};}`);␊ - ␊ - foo.__hash = '2299908427';␊ - ({␊ - styles: <_JSXStyle id={"1329679275"}>{`div.jsx-1329679275{color:${colors.green.light};}a.jsx-1329679275{color:red;}`},␊ - className: 'jsx-1329679275'␊ - });␊ - ␊ - const b = {␊ - styles: <_JSXStyle id={"1329679275"}>{`div.jsx-1329679275{color:${colors.green.light};}a.jsx-1329679275{color:red;}`},␊ - className: 'jsx-1329679275'␊ - };␊ - ␊ - const dynamic = colors => {␊ - const b = {␊ - styles: <_JSXStyle id={"3325296745"} dynamic={[colors.green.light]}>{`div.__jsx-style-dynamic-selector{color:${colors.green.light};}a.__jsx-style-dynamic-selector{color:red;}`},␊ - className: _JSXStyle.dynamic([['3325296745', [colors.green.light]]])␊ - };␊ - };␊ - ␊ - export default {␊ - styles: <_JSXStyle id={"3290112549"}>{`div.jsx-3290112549{font-size:3em;}p.jsx-3290112549{color:${color};}`},␊ - className: 'jsx-3290112549'␊ - };` - -## transpiles external stylesheets (CommonJS modules) - -> Snapshot 1 - - `const _defaultExport = new String('div.jsx-2292456818{font-size:3em;}');␊ - ␊ - _defaultExport.__hash = '2292456818';␊ - ␊ - ␊ - module.exports = _defaultExport;` - -## use external stylesheet and dynamic element - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - import styles from './styles2';␊ - ␊ - export default (({ level = 1 }) => {␊ - const Element = `h${level}`;␊ - ␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    ;␊ - });` - -## use external stylesheets - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles from './styles';␊ - const styles2 = require('./styles2');␊ - import { foo as styles3 } from './styles';␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ -

    woot

    ␊ - <_JSXStyle id={styles2.__hash}>{styles2}␊ - <_JSXStyle id={styles3.__hash}>{styles3}␊ -
    woot
    ␊ - <_JSXStyle id={"1646697228"}>{"p.jsx-1646697228{color:red;}div.jsx-1646697228{color:green;}"}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );␊ - ␊ - export const Test = () =>
    ␊ -

    test

    ␊ -

    woot

    ␊ - <_JSXStyle id={styles3.__hash}>{styles3}␊ -
    woot
    ␊ - <_JSXStyle id={"1646697228"}>{"p.jsx-1646697228{color:red;}div.jsx-1646697228{color:green;}"}␊ -
    ;` - -## use external stylesheets (global only) - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles, { foo as styles3 } from './styles';␊ - ␊ - const styles2 = require('./styles2');␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ -
    woot
    ␊ -

    woot

    ␊ - <_JSXStyle id={styles2.__hash}>{styles2}␊ - <_JSXStyle id={styles3.__hash}>{styles3}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );` - -## use external stylesheets (multi-line) - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles from './styles';␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );` diff --git a/test/babel6/snapshots/external.js.snap b/test/babel6/snapshots/external.js.snap deleted file mode 100644 index 48479980..00000000 Binary files a/test/babel6/snapshots/external.js.snap and /dev/null differ diff --git a/test/babel6/snapshots/index.js.md b/test/babel6/snapshots/index.js.md deleted file mode 100644 index a8ede4b3..00000000 --- a/test/babel6/snapshots/index.js.md +++ /dev/null @@ -1,275 +0,0 @@ -# Snapshot report for `test/babel6/index.js` - -The actual snapshot is saved in `index.js.snap`. - -Generated by [AVA](https://ava.li). - -## generates source maps - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - export default (() =>
    ␊ -

    test

    ␊ -

    woot

    ␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-2743241663{color:red;}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXBzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlnQixBQUNjLFVBQUMiLCJmaWxlIjoic291cmNlLW1hcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoKSA9PiAoXG4gIDxkaXY+XG4gICAgPHA+dGVzdDwvcD5cbiAgICA8cD53b290PC9wPlxuICAgIDxzdHlsZSBqc3g+eydwIHsgY29sb3I6IHJlZCB9J308L3N0eWxlPlxuICA8L2Rpdj5cbilcbiJdfQ== */\\n/*@ sourceURL=source-maps.js */"}␊ -
    );` - -## ignores when attribute is absent - -> Snapshot 1 - - `const a = () =>
    ␊ -

    hi

    ␊ - ␊ -
    ;` - -## ignores whitespace around expression container - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - export default (() =>
    ␊ -

    test

    ␊ -

    woot

    ␊ -

    woot

    ␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-2743241663{color:red;}"}␊ -
    );` - -## mixed global and scoped - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - const Test = () => <_JSXStyle id={"2743241663"}>{"p{color:red;}"};␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"4269072806"}>{"body{background:red;}"}␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-2673076688{color:red;}"}␊ -
    );` - -## should have different jsx ids - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - const color = 'red';␊ - const otherColor = 'green';␊ - ␊ - const A = () =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"57381496"}>{`p.jsx-57381496{color:${color};}`}␊ -
    ;␊ - ␊ - const B = () =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"3099245642"}>{`p.jsx-3099245642{color:${otherColor};}`}␊ -
    ;␊ - ␊ - export default (() => );` - -## should not add the data-jsx attribute to components instances - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - const Test = () =>
    ␊ - test␊ - ␊ - <_JSXStyle id={"2529315885"}>{"span.jsx-2529315885{color:red;}"}␊ -
    ;` - -## works with class - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - export default class {␊ - render() {␊ - return
    ␊ -

    test

    ␊ - <_JSXStyle id={"2101845350"}>{"p.jsx-2101845350{color:red;}"}␊ -
    ;␊ - }␊ - }` - -## works with css tagged template literals in the same file - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - ␊ - export default (({ children }) =>
    ␊ -

    {children}

    ␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );␊ - ␊ - const styles = new String('p.jsx-2587355013{color:red;}');␊ - ␊ - styles.__hash = '2587355013';␊ - class Test extends React.Component {␊ - render() {␊ - return
    ␊ -

    {this.props.children}

    ␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    ;␊ - }␊ - }` - -## works with dynamic element - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - export default (({ level = 1 }) => {␊ - const Element = `h${level}`;␊ - ␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={"1253978709"}>{".root.jsx-1253978709{background:red;}"}␊ -
    ;␊ - });␊ - ␊ - export const TestLowerCase = ({ level = 1 }) => {␊ - const element = `h${level}`;␊ - ␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={"1253978709"}>{".root.jsx-1253978709{background:red;}"}␊ -
    ;␊ - };␊ - ␊ - const Element2 = 'div';␊ - export const Test2 = () => {␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={"1253978709"}>{".root.jsx-1253978709{background:red;}"}␊ -
    ;␊ - };` - -## works with dynamic element in class - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - export default class {␊ - render() {␊ - const Element = 'div';␊ - ␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={"1800172487"}>{".root.jsx-1800172487{background:red;}"}␊ -
    ;␊ - }␊ - }␊ - ␊ - const Element2 = 'div';␊ - export const Test2 = class {␊ - render() {␊ - return ␊ -

    dynamic element

    ␊ - <_JSXStyle id={"1800172487"}>{".root.jsx-1800172487{background:red;}"}␊ -
    ;␊ - }␊ - };` - -## works with expressions in template literals - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - const darken = c => c;␊ - const color = 'red';␊ - const otherColor = 'green';␊ - const mediumScreen = '680px';␊ - const animationDuration = '200ms';␊ - const animationName = 'my-cool-animation';␊ - const obj = { display: 'block' };␊ - ␊ - export default (({ display }) =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"1003380713"}>{`p.${color}.jsx-3956171631{color:${otherColor};display:${obj.display};}`}␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-3956171631{color:red;}"}␊ - <_JSXStyle id={"602592955"}>{`body{background:${color};}`}␊ - <_JSXStyle id={"602592955"}>{`body{background:${color};}`}␊ - <_JSXStyle id={"128557999"}>{`p.jsx-3956171631{color:${color};}`}␊ - <_JSXStyle id={"128557999"}>{`p.jsx-3956171631{color:${color};}`}␊ - <_JSXStyle id={"2143443147"} dynamic={[darken(color)]}>{`p.__jsx-style-dynamic-selector{color:${darken(color)};}`}␊ - <_JSXStyle id={"2381675492"} dynamic={[darken(color) + 2]}>{`p.__jsx-style-dynamic-selector{color:${darken(color) + 2};}`}␊ - <_JSXStyle id={"309852217"}>{`@media (min-width:${mediumScreen}){p.jsx-3956171631{color:green;}p.jsx-3956171631{color:${`red`};}}p.jsx-3956171631{color:red;}`}␊ - <_JSXStyle id={"2824547816"}>{`p.jsx-3956171631{-webkit-animation-duration:${animationDuration};animation-duration:${animationDuration};}`}␊ - <_JSXStyle id={"417951176"}>{`p.jsx-3956171631{-webkit-animation:${animationDuration} forwards ${animationName};animation:${animationDuration} forwards ${animationName};}div.jsx-3956171631{background:${color};}`}␊ - ␊ - <_JSXStyle id={"3830663176"} dynamic={[display ? 'block' : 'none']}>{`span.__jsx-style-dynamic-selector{display:${display ? 'block' : 'none'};}`}␊ - <_JSXStyle id={"1555166447"} dynamic={[display ? 'block' : 'none']}>{`span.__jsx-style-dynamic-selector:before{display:${display ? 'block' : 'none'};content:'\\`';}`}␊ -
    );` - -## works with global styles - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - const Test = () =>
    ␊ - <_JSXStyle id={"2209073070"}>{"body{color:red;}:hover{color:red;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-animation:foo 1s ease-out;animation:foo 1s ease-out;}div a{display:none;}[data-test]>div{color:red;}"}␊ -
    ;␊ - ␊ - const Test2 = () => <_JSXStyle id={"2743241663"}>{"p{color:red;}"};` - -## works with multiple jsx blocks - -> Snapshot 1 - - `import _JSXStyle from "styled-jsx/style";␊ - const attrs = {␊ - id: 'test'␊ - };␊ - ␊ - const Test1 = () =>
    ␊ - test␊ - ␊ - <_JSXStyle id={"2529315885"}>{"span.jsx-2529315885{color:red;}"}␊ -
    ;␊ - ␊ - const Test2 = () => test;␊ - ␊ - const Test3 = () =>
    ␊ - test␊ - <_JSXStyle id={"2529315885"}>{"span.jsx-2529315885{color:red;}"}␊ -
    ;␊ - ␊ - export default class {␊ - render() {␊ - return
    ␊ -

    test

    ␊ - <_JSXStyle id={"2101845350"}>{"p.jsx-2101845350{color:red;}"}␊ -
    ;␊ - }␊ - }` - -## works with non styled-jsx styles - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - export default (() =>
    ␊ -

    woot

    ␊ - ␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-2743241663{color:red;}"}␊ -
    );` - -## works with stateless - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - export default (() =>
    ␊ -

    test

    ␊ -

    woot

    ␊ -

    woot

    ␊ - <_JSXStyle id={"2743241663"}>{"p.jsx-2743241663{color:red;}"}␊ -
    );` diff --git a/test/babel6/snapshots/index.js.snap b/test/babel6/snapshots/index.js.snap deleted file mode 100644 index 6a4cef5b..00000000 Binary files a/test/babel6/snapshots/index.js.snap and /dev/null differ diff --git a/test/babel6/snapshots/macro.js.md b/test/babel6/snapshots/macro.js.md deleted file mode 100644 index eecb7c37..00000000 --- a/test/babel6/snapshots/macro.js.md +++ /dev/null @@ -1,67 +0,0 @@ -# Snapshot report for `test/babel6/macro.js` - -The actual snapshot is saved in `macro.js.snap`. - -Generated by [AVA](https://ava.li). - -## can alias the named import - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - ␊ - ({␊ - styles: <_JSXStyle id={"2886504620"}>{"div.jsx-2886504620{color:red;}"},␊ - className: 'jsx-2886504620'␊ - });` - -## injects JSXStyle for nested scope - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - ␊ - function test() {␊ - ({␊ - styles: <_JSXStyle id={"2886504620"}>{"div.jsx-2886504620{color:red;}"},␊ - className: 'jsx-2886504620'␊ - });␊ - }` - -## transpiles correctly - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - ␊ - ␊ - const { className, styles } = {␊ - styles: <_JSXStyle id={"2052294191"}>{"div.jsx-2052294191{color:red;}"},␊ - className: 'jsx-2052294191'␊ - };␊ - ␊ - const dynamicStyles = props => ({␊ - styles: <_JSXStyle id={"290194820"} dynamic={[props.color]}>{`div.__jsx-style-dynamic-selector{color:${props.color};}`},␊ - className: _JSXStyle.dynamic([['290194820', [props.color]]])␊ - });␊ - ␊ - const test = {␊ - styles: <_JSXStyle id={"2052294191"}>{"div.jsx-2052294191{color:red;}"},␊ - className: 'jsx-2052294191'␊ - };␊ - ␊ - const dynamicStyles2 = props => ({␊ - styles: <_JSXStyle id={"290194820"} dynamic={[props.color]}>{`div.__jsx-style-dynamic-selector{color:${props.color};}`},␊ - className: _JSXStyle.dynamic([['290194820', [props.color]]])␊ - });␊ - ␊ - const ExampleComponent = props => {␊ - const { className, styles } = dynamicStyles(props);␊ - ␊ - return
    ␊ - howdy␊ - {styles}␊ -
    ;␊ - };` diff --git a/test/babel6/snapshots/macro.js.snap b/test/babel6/snapshots/macro.js.snap deleted file mode 100644 index 532e5ab0..00000000 Binary files a/test/babel6/snapshots/macro.js.snap and /dev/null differ diff --git a/test/babel6/snapshots/plugins.js.md b/test/babel6/snapshots/plugins.js.md deleted file mode 100644 index b702a03a..00000000 --- a/test/babel6/snapshots/plugins.js.md +++ /dev/null @@ -1,50 +0,0 @@ -# Snapshot report for `test/babel6/plugins.js` - -The actual snapshot is saved in `plugins.js.snap`. - -Generated by [AVA](https://ava.li). - -## applies plugins - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles from './styles';␊ - const color = 'red';␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"2799750516"} dynamic={[color, otherColor]}>{`span.${color}.__jsx-style-dynamic-selector{color:${otherColor};}`}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );` - -## babel-test plugin strips jsx attribute - -> Snapshot 1 - - `import styles from './styles';␊ - const color = 'red';␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ - ␊ - ␊ -
    );` - -## passes options to plugins - -> Snapshot 1 - - `import _JSXStyle from 'styled-jsx/style';␊ - import styles from './styles';␊ - const color = 'red';␊ - ␊ - export default (() =>
    ␊ -

    test

    ␊ - <_JSXStyle id={"2799750516"} dynamic={[color, otherColor]}>{".test.__jsx-style-dynamic-selector{content:\\"{\\"foo\\":false,\\"babel\\":{\\"location\\":{\\"start\\":{\\"line\\":7,\\"column\\":16},\\"end\\":{\\"line\\":11,\\"column\\":5}},\\"vendorPrefixes\\":false,\\"sourceMaps\\":false,\\"isGlobal\\":false}}\\";}"}␊ - <_JSXStyle id={styles.__hash}>{styles}␊ -
    );` diff --git a/test/babel6/snapshots/plugins.js.snap b/test/babel6/snapshots/plugins.js.snap deleted file mode 100644 index 1f3946f9..00000000 Binary files a/test/babel6/snapshots/plugins.js.snap and /dev/null differ diff --git a/test/babel6/snapshots/styles.js.md b/test/babel6/snapshots/styles.js.md deleted file mode 100644 index 35fdeddf..00000000 --- a/test/babel6/snapshots/styles.js.md +++ /dev/null @@ -1,11 +0,0 @@ -# Snapshot report for `test/babel6/styles.js` - -The actual snapshot is saved in `styles.js.snap`. - -Generated by [AVA](https://ava.li). - -## transpile styles with attributes - -> Snapshot 1 - - 'html.jsx-123{background-image: linear-gradient(0deg,rgba(255,255,255,0.8),rgba(255,255,255,0.8)), url(/static/background.svg);}p{color:blue;}p{color:blue;}p,a.jsx-123{color:blue;}.foo + a{color:red;}body{font-family:-apple-system,BlinkMacSystemFont,\'Segoe UI\',Helvetica,Arial,sans-serif;}p.jsx-123{color:red;}p.jsx-123{color:red;}*.jsx-123{color:blue;}[href="woot"].jsx-123{color:red;}p.jsx-123 a.jsx-123 span.jsx-123{color:red;}p.jsx-123 span{background:blue;}p.jsx-123 a[title="\'w \' \' t\'"].jsx-123{margin:auto;}p.jsx-123 span:not(.test){color:green;}p.jsx-123,h1.jsx-123{color:blue;-webkit-animation:hahaha-jsx-123 3s ease forwards infinite;animation:hahaha-jsx-123 3s ease forwards infinite;-webkit-animation-name:hahaha-jsx-123;animation-name:hahaha-jsx-123;-webkit-animation-delay:100ms;animation-delay:100ms;}p.jsx-123{-webkit-animation:hahaha-jsx-123 1s,hehehe-jsx-123 2s;animation:hahaha-jsx-123 1s,hehehe-jsx-123 2s;}p.jsx-123:hover{color:red;}p.jsx-123::before{color:red;}.jsx-123:hover{color:red;}.jsx-123::before{color:red;}.jsx-123:hover p.jsx-123{color:red;}p.jsx-123+a.jsx-123{color:red;}p.jsx-123~a.jsx-123{color:red;}p.jsx-123>a.jsx-123{color:red;}p.jsx-123>>a.jsx-123{color:red;}@-webkit-keyframes hahaha-jsx-123{from{top:0;}to{top:100;}}@keyframes hahaha-jsx-123{from{top:0;}to{top:100;}}@-webkit-keyframes hehehe-jsx-123{from{left:0;}to{left:100;}}@keyframes hehehe-jsx-123{from{left:0;}to{left:100;}}@media (min-width:500px){.test.jsx-123{color:red;}}.test.jsx-123{display:block;}.inline-flex.jsx-123{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}.flex.jsx-123{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.test.jsx-123{box-shadow:0 0 10px black,inset 0 0 5px black;}.test[title=","].jsx-123{display:inline-block;}.test.is-status.jsx-123 .test.jsx-123{color:red;}.a-selector.jsx-123:hover,.a-selector.jsx-123:focus{outline:none;}@media (min-width:1px) and (max-width:768px){[class*=\'grid__col--\'].jsx-123{margin-top:12px;margin-bottom:12px;}}@media (max-width:64em){.test.jsx-123{margin-bottom:1em;}@supports (-moz-appearance:none) and (display:contents){.test.jsx-123{margin-bottom:2rem;}}}' diff --git a/test/babel6/snapshots/styles.js.snap b/test/babel6/snapshots/styles.js.snap deleted file mode 100644 index 0e3f664b..00000000 Binary files a/test/babel6/snapshots/styles.js.snap and /dev/null differ diff --git a/test/babel6/styles.js b/test/babel6/styles.js deleted file mode 100644 index 96a9d9c6..00000000 --- a/test/babel6/styles.js +++ /dev/null @@ -1,254 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import transform from '../../src/lib/style-transform' -import read from '../_read' - -test('transpile styles with attributes', async t => { - const src = await read('./fixtures/transform.css') - t.snapshot(transform('.jsx-123', src)) -}) - -test('throws when using nesting', t => { - const fixtures = [ - `div { &:hover { color: red } }`, - `div { - color: green; - &:hover { color: red } }`, - `:hover { div { color: red } }`, - `@media all { - div { - &:hover { color: red } - } - }`, - `* { div { color: red } - &.test { - color: red; - } - }`, - `span {} - .test { - color: red; - div& { - color: red; - } - }` - ] - - fixtures.forEach(fixture => { - t.throws(() => transform('', fixture)) - t.throws(() => transform('.jsx-123', fixture)) - }) -}) - -test("doesn't throw when using at-rules", t => { - const fixtures = [ - '@media (min-width: 480px) { div { color: red } }', - `span {} - @media (min-width: 480px) { div { color: red } }`, - `@media (min-width: 480px) { div { color: red } } - span {}`, - `:hover {} - @media (min-width: 480px) { div { color: red } }`, - `:hover { color: green } - @media (min-width: 480px) { div { color: red } }`, - `@media (min-width: 480px) { div {} }`, - `@keyframes foo { - 0% { opacity: 0 } - 100% { opacity: 1} - } - `, - // Line with one space before @rule - `div { color: red; } - - @media screen and (min-width: 480px) { - div { color: red; } - } - `, - // Line with one tab before @rule - `div { color: red; } - - @media screen and (min-width: 480px) { - div { color: red; } - } - ` - ] - - fixtures.forEach(fixture => { - t.notThrows(() => transform('', fixture)) - t.notThrows(() => transform('.jsx-123', fixture)) - }) -}) - -test('splits rules for `optimizeForSpeed`', t => { - function assert(input, expected, prefix = '') { - t.deepEqual(transform(prefix, input, { splitRules: true }), expected) - } - - assert('div { color: red }', ['div{color:red;}']) - - assert('div { color: red } .p { color: red }', [ - 'div{color:red;}', - '.p{color:red;}' - ]) - - assert('div, span { color: red } a > .p { color: red }', [ - 'div,span{color:red;}', - 'a>.p{color:red;}' - ]) - - assert( - '@media (min-width: 400px) { div, span { color: red } } a > .p { color: red }', - ['@media (min-width:400px){div,span{color:red;}}', 'a>.p{color:red;}'] - ) - - assert( - '@media (min-width: 400px) { div { color: red } span { color: red } } a > .p { color: red }', - [ - '@media (min-width:400px){div{color:red;}span{color:red;}}', - 'a>.p{color:red;}' - ] - ) - - assert( - `@media (min-width: 1px) and (max-width: 768px) { - [class*='test__test--'] { - color: red; - } - }`, - [ - `@media (min-width:1px) and (max-width:768px){[class*='test__test--']{color:red;}}` - ] - ) - - assert( - 'span { color: red } @font-face { font-family: test; src: url(test.woff); } div { color: red }', - [ - '@font-face{font-family:test;src:url(test.woff);}', - 'span{color:red;}', - 'div{color:red;}' - ] - ) - - assert('@charset "UTF-8"', ['@charset "UTF-8";']) - - assert('@import "./test.css"', ['@import "./test.css";']) - - assert( - ` - @keyframes test { - 0% { opacity: 0 } - 100% { opacity: 1 } - } - `, - [ - '@-webkit-keyframes test{0%{opacity:0;}100%{opacity:1;}}', - '@keyframes test{0%{opacity:0;}100%{opacity:1;}}' - ] - ) - - assert( - ` - @supports (display: flex) { - div { display: flex; } - } - `, - [ - '@supports (display:-webkit-box) or (display:-webkit-flex) or (display:-ms-flexbox) or (display:flex){div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}' - ] - ) - - assert( - ` - @import "./test.css"; - @supports (display: flex) { - div { display: flex; } - } - div { color: red } - a, div { color: red } - @import "./test.css"; - @media (min-width: 400px) { div, span { color: red } } - `, - [ - '@import "./test.css";', - '@import "./test.css";', - '@supports (display:-webkit-box) or (display:-webkit-flex) or (display:-ms-flexbox) or (display:flex){div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}', - 'div{color:red;}', - 'a,div{color:red;}', - '@media (min-width:400px){div,span{color:red;}}' - ] - ) - - assert('@namespace url(http://www.w3.org/1999/xhtml)', [ - '@namespace url(http://www.w3.org/1999/xhtml);' - ]) - assert('@namespace svg url(http://www.w3.org/2000/svg)', [ - '@namespace svg url(http://www.w3.org/2000/svg);' - ]) - assert('@page :first { margin: 1in; }', ['@page :first{margin:1in;}']) - - assert( - ` - div { - animation: fade-in ease-in 1; - animation-fill-mode: forwards; - animation-duration: 500ms; - opacity: 0; - } - @keyframes fade-in { - from { - opacity: 0; - } - - to { - opacity: 1; - } - } - `, - [ - 'div.jsx-123{-webkit-animation:fade-in-jsx-123 ease-in 1;animation:fade-in-jsx-123 ease-in 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:500ms;animation-duration:500ms;opacity:0;}', - '@-webkit-keyframes fade-in-jsx-123{from{opacity:0;}to{opacity:1;}}', - '@keyframes fade-in-jsx-123{from{opacity:0;}to{opacity:1;}}' - ], - '.jsx-123' - ) - - assert( - ` - div { - animation: fade-in ease-in 1; - animation-fill-mode: forwards; - animation-duration: 500ms; - opacity: 0; - } - - @keyframes fade-in { - from { - opacity: 0; - } - - to { - opacity: 1; - } - } - `, - [ - 'div{-webkit-animation:fade-in ease-in 1;animation:fade-in ease-in 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:500ms;animation-duration:500ms;opacity:0;}', - '@-webkit-keyframes fade-in{from{opacity:0;}to{opacity:1;}}', - '@keyframes fade-in{from{opacity:0;}to{opacity:1;}}' - ] - ) - - assert( - `div { color: red } ::placeholder { color: green }`, - [ - 'div.jsx-123{color:red;}', - '.jsx-123::-webkit-input-placeholder{color:green;}', - '.jsx-123::-moz-placeholder{color:green;}', - '.jsx-123:-ms-input-placeholder{color:green;}', - '.jsx-123::placeholder{color:green;}' - ], - '.jsx-123' - ) -}) diff --git a/test/babel6/stylesheet-registry.js b/test/babel6/stylesheet-registry.js deleted file mode 100644 index 238b41a2..00000000 --- a/test/babel6/stylesheet-registry.js +++ /dev/null @@ -1,343 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import StyleSheetRegistry from '../../src/stylesheet-registry' -import withMock, { withMockDocument } from '../helpers/with-mock' -import makeSheet, { invalidRules } from './stylesheet' - -function makeRegistry(options = { optimizeForSpeed: true, isBrowser: true }) { - const registry = new StyleSheetRegistry({ - styleSheet: makeSheet(options), - ...options - }) - registry.selectFromServer = () => ({}) - return registry -} - -const cssRule = 'div { color: red }' -const cssRuleAlt = 'p { color: red }' - -// registry.add - -test( - 'add', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false }, - { optimizeForSpeed: false, isBrowser: false } - ] - - options.forEach(options => { - const registry = makeRegistry(options) - registry.add({ - id: '123', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - t.deepEqual(registry.cssRules(), [['jsx-123', cssRule]]) - - // Dedupe - - registry.add({ - id: '123', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - t.deepEqual(registry.cssRules(), [['jsx-123', cssRule]]) - - registry.add({ - id: '345', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - t.deepEqual(registry.cssRules(), [ - ['jsx-123', cssRule], - ['jsx-345', cssRule] - ]) - - if (options.optimizeForSpeed) { - registry.add({ id: '456', children: [cssRule, cssRuleAlt] }) - - t.deepEqual(registry.cssRules(), [ - ['jsx-123', cssRule], - ['jsx-345', cssRule], - ['jsx-456', 'div { color: red }p { color: red }'] - ]) - } - }) - }) -) - -test( - 'add - filters out invalid rules (index `-1`)', - withMock(withMockDocument, t => { - const registry = makeRegistry() - - // Insert a valid rule - registry.add({ id: '123', children: [cssRule] }) - - // Insert an invalid rule - registry.add({ id: '456', children: [invalidRules[0]] }) - - // Insert another valid rule - registry.add({ id: '678', children: [cssRule] }) - - t.deepEqual(registry.cssRules(), [ - ['jsx-123', 'div { color: red }'], - ['jsx-678', 'div { color: red }'] - ]) - }) -) - -test( - 'it does not throw when inserting an invalid rule', - withMock(withMockDocument, t => { - const registry = makeRegistry() - - // Insert a valid rule - registry.add({ id: '123', children: [cssRule] }) - - t.notThrows(() => { - // Insert an invalid rule - registry.add({ id: '456', children: [invalidRules[0]] }) - }) - - t.deepEqual(registry.cssRules(), [['jsx-123', 'div { color: red }']]) - }) -) - -test('add - sanitizes dynamic CSS on the server', t => { - const registry = makeRegistry({ optimizeForSpeed: false, isBrowser: false }) - - registry.add({ - id: '123', - children: [ - 'div.__jsx-style-dynamic-selector { color: red }' - ], - dynamic: ['red'] - }) - - t.deepEqual(registry.cssRules(), [ - [ - 'jsx-1871671996', - 'div.jsx-1871671996 { color: red<\\/style> }' - ] - ]) -}) - -test('add - nonce is properly fetched from meta tag', t => { - const originalDocument = global.document - // We need to stub a document in order to simulate the meta tag - global.document = { - querySelector(query) { - t.is(query, 'meta[property="csp-nonce"]') - return { - getAttribute(attr) { - t.is(attr, 'content') - return 'test-nonce' - } - } - } - } - - const registry = makeRegistry() - registry.add({ id: '123', children: [cssRule] }) - - t.is(registry._sheet._nonce, 'test-nonce') - - global.document = originalDocument -}) - -// registry.remove - -test( - 'remove', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false }, - { optimizeForSpeed: false, isBrowser: false } - ] - - options.forEach(options => { - const registry = makeRegistry(options) - registry.add({ - id: '123', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - registry.add({ - id: '345', - children: options.optimizeForSpeed ? [cssRuleAlt] : cssRuleAlt - }) - - registry.remove({ id: '123' }) - t.deepEqual(registry.cssRules(), [['jsx-345', cssRuleAlt]]) - - // Add a duplicate - registry.add({ - id: '345', - children: options.optimizeForSpeed ? [cssRuleAlt] : cssRuleAlt - }) - // and remove it - registry.remove({ id: '345' }) - // Still in the registry - t.deepEqual(registry.cssRules(), [['jsx-345', cssRuleAlt]]) - // remove again - registry.remove({ id: '345' }) - // now the registry should be empty - t.deepEqual(registry.cssRules(), []) - }) - }) -) - -// registry.update - -test( - 'update', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false }, - { optimizeForSpeed: false, isBrowser: false } - ] - - options.forEach(options => { - const registry = makeRegistry(options) - registry.add({ - id: '123', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - registry.add({ - id: '123', - children: options.optimizeForSpeed ? [cssRule] : cssRule - }) - - registry.update( - { id: '123' }, - { - id: '345', - children: options.optimizeForSpeed ? [cssRuleAlt] : cssRuleAlt - } - ) - // Doesn't remove when there are multiple instances of 123 - t.deepEqual(registry.cssRules(), [ - ['jsx-123', cssRule], - ['jsx-345', cssRuleAlt] - ]) - - registry.remove({ id: '345' }) - t.deepEqual(registry.cssRules(), [['jsx-123', cssRule]]) - - // Update again - registry.update( - { id: '123' }, - { - id: '345', - children: options.optimizeForSpeed ? [cssRuleAlt] : cssRuleAlt - } - ) - // 123 replaced with 345 - t.deepEqual(registry.cssRules(), [['jsx-345', cssRuleAlt]]) - }) - }) -) - -// createComputeId - -test( - 'createComputeId', - withMock(withMockDocument, t => { - const utilRegistry = makeRegistry() - const computeId = utilRegistry.createComputeId() - - // without props - t.is(computeId('123'), 'jsx-123') - - // with props - t.is(computeId('123', ['test', 3, 'test']), 'jsx-1172888331') - }) -) - -// createComputeSelector - -test( - 'createComputeSelector', - withMock(withMockDocument, t => { - const utilRegistry = makeRegistry() - const computeSelector = utilRegistry - .createComputeSelector() - .bind(utilRegistry) - - t.is( - computeSelector( - 'jsx-123', - '.test {} .__jsx-style-dynamic-selector { color: red } .__jsx-style-dynamic-selector { color: red }' - ), - '.test {} .jsx-123 { color: red } .jsx-123 { color: red }' - ) - }) -) - -// getIdAndRules - -test( - 'getIdAndRules', - withMock(withMockDocument, t => { - const utilRegistry = makeRegistry() - // simple - t.deepEqual( - utilRegistry.getIdAndRules({ - id: '123', - children: '.test {} .jsx-123 { color: red } .jsx-123 { color: red }' - }), - { - styleId: 'jsx-123', - rules: ['.test {} .jsx-123 { color: red } .jsx-123 { color: red }'] - } - ) - - // dynamic - t.deepEqual( - utilRegistry.getIdAndRules({ - id: '123', - children: - '.test {} .__jsx-style-dynamic-selector { color: red } .__jsx-style-dynamic-selector { color: red }', - dynamic: ['test', 3, 'test'] - }), - { - styleId: 'jsx-1172888331', - rules: [ - '.test {} .jsx-1172888331 { color: red } .jsx-1172888331 { color: red }' - ] - } - ) - - // dynamic, css array - t.deepEqual( - utilRegistry.getIdAndRules({ - id: '123', - children: [ - '.test {}', - '.__jsx-style-dynamic-selector { color: red }', - '.__jsx-style-dynamic-selector { color: red }' - ], - dynamic: ['test', 3, 'test'] - }), - { - styleId: 'jsx-1172888331', - rules: [ - '.test {}', - '.jsx-1172888331 { color: red }', - '.jsx-1172888331 { color: red }' - ] - } - ) - }) -) diff --git a/test/babel6/stylesheet.js b/test/babel6/stylesheet.js deleted file mode 100644 index f0d41895..00000000 --- a/test/babel6/stylesheet.js +++ /dev/null @@ -1,244 +0,0 @@ -// Packages -import test from 'ava' - -// Ours -import StyleSheet from '../../src/lib/stylesheet' -import withMock, { withMockDocument } from '../helpers/with-mock' - -export const invalidRules = ['invalid rule'] - -export default function makeSheet( - options = { optimizeForSpeed: true, isBrowser: true } -) { - const sheet = new StyleSheet(options) - // mocks - sheet.makeStyleTag = function(name, cssString) { - const cssRules = cssString ? [{ cssText: cssString }] : [] - const tag = { - sheet: { - cssRules, - insertRule: (rule, index) => { - if (invalidRules.includes(rule)) { - throw new Error('invalid rule') - } - - if (typeof index === 'number') { - cssRules[index] = { cssText: rule } - } else { - cssRules.push({ cssText: rule }) - } - - return index - }, - deleteRule: index => { - if (options.optimizeForSpeed) { - cssRules[index] = { - cssText: `#${name}-deleted-rule____{}` - } - } else { - cssRules[index] = null - } - }, - replaceRule: (index, rule) => { - cssRules[index] = { cssText: rule } - } - }, - parentNode: { - removeChild: () => {} - } - } - - let textContent = cssString - Object.defineProperty(tag, 'textContent', { - get: () => textContent, - set: text => { - textContent = text - cssRules.length = 0 - cssRules.push({ cssText: text }) - } - }) - - return tag - } - - return sheet -} - -// sheet.setOptimizeForSpeed - -test( - 'can change optimizeForSpeed only when the stylesheet is empty', - withMock(withMockDocument, t => { - const sheet = makeSheet() - - sheet.inject() - t.notThrows(() => { - sheet.setOptimizeForSpeed(true) - }) - - sheet.insertRule('div { color: red }') - t.throws(() => { - sheet.setOptimizeForSpeed(false) - }) - - sheet.flush() - t.notThrows(() => { - sheet.setOptimizeForSpeed(false) - }) - }) -) - -// sheet.insertRule - -test( - 'insertRule', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false } - ] - - options.forEach(options => { - const sheet = makeSheet(options) - sheet.inject() - - sheet.insertRule('div { color: red }') - t.deepEqual(sheet.cssRules(), [{ cssText: 'div { color: red }' }]) - - sheet.insertRule('div { color: green }') - t.deepEqual(sheet.cssRules(), [ - { cssText: 'div { color: red }' }, - { cssText: 'div { color: green }' } - ]) - }) - }) -) - -test( - 'insertRule - returns the rule index', - withMock(withMockDocument, t => { - const sheet = makeSheet() - sheet.inject() - - let i = sheet.insertRule('div { color: red }') - t.is(i, 0) - - i = sheet.insertRule('div { color: red }') - t.is(i, 1) - }) -) - -test( - 'insertRule - handles invalid rules and returns -1 as index', - withMock(withMockDocument, t => { - const sheet = makeSheet() - sheet.inject() - - const i = sheet.insertRule(invalidRules[0]) - t.is(i, -1) - }) -) - -test( - 'insertRule - does not fail when the css is a String object', - withMock(withMockDocument, t => { - const sheet = makeSheet() - sheet.inject() - - /* eslint-disable unicorn/new-for-builtins,no-new-wrappers */ - - sheet.insertRule(new String('div { color: red }')) - t.deepEqual(sheet.cssRules(), [ - { cssText: new String('div { color: red }') } - ]) - /* eslint-enable */ - }) -) - -// sheet.deleteRule - -test( - 'deleteRule', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false }, - { optimizeForSpeed: false, isBrowser: false } - ] - - options.forEach(options => { - const sheet = makeSheet(options) - sheet.inject() - - sheet.insertRule('div { color: red }') - sheet.insertRule('div { color: green }') - const rulesCount = sheet.length - - sheet.deleteRule(1) - // When deleting we replace rules with placeholders to keep the indices stable. - t.is(sheet.length, rulesCount) - - t.deepEqual(sheet.cssRules(), [{ cssText: 'div { color: red }' }, null]) - }) - }) -) - -test( - 'deleteRule - does not throw when the rule at index does not exist', - withMock(withMockDocument, t => { - const sheet = makeSheet() - sheet.inject() - - t.notThrows(() => { - sheet.deleteRule(sheet.length + 1) - }) - }) -) - -// sheet.replaceRule - -test( - 'replaceRule', - withMock(withMockDocument, t => { - const options = [ - { optimizeForSpeed: true, isBrowser: true }, - { optimizeForSpeed: false, isBrowser: true }, - { optimizeForSpeed: true, isBrowser: false }, - { optimizeForSpeed: false, isBrowser: false } - ] - - options.forEach(options => { - const sheet = makeSheet(options) - sheet.inject() - - const index = sheet.insertRule('div { color: red }') - sheet.replaceRule(index, 'p { color: hotpink }') - - t.deepEqual(sheet.cssRules(), [{ cssText: 'p { color: hotpink }' }]) - }) - }) -) - -test( - 'replaceRule - handles invalid rules gracefully', - withMock(withMockDocument, t => { - const sheet = makeSheet() - sheet.inject() - - // Insert two rules - sheet.insertRule('div { color: red }') - const index = sheet.insertRule('div { color: red }') - - // Replace the latter with an invalid rule - const i = sheet.replaceRule(index, invalidRules[0]) - t.is(i, index) - t.is(sheet.length, 2) - - // Even though replacement (insertion) failed deletion succeeded - // therefore the lib must insert a delete placeholder which resolves to `null` - // when `cssRules()` is called. - t.deepEqual(sheet.cssRules(), [{ cssText: 'div { color: red }' }, null]) - }) -) diff --git a/test/macro.js b/test/macro.js index 56d6ffef..93848fc4 100644 --- a/test/macro.js +++ b/test/macro.js @@ -3,7 +3,7 @@ import test from 'ava' // Ours import macros from 'babel-plugin-macros' -import jsx from 'babel-plugin-syntax-jsx' +import jsx from '@babel/plugin-syntax-jsx' import _transform, { transformSource as _transformSource } from './_transform' const transform = (file, opts = {}) => diff --git a/yarn.lock b/yarn.lock index 7dec632e..42f7d8ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -289,7 +289,14 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-module-imports@7.12.5", "@babel/helper-module-imports@^7.12.1": +"@babel/helper-module-imports@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-imports@^7.12.1": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== @@ -347,6 +354,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + "@babel/helper-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -432,6 +444,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + "@babel/helper-validator-option@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" @@ -677,6 +694,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-jsx@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" @@ -1252,13 +1276,12 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@7.8.3", "@babel/types@^7.7.0", "@babel/types@^7.7.2": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@7.15.0", "@babel/types@^7.14.5": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== dependencies: - esutils "^2.0.2" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.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.4.4": @@ -1270,6 +1293,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.7.0", "@babel/types@^7.7.2": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@concordance/react@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde" @@ -1671,11 +1703,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1985,69 +2012,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6.26.3, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2084,73 +2048,6 @@ babel-plugin-macros@2.8.0: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-syntax-jsx@6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -2428,17 +2325,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2876,7 +2762,7 @@ conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7: through2 "^4.0.0" trim-off-newlines "^1.0.0" -convert-source-map@1.7.0, convert-source-map@^1.1.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@1.7.0, convert-source-map@^1.1.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2921,7 +2807,7 @@ core-js-compat@^3.6.2: browserslist "^4.14.6" semver "7.0.0" -core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.0.0: version "2.6.10" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== @@ -3180,13 +3066,6 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - detect-indent@^5.0.0, detect-indent@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -3480,7 +3359,7 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -4318,11 +4197,6 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@^11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" @@ -4429,13 +4303,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -4516,14 +4383,6 @@ hasha@^3.0.0: dependencies: is-stream "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hook-std@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" @@ -4797,13 +4656,6 @@ into-stream@^5.0.0: from2 "^2.3.0" p-is-promise "^3.0.0" -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -4964,13 +4816,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -5259,11 +5104,6 @@ js-string-escape@^1.0.1: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-types@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/js-types/-/js-types-1.0.0.tgz#d242e6494ed572ad3c92809fc8bed7f7687cbf03" @@ -5282,11 +5122,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -5327,11 +5162,6 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -5815,7 +5645,7 @@ log-symbols@^2.0.0, log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -loose-envify@^1.0.0, loose-envify@^1.1.0: +loose-envify@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7095,7 +6925,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -7284,11 +7114,6 @@ pretty-quick@3.1.0: mri "^1.1.5" multimatch "^4.0.0" -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -7660,11 +7485,6 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -7794,13 +7614,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -8265,13 +8078,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.10, source-map-support@^0.5.16: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" @@ -8290,7 +8096,7 @@ source-map@0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -8622,11 +8428,6 @@ supertap@^1.0.0: serialize-error "^2.1.0" strip-ansi "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.0.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -8790,11 +8591,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"