feat(react): adds default babel-loader support for react apps (#1631)
This commit is contained in:
parent
8182454dc8
commit
776a185d65
@ -11,6 +11,14 @@ ng generate application ...
|
||||
|
||||
## Options
|
||||
|
||||
### babel
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Use Babel and TypeScript preset instead of ts-loader (Useful if you need Babel plugins)
|
||||
|
||||
### classComponent
|
||||
|
||||
Default: `false`
|
||||
@ -53,7 +61,7 @@ Default: `false`
|
||||
|
||||
Type: `boolean`
|
||||
|
||||
Use pascal case component file name (e.g. App.tsx)®
|
||||
Use pascal case component file name (e.g. App.tsx)
|
||||
|
||||
### routing
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ forEachCli(() => {
|
||||
const appName = uniq('app');
|
||||
const libName = uniq('lib');
|
||||
|
||||
runCLI(`generate @nrwl/react:app ${appName} --no-interactive`);
|
||||
runCLI(`generate @nrwl/react:app ${appName} --no-interactive --babel`);
|
||||
runCLI(`generate @nrwl/react:lib ${libName} --no-interactive`);
|
||||
|
||||
const mainPath = `apps/${appName}/src/main.tsx`;
|
||||
@ -30,16 +30,18 @@ forEachCli(() => {
|
||||
const libTestResults = await runCLIAsync(`test ${libName}`);
|
||||
expect(libTestResults.stderr).toContain('Test Suites: 1 passed, 1 total');
|
||||
|
||||
await testGeneratedApp(appName);
|
||||
await testGeneratedApp(appName, { checkStyles: true });
|
||||
}, 120000);
|
||||
|
||||
it('should generate app with routing', async () => {
|
||||
ensureProject();
|
||||
const appName = uniq('app');
|
||||
|
||||
runCLI(`generate @nrwl/react:app ${appName} --routing --no-interactive`);
|
||||
runCLI(
|
||||
`generate @nrwl/react:app ${appName} --routing --no-interactive --babel`
|
||||
);
|
||||
|
||||
await testGeneratedApp(appName);
|
||||
await testGeneratedApp(appName, { checkStyles: true });
|
||||
}, 120000);
|
||||
|
||||
it('should generate app with styled-components', async () => {
|
||||
@ -47,10 +49,10 @@ forEachCli(() => {
|
||||
const appName = uniq('app');
|
||||
|
||||
runCLI(
|
||||
`generate @nrwl/react:app ${appName} --style styled-components --no-interactive`
|
||||
`generate @nrwl/react:app ${appName} --style styled-components --no-interactive --babel`
|
||||
);
|
||||
|
||||
await testGeneratedApp(appName, false);
|
||||
await testGeneratedApp(appName, { checkStyles: false });
|
||||
}, 120000);
|
||||
|
||||
it('should be able to use JSX', async () => {
|
||||
@ -58,7 +60,7 @@ forEachCli(() => {
|
||||
const appName = uniq('app');
|
||||
const libName = uniq('lib');
|
||||
|
||||
runCLI(`generate @nrwl/react:app ${appName} --no-interactive`);
|
||||
runCLI(`generate @nrwl/react:app ${appName} --no-interactive --babel`);
|
||||
runCLI(`generate @nrwl/react:lib ${libName} --no-interactive`);
|
||||
|
||||
renameFile(
|
||||
@ -90,49 +92,36 @@ forEachCli(() => {
|
||||
const mainPath = `apps/${appName}/src/main.jsx`;
|
||||
updateFile(mainPath, `import '@proj/${libName}';\n` + readFile(mainPath));
|
||||
|
||||
await testGeneratedApp(appName);
|
||||
await testGeneratedApp(appName, { checkStyles: true });
|
||||
}, 30000);
|
||||
|
||||
async function testGeneratedApp(appName, styles = true) {
|
||||
async function testGeneratedApp(appName, opts: { checkStyles: boolean }) {
|
||||
const lintResults = runCLI(`lint ${appName}`);
|
||||
expect(lintResults).toContain('All files pass linting.');
|
||||
|
||||
runCLI(`build ${appName}`);
|
||||
let filesToCheck = [
|
||||
`dist/apps/${appName}/index.html`,
|
||||
`dist/apps/${appName}/polyfills-es2015.js`,
|
||||
`dist/apps/${appName}/runtime-es2015.js`,
|
||||
`dist/apps/${appName}/vendor-es2015.js`,
|
||||
`dist/apps/${appName}/main-es2015.js`,
|
||||
`dist/apps/${appName}/polyfills-es5.js`,
|
||||
`dist/apps/${appName}/runtime-es5.js`,
|
||||
`dist/apps/${appName}/vendor-es5.js`,
|
||||
`dist/apps/${appName}/main-es5.js`
|
||||
`dist/apps/${appName}/polyfills.js`,
|
||||
`dist/apps/${appName}/runtime.js`,
|
||||
`dist/apps/${appName}/vendor.js`,
|
||||
`dist/apps/${appName}/main.js`
|
||||
];
|
||||
if (styles) {
|
||||
filesToCheck.push(
|
||||
`dist/apps/${appName}/styles-es2015.js`,
|
||||
`dist/apps/${appName}/styles-es5.js`
|
||||
);
|
||||
if (opts.checkStyles) {
|
||||
filesToCheck.push(`dist/apps/${appName}/styles.js`);
|
||||
}
|
||||
checkFilesExist(...filesToCheck);
|
||||
expect(readFile(`dist/apps/${appName}/main-es5.js`)).toContain(
|
||||
'var App = function () {'
|
||||
);
|
||||
expect(readFile(`dist/apps/${appName}/main-es2015.js`)).toContain(
|
||||
'const App = () => {'
|
||||
expect(readFile(`dist/apps/${appName}/main.js`)).toContain(
|
||||
'var App = function App() {'
|
||||
);
|
||||
runCLI(`build ${appName} --prod --output-hashing none`);
|
||||
filesToCheck = [
|
||||
`dist/apps/${appName}/index.html`,
|
||||
`dist/apps/${appName}/polyfills-es2015.js`,
|
||||
`dist/apps/${appName}/runtime-es2015.js`,
|
||||
`dist/apps/${appName}/main-es2015.js`,
|
||||
`dist/apps/${appName}/polyfills-es5.js`,
|
||||
`dist/apps/${appName}/runtime-es5.js`,
|
||||
`dist/apps/${appName}/main-es5.js`
|
||||
`dist/apps/${appName}/polyfills.js`,
|
||||
`dist/apps/${appName}/runtime.js`,
|
||||
`dist/apps/${appName}/main.js`
|
||||
];
|
||||
if (styles) {
|
||||
if (opts.checkStyles) {
|
||||
filesToCheck.push(`dist/apps/${appName}/styles.css`);
|
||||
}
|
||||
checkFilesExist(...filesToCheck);
|
||||
|
||||
@ -182,6 +182,15 @@ export function copyMissingPackages(): void {
|
||||
'@types/react-dom',
|
||||
'@testing-library',
|
||||
|
||||
// For testing webpack config with babel-loader
|
||||
'@babel/core',
|
||||
'@babel/preset-env',
|
||||
'@babel/preset-react',
|
||||
'@babel/preset-typescript',
|
||||
'@babel/plugin-proposal-decorators',
|
||||
'babel-loader',
|
||||
'babel-plugin-macros',
|
||||
|
||||
'document-register-element'
|
||||
];
|
||||
modulesToCopy.forEach(m => copyNodeModule(m));
|
||||
|
||||
@ -37,6 +37,11 @@
|
||||
"@angular/platform-browser-dynamic": "^8.0.0",
|
||||
"@angular/router": "^8.0.0",
|
||||
"@angular/upgrade": "^8.0.0",
|
||||
"@babel/core": "7.5.5",
|
||||
"@babel/plugin-proposal-decorators": "7.4.4",
|
||||
"@babel/preset-env": "7.5.5",
|
||||
"@babel/preset-react": "7.0.0",
|
||||
"@babel/preset-typescript": "7.3.3",
|
||||
"@cypress/webpack-preprocessor": "^4.1.0",
|
||||
"@nestjs/common": "^6.2.4",
|
||||
"@nestjs/core": "^6.2.4",
|
||||
@ -63,6 +68,8 @@
|
||||
"@types/yargs": "^11.0.0",
|
||||
"angular": "1.6.6",
|
||||
"app-root-path": "^2.0.1",
|
||||
"babel-loader": "8.0.6",
|
||||
"babel-plugin-macros": "2.6.1",
|
||||
"circular-dependency-plugin": "^5.0.2",
|
||||
"codelyzer": "~5.0.1",
|
||||
"commitizen": "^2.10.1",
|
||||
|
||||
1
packages/react/plugins/babel.ts
Normal file
1
packages/react/plugins/babel.ts
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('../src/plugins/babel').getBabelWebpackConfig;
|
||||
@ -90,7 +90,7 @@ describe('Update 8-0-0', () => {
|
||||
devDependencies: {
|
||||
'@testing-library/react': '8.0.5',
|
||||
'@types/react': '16.8.23',
|
||||
'@types/react-dom': '16.8.23',
|
||||
'@types/react-dom': '16.8.5',
|
||||
'@types/styled-components': '4.1.18'
|
||||
}
|
||||
})
|
||||
|
||||
@ -64,7 +64,7 @@ function updateDependencies(tree: Tree) {
|
||||
'react-dom': '16.8.6',
|
||||
'react-router-dom': '5.0.1',
|
||||
'@types/react': '16.8.23',
|
||||
'@types/react-dom': '16.8.23',
|
||||
'@types/react-dom': '16.8.5',
|
||||
'styled-components': '4.3.2',
|
||||
'@types/styled-components': '4.1.18',
|
||||
'@emotion/styled': '10.0.14'
|
||||
|
||||
38
packages/react/src/plugins/babel.ts
Normal file
38
packages/react/src/plugins/babel.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { Configuration } from 'webpack';
|
||||
|
||||
export function getBabelWebpackConfig(config: Configuration) {
|
||||
const idx = config.module.rules.findIndex(r => r.loader === 'ts-loader');
|
||||
|
||||
config.module.rules.splice(idx, 1, {
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: [
|
||||
[
|
||||
require('@babel/preset-env').default,
|
||||
{
|
||||
modules: false,
|
||||
// Exclude transforms that make all code slower
|
||||
exclude: ['transform-typeof-symbol']
|
||||
}
|
||||
],
|
||||
[
|
||||
require('@babel/preset-react').default,
|
||||
{
|
||||
useBuiltIns: true
|
||||
}
|
||||
],
|
||||
[require('@babel/preset-typescript').default]
|
||||
],
|
||||
plugins: [
|
||||
require('babel-plugin-macros'),
|
||||
[require('@babel/plugin-proposal-decorators').default, false]
|
||||
]
|
||||
}
|
||||
},
|
||||
test: /\.tsx?|jsx?$/,
|
||||
exclude: /node_modules/
|
||||
});
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -229,6 +229,7 @@ describe('app', () => {
|
||||
const architectConfig = workspaceJson.projects['my-app'].architect;
|
||||
expect(architectConfig.build.builder).toEqual('@nrwl/web:build');
|
||||
expect(architectConfig.build.options).toEqual({
|
||||
differentialLoading: true,
|
||||
assets: ['apps/my-app/src/favicon.ico', 'apps/my-app/src/assets'],
|
||||
index: 'apps/my-app/src/index.html',
|
||||
main: 'apps/my-app/src/main.tsx',
|
||||
@ -466,4 +467,20 @@ describe('app', () => {
|
||||
expect(componentSource).toMatch(/<Link\s*to="\/"/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('--babel true', () => {
|
||||
it('should adds custom webpack config', async () => {
|
||||
const tree = await runSchematic(
|
||||
'app',
|
||||
{ name: 'myApp', babel: true },
|
||||
appTree
|
||||
);
|
||||
|
||||
const workspaceJson = readJsonInTree(tree, '/workspace.json');
|
||||
|
||||
expect(
|
||||
workspaceJson.projects['my-app'].architect.build.options.webpackConfig
|
||||
).toEqual('@nrwl/react/plugins/babel');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -33,7 +33,16 @@ import * as ts from 'typescript';
|
||||
import { Schema } from './schema';
|
||||
import { CSS_IN_JS_DEPENDENCIES } from '../../utils/styled';
|
||||
import { addRouter } from '../../utils/ast-utils';
|
||||
import { reactRouterVersion } from '../../utils/versions';
|
||||
import {
|
||||
babelCoreVersion,
|
||||
babelLoaderVersion,
|
||||
babelPluginDecoratorsVersion,
|
||||
babelPluginMacrosVersion,
|
||||
babelPresetEnvVersion,
|
||||
babelPresetReactVersion,
|
||||
babelPresetTypeScriptVersion,
|
||||
reactRouterVersion
|
||||
} from '../../utils/versions';
|
||||
|
||||
interface NormalizedSchema extends Schema {
|
||||
projectName: string;
|
||||
@ -75,6 +84,7 @@ export default function(schema: Schema): Rule {
|
||||
: noop(),
|
||||
addStyledModuleDependencies(options),
|
||||
addRouting(options),
|
||||
addBabel(options),
|
||||
formatFiles(options)
|
||||
]);
|
||||
};
|
||||
@ -114,6 +124,7 @@ function addProject(options: NormalizedSchema): Rule {
|
||||
architect.build = {
|
||||
builder: '@nrwl/web:build',
|
||||
options: {
|
||||
differentialLoading: !options.babel, // Using babel-loader will not work with differential loading for now
|
||||
outputPath: join(normalize('dist'), options.appProjectRoot),
|
||||
index: join(options.appProjectRoot, 'src/index.html'),
|
||||
main: join(options.appProjectRoot, `src/main.tsx`),
|
||||
@ -126,7 +137,8 @@ function addProject(options: NormalizedSchema): Rule {
|
||||
styles: options.styledModule
|
||||
? []
|
||||
: [join(options.appProjectRoot, `src/styles.${options.style}`)],
|
||||
scripts: []
|
||||
scripts: [],
|
||||
webpackConfig: options.babel ? '@nrwl/react/plugins/babel' : undefined
|
||||
},
|
||||
configurations: {
|
||||
production: {
|
||||
@ -226,6 +238,23 @@ function addRouting(options: NormalizedSchema): Rule {
|
||||
: noop();
|
||||
}
|
||||
|
||||
function addBabel(options: NormalizedSchema): Rule {
|
||||
return options.babel
|
||||
? addDepsToPackageJson(
|
||||
{},
|
||||
{
|
||||
'@babel/core': babelCoreVersion,
|
||||
'@babel/preset-env': babelPresetEnvVersion,
|
||||
'@babel/preset-react': babelPresetReactVersion,
|
||||
'@babel/preset-typescript': babelPresetTypeScriptVersion,
|
||||
'@babel/plugin-proposal-decorators': babelPluginDecoratorsVersion,
|
||||
'babel-loader': babelLoaderVersion,
|
||||
'babel-plugin-macros': babelPluginMacrosVersion
|
||||
}
|
||||
)
|
||||
: noop();
|
||||
}
|
||||
|
||||
function normalizeOptions(host: Tree, options: Schema): NormalizedSchema {
|
||||
const appDirectory = options.directory
|
||||
? `${toFileName(options.directory)}/${toFileName(options.name)}`
|
||||
|
||||
@ -10,4 +10,5 @@ export interface Schema {
|
||||
pascalCaseFiles?: boolean;
|
||||
classComponent?: boolean;
|
||||
routing?: boolean;
|
||||
babel?: boolean;
|
||||
}
|
||||
|
||||
@ -84,13 +84,18 @@
|
||||
},
|
||||
"pascalCaseFiles": {
|
||||
"type": "boolean",
|
||||
"description": "Use pascal case component file name (e.g. App.tsx)®",
|
||||
"description": "Use pascal case component file name (e.g. App.tsx)",
|
||||
"default": false
|
||||
},
|
||||
"classComponent": {
|
||||
"type": "boolean",
|
||||
"description": "Use class components instead of functional component",
|
||||
"default": false
|
||||
},
|
||||
"babel": {
|
||||
"type": "boolean",
|
||||
"description": "Use Babel and TypeScript preset instead of ts-loader (Useful if you need Babel plugins)",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"required": []
|
||||
|
||||
@ -29,6 +29,9 @@ describe('ng-add', () => {
|
||||
const result = await runSchematic('ng-add', {}, tree);
|
||||
const workspaceJson = readJsonInTree(result, 'workspace.json');
|
||||
expect(workspaceJson.cli.defaultCollection).toEqual('@nrwl/react');
|
||||
expect(workspaceJson.schematics['@nrwl/react:application'].babel).toBe(
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
it('should be set if @nrwl/workspace was set before', async () => {
|
||||
@ -45,6 +48,9 @@ describe('ng-add', () => {
|
||||
const result = await runSchematic('ng-add', {}, tree);
|
||||
const workspaceJson = readJsonInTree(result, 'workspace.json');
|
||||
expect(workspaceJson.cli.defaultCollection).toEqual('@nrwl/react');
|
||||
expect(workspaceJson.schematics['@nrwl/react:application'].babel).toBe(
|
||||
true
|
||||
);
|
||||
});
|
||||
|
||||
it('should not be set if something else was set before', async () => {
|
||||
@ -54,6 +60,8 @@ describe('ng-add', () => {
|
||||
defaultCollection: '@nrwl/angular'
|
||||
};
|
||||
|
||||
json.schematics = {};
|
||||
|
||||
return json;
|
||||
}),
|
||||
tree
|
||||
@ -61,6 +69,9 @@ describe('ng-add', () => {
|
||||
const result = await runSchematic('ng-add', {}, tree);
|
||||
const workspaceJson = readJsonInTree(result, 'workspace.json');
|
||||
expect(workspaceJson.cli.defaultCollection).toEqual('@nrwl/angular');
|
||||
expect(
|
||||
workspaceJson.schematics['@nrwl/react:application']
|
||||
).not.toBeDefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -50,6 +50,16 @@ function setDefault(): Rule {
|
||||
if (!defaultCollection || defaultCollection === '@nrwl/workspace') {
|
||||
(workspace.extensions.cli as JsonObject).defaultCollection =
|
||||
'@nrwl/react';
|
||||
|
||||
// Also generate apps with babel option by default.
|
||||
workspace.extensions.schematics = {
|
||||
...(workspace.extensions.schematics
|
||||
? (workspace.extensions.schematics as JsonObject)
|
||||
: {}),
|
||||
'@nrwl/react:application': {
|
||||
babel: true
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -7,3 +7,10 @@ export const emotionVersion = '10.0.14';
|
||||
export const domTypesVersion = '16.8.5';
|
||||
export const reactRouterVersion = '5.0.1';
|
||||
export const testingLibraryVersion = '8.0.5';
|
||||
export const babelCoreVersion = '7.5.5';
|
||||
export const babelPresetEnvVersion = '7.5.5';
|
||||
export const babelPresetReactVersion = '7.0.0';
|
||||
export const babelPresetTypeScriptVersion = '7.3.3';
|
||||
export const babelPluginDecoratorsVersion = '7.4.4';
|
||||
export const babelLoaderVersion = '8.0.6';
|
||||
export const babelPluginMacrosVersion = '2.6.1';
|
||||
|
||||
@ -122,7 +122,7 @@ describe('WebBuildBuilder', () => {
|
||||
{
|
||||
...testOptions,
|
||||
differentialLoading: false,
|
||||
webpackConfig: 'apps/webapp/webpack.config.js'
|
||||
webpackConfig: './apps/webapp/webpack.config.js'
|
||||
},
|
||||
context
|
||||
).toPromise();
|
||||
|
||||
@ -25,7 +25,8 @@ describe('normalizeBuildOptions', () => {
|
||||
}
|
||||
],
|
||||
assets: [],
|
||||
statsJson: false
|
||||
statsJson: false,
|
||||
webpackConfig: './apps/nodeapp/webpack.config'
|
||||
};
|
||||
root = '/root';
|
||||
sourceRoot = normalize('apps/nodeapp/src');
|
||||
@ -95,4 +96,19 @@ describe('normalizeBuildOptions', () => {
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
it('should only resolve relative webpack config path', () => {
|
||||
let result = normalizeBuildOptions(testOptions, root, sourceRoot);
|
||||
expect(result.webpackConfig).toEqual('/root/apps/nodeapp/webpack.config');
|
||||
|
||||
result = normalizeBuildOptions(
|
||||
{
|
||||
...testOptions,
|
||||
webpackConfig: '@nrwl/react/plugins/babel'
|
||||
},
|
||||
root,
|
||||
sourceRoot
|
||||
);
|
||||
expect(result.webpackConfig).toEqual('@nrwl/react/plugins/babel');
|
||||
});
|
||||
});
|
||||
|
||||
@ -23,7 +23,10 @@ export function normalizeBuildOptions<T extends BuildBuilderOptions>(
|
||||
fileReplacements: normalizeFileReplacements(root, options.fileReplacements),
|
||||
assets: normalizeAssets(options.assets, root, sourceRoot),
|
||||
webpackConfig: options.webpackConfig
|
||||
? resolve(root, options.webpackConfig)
|
||||
? // Don't resolve node_modules or absolute paths.
|
||||
options.webpackConfig.startsWith('.')
|
||||
? resolve(root, options.webpackConfig)
|
||||
: options.webpackConfig
|
||||
: options.webpackConfig
|
||||
};
|
||||
}
|
||||
|
||||
@ -50,7 +50,8 @@ function createPreset(options: Schema): Rule {
|
||||
'application',
|
||||
{
|
||||
name: options.name,
|
||||
style: options.style
|
||||
style: options.style,
|
||||
babel: true
|
||||
},
|
||||
{ interactive: false }
|
||||
),
|
||||
|
||||
149
yarn.lock
149
yarn.lock
@ -226,6 +226,26 @@
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.0.0"
|
||||
|
||||
"@babel/core@7.5.5":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30"
|
||||
integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.5.5"
|
||||
"@babel/generator" "^7.5.5"
|
||||
"@babel/helpers" "^7.5.5"
|
||||
"@babel/parser" "^7.5.5"
|
||||
"@babel/template" "^7.4.4"
|
||||
"@babel/traverse" "^7.5.5"
|
||||
"@babel/types" "^7.5.5"
|
||||
convert-source-map "^1.1.0"
|
||||
debug "^4.1.0"
|
||||
json5 "^2.1.0"
|
||||
lodash "^4.17.13"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.0.1":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
|
||||
@ -292,6 +312,14 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.1.0"
|
||||
"@babel/types" "^7.0.0"
|
||||
|
||||
"@babel/helper-builder-react-jsx@^7.3.0":
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4"
|
||||
integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
esutils "^2.0.0"
|
||||
|
||||
"@babel/helper-call-delegate@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
|
||||
@ -301,6 +329,18 @@
|
||||
"@babel/traverse" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4"
|
||||
integrity sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg==
|
||||
dependencies:
|
||||
"@babel/helper-function-name" "^7.1.0"
|
||||
"@babel/helper-member-expression-to-functions" "^7.5.5"
|
||||
"@babel/helper-optimise-call-expression" "^7.0.0"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/helper-replace-supers" "^7.5.5"
|
||||
"@babel/helper-split-export-declaration" "^7.4.4"
|
||||
|
||||
"@babel/helper-define-map@^7.5.5":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369"
|
||||
@ -464,6 +504,15 @@
|
||||
"@babel/helper-remap-async-to-generator" "^7.1.0"
|
||||
"@babel/plugin-syntax-async-generators" "^7.2.0"
|
||||
|
||||
"@babel/plugin-proposal-decorators@7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0"
|
||||
integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin" "^7.4.4"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-decorators" "^7.2.0"
|
||||
|
||||
"@babel/plugin-proposal-dynamic-import@^7.5.0":
|
||||
version "7.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506"
|
||||
@ -512,6 +561,13 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-decorators@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b"
|
||||
integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-dynamic-import@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612"
|
||||
@ -526,6 +582,13 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7"
|
||||
integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
|
||||
@ -540,6 +603,13 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-typescript@^7.2.0":
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991"
|
||||
integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-transform-arrow-functions@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
|
||||
@ -726,6 +796,38 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-transform-react-display-name@^7.0.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0"
|
||||
integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-self@^7.0.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba"
|
||||
integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-jsx" "^7.2.0"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-source@^7.0.0":
|
||||
version "7.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b"
|
||||
integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-jsx" "^7.2.0"
|
||||
|
||||
"@babel/plugin-transform-react-jsx@^7.0.0":
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290"
|
||||
integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==
|
||||
dependencies:
|
||||
"@babel/helper-builder-react-jsx" "^7.3.0"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-jsx" "^7.2.0"
|
||||
|
||||
"@babel/plugin-transform-regenerator@^7.4.5":
|
||||
version "7.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f"
|
||||
@ -777,6 +879,15 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-transform-typescript@^7.3.2":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.5.tgz#6d862766f09b2da1cb1f7d505fe2aedab6b7d4b8"
|
||||
integrity sha512-pehKf4m640myZu5B2ZviLaiBlxMCjSZ1qTEO459AXKX5GnPueyulJeCqZFs1nz/Ya2dDzXQ1NxZ/kKNWyD4h6w==
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin" "^7.5.5"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-typescript" "^7.2.0"
|
||||
|
||||
"@babel/plugin-transform-unicode-regex@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
|
||||
@ -786,7 +897,7 @@
|
||||
"@babel/helper-regex" "^7.4.4"
|
||||
regexpu-core "^4.5.4"
|
||||
|
||||
"@babel/preset-env@^7.0.0":
|
||||
"@babel/preset-env@7.5.5", "@babel/preset-env@^7.0.0":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.5.tgz#bc470b53acaa48df4b8db24a570d6da1fef53c9a"
|
||||
integrity sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==
|
||||
@ -842,7 +953,26 @@
|
||||
js-levenshtein "^1.1.3"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4":
|
||||
"@babel/preset-react@7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0"
|
||||
integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-transform-react-display-name" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx-self" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.0.0"
|
||||
|
||||
"@babel/preset-typescript@7.3.3":
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a"
|
||||
integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-transform-typescript" "^7.3.2"
|
||||
|
||||
"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132"
|
||||
integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==
|
||||
@ -2468,7 +2598,7 @@ babel-jest@^24.8.0:
|
||||
chalk "^2.4.2"
|
||||
slash "^2.0.0"
|
||||
|
||||
babel-loader@^8.0.2:
|
||||
babel-loader@8.0.6, babel-loader@^8.0.2:
|
||||
version "8.0.6"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
|
||||
integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
|
||||
@ -2516,6 +2646,15 @@ babel-plugin-jest-hoist@^24.6.0:
|
||||
dependencies:
|
||||
"@types/babel__traverse" "^7.0.6"
|
||||
|
||||
babel-plugin-macros@2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181"
|
||||
integrity sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.2"
|
||||
cosmiconfig "^5.2.0"
|
||||
resolve "^1.10.0"
|
||||
|
||||
"babel-plugin-styled-components@>= 1":
|
||||
version "1.10.6"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.6.tgz#f8782953751115faf09a9f92431436912c34006b"
|
||||
@ -4404,7 +4543,7 @@ cosmiconfig@^4.0.0:
|
||||
parse-json "^4.0.0"
|
||||
require-from-string "^2.0.1"
|
||||
|
||||
cosmiconfig@^5.0.0, cosmiconfig@^5.2.1:
|
||||
cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
|
||||
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
|
||||
@ -5460,7 +5599,7 @@ estree-walker@^0.6.1:
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
|
||||
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
|
||||
|
||||
esutils@^2.0.2:
|
||||
esutils@^2.0.0, esutils@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||
integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user