├── .npmignore ├── .eslintignore ├── packages ├── nexus-scripts │ ├── lib │ │ ├── scripts │ │ │ ├── eject │ │ │ │ ├── eject.js │ │ │ │ └── index.js │ │ │ ├── build │ │ │ │ ├── index.js │ │ │ │ └── build.js │ │ │ └── start │ │ │ │ ├── index.js │ │ │ │ └── start.js │ │ ├── config │ │ │ └── polyfills.js │ │ ├── index.js │ │ ├── utils │ │ │ └── clearConsole.js │ │ ├── strings.js │ │ ├── webpack │ │ │ ├── configurations │ │ │ │ ├── custom-babel-loader.js │ │ │ │ ├── webpack.dev.js │ │ │ │ ├── webpack.prod.js │ │ │ │ └── webpack.base.js │ │ │ └── server.js │ │ └── nexus-scripts.js │ ├── bin │ │ └── nexus-scripts.js │ ├── __tests__ │ │ └── nexus-scripts.test.js │ ├── README.md │ ├── CHANGELOG.md │ └── package.json ├── nexus.js │ ├── index.js │ ├── CHANGELOG.md │ └── package.json ├── webpack-nexus │ ├── bin │ │ └── webpack-nexus.js │ ├── lib │ │ ├── templateFiles │ │ │ ├── tailwind.css │ │ │ ├── getEslintTemplate.js │ │ │ ├── react │ │ │ │ ├── default.js │ │ │ │ └── apollo.js │ │ │ ├── getMainJsTemplate.js │ │ │ ├── getPackageJsonTemplate.js │ │ │ ├── getHtmlTemplate.js │ │ │ ├── getTsConfigTemplate.js │ │ │ ├── getVsCodeConfig.js │ │ │ └── getGitIgnoreTemplate.js │ │ ├── utils │ │ │ ├── stringifyNpmPackages.js │ │ │ ├── createFolder.js │ │ │ └── installNpmPackages.js │ │ └── webpack-nexus.js │ ├── __tests__ │ │ └── webpack-nexus.test.js │ ├── CHANGELOG.md │ ├── package.json │ ├── README.md │ └── package-lock.json ├── babel-preset-webpack-nexus │ ├── README.md │ ├── __tests__ │ │ └── babel-preset-webpack-nexus.test.js │ ├── CHANGELOG.md │ ├── package.json │ ├── lib │ │ └── babel-preset-webpack-nexus.js │ └── package-lock.json └── eslint-config-webpack-nexus │ ├── README.md │ ├── __tests__ │ └── eslint-config-webpack-nexus.test.js │ ├── package-lock.json │ ├── CHANGELOG.md │ ├── package.json │ └── lib │ └── eslint-config-webpack-nexus.js ├── pnpm-workspace.yaml ├── .prettierignore ├── lerna.json ├── .eslintrc.js ├── examples ├── public │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── android-chrome-192x192.png │ └── android-chrome-512x512.png ├── src │ ├── index.js │ └── index.html ├── package.json └── yarn.lock ├── .prettierrc ├── .changeset ├── config.json └── README.md ├── .vscode └── settings.json ├── .github └── workflows │ ├── pre-release.yml │ └── release.yml ├── LICENSE ├── .gitignore ├── package.json └── README.md /.npmignore: -------------------------------------------------------------------------------- 1 | .npmrc -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | dist/ -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/eject/eject.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/nexus.js/index.js: -------------------------------------------------------------------------------- 1 | console.log('hi'); 2 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages 2 | - 'packages/**' -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | node_modules 3 | dist 4 | coverage -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": [ 3 | "packages/*" 4 | ], 5 | "version": "independent" 6 | } 7 | -------------------------------------------------------------------------------- /packages/nexus-scripts/bin/nexus-scripts.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('../lib/index.js'); 4 | -------------------------------------------------------------------------------- /packages/webpack-nexus/bin/webpack-nexus.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('../lib/webpack-nexus'); 4 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./packages/eslint-config-webpack-nexus/lib/eslint-config-webpack-nexus.js'); -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/config/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'core-js/stable'; 2 | import 'regenerator-runtime/runtime'; 3 | -------------------------------------------------------------------------------- /examples/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/favicon.ico -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/build/index.js: -------------------------------------------------------------------------------- 1 | const build = require('./build'); 2 | 3 | module.exports = build; 4 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/eject/index.js: -------------------------------------------------------------------------------- 1 | const eject = require('./eject'); 2 | 3 | module.exports = eject; 4 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/start/index.js: -------------------------------------------------------------------------------- 1 | const start = require('./start'); 2 | 3 | module.exports = start; 4 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/index.js: -------------------------------------------------------------------------------- 1 | const nexusScripts = require('./nexus-scripts'); 2 | 3 | module.exports = nexusScripts; 4 | -------------------------------------------------------------------------------- /examples/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/favicon-16x16.png -------------------------------------------------------------------------------- /examples/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/favicon-32x32.png -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/tailwind.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | 3 | @tailwind components; 4 | 5 | @tailwind utilities; -------------------------------------------------------------------------------- /examples/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/nexus.js/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @giancarlosio/nexus.js 2 | 3 | ## 0.0.2 4 | 5 | ### Patch Changes 6 | 7 | - b335be0: Create package 8 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/README.md: -------------------------------------------------------------------------------- 1 | # Docs: https://github.com/GiancarlosIO/webpack-nexus/ 2 | 3 | ## TODO: Create docs for this package -------------------------------------------------------------------------------- /packages/eslint-config-webpack-nexus/README.md: -------------------------------------------------------------------------------- 1 | # Docs: https://github.com/GiancarlosIO/webpack-nexus/ 2 | 3 | ## TODO: Create docs for this package -------------------------------------------------------------------------------- /examples/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /examples/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giancarlosisasi/webpack-nexus/HEAD/examples/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /packages/nexus-scripts/__tests__/nexus-scripts.test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const nexusScripts = require('..'); 4 | 5 | describe('nexus-scripts', () => { 6 | it('needs tests'); 7 | }); 8 | -------------------------------------------------------------------------------- /packages/webpack-nexus/__tests__/webpack-nexus.test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const webpackNexus = require('..'); 4 | 5 | describe('webpack-nexus', () => { 6 | it('needs tests'); 7 | }); 8 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/utils/clearConsole.js: -------------------------------------------------------------------------------- 1 | function clearConsole() { 2 | process.stdout.write( 3 | process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H', 4 | ); 5 | } 6 | 7 | module.exports = clearConsole; 8 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getEslintTemplate.js: -------------------------------------------------------------------------------- 1 | function getEslintTemplate() { 2 | return `module.exports = { 3 | extends: 'eslint-config-webpack-nexus', 4 | } 5 | `; 6 | } 7 | 8 | module.exports = getEslintTemplate; 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "semi": true, 6 | "singleQuote": true, 7 | "trailingComma": "all", 8 | "bracketSpacing": true, 9 | "jsxBracketSameLine": false 10 | } 11 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/__tests__/babel-preset-webpack-nexus.test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const babelPresetWebpackNexus = require('..'); 4 | 5 | describe('babel-preset-webpack-nexus', () => { 6 | it('needs tests'); 7 | }); 8 | -------------------------------------------------------------------------------- /packages/eslint-config-webpack-nexus/__tests__/eslint-config-webpack-nexus.test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const eslintConfigWebpackNexus = require('..'); 4 | 5 | describe('eslint-config-webpack-nexus', () => { 6 | it('needs tests'); 7 | }); 8 | -------------------------------------------------------------------------------- /examples/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | const App = () => ( 5 |
6 |

Hello world!!

7 |
8 | ); 9 | 10 | ReactDOM.render(, document.querySelector('#rootApp')); 11 | -------------------------------------------------------------------------------- /packages/nexus-scripts/README.md: -------------------------------------------------------------------------------- 1 | # Docs: https://github.com/GiancarlosIO/webpack-nexus/ 2 | 3 | # For now, this package does not works by itself. Instead use the webpack-nexus cli. It's the same but with a bunch of useful argvs :). 4 | 5 | # https://github.com/GiancarlosIO/webpack-nexus/ 6 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/utils/stringifyNpmPackages.js: -------------------------------------------------------------------------------- 1 | function stringifyNpmPackages(npmPackagesObject) { 2 | return Object.keys(npmPackagesObject).reduce((packages, packageKey) => { 3 | return `${packages} ${packageKey}@${npmPackagesObject[packageKey]}`; 4 | }, ''); 5 | } 6 | 7 | module.exports = stringifyNpmPackages; 8 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "master", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/start/start.js: -------------------------------------------------------------------------------- 1 | const server = require('../../webpack/server'); 2 | 3 | const start = ({ extraConfiguration }) => { 4 | // set the development variables 5 | process.env.NODE_ENV = 'development'; 6 | process.env.BABEL_ENV = 'development'; 7 | server(extraConfiguration); 8 | }; 9 | 10 | module.exports = start; 11 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/strings.js: -------------------------------------------------------------------------------- 1 | module.exports.ERRORS = { 2 | mainJSFileNotExists: sourceDirectoryRootPath => 3 | `Missing files: Hey!, the ${sourceDirectoryRootPath}/index.(js|ts|tsx) file does not exists`, 4 | mainHTMLFileNotExists: sourceDirectoryRootPath => 5 | `Missing files: Hey!, the ${sourceDirectoryRootPath}/index.html file does not exists`, 6 | }; 7 | -------------------------------------------------------------------------------- /packages/nexus.js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@giancarlosio/nexus.js", 3 | "version": "0.0.2", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "publishConfig": { 10 | "access": "public" 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "ISC" 15 | } 16 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/react/default.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | [extraImports]; 5 | 6 | const App = () => ( 7 |
8 |

Hello world!!

9 |
10 | ); 11 | 12 | ReactDOM.render( 13 | 14 | 15 | , 16 | document.querySelector('#rootApp'), 17 | ); 18 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/webpack/configurations/custom-babel-loader.js: -------------------------------------------------------------------------------- 1 | module.exports = require('babel-loader').custom(() => ({ 2 | config(cfg) { 3 | return { 4 | ...cfg.options, 5 | presets: [ 6 | ...(cfg.options.presets || []), 7 | // eslint-disable-next-line global-require 8 | require('babel-preset-webpack-nexus'), 9 | ], 10 | }; 11 | }, 12 | })); 13 | -------------------------------------------------------------------------------- /packages/webpack-nexus/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # webpack-nexus 2 | 3 | ## 3.0.0 4 | 5 | ### Major Changes 6 | 7 | - f2d4b0b: Improve CI 8 | 9 | ## 2.0.0 10 | 11 | ### Major Changes 12 | 13 | - 485e4c1: Docs 14 | 15 | ### Minor Changes 16 | 17 | - 0cab616: Improve docs 18 | - 400ba5f: Improve docs 19 | - 78866b1: Update dependencies 20 | 21 | ## 1.4.1 22 | 23 | ### Patch Changes 24 | 25 | - Update npm public configuration 26 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # babel-preset-webpack-nexus 2 | 3 | ## 3.0.0 4 | 5 | ### Major Changes 6 | 7 | - f2d4b0b: Improve CI 8 | 9 | ## 2.0.0 10 | 11 | ### Major Changes 12 | 13 | - 485e4c1: Docs 14 | 15 | ### Minor Changes 16 | 17 | - 0cab616: Improve docs 18 | - 400ba5f: Improve docs 19 | - 78866b1: Update dependencies 20 | 21 | ## 1.4.1 22 | 23 | ### Patch Changes 24 | 25 | - Update npm public configuration 26 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getMainJsTemplate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get the main js content 3 | * @returns {string} template 4 | * 5 | */ 6 | function getMainJsTemplate() { 7 | return `import React from 'react'; 8 | import ReactDOM from 'react-dom'; 9 | 10 | const App = () => ( 11 |
12 |

Hello world!!

13 |
14 | ); 15 | 16 | ReactDOM.render(, document.querySelector('#rootApp')); 17 | `; 18 | } 19 | 20 | module.exports = getMainJsTemplate; 21 | -------------------------------------------------------------------------------- /examples/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "examples", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "author": "Giancarlos Isasi ", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "node ../packages/nexus-scripts/lib/nexus-scripts.js start", 9 | "build": "node ../packages/nexus-scripts/lib/nexus-scripts.js nexus-scripts build" 10 | }, 11 | "dependencies": { 12 | "@hot-loader/react-dom": "^16.11.0", 13 | "react": "16.8.6", 14 | "react-dom": "16.8.6" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[javascript]": { 3 | "editor.formatOnSave": false 4 | }, 5 | "html.format.enable": false, 6 | "[typescript]": { 7 | "editor.formatOnSave": false 8 | }, 9 | "editor.codeActionsOnSave": { 10 | "source.fixAll.tslint": true, 11 | "source.fixAll.eslint": true 12 | }, 13 | "eslint.validate": [ 14 | "javascript", 15 | "javascriptreact", 16 | "Babel Javascript" 17 | ], 18 | "eslint.alwaysShowStatus": true, 19 | "typescript.tsdk": "node_modules/typescript/lib" 20 | } -------------------------------------------------------------------------------- /packages/eslint-config-webpack-nexus/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-config-webpack-nexus", 3 | "version": "1.3.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "confusing-browser-globals": { 8 | "version": "1.0.9", 9 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", 10 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /packages/eslint-config-webpack-nexus/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # eslint-config-webpack-nexus 2 | 3 | ## 4.0.0 4 | 5 | ### Major Changes 6 | 7 | - f2d4b0b: Improve CI 8 | 9 | ## 3.0.0 10 | 11 | ### Major Changes 12 | 13 | - 485e4c1: Docs 14 | 15 | ### Minor Changes 16 | 17 | - 0cab616: Improve docs 18 | - 400ba5f: Improve docs 19 | - 78866b1: Update dependencies 20 | 21 | ## 2.0.1 22 | 23 | ### Patch Changes 24 | 25 | - Update npm public configuration 26 | 27 | ## 2.0.0 28 | 29 | ### Major Changes 30 | 31 | - Reorder the extensions that the eslint plugin use 32 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getPackageJsonTemplate.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-useless-escape */ 2 | function getPackageJsonTemplate({ projectName, author, extraNexusArgs }) { 3 | return ` 4 | { 5 | "name": "${projectName}", 6 | "version": "0.0.1", 7 | "description": "", 8 | "keywords": [ 9 | "webpack", 10 | "react", 11 | "styled-components", 12 | "react-dom" 13 | ], 14 | "author": "${author || ''}", 15 | "license": "MIT", 16 | "scripts": { 17 | "start": "npx nexus-scripts start ${extraNexusArgs}", 18 | "build": "npx nexus-scripts build ${extraNexusArgs}" 19 | } 20 | } 21 | 22 | `; 23 | } 24 | 25 | module.exports = getPackageJsonTemplate; 26 | -------------------------------------------------------------------------------- /packages/nexus-scripts/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # nexus-scripts 2 | 3 | ## 3.0.0 4 | 5 | ### Major Changes 6 | 7 | - f2d4b0b: Improve CI 8 | 9 | ### Patch Changes 10 | 11 | - Updated dependencies [f2d4b0b] 12 | - babel-preset-webpack-nexus@3.0.0 13 | 14 | ## 2.0.0 15 | 16 | ### Major Changes 17 | 18 | - 485e4c1: Docs 19 | 20 | ### Minor Changes 21 | 22 | - 0cab616: Improve docs 23 | - 400ba5f: Improve docs 24 | - 78866b1: Update dependencies 25 | 26 | ### Patch Changes 27 | 28 | - Updated dependencies [0cab616] 29 | - Updated dependencies [485e4c1] 30 | - Updated dependencies [400ba5f] 31 | - Updated dependencies [78866b1] 32 | - babel-preset-webpack-nexus@2.0.0 33 | 34 | ## 1.6.1 35 | 36 | ### Patch Changes 37 | 38 | - Update npm public configuration 39 | - Updated dependencies 40 | - babel-preset-webpack-nexus@1.4.1 41 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getHtmlTemplate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns the index.html content 3 | * 4 | * @param {Object} config 5 | * @param {string} config.projectName 6 | * @returns {string} 7 | */ 8 | function getHtmlTemplate({ projectName }) { 9 | return ` 10 | 11 | 12 | 13 | 14 | 15 | 16 | ${projectName} 17 | 18 | 19 | 20 |
21 | 22 | 23 | `; 24 | } 25 | 26 | module.exports = getHtmlTemplate; 27 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/scripts/build/build.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const chalk = require('chalk'); 3 | 4 | const webpackProd = require('../../webpack/configurations/webpack.prod'); 5 | 6 | const build = ({ argv, extraConfiguration }) => { 7 | process.env.NODE_ENV = 'production'; 8 | process.env.BABEL_ENV = 'production'; 9 | 10 | const webpackProdConfig = webpackProd({}, extraConfiguration); 11 | 12 | webpack(webpackProdConfig, (error, stats) => { 13 | if (error || stats.hasErrors()) { 14 | return console.log( 15 | chalk.red( 16 | 'Error to compile on production mode 😢', 17 | error || stats.hasErrors(), 18 | ), 19 | ); 20 | } 21 | 22 | console.log( 23 | chalk.green(` 24 | Build successful! 🎉 25 | `), 26 | ); 27 | console.log(stats.toString({ all: false, assets: true, colors: true })); 28 | }); 29 | }; 30 | 31 | module.exports = build; 32 | -------------------------------------------------------------------------------- /.github/workflows/pre-release.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Pre-release 3 | 4 | on: 5 | push: 6 | branches: 7 | - 'prerelease/**' 8 | - '!master' 9 | 10 | jobs: 11 | build: 12 | name: Build and publish 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout code 16 | uses: actions/checkout@v2 17 | with: 18 | fetch-depth: 2 19 | token: ${{ secrets.GITHUB_TOKEN }} 20 | - name: Setup environment 21 | uses: actions/setup-node@v2 22 | with: 23 | node-version: '14' 24 | - name: Setup pnpm 25 | uses: pnpm/action-setup@v2.1.0 26 | with: 27 | version: 6.0.2 28 | run_install: true 29 | env: 30 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 31 | - name: publish 32 | env: 33 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 34 | run: | 35 | echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" > ~/.npmrc 36 | pnpm prerelease 37 | pnpm prerelease-publish -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getTsConfigTemplate.js: -------------------------------------------------------------------------------- 1 | function getTsConfigTemplate() { 2 | return `{ 3 | "compilerOptions": { 4 | "moduleResolution": "node", 5 | "module": "esnext", 6 | "allowJs": true, 7 | "noEmit": true, 8 | "strict": false, 9 | "isolatedModules": true, 10 | "esModuleInterop": true, 11 | "strictNullChecks": true, 12 | "experimentalDecorators": true, 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "noImplicitAny": false, 16 | "skipLibCheck": true, 17 | "target": "es5", 18 | "allowSyntheticDefaultImports": true, 19 | "forceConsistentCasingInFileNames": true, 20 | "resolveJsonModule": true, 21 | "lib": [ 22 | "dom", 23 | "dom.iterable", 24 | "esnext" 25 | ], 26 | "jsx": "react", 27 | "plugins": [ 28 | { 29 | "name": "typescript-styled-plugin" 30 | } 31 | ] 32 | }, 33 | "include": [ 34 | "src" 35 | ] 36 | } 37 | `; 38 | } 39 | 40 | module.exports = getTsConfigTemplate; 41 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/utils/createFolder.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const chalk = require('chalk'); 3 | 4 | /** 5 | * Create a folder 6 | * 7 | * @param {Object} config 8 | * @param {String} config.pathToCreate 9 | * @param {String} config.folderName 10 | */ 11 | function createFolder({ pathToCreate, folderName }) { 12 | return new Promise((resolve, reject) => { 13 | fs.mkdir(pathToCreate, error => { 14 | if (error) { 15 | if (error.code === 'EEXIST') { 16 | console.log( 17 | chalk.red(`>⚠️ Hey! The ${folderName} folder already exists!`), 18 | ); 19 | reject(error); 20 | } else { 21 | console.log( 22 | chalk.red('>⚠️ Error to create the folder in the current path'), 23 | ); 24 | reject(error); 25 | } 26 | } else { 27 | console.log( 28 | chalk.green(`> Success to create the ${folderName} folder`), 29 | ); 30 | resolve(); 31 | } 32 | }); 33 | }); 34 | } 35 | 36 | module.exports = createFolder; 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Giancarlos Isasi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/webpack-nexus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-nexus", 3 | "version": "3.0.0", 4 | "description": "A cli to create your next super duper javascript project", 5 | "keywords": [ 6 | "webpack", 7 | "react", 8 | "styled-components", 9 | "react-dom", 10 | "nexus" 11 | ], 12 | "author": "Giancarlos ", 13 | "homepage": "https://github.com/GiancarlosIO/webpack-nexus#readme", 14 | "license": "MIT", 15 | "files": [ 16 | "lib", 17 | "bin" 18 | ], 19 | "bin": { 20 | "webpack-nexus": "bin/webpack-nexus.js" 21 | }, 22 | "repository": { 23 | "type": "git", 24 | "url": "git+https://github.com/GiancarlosIO/webpack-nexus.git" 25 | }, 26 | "publishConfig": { 27 | "access": "public" 28 | }, 29 | "scripts": { 30 | "test": "echo \"Error: run tests from root\" && exit 1" 31 | }, 32 | "bugs": { 33 | "url": "https://github.com/GiancarlosIO/webpack-nexus/issues" 34 | }, 35 | "dependencies": { 36 | "@types/chalk": "^2.2.0", 37 | "chalk": "^2.4.2", 38 | "inquirer": "^7.0.0", 39 | "minimist": "^1.2.5", 40 | "ora": "^4.0.1" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | .npmrc 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | 61 | # next.js build output 62 | .next 63 | 64 | dist/ -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getVsCodeConfig.js: -------------------------------------------------------------------------------- 1 | function getVsCodeConfig() { 2 | return `{ 3 | "html.format.enable": false, 4 | 5 | // disabled to not run double format 6 | "[javascript]": { 7 | "editor.formatOnSave": false, 8 | }, 9 | "[javascriptreact]": { 10 | "editor.formatOnSave": false, 11 | }, 12 | "[typescript]": { 13 | "editor.formatOnSave": false, 14 | }, 15 | "[typescriptreact]": { 16 | "editor.formatOnSave": false, 17 | }, 18 | 19 | "editor.codeActionsOnSave": { 20 | "source.fixAll.tslint": true, 21 | "source.fixAll.eslint": true 22 | }, 23 | 24 | // An array of language ids which should be validated by ESLint 25 | "eslint.validate": [ 26 | "javascript", 27 | "javascriptreact", 28 | "Babel Javascript", 29 | "typescript", 30 | "typescriptreact" 31 | ], 32 | "eslint.alwaysShowStatus": true, 33 | // typescript auto-format settings 34 | "typescript.tsdk": "node_modules/typescript/lib", 35 | "javascript.preferences.importModuleSpecifier": "auto", 36 | "typescript.preferences.importModuleSpecifier": "auto", 37 | "javascript.preferences.quoteStyle": "single", 38 | "typescript.preferences.quoteStyle": "single" 39 | } 40 | `; 41 | } 42 | 43 | module.exports = getVsCodeConfig; 44 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/getGitIgnoreTemplate.js: -------------------------------------------------------------------------------- 1 | function getGitIgnoreTemplate() { 2 | return `# Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (https://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # TypeScript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | 61 | # next.js build output 62 | .next 63 | 64 | dist/ 65 | `; 66 | } 67 | 68 | module.exports = getGitIgnoreTemplate; 69 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Release 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | 9 | # Automatically cancel in-progress actions on the same branch 10 | concurrency: 11 | group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.head_ref || github.ref }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | build: 16 | name: Build and publish 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v2 21 | with: 22 | fetch-depth: 0 23 | token: ${{ secrets.GIO_GITHUB_TOKEN }} 24 | - name: Configure git username 25 | run: | 26 | git config --global user.name 'Giancarlos Isasi' 27 | git config --global user.email 'giancarlos.isasi@gmail.com' 28 | - name: Setup environment 29 | uses: actions/setup-node@v2 30 | with: 31 | node-version: '14' 32 | - name: Setup pnpm 33 | uses: pnpm/action-setup@v2.1.0 34 | with: 35 | version: 6.0.2 36 | run_install: true 37 | - name: Publish 38 | env: 39 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 40 | run: | 41 | echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" > ~/.npmrc 42 | pnpm release 43 | pnpm release-publish 44 | git add . 45 | git commit -m "chore: [skip ci] release" 46 | git push --follow-tags 47 | -------------------------------------------------------------------------------- /packages/eslint-config-webpack-nexus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-config-webpack-nexus", 3 | "version": "4.0.0", 4 | "description": "Eslint configuration user by webpack-nexus cli", 5 | "author": "Giancarlos ", 6 | "homepage": "https://github.com/GiancarlosIO/webpack-nexus#readme", 7 | "license": "MIT", 8 | "main": "lib/eslint-config-webpack-nexus.js", 9 | "publishConfig": { 10 | "access": "public" 11 | }, 12 | "directories": { 13 | "lib": "lib", 14 | "test": "__tests__" 15 | }, 16 | "files": [ 17 | "lib" 18 | ], 19 | "repository": { 20 | "type": "git", 21 | "url": "git+https://github.com/GiancarlosIO/webpack-nexus.git" 22 | }, 23 | "scripts": { 24 | "test": "echo \"Error: run tests from root\" && exit 1" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/GiancarlosIO/webpack-nexus/issues" 28 | }, 29 | "peerDependencies": { 30 | "@typescript-eslint/eslint-plugin": "^2.20.0", 31 | "@typescript-eslint/parser": "^2.20.0", 32 | "confusing-browser-globals": "^1.0.9", 33 | "eslint": "^6.7.1", 34 | "eslint-config-airbnb": "^18.0.1", 35 | "eslint-config-prettier": "^6.10.0", 36 | "eslint-plugin-import": "^2.18.2", 37 | "eslint-plugin-jsx-a11y": "^6.2.3", 38 | "eslint-plugin-prettier": "^3.1.1", 39 | "eslint-plugin-react": "^7.15.1", 40 | "eslint-plugin-react-hooks": "^1.7.0", 41 | "prettier": "^1.19.1", 42 | "typescript": "^3.9.6" 43 | }, 44 | "dependencies": { 45 | "confusing-browser-globals": "^1.0.9" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /examples/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 20 | 21 | React App 22 | 23 | 24 | 25 |
26 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/utils/installNpmPackages.js: -------------------------------------------------------------------------------- 1 | const { execSync } = require('child_process'); 2 | 3 | const ora = require('ora'); 4 | const chalk = require('chalk'); 5 | 6 | /** 7 | * Install npm packages with yarn 8 | * fallback to npm if yarn is not installed in the current system 9 | * 10 | * @param {Object} config { packages, path } 11 | * @param {String} config.packages 12 | * @param {String} config.path 13 | * @param {Boolean} config.areDevDependencies 14 | * @returns {Promise} 15 | */ 16 | function installNpmPackages({ packages, path, areDevDependencies }) { 17 | return new Promise((resolve, reject) => { 18 | const installingPackages = ora('npm: Installing packages...').start(); 19 | /** 20 | * pass Pipe to silent the child process output 21 | * actually pipe is the default value but for some reason setting it changes its behavior 22 | * */ 23 | 24 | try { 25 | execSync( 26 | `npm install ${packages} ${areDevDependencies ? '--save-dev' : ''}`, 27 | { 28 | encoding: 'utf8', 29 | stdio: 'pipe', 30 | cwd: path, 31 | }, 32 | // (error, stdout, stderr) => { 33 | // if (error) { 34 | // ora.fail(); 35 | // console.error(chalk.red(`\nexec error ${error}`)); 36 | // reject(error); 37 | // return; 38 | // } 39 | 40 | // // this are just logs stuff 41 | // console.info(`\n${stderr}\n`); 42 | // }, 43 | ); 44 | installingPackages.succeed('Successfull to install npm packages.'); 45 | resolve(true); 46 | } catch (npmError) { 47 | ora.fail(); 48 | console.log(chalk.red('Error to install packages with npm'), npmError); 49 | resolve(npmError); 50 | } 51 | }); 52 | } 53 | 54 | module.exports = installNpmPackages; 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-nexus", 3 | "version": "0.0.1", 4 | "description": "A simple webpack-like-cli to scaffold your next react project", 5 | "main": "index.js", 6 | "repository": "git@github.com:GiancarlosIO/webpack-nexus.git", 7 | "author": "Giancarlos Isasi ", 8 | "license": "MIT", 9 | "publishConfig": { 10 | "access": "public" 11 | }, 12 | "bin": "./src/index.js", 13 | "engines": { 14 | "node": "14.x", 15 | "pnpm": ">=6" 16 | }, 17 | "scripts": { 18 | "release-all": "lerna publish", 19 | "prerelease": "changeset version --snapshot alpha", 20 | "prerelease-publish": "changeset publish --tag alpha --no-git-tag", 21 | "release": "changeset version", 22 | "release-publish": "changeset publish" 23 | }, 24 | "dependencies": { 25 | "@changesets/cli": "2.21.0", 26 | "@typescript-eslint/eslint-plugin": "^1.12.0", 27 | "@typescript-eslint/parser": "^1.12.0", 28 | "babel-eslint": "10.0.1", 29 | "chalk": "2.4.2", 30 | "confusing-browser-globals": "^1.0.9", 31 | "eslint": "^5.3.0", 32 | "eslint-config-airbnb": "^17.1.1", 33 | "eslint-config-prettier": "4.2.0", 34 | "eslint-plugin-import": "^2.18.0", 35 | "eslint-plugin-jsx-a11y": "^6.2.3", 36 | "eslint-plugin-prettier": "3.0.1", 37 | "eslint-plugin-react": "^7.14.2", 38 | "eslint-plugin-react-hooks": "1.6.0", 39 | "express": "4.16.4", 40 | "inquirer": "6.3.1", 41 | "lerna": "^3.13.4", 42 | "lerna-wizard": "1.0.9", 43 | "ora": "3.4.0", 44 | "prettier": "^1.15.3", 45 | "semver": "6.0.0", 46 | "shelljs": "0.8.3", 47 | "slugify": "1.3.4", 48 | "typescript": "^3.2.1", 49 | "webpack": "4.30.0", 50 | "webpack-cli": "3.3.2", 51 | "webpack-dev-middleware": "3.6.2", 52 | "webpack-hot-middleware": "2.24.4", 53 | "yargs": "13.2.2" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/templateFiles/react/apollo.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { ApolloClient } from 'apollo-client'; 4 | import { ApolloLink } from 'apollo-link'; 5 | import { createHttpLink } from 'apollo-link-http'; 6 | import { InMemoryCache } from 'apollo-cache-inmemory'; 7 | import { onError } from 'apollo-link-error'; 8 | import { ApolloProvider } from 'react-apollo'; 9 | 10 | [extraImports]; 11 | 12 | const cache = new InMemoryCache(); 13 | const httpLink = createHttpLink({ 14 | uri: 'https://48p1r2roz4.sse.codesandbox.io', 15 | credentials: 'include', 16 | }); 17 | 18 | const errorLink = onError(({ graphQLErrors, networkError, operation }) => { 19 | if (graphQLErrors) 20 | // eslint-disable-next-line array-callback-return 21 | graphQLErrors.map(({ message, locations, path }) => { 22 | console.error( 23 | `[Graphql error]: Message: ${message}, Location: ${ 24 | locations ? JSON.stringify(locations) : locations 25 | }, Path: ${path}`, 26 | ); 27 | }); 28 | 29 | if (operation.operationName === 'createSocketSession') { 30 | console.log( 31 | '%c Hey! looks like you have the socket feature activated and because you have not running the server the mutation is going to fail 😥. If you want to disable it just set socketDisable to true in the localStorage.', 32 | 'color: #09f; background: rgba(0,0,0,0.02); padding: 12px 0', 33 | ); 34 | } 35 | 36 | if (networkError) { 37 | console.error(`[Network Error]: ${networkError}`); 38 | } 39 | }); 40 | 41 | // the order is very important! 42 | const links = [errorLink, httpLink]; 43 | 44 | const client = new ApolloClient({ 45 | cache, 46 | link: ApolloLink.from(links), 47 | }); 48 | 49 | const App = () => ( 50 |
51 |

Hello world!!

52 |
53 | ); 54 | 55 | ReactDOM.render( 56 | 57 | 58 | 59 | 60 | , 61 | document.querySelector('#rootApp'), 62 | ); 63 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/webpack/configurations/webpack.dev.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const WebpackBar = require('webpackbar'); 3 | const merge = require('webpack-merge'); 4 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 5 | const CircularDependencyPlugin = require('circular-dependency-plugin'); 6 | const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); 7 | const WebpackBuildNotifierPlugin = require('webpack-build-notifier'); 8 | 9 | const webpackBaseConfig = require('./webpack.base'); 10 | 11 | const createDevConfig = (config, extraConfig) => 12 | merge( 13 | // webpackBase returns a webpack config 14 | webpackBaseConfig( 15 | { 16 | mode: 'development', 17 | output: { 18 | filename: `[name].min.js`, 19 | chunkFilename: `[name].chunk.js`, 20 | }, 21 | optimization: { 22 | /* https://medium.com/@kenneth_chau/speeding-up-webpack-typescript-incremental-builds-by-7x-3912ba4c1d15 */ 23 | removeAvailableModules: false, 24 | removeEmptyChunks: false, 25 | splitChunks: { 26 | chunks: 'all', 27 | }, 28 | }, 29 | plugins: [ 30 | // This Webpack plugin enforces the entire path of all required modules match the exact case 31 | // of the actual path on disk. 32 | new webpack.HotModuleReplacementPlugin(), 33 | new WebpackBar(), 34 | new CaseSensitivePathsPlugin(), 35 | new HtmlWebpackPlugin({ 36 | inject: true, 37 | template: extraConfig.htmlWebpackPluginTemplate, 38 | }), 39 | new CircularDependencyPlugin({ 40 | exclude: /a\.js|node_modules/, // exclude node_modules 41 | failOnError: false, 42 | }), 43 | new webpack.NamedModulesPlugin(), 44 | new webpack.NoEmitOnErrorsPlugin(), 45 | new WebpackBuildNotifierPlugin(), 46 | ], 47 | devtool: 'source-map', 48 | performance: { 49 | hints: false, // why we need it? 🤔 50 | }, 51 | // devServer => the webpack-dev-server config is in the server file 52 | }, 53 | extraConfig, 54 | ), 55 | config, 56 | ); 57 | 58 | module.exports = createDevConfig; 59 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-preset-webpack-nexus", 3 | "version": "3.0.0", 4 | "description": "Babel preset used by webpack-nexus cli", 5 | "author": "Giancarlos Isasi ", 6 | "homepage": "https://github.com/GiancarlosIO/webpack-nexus#readme", 7 | "license": "MIT", 8 | "main": "lib/babel-preset-webpack-nexus.js", 9 | "directories": { 10 | "lib": "lib", 11 | "test": "__tests__" 12 | }, 13 | "files": [ 14 | "lib" 15 | ], 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/GiancarlosIO/webpack-nexus.git" 19 | }, 20 | "publishConfig": { 21 | "access": "public" 22 | }, 23 | "scripts": { 24 | "test": "echo \"Error: run tests from root\" && exit 1" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/GiancarlosIO/webpack-nexus/issues" 28 | }, 29 | "peerDependencies": { 30 | "react": "^15.0.0 || ^16.0.0", 31 | "react-dom": "^15.0.0 || ^16.0.0", 32 | "styled-components": ">=2" 33 | }, 34 | "devDependencies": { 35 | "react": "16", 36 | "react-dom": "16", 37 | "styled-components": "2" 38 | }, 39 | "dependencies": { 40 | "@babel/core": "7.10.4", 41 | "@babel/plugin-proposal-class-properties": "7.10.4", 42 | "@babel/plugin-proposal-decorators": "7.10.4", 43 | "@babel/plugin-proposal-export-default-from": "7.2.0", 44 | "@babel/plugin-proposal-object-rest-spread": "7.10.4", 45 | "@babel/plugin-proposal-optional-chaining": "^7.10.4", 46 | "@babel/plugin-syntax-dynamic-import": "7.2.0", 47 | "@babel/plugin-transform-destructuring": "7.10.4", 48 | "@babel/plugin-transform-modules-commonjs": "7.10.4", 49 | "@babel/plugin-transform-react-constant-elements": "7.2.0", 50 | "@babel/plugin-transform-react-inline-elements": "7.2.0", 51 | "@babel/preset-env": "7.10.4", 52 | "@babel/preset-react": "7.10.4", 53 | "@babel/preset-typescript": "7.10.4", 54 | "babel-plugin-dynamic-import-node": "2.2.0", 55 | "babel-plugin-lodash": "3.3.4", 56 | "babel-plugin-styled-components": "1.10.0", 57 | "babel-plugin-transform-imports": "1.5.1", 58 | "babel-plugin-transform-inline-environment-variables": "0.4.3", 59 | "babel-plugin-transform-react-remove-prop-types": "0.4.24", 60 | "babel-plugin-transform-remove-console": "6.9.4", 61 | "babel-plugin-transform-remove-debugger": "6.9.4", 62 | "core-js": "3", 63 | "react-hot-loader": "4.12.15" 64 | }, 65 | "gitHead": "ba33eeea9f155c64f1acce938a145d8907b533d2" 66 | } 67 | -------------------------------------------------------------------------------- /packages/nexus-scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nexus-scripts", 3 | "version": "3.0.0", 4 | "description": "A script to up a webpack server for web development", 5 | "keywords": [ 6 | "webpack", 7 | "react" 8 | ], 9 | "author": "Giancarlos Isasi ", 10 | "homepage": "https://github.com/GiancarlosIO/webpack-nexus#readme", 11 | "license": "MIT", 12 | "main": "lib/nexus-scripts.js", 13 | "directories": { 14 | "lib": "lib", 15 | "test": "__tests__" 16 | }, 17 | "files": [ 18 | "lib", 19 | "bin" 20 | ], 21 | "repository": { 22 | "type": "git", 23 | "url": "git+https://github.com/GiancarlosIO/webpack-nexus.git" 24 | }, 25 | "publishConfig": { 26 | "access": "public" 27 | }, 28 | "scripts": { 29 | "test": "echo \"Error: run tests from root\" && exit 1" 30 | }, 31 | "bugs": { 32 | "url": "https://github.com/GiancarlosIO/webpack-nexus/issues" 33 | }, 34 | "bin": { 35 | "nexus-scripts": "./bin/nexus-scripts.js" 36 | }, 37 | "dependencies": { 38 | "@babel/cli": "7.10.4", 39 | "@babel/core": "7.10.4", 40 | "@babel/node": "7.2.2", 41 | "@babel/register": "7.10.4", 42 | "@babel/runtime": "7.10.4", 43 | "@fullhuman/postcss-purgecss": "^1.3.0", 44 | "autoprefixer": "^9.7.2", 45 | "babel-loader": "8.0.5", 46 | "babel-preset-webpack-nexus": "workspace:*", 47 | "case-sensitive-paths-webpack-plugin": "2.2.0", 48 | "chalk": "2.4.2", 49 | "circular-dependency-plugin": "5.0.2", 50 | "connect-history-api-fallback": "^1.6.0", 51 | "core-js": "^3.6.5", 52 | "cors": "2.8.5", 53 | "css-loader": "^3.2.0", 54 | "express": "4.16.4", 55 | "graphql": "^14.5.8", 56 | "graphql-tag": "^2.10.1", 57 | "html-webpack-plugin": "3.2.0", 58 | "ip": "1.1.5", 59 | "mini-css-extract-plugin": "^0.8.0", 60 | "open": "6.2.0", 61 | "optimize-css-assets-webpack-plugin": "^5.0.3", 62 | "postcss-loader": "^3.0.0", 63 | "regenerator-runtime": "^0.13.2", 64 | "sass-loader": "^8.0.0", 65 | "style-loader": "^1.0.0", 66 | "tailwindcss": "^1.1.3", 67 | "terser-webpack-plugin": "1.2.3", 68 | "webpack": "4.43.0", 69 | "webpack-build-notifier": "1.0.2", 70 | "webpack-bundle-analyzer": "3.3.2", 71 | "webpack-cli": "3.3.2", 72 | "webpack-dev-middleware": "3.6.2", 73 | "webpack-dev-server": "3.3.1", 74 | "webpack-hot-middleware": "2.24.4", 75 | "webpack-merge": "4.2.1", 76 | "webpackbar": "4.0.0", 77 | "yargs": "13.2.2" 78 | }, 79 | "gitHead": "ba33eeea9f155c64f1acce938a145d8907b533d2" 80 | } 81 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/nexus-scripts.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | const { argv } = require('yargs'); 5 | const chalk = require('chalk'); 6 | 7 | // core scripts 8 | const start = require('./scripts/start'); 9 | const build = require('./scripts/build'); 10 | 11 | const { ERRORS } = require('./strings'); 12 | 13 | const rootAppDirectoryPath = fs.realpathSync(process.cwd()); 14 | const srcAppDirectoryPath = path.resolve(rootAppDirectoryPath, 'src/'); 15 | const fileAppRootPathJS = path.resolve(srcAppDirectoryPath, 'index.js'); 16 | const fileAppRootPathTS = path.resolve(srcAppDirectoryPath, 'index.ts'); 17 | const fileAppRootPathTSX = path.resolve(srcAppDirectoryPath, 'index.tsx'); 18 | const htmlWebpackPluginTemplate = path.resolve( 19 | srcAppDirectoryPath, 20 | 'index.html', 21 | ); 22 | 23 | let fileAppRootPath = null; 24 | 25 | if (fs.existsSync(fileAppRootPathJS)) { 26 | fileAppRootPath = fileAppRootPathJS; 27 | } else if (fs.existsSync(fileAppRootPathTS)) { 28 | fileAppRootPath = fileAppRootPathTS; 29 | } else if (fs.existsSync(fileAppRootPathTSX)) { 30 | fileAppRootPath = fileAppRootPathTSX; 31 | } 32 | 33 | if (!fileAppRootPath) { 34 | return console.log( 35 | chalk.red(ERRORS.mainJSFileNotExists(srcAppDirectoryPath)), 36 | ); 37 | } 38 | 39 | if (!fs.existsSync(htmlWebpackPluginTemplate)) { 40 | return console.log( 41 | chalk.red(ERRORS.mainHTMLFileNotExists(srcAppDirectoryPath)), 42 | ); 43 | } 44 | 45 | const PORT = argv.port || process.env.PORT || 3000; 46 | 47 | const isAnalyzerEnabled = argv.analyzer; 48 | const { 49 | clearConsole, 50 | openBrowser, 51 | reactProfiler, 52 | withGraphql, 53 | withTailwindcss, 54 | } = argv; 55 | 56 | const extraConfiguration = { 57 | rootAppDirectoryPath, 58 | srcAppDirectoryPath, 59 | fileAppRootPath: [ 60 | 'core-js/stable', 61 | 'regenerator-runtime/runtime', 62 | fileAppRootPath, 63 | ], 64 | PORT, 65 | htmlWebpackPluginTemplate, 66 | // extra helper vars 67 | isAnalyzerEnabled, 68 | reactProfiler, 69 | clearConsole: clearConsole !== 'false', 70 | openBrowser: openBrowser !== 'false', 71 | withGraphql, 72 | withTailwindcss, 73 | }; 74 | 75 | const commands = { 76 | start, 77 | build, 78 | }; 79 | 80 | const commandToRun = commands[argv._[0]]; 81 | 82 | // validate argvs 83 | if (!argv._[0]) { 84 | console.error( 85 | chalk.red(` 86 | You need to specify a command to run 😠 87 | `), 88 | ); 89 | } else if (!commandToRun) { 90 | console.error( 91 | chalk.red(` 92 | This command doesn't exists in the webpack-nexus cli 😓 93 | `), 94 | ); 95 | } else { 96 | commandToRun({ argv, extraConfiguration }); 97 | } 98 | -------------------------------------------------------------------------------- /examples/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@hot-loader/react-dom@^16.11.0": 6 | version "16.11.0" 7 | resolved "https://registry.yarnpkg.com/@hot-loader/react-dom/-/react-dom-16.11.0.tgz#c0b483923b289db5431516f56ee2a69448ebf9bd" 8 | integrity sha512-cIOVB8YgT4EVCNiXK+gGuYl6adW/TKlW3N7GvgY5QgpL2NTWagF/oJxVscHSdR3O7NjJsoxdseB5spqwCHNIhA== 9 | dependencies: 10 | loose-envify "^1.1.0" 11 | object-assign "^4.1.1" 12 | prop-types "^15.6.2" 13 | scheduler "^0.17.0" 14 | 15 | "js-tokens@^3.0.0 || ^4.0.0": 16 | version "4.0.0" 17 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 18 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 19 | 20 | loose-envify@^1.1.0, loose-envify@^1.4.0: 21 | version "1.4.0" 22 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 23 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 24 | dependencies: 25 | js-tokens "^3.0.0 || ^4.0.0" 26 | 27 | object-assign@^4.1.1: 28 | version "4.1.1" 29 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 30 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 31 | 32 | prop-types@^15.6.2: 33 | version "15.7.2" 34 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 35 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 36 | dependencies: 37 | loose-envify "^1.4.0" 38 | object-assign "^4.1.1" 39 | react-is "^16.8.1" 40 | 41 | react-dom@16.8.6: 42 | version "16.8.6" 43 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" 44 | integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== 45 | dependencies: 46 | loose-envify "^1.1.0" 47 | object-assign "^4.1.1" 48 | prop-types "^15.6.2" 49 | scheduler "^0.13.6" 50 | 51 | react-is@^16.8.1: 52 | version "16.8.6" 53 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" 54 | integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== 55 | 56 | react@16.8.6: 57 | version "16.8.6" 58 | resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" 59 | integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== 60 | dependencies: 61 | loose-envify "^1.1.0" 62 | object-assign "^4.1.1" 63 | prop-types "^15.6.2" 64 | scheduler "^0.13.6" 65 | 66 | scheduler@^0.13.6: 67 | version "0.13.6" 68 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" 69 | integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== 70 | dependencies: 71 | loose-envify "^1.1.0" 72 | object-assign "^4.1.1" 73 | 74 | scheduler@^0.17.0: 75 | version "0.17.0" 76 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" 77 | integrity sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA== 78 | dependencies: 79 | loose-envify "^1.1.0" 80 | object-assign "^4.1.1" 81 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/webpack/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const cors = require('cors'); 3 | const chalk = require('chalk'); 4 | const ip = require('ip'); 5 | const open = require('open'); 6 | const webpack = require('webpack'); 7 | const webpackDevMiddleware = require('webpack-dev-middleware'); 8 | const webpackHotMiddleware = require('webpack-hot-middleware'); 9 | const historyApiFallback = require('connect-history-api-fallback'); 10 | 11 | const webpackDevConfig = require('./configurations/webpack.dev'); 12 | 13 | // utils 14 | const clearConsole = require('../utils/clearConsole'); 15 | 16 | const runServer = extraConfiguration => { 17 | const webpackConfig = webpackDevConfig({}, extraConfiguration); 18 | const hmrSocketPath = `${webpackConfig.output.publicPath}__webpack_hmr`; 19 | // const webpackHotMiddlewarePackagePath = path.resolve( 20 | // __dirname, 21 | // '../../node_modules/webpack-hot-middleware', 22 | // ); 23 | const hotClientScript = `webpack-hot-middleware/client?path=${hmrSocketPath}&timeout=20000&reload=true`; 24 | 25 | // add the webpack-dev-middleware client to connect to the socket 26 | webpackConfig.entry = [...webpackConfig.entry, hotClientScript]; 27 | // const HMR_PATH = `${webpackConfig.devServer.publicPath}__webpack_hmr`; 28 | // const hotMiddlewareScript = `webpack-hot-middleware/client`; 29 | 30 | const compiler = webpack(webpackConfig); 31 | const devMiddleware = webpackDevMiddleware(compiler, { 32 | open: true, 33 | publicPath: webpackConfig.output.publicPath, 34 | port: extraConfiguration.PORT, 35 | overlay: { 36 | warnings: false, 37 | errors: true, 38 | }, 39 | headers: { 40 | 'Access-Control-Allow-Origin': '*', 41 | 'Access-Control-Allow-Methods': 'GET,OPTIONS,HEAD,PUT,POST,DELETE,PATCH', 42 | 'Access-Control-Allow-Headers': 43 | 'Origin, Content-Type, Accept, Authorization, X-Request-With', 44 | 'Access-Control-Allow-Credentials': 'true', 45 | }, 46 | // Supress the extensive stats normally printed after a dev build (since sizes are mostly useless): 47 | stats: { 48 | all: false, 49 | assets: false, 50 | chunks: false, 51 | errors: true, 52 | hash: false, 53 | modules: false, 54 | performance: false, 55 | reasons: false, 56 | timings: true, 57 | warnings: false, 58 | builtAt: true, 59 | errorsDetails: true, 60 | publicPath: true, 61 | }, 62 | // Supress forwading of webpack logs to the browser console: 63 | clientLogLevel: 'errors-only', 64 | logLevel: 'warn', 65 | }); 66 | const hotMiddleware = webpackHotMiddleware(compiler, { 67 | path: hmrSocketPath, 68 | }); 69 | 70 | const app = express(); 71 | 72 | app.use( 73 | historyApiFallback({ 74 | verbose: false, 75 | }), 76 | ); 77 | 78 | app.use(cors()); 79 | app.use(devMiddleware); 80 | app.use(hotMiddleware); 81 | 82 | app.listen(extraConfiguration.PORT, () => { 83 | if (extraConfiguration.clearConsole) { 84 | clearConsole(); 85 | } 86 | console.log(` 87 | ${chalk.green('Server successfuly started')} 🎉 88 | 89 | ${chalk.blue('---------------------------------')} 90 | URL: ${chalk.blue.bold(`http://localhost:${extraConfiguration.PORT}`)} 91 | LAN: ${chalk.blue.bold(`http://${ip.address()}:${extraConfiguration.PORT}`)} 92 | ${chalk.blue('---------------------------------')} 93 | 94 | ${chalk.red(`Press ${chalk.italic('CTRL-C')} to stop`)} 95 | `); 96 | 97 | if (extraConfiguration.openBrowser) { 98 | open( 99 | `http://localhost:${extraConfiguration.PORT}${webpackConfig.output.publicPath}`, 100 | ); 101 | } 102 | }); 103 | }; 104 | 105 | module.exports = runServer; 106 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/lib/babel-preset-webpack-nexus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable global-require */ 2 | module.exports = () => { 3 | const isProduction = process.env.NODE_ENV === 'production'; 4 | const styledPlugin = [ 5 | require('babel-plugin-styled-components'), 6 | { 7 | displayName: !isProduction, 8 | preprocess: false, 9 | ssr: true, 10 | minify: false, 11 | pure: isProduction, 12 | }, 13 | ]; 14 | 15 | return { 16 | presets: [ 17 | [ 18 | require('@babel/preset-env'), 19 | { 20 | // dont convert modules to commonjs, we need to keep it with es6 imports to apply treeshaking 21 | modules: false, 22 | // Allow importing core-js in entrypoint and use browserlist to select polyfills 23 | useBuiltIns: 'entry', // maybe here we can try 'usage' 🤔 24 | corejs: '3.0', 25 | targets: isProduction 26 | ? ['>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9'] 27 | : [ 28 | 'last 2 chrome versions', 29 | 'last 2 firefox versions', 30 | 'last 2 edge versions', 31 | ], 32 | // Exclude transforms that make all code slower 33 | exclude: ['transform-typeof-symbol'], 34 | }, 35 | ], 36 | [ 37 | require('@babel/preset-react'), 38 | { 39 | // Adds component stack to warning messages 40 | // Adds __self attribute to JSX which React will use for some warnings 41 | development: !isProduction, 42 | // Will use the native built-in instead of trying to polyfill 43 | // behavior for any plugins that require one. 44 | useBuiltIns: true, 45 | }, 46 | ], 47 | require('@babel/preset-typescript'), 48 | ], 49 | env: { 50 | test: { 51 | presets: [require('@babel/preset-env')], 52 | plugins: [ 53 | styledPlugin, 54 | require('@babel/plugin-transform-modules-commonjs'), 55 | require('babel-plugin-dynamic-import-node'), 56 | ], 57 | }, 58 | production: { 59 | plugins: [ 60 | styledPlugin, 61 | require('@babel/plugin-transform-react-constant-elements'), 62 | require('babel-plugin-transform-react-remove-prop-types'), 63 | // we need a polyfill to use this plugin!!! 64 | require('@babel/plugin-transform-react-inline-elements'), 65 | [ 66 | require('babel-plugin-transform-remove-console'), 67 | { exclude: ['error', 'warn'] }, 68 | ], 69 | require('babel-plugin-transform-remove-debugger'), 70 | require('babel-plugin-lodash'), 71 | require('babel-plugin-transform-inline-environment-variables'), 72 | require('@babel/plugin-proposal-object-rest-spread'), 73 | ], 74 | }, 75 | }, 76 | plugins: [ 77 | styledPlugin, 78 | // TODO: make work the hot reload with react! 79 | require('react-hot-loader/babel'), 80 | [ 81 | require('@babel/plugin-transform-destructuring'), 82 | { 83 | // Use loose mode for performance: 84 | // https://github.com/facebook/create-react-app/issues/5602 85 | loose: false, 86 | selectiveLoose: [ 87 | 'useState', 88 | 'useEffect', 89 | 'useContext', 90 | 'useReducer', 91 | 'useCallback', 92 | 'useMemo', 93 | 'useRef', 94 | 'useImperativeHandle', 95 | 'useLayoutEffect', 96 | 'useDebugValue', 97 | ], 98 | }, 99 | ], 100 | require('@babel/plugin-proposal-export-default-from'), 101 | [ 102 | require('@babel/plugin-proposal-decorators'), 103 | { 104 | legacy: true, 105 | }, 106 | ], 107 | [ 108 | require('@babel/plugin-proposal-class-properties'), 109 | { 110 | loose: true, 111 | }, 112 | ], 113 | require('@babel/plugin-syntax-dynamic-import'), 114 | require('@babel/plugin-proposal-optional-chaining'), 115 | /** 116 | * Hey! 117 | * transform-runtime plugin only works for build libraries! 118 | * Don't use this for built a web app! 119 | */ 120 | // '@babel/plugin-transform-runtime', 121 | ], 122 | }; 123 | }; 124 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/webpack/configurations/webpack.prod.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const merge = require('webpack-merge'); 3 | const TerserPlugin = require('terser-webpack-plugin'); 4 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 5 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 6 | const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); 7 | 8 | const webpackBase = require('./webpack.base'); 9 | 10 | const createProdConfig = (config = {}, extraConfig) => 11 | merge( 12 | // webpackBase returns a webpack config 13 | webpackBase( 14 | { 15 | mode: 'production', 16 | output: { 17 | filename: `[name].[hash].min.js`, 18 | chunkFilename: `[name].[chunkhash].chunk.js`, 19 | }, 20 | optimization: { 21 | /* https://medium.com/@kenneth_chau/speeding-up-webpack-typescript-incremental-builds-by-7x-3912ba4c1d15 */ 22 | removeAvailableModules: true, 23 | removeEmptyChunks: true, 24 | minimize: true, 25 | minimizer: [ 26 | new TerserPlugin({ 27 | terserOptions: { 28 | warnings: false, 29 | compress: { 30 | comparisons: false, 31 | }, 32 | parse: {}, 33 | mangle: true, 34 | output: { 35 | comments: false, 36 | ascii_only: true, 37 | }, 38 | }, 39 | parallel: true, 40 | cache: true, 41 | // TODO, generate the source map files after the compilation ends 42 | sourceMap: false, 43 | }), 44 | new OptimizeCSSAssetsPlugin({ 45 | cssProcessorPluginOptions: { 46 | preset: ['default', { discardComments: { removeAll: true } }], 47 | }, 48 | }), 49 | ], 50 | nodeEnv: 'production', 51 | // investigate why it is needed 52 | sideEffects: true, 53 | concatenateModules: true, 54 | runtimeChunk: true, 55 | splitChunks: { 56 | name: true, 57 | maxAsyncRequests: 10, 58 | maxInitialRequests: 10, 59 | // investigate why 'all' is the best option 60 | chunks: 'all', 61 | // investigate why 0 is better that 300000 62 | minSize: 0, 63 | // remove this configurations to reduce number of file request 64 | // cacheGroups: { 65 | // vendor: { 66 | // test: /[\\/]node_modules[\\/]/, 67 | // name(module) { 68 | // const packageName = module.context.match( 69 | // /[\\/]node_modules[\\/](.*?)([\\/]|$)/, 70 | // )[1]; 71 | 72 | // return `npm.${packageName.replace('@', '')}`; 73 | // }, 74 | // }, 75 | // }, 76 | }, 77 | }, 78 | plugins: [ 79 | // minify and optimize the html 80 | new HtmlWebpackPlugin({ 81 | template: extraConfig.htmlWebpackPluginTemplate, 82 | minify: { 83 | removeComments: true, 84 | collapseWhitespace: true, 85 | removeRedundantAttributes: true, 86 | useShortDoctype: true, 87 | removeEmptyAttributes: true, 88 | removeStyleLinkTypeAttributes: true, 89 | keepClosingSlash: true, 90 | minifyJS: true, 91 | minifyCSS: true, 92 | minifyURLs: true, 93 | }, 94 | inject: true, 95 | }), 96 | // https://github.com/webpack/webpack/issues/7421 97 | new webpack.HashedModuleIdsPlugin({ 98 | hashFunction: 'sha256', 99 | hashDigest: 'hex', 100 | hashDigestLength: 20, 101 | }), 102 | new MiniCssExtractPlugin({ 103 | filename: '[name].[contenthash].css', 104 | }), 105 | // ignore the .map and favicon files????? 106 | // performance: { 107 | // assetFilter: assetFilename => 108 | // !/(\.map$)|(^(main\.|favicon\.))/.test(assetFilename), 109 | // }, 110 | ], 111 | }, 112 | extraConfig, 113 | ), 114 | config, 115 | ); 116 | 117 | module.exports = createProdConfig; 118 | -------------------------------------------------------------------------------- /packages/nexus-scripts/lib/webpack/configurations/webpack.base.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable global-require */ 2 | const path = require('path'); 3 | 4 | const webpack = require('webpack'); 5 | const merge = require('webpack-merge'); 6 | const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); 7 | const postcssPurgecss = require('@fullhuman/postcss-purgecss'); 8 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 9 | 10 | const createBaseConfig = (config, extraConfig) => { 11 | const isProduction = process.env.NODE_ENV === 'production'; 12 | const purgecss = postcssPurgecss({ 13 | content: [ 14 | path.join(extraConfig.rootAppDirectoryPath, 'src/**/*.js'), 15 | path.join(extraConfig.rootAppDirectoryPath, 'src/**/*.tsx'), 16 | path.join(extraConfig.rootAppDirectoryPath, 'src/**/*.ts'), 17 | path.join(extraConfig.rootAppDirectoryPath, 'src/**/*.html'), 18 | ], 19 | // Include any special characters you're using in this regular expression 20 | defaultExtractor: content => content.match(/[\w-/:]+(? npm install -g webpack-nexus 39 | 40 | yarn 41 | > yarn global add webpack-nexus 42 | 43 | ### Create an app 44 | > webpack-nexus the-name-of-your-project 45 | 46 | You can use the additional argvs to customize the tech stack. 47 | * withApollo: Setup apollo client (v3) and add graphql-tag loader to webpack 48 | * withTailwindcss: Setup tailwind css and add purgecss in production mode. 49 | 50 | > webpack-nexus the-name-of-your-project --withApollo 51 | 52 | > webpack-nexus the-name-of-your-project --withTailwindcss 53 | 54 | It will create a folder with your project name, navigate to it. 55 | 56 | > cd the-name-of-your-project 57 | 58 | ``` 59 | the-name-of-your-project 60 | ├── .vscode 61 | ├── node_modules 62 | ├── package.json 63 | ├── .yarn.lock 64 | ├── .tsconfig 65 | ├── .gitignore 66 | ├── .eslintrc 67 | ├── .eslintignore 68 | ├── dist 69 | └── src 70 | ├── index.tsx 71 | └── index.html 72 | ``` 73 | 74 | ### Start coding with: 75 | > yarn start # or npm start 76 | 77 | To compile in production mode: 78 | > yarn build # or npm run build 79 | 80 | 81 | That's it, happy coding! 🎉 82 | 83 | 84 | More commands are coming... ⏳ 85 | 86 | ## Stack used: 87 | - Webpack 88 | - Babel 89 | - Typescript 90 | - Eslint (typescript-parser) 91 | - React 92 | - vscode configuration 93 | - _Jest: coming soon_ 94 | - _Apollo client: coming soon_ 95 | - _Lint staged + husky: coming soon_ 96 | 97 | ## Project structure 98 | 99 | This project is a mono-repo built with lerna. 100 | 101 | ``` 102 | webpack-nexus 103 | ├── packages 104 | ├──── babel-preset-webpack-nexus 105 | ├──── eslint-config-webpack-nexus 106 | ├──── nexus-scripts 107 | ├──── webpack-nexus 108 | ``` 109 | 110 | 111 | ## Roadmap 112 | 113 | * [x] Finish to implement the main core packages (eslint-config, babel-preset and nexus-scripts, webpack-nexus cli). 114 | * [ ] Finish to implement the rest of comands (withApollo, withTypescript, withTailwind, etc). 115 | * [ ] Finish to implement the interactive cli. Displays questions about the configuration/stack to use. 116 | * [ ] Create the end-to-end tests for the CLI. 117 | * [ ] Create a webpack-nexus.js config file to customize the webpack and babel configurations. 118 | * [ ] Create a documentation of each core package. 119 | 120 | ## Browser support 121 | > \>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9 122 | 123 | ## Some questions: 124 | 125 | ### I don't want to use typescript, javascript is good for me. 126 | 127 | By default it will create a .tsx file in the src folder but you can change it for a .js or .ts file. 128 | 129 | ### Why I created this project? 130 | 131 | Well, actually I have two reasons for this: 132 | 133 | 1. I hate the boilerplate I have to do to start a new project. So I created a cli to start a project in a rapid way. 134 | 2. I want to learn how to build something like create-react-app/next.js. 135 | 136 | ### What is the difference with other projects like create-react-app/react-boilerplate/next.js? 137 | 138 | _I want to learn how to build something like create-react-app/next.js. I'm not trying to compete with the big current cli's/boilerplates_ 139 | 140 | It has a lot of specific configurations used in all of my side-projects, so maybe you are good using the other ones. 141 | 142 | Ok, so, I tested create-react-app and I think it is awesome but I don't like the way it works. 143 | 144 | - You need to _eject_ to add your own webpack or babel plugins. 145 | - You need to _eject_ to configure/add prettier/eslint rules. 146 | - If you have lint errors it will throw a error. Some times I just want to test some egde cases. webpack-nexus doesn't throw a error because it is not configured inside webpack, it is just used to lint the files in vscode. 147 | - It doesn't have support for multi-entries. It can be configured for that, but again, you need to _eject_. 148 | - It has no styled-components installed. 149 | - It has no apollo graphql configured. Graphql is what I always use in my projects. 150 | - It has no react-hot-loader configured. 151 | 152 | 153 | react-boilerplate? I really like that, but I just wanted a simple cli to scaffold my projects and not to clone a repository every time. 154 | 155 | And... It is not comparable with next.js because it is not a react framework 👺... but maybe in the future it can be? 🤔 156 | 157 | ## Inspirations: 158 | - https://github.com/react-boilerplate/react-boilerplate 159 | - https://github.com/facebook/create-react-app 160 | - https://github.com/zeit/next.js 161 | - https://github.com/kentcdodds/kcd-scripts 162 | 163 | ## Issues 164 | This project is still in development. So, if you find some improvements or errors go ahead and create an issue. 😃 165 | -------------------------------------------------------------------------------- /packages/webpack-nexus/README.md: -------------------------------------------------------------------------------- 1 | # webpack-nexus 🐨 [![npm](https://img.shields.io/npm/dm/webpack-nexus)](https://www.npmjs.com/package/webpack-nexus) [![npm](https://img.shields.io/npm/v/webpack-nexus)](https://www.npmjs.com/package/webpack-nexus) [![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/) 2 | 3 | 4 | ### Scaffold your project in a couple of seconds. Webpack, Babel, Typescript, React, _Apollo_, syled-components, Eslint, Prettier and VSCode config out of the box. 5 | 6 | _The most successful dev work smart, not hard._ 7 | 8 | --- 9 | 10 | Webpack nexus is a _simple_ CLI to scaffold your javascript/react projects. 11 | 12 | ## Features 13 | * Webpack: Dev and Prod configurations inspired by the awesome work of [React boilerplate](https://github.com/react-boilerplate/react-boilerplate) 🔨 14 | * Babel: ES6/ES7, Jsx and plugins configured for dev and production mode. ⚛️ 15 | * Styling with styled-components and tailwind (it use purgecss under the hook to remove unused css rules) 💅 16 | * Typing with typescript and eslint ✔️ 17 | * Auto formatter with prettier 🔄 18 | * vscode configured to work with eslint + typescript + prettier 💙 19 | * React-apollo: with withApollo flag in the command line 20 | * _Jest: coming soon.._ 21 | * _Husky + lint-stagged: coming soon..._ 22 | * _webpack-nexus.js: file to configure/overrite the actual webpack/babel configuration, coming soon..._ 23 | * _Setup/configurations for atom and sublime, coming soon..._ 24 | 25 | ## Quick links 26 | - [Usage](#usage) 27 | - [Stack used](#stack-used) 28 | - [Project structure](#project-structure) 29 | - [Roadmap](#roadmap) 30 | - [Browser support](#browser-support) 31 | - [Some questions](#some-questions) 32 | - [Inspirations](#Inspirations) 33 | 34 | ## Usage 35 | 36 | ### Install 37 | npm: 38 | > npm install -g webpack-nexus 39 | 40 | yarn 41 | > yarn global add webpack-nexus 42 | 43 | ### Create an app 44 | > webpack-nexus the-name-of-your-project 45 | 46 | You can use the additional argvs to customize the tech stack. 47 | * withApollo: Setup apollo client (v3) and add graphql-tag loader to webpack 48 | * withTailwindcss: Setup tailwind css and add purgecss in production mode. 49 | 50 | > webpack-nexus the-name-of-your-project --withApollo 51 | > webpack-nexus the-name-of-your-project --withTailwindcss 52 | 53 | It will create a folder with your project name, navigate to it. 54 | 55 | > cd the-name-of-your-project 56 | 57 | ``` 58 | the-name-of-your-project 59 | ├── .vscode 60 | ├── node_modules 61 | ├── package.json 62 | ├── .yarn.lock 63 | ├── .tsconfig 64 | ├── .gitignore 65 | ├── .eslintrc 66 | ├── .eslintignore 67 | ├── dist 68 | └── src 69 | ├── index.tsx 70 | └── index.html 71 | ``` 72 | 73 | ### Start coding with: 74 | > yarn start # or npm start 75 | 76 | To compile in production mode: 77 | > yarn build # or npm run build 78 | 79 | 80 | That's it, happy coding! 🎉 81 | 82 | 83 | More commands are coming... ⏳ 84 | 85 | ## Stack used: 86 | - Webpack 87 | - Babel 88 | - Typescript 89 | - Eslint (typescript-parser) 90 | - React 91 | - vscode configuration 92 | - _Jest: coming soon_ 93 | - _Apollo client: coming soon_ 94 | - _Lint staged + husky: coming soon_ 95 | 96 | ## Project structure 97 | 98 | This project is a mono-repo built with lerna. 99 | 100 | ``` 101 | webpack-nexus 102 | ├── packages 103 | ├──── babel-preset-webpack-nexus 104 | ├──── eslint-config-webpack-nexus 105 | ├──── nexus-scripts 106 | ├──── webpack-nexus 107 | ``` 108 | 109 | 110 | ## Roadmap 111 | 112 | * [x] Finish to implement the main core packages (eslint-config, babel-preset and nexus-scripts, webpack-nexus cli). 113 | * [ ] Finish to implement the rest of comands (withApollo, withTypescript, withTailwind, etc). 114 | * [ ] Finish to implement the interactive cli. Displays questions about the configuration/stack to use. 115 | * [ ] Create the end-to-end tests for the CLI. 116 | * [ ] Create a webpack-nexus.js config file to customize the webpack and babel configurations. 117 | * [ ] Create a documentation of each core package. 118 | 119 | ## Browser support 120 | > \>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9 121 | 122 | ## Some questions: 123 | 124 | ### I don't want to use typescript, javascript is good for me. 125 | 126 | By default it will create a .tsx file in the src folder but you can change it for a .js or .ts file. 127 | 128 | ### Why I created this project? 129 | 130 | Well, actually I have two reasons for this: 131 | 132 | 1. I hate the boilerplate I have to do to start a new project. So I created a cli to start a project in a rapid way. 133 | 2. I want to learn how to build something like create-react-app/next.js. 134 | 135 | ### What is the difference with other projects like create-react-app/react-boilerplate/next.js? 136 | 137 | _I want to learn how to build something like create-react-app/next.js. I'm not trying to compete with the big current cli's/boilerplates_ 138 | 139 | It has a lot of specific configurations used in all of my side-projects, so maybe you are good using the other ones. 140 | 141 | Ok, so, I tested create-react-app and I think it is awesome but I don't like the way it works. 142 | 143 | - You need to _eject_ to add your own webpack or babel plugins. 144 | - You need to _eject_ to configure/add prettier/eslint rules. 145 | - If you have lint errors it will throw a error. Some times I just want to test some egde cases. webpack-nexus doesn't throw a error because it is not configured inside webpack, it is just used to lint the files in vscode. 146 | - It doesn't have support for multi-entries. It can be configured for that, but again, you need to _eject_. 147 | - It has no styled-components installed. 148 | - It has no apollo graphql configured. Graphql is what I always use in my projects. 149 | - It has no react-hot-loader configured. 150 | 151 | 152 | react-boilerplate? I really like that, but I just wanted a simple cli to scaffold my projects and not to clone a repository every time. 153 | 154 | And... It is not comparable with next.js because it is not a react framework 👺... but maybe in the future it can be? 🤔 155 | 156 | ## Inspirations: 157 | - https://github.com/react-boilerplate/react-boilerplate 158 | - https://github.com/facebook/create-react-app 159 | - https://github.com/zeit/next.js 160 | - https://github.com/kentcdodds/kcd-scripts 161 | 162 | ## Issues 163 | This project is still in development. So, if you find some improvements or errors go ahead and create an issue. 😃 -------------------------------------------------------------------------------- /packages/webpack-nexus/lib/webpack-nexus.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable newline-after-var */ 2 | const fs = require('fs'); 3 | const path = require('path'); 4 | // const { exec, execSync } = require('child_process'); 5 | 6 | // const inquirer = require('inquirer'); 7 | const chalk = require('chalk'); 8 | // const ora = require('ora'); 9 | const parseArgs = require('minimist'); 10 | 11 | const createFolder = require('./utils/createFolder'); 12 | const installNpmPackages = require('./utils/installNpmPackages'); 13 | const stringifyNpmPackages = require('./utils/stringifyNpmPackages'); 14 | 15 | const getPackageJsonTemplate = require('./templateFiles/getPackageJsonTemplate'); 16 | const getGitIgnoreContent = require('./templateFiles/getGitIgnoreTemplate'); 17 | const getHtmlTemplate = require('./templateFiles/getHtmlTemplate'); 18 | const getEslintTemplate = require('./templateFiles/getEslintTemplate'); 19 | const getTsConfigTemplate = require('./templateFiles/getTsConfigTemplate'); 20 | const getVsCodeConfig = require('./templateFiles/getVsCodeConfig'); 21 | 22 | // 1. accept the name of the project like second param 23 | const argv = parseArgs(process.argv.slice(2), { 24 | alias: { 'package-manager': 'pm' }, 25 | }); 26 | 27 | const projectName = argv._[0]; 28 | const { withApollo, withTailwindcss } = argv; 29 | 30 | async function main() { 31 | if (!projectName) { 32 | console.log( 33 | chalk.red( 34 | 'We need the name of the project :(.\nEx: webpack-nexus my-new-project', 35 | ), 36 | ); 37 | process.exit(1); 38 | } 39 | 40 | try { 41 | const folderPath = path.join(process.cwd(), projectName); 42 | 43 | // 2. Create the folder with the name of the project 44 | await createFolder({ 45 | pathToCreate: folderPath, 46 | folderName: projectName, 47 | }); 48 | 49 | /** 50 | * 3. Copy the main folders and files 51 | * - package.json: react, react-dom, nexus-scripts, styled-components 52 | * - .gitignore 53 | */ 54 | // ======================== package.json ========================= // 55 | const packageJsonPath = path.join(folderPath, 'package.json'); 56 | const extraParams = [ 57 | withTailwindcss ? '--withTailwindcss' : '', 58 | withApollo ? '--withGraphql' : '', 59 | ]; 60 | const packageJsonContent = getPackageJsonTemplate({ 61 | projectName, 62 | extraNexusArgs: extraParams.join(' '), 63 | }); 64 | fs.writeFileSync(packageJsonPath, packageJsonContent); 65 | 66 | // ======================== .gitignore ========================= // 67 | const gitignoreDestPath = path.join(folderPath, '.gitignore'); 68 | const gitIgnoreContent = getGitIgnoreContent(); 69 | fs.writeFileSync(gitignoreDestPath, gitIgnoreContent); 70 | 71 | console.log( 72 | chalk.green(`> Success to create the package.json and .gitignore files`), 73 | ); 74 | 75 | // install the packages inside the folder 76 | const npmCorePackages = { 77 | react: '16.13.1', 78 | 'react-dom': '16.13.1', 79 | 'styled-components': '5.1.1', 80 | 'nexus-scripts': '', // always install the last version 81 | '@types/react': '16.9.42', 82 | '@types/react-dom': '16.9.8', 83 | '@types/styled-components': '5.1.1', 84 | '@hot-loader/react-dom': '16.13.0', 85 | }; 86 | const apolloPackages = { 87 | 'react-apollo': '3.1.5', 88 | '@apollo/react-hooks': '3.1.5', 89 | 'apollo-client': '2.6.10', 90 | 'apollo-link': '1.2.14', 91 | 'apollo-cache-inmemory': '1.6.6', 92 | 'apollo-link-http': '1.5.17', 93 | 'graphql-tag': '2.10.3', 94 | graphql: '14.5.8', 95 | 'apollo-link-error': '1.1.13', 96 | }; 97 | 98 | const coreNpmPackages = stringifyNpmPackages( 99 | withApollo 100 | ? { 101 | ...npmCorePackages, 102 | ...apolloPackages, 103 | } 104 | : npmCorePackages, 105 | ); 106 | await installNpmPackages({ 107 | packages: coreNpmPackages, 108 | path: folderPath, 109 | areDevDependencies: false, 110 | }); 111 | 112 | // we need to install the dependencies of the eslint plugin 113 | const devPackages = { 114 | '@typescript-eslint/eslint-plugin': '^3.5.0', 115 | '@typescript-eslint/parser': '^3.5.0', 116 | 'confusing-browser-globals': '^1.0.9', 117 | eslint: '^6.7.1', 118 | 'eslint-config-airbnb': '^18.0.1', 119 | 'eslint-config-prettier': '^6.10.0', 120 | 'eslint-plugin-import': '^2.18.2', 121 | 'eslint-plugin-jsx-a11y': '^6.2.3', 122 | 'eslint-plugin-prettier': '^3.1.1', 123 | 'eslint-plugin-react': '^7.15.1', 124 | 'eslint-plugin-react-hooks': '^4.0.5', 125 | prettier: '^1.19.1', 126 | typescript: '^3.9.5', 127 | 'node-sass': '4.14.1', 128 | 'typescript-styled-plugin': '^0.15.0', 129 | }; 130 | const devPackagesString = stringifyNpmPackages(devPackages); 131 | 132 | await installNpmPackages({ 133 | packages: `eslint-config-webpack-nexus ${devPackagesString}`, 134 | path: folderPath, 135 | areDevDependencies: true, 136 | }); 137 | 138 | // 4. Create the src/index.tsx and src/index.html files 139 | // ======================== index.html ========================= // 140 | const srcFolderPath = path.join(folderPath, 'src'); 141 | fs.mkdirSync(srcFolderPath); 142 | 143 | // TODO: Replace all getTemplateThing with readFileSync to use real js files like templates 144 | const html = getHtmlTemplate({ projectName }); 145 | const htmlPath = path.join(srcFolderPath, 'index.html'); 146 | fs.writeFileSync(htmlPath, html); 147 | 148 | // ======================== react index.(js|tsx) ========================= // 149 | // TODO: Permit to change this from cli args 150 | const jsExtension = 'js'; 151 | const jsPath = path.join(srcFolderPath, `index.${jsExtension}`); 152 | 153 | const extraImports = [withTailwindcss ? "import './tailwind.css';\n" : '']; 154 | 155 | let content = ''; 156 | if (withApollo) { 157 | content = fs.readFileSync( 158 | path.resolve(__dirname, './templateFiles/react/apollo.js'), 159 | 'utf8', 160 | ); 161 | } else { 162 | content = fs.readFileSync( 163 | path.resolve(__dirname, './templateFiles/react/default.js'), 164 | 'utf8', 165 | ); 166 | } 167 | fs.writeFileSync( 168 | jsPath, 169 | `${content.trim().replace('[extraImports];', extraImports.join(''))}\n`, 170 | ); 171 | console.log( 172 | chalk.green( 173 | `> Success to create the index.${jsExtension} and index.html files`, 174 | ), 175 | ); 176 | 177 | // ======================== tailwind.css ================= // 178 | if (withTailwindcss) { 179 | const cssPath = path.join(srcFolderPath, `tailwind.css`); 180 | const cssTemplate = fs.readFileSync( 181 | path.resolve(__dirname, './templateFiles/tailwind.css'), 182 | 'utf8', 183 | ); 184 | fs.writeFileSync(cssPath, `${cssTemplate.trim()}\n`); 185 | console.log(chalk.green(`> Success to configurate tailwind.`)); 186 | } 187 | 188 | /** 189 | * 5. Copy rest of configuration files: 190 | * - .eslintrc.js 191 | * - .eslintignore 192 | */ 193 | // ======================== .eslintrc.js ========================= // 194 | const eslint = getEslintTemplate(); 195 | const eslintPath = path.join(folderPath, '.eslintrc.js'); 196 | fs.writeFileSync(eslintPath, eslint); 197 | 198 | // ======================== .eslintignore ========================= // 199 | const eslintignore = ` 200 | !.*.js 201 | !.*.ts 202 | !.*.tsx 203 | node_modules/ 204 | coverage/ 205 | dist/ 206 | build/ 207 | `; 208 | const eslintignorePath = path.join(folderPath, '.eslintignore'); 209 | fs.writeFileSync(eslintignorePath, eslintignore); 210 | console.log(chalk.green(`> Success to create the eslint config files`)); 211 | 212 | // ======================== tsconfig.json ========================= // 213 | const tsConfig = getTsConfigTemplate(); 214 | const tsConfigPath = path.join(folderPath, 'tsconfig.json'); 215 | fs.writeFileSync(tsConfigPath, tsConfig); 216 | console.log(chalk.green(`> Success to create the tsconfig.json file`)); 217 | 218 | // ======================== Configure vscode (eslint + ts) ========================= // 219 | const vscodeConfigFolderPath = path.join(folderPath, '.vscode'); 220 | fs.mkdirSync(vscodeConfigFolderPath); 221 | const vsConfig = getVsCodeConfig(); 222 | const vsConfigPath = path.join(vscodeConfigFolderPath, 'settings.json'); 223 | fs.writeFileSync(vsConfigPath, vsConfig); 224 | } catch (error) { 225 | console.error(error); 226 | process.exit(1); 227 | } 228 | } 229 | 230 | main() 231 | .then(() => { 232 | console.log("> Alright, it's done. Enjoy your app 😄"); 233 | }) 234 | .catch(console.error); 235 | -------------------------------------------------------------------------------- /packages/webpack-nexus/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-nexus", 3 | "version": "1.4.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/chalk": { 8 | "version": "2.2.0", 9 | "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz", 10 | "integrity": "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==", 11 | "requires": { 12 | "chalk": "*" 13 | } 14 | }, 15 | "ansi-escapes": { 16 | "version": "4.3.1", 17 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 18 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 19 | "requires": { 20 | "type-fest": "^0.11.0" 21 | } 22 | }, 23 | "ansi-regex": { 24 | "version": "5.0.0", 25 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 26 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 27 | }, 28 | "ansi-styles": { 29 | "version": "3.2.1", 30 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 31 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 32 | "requires": { 33 | "color-convert": "^1.9.0" 34 | } 35 | }, 36 | "chalk": { 37 | "version": "2.4.2", 38 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 39 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 40 | "requires": { 41 | "ansi-styles": "^3.2.1", 42 | "escape-string-regexp": "^1.0.5", 43 | "supports-color": "^5.3.0" 44 | } 45 | }, 46 | "chardet": { 47 | "version": "0.7.0", 48 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 49 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 50 | }, 51 | "cli-cursor": { 52 | "version": "3.1.0", 53 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 54 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 55 | "requires": { 56 | "restore-cursor": "^3.1.0" 57 | } 58 | }, 59 | "cli-spinners": { 60 | "version": "2.3.0", 61 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", 62 | "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==" 63 | }, 64 | "cli-width": { 65 | "version": "2.2.1", 66 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 67 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" 68 | }, 69 | "clone": { 70 | "version": "1.0.4", 71 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 72 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 73 | }, 74 | "color-convert": { 75 | "version": "1.9.3", 76 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 77 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 78 | "requires": { 79 | "color-name": "1.1.3" 80 | } 81 | }, 82 | "color-name": { 83 | "version": "1.1.3", 84 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 85 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 86 | }, 87 | "defaults": { 88 | "version": "1.0.3", 89 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 90 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 91 | "requires": { 92 | "clone": "^1.0.2" 93 | } 94 | }, 95 | "emoji-regex": { 96 | "version": "8.0.0", 97 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 98 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 99 | }, 100 | "escape-string-regexp": { 101 | "version": "1.0.5", 102 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 103 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 104 | }, 105 | "external-editor": { 106 | "version": "3.1.0", 107 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 108 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 109 | "requires": { 110 | "chardet": "^0.7.0", 111 | "iconv-lite": "^0.4.24", 112 | "tmp": "^0.0.33" 113 | } 114 | }, 115 | "figures": { 116 | "version": "3.2.0", 117 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 118 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 119 | "requires": { 120 | "escape-string-regexp": "^1.0.5" 121 | } 122 | }, 123 | "has-flag": { 124 | "version": "3.0.0", 125 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 126 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 127 | }, 128 | "iconv-lite": { 129 | "version": "0.4.24", 130 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 131 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 132 | "requires": { 133 | "safer-buffer": ">= 2.1.2 < 3" 134 | } 135 | }, 136 | "inquirer": { 137 | "version": "7.0.0", 138 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", 139 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", 140 | "requires": { 141 | "ansi-escapes": "^4.2.1", 142 | "chalk": "^2.4.2", 143 | "cli-cursor": "^3.1.0", 144 | "cli-width": "^2.0.0", 145 | "external-editor": "^3.0.3", 146 | "figures": "^3.0.0", 147 | "lodash": "^4.17.15", 148 | "mute-stream": "0.0.8", 149 | "run-async": "^2.2.0", 150 | "rxjs": "^6.4.0", 151 | "string-width": "^4.1.0", 152 | "strip-ansi": "^5.1.0", 153 | "through": "^2.3.6" 154 | } 155 | }, 156 | "is-fullwidth-code-point": { 157 | "version": "3.0.0", 158 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 159 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 160 | }, 161 | "is-interactive": { 162 | "version": "1.0.0", 163 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 164 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" 165 | }, 166 | "lodash": { 167 | "version": "4.17.15", 168 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 169 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 170 | }, 171 | "log-symbols": { 172 | "version": "3.0.0", 173 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", 174 | "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", 175 | "requires": { 176 | "chalk": "^2.4.2" 177 | } 178 | }, 179 | "mimic-fn": { 180 | "version": "2.1.0", 181 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 182 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 183 | }, 184 | "minimist": { 185 | "version": "1.2.5", 186 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 187 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 188 | }, 189 | "mute-stream": { 190 | "version": "0.0.8", 191 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 192 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 193 | }, 194 | "onetime": { 195 | "version": "5.1.0", 196 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 197 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 198 | "requires": { 199 | "mimic-fn": "^2.1.0" 200 | } 201 | }, 202 | "ora": { 203 | "version": "4.0.1", 204 | "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.1.tgz", 205 | "integrity": "sha512-yQv2q0GO8rqP2wzdOxpu0FxUmRg4z/Lw0m6uSpukPJXoOMaQzrIpl+STKHzjryFP5ExQC56+y8+yXPar2iezaw==", 206 | "requires": { 207 | "chalk": "^2.4.2", 208 | "cli-cursor": "^3.1.0", 209 | "cli-spinners": "^2.2.0", 210 | "is-interactive": "^1.0.0", 211 | "log-symbols": "^3.0.0", 212 | "strip-ansi": "^5.2.0", 213 | "wcwidth": "^1.0.1" 214 | } 215 | }, 216 | "os-tmpdir": { 217 | "version": "1.0.2", 218 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 219 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 220 | }, 221 | "restore-cursor": { 222 | "version": "3.1.0", 223 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 224 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 225 | "requires": { 226 | "onetime": "^5.1.0", 227 | "signal-exit": "^3.0.2" 228 | } 229 | }, 230 | "run-async": { 231 | "version": "2.4.1", 232 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 233 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" 234 | }, 235 | "rxjs": { 236 | "version": "6.6.0", 237 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", 238 | "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", 239 | "requires": { 240 | "tslib": "^1.9.0" 241 | } 242 | }, 243 | "safer-buffer": { 244 | "version": "2.1.2", 245 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 246 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 247 | }, 248 | "signal-exit": { 249 | "version": "3.0.3", 250 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 251 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 252 | }, 253 | "string-width": { 254 | "version": "4.2.0", 255 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 256 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 257 | "requires": { 258 | "emoji-regex": "^8.0.0", 259 | "is-fullwidth-code-point": "^3.0.0", 260 | "strip-ansi": "^6.0.0" 261 | }, 262 | "dependencies": { 263 | "strip-ansi": { 264 | "version": "6.0.0", 265 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 266 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 267 | "requires": { 268 | "ansi-regex": "^5.0.0" 269 | } 270 | } 271 | } 272 | }, 273 | "strip-ansi": { 274 | "version": "5.2.0", 275 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 276 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 277 | "requires": { 278 | "ansi-regex": "^4.1.0" 279 | }, 280 | "dependencies": { 281 | "ansi-regex": { 282 | "version": "4.1.0", 283 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 284 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 285 | } 286 | } 287 | }, 288 | "supports-color": { 289 | "version": "5.5.0", 290 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 291 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 292 | "requires": { 293 | "has-flag": "^3.0.0" 294 | } 295 | }, 296 | "through": { 297 | "version": "2.3.8", 298 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 299 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 300 | }, 301 | "tmp": { 302 | "version": "0.0.33", 303 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 304 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 305 | "requires": { 306 | "os-tmpdir": "~1.0.2" 307 | } 308 | }, 309 | "tslib": { 310 | "version": "1.13.0", 311 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 312 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" 313 | }, 314 | "type-fest": { 315 | "version": "0.11.0", 316 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 317 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" 318 | }, 319 | "wcwidth": { 320 | "version": "1.0.1", 321 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 322 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 323 | "requires": { 324 | "defaults": "^1.0.3" 325 | } 326 | } 327 | } 328 | } 329 | -------------------------------------------------------------------------------- /packages/babel-preset-webpack-nexus/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-preset-webpack-nexus", 3 | "version": "1.4.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "requires": { 12 | "@babel/highlight": "^7.10.4" 13 | } 14 | }, 15 | "@babel/compat-data": { 16 | "version": "7.10.4", 17 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.4.tgz", 18 | "integrity": "sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw==", 19 | "requires": { 20 | "browserslist": "^4.12.0", 21 | "invariant": "^2.2.4", 22 | "semver": "^5.5.0" 23 | } 24 | }, 25 | "@babel/core": { 26 | "version": "7.10.4", 27 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.4.tgz", 28 | "integrity": "sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA==", 29 | "requires": { 30 | "@babel/code-frame": "^7.10.4", 31 | "@babel/generator": "^7.10.4", 32 | "@babel/helper-module-transforms": "^7.10.4", 33 | "@babel/helpers": "^7.10.4", 34 | "@babel/parser": "^7.10.4", 35 | "@babel/template": "^7.10.4", 36 | "@babel/traverse": "^7.10.4", 37 | "@babel/types": "^7.10.4", 38 | "convert-source-map": "^1.7.0", 39 | "debug": "^4.1.0", 40 | "gensync": "^1.0.0-beta.1", 41 | "json5": "^2.1.2", 42 | "lodash": "^4.17.13", 43 | "resolve": "^1.3.2", 44 | "semver": "^5.4.1", 45 | "source-map": "^0.5.0" 46 | } 47 | }, 48 | "@babel/generator": { 49 | "version": "7.10.4", 50 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", 51 | "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", 52 | "requires": { 53 | "@babel/types": "^7.10.4", 54 | "jsesc": "^2.5.1", 55 | "lodash": "^4.17.13", 56 | "source-map": "^0.5.0" 57 | } 58 | }, 59 | "@babel/helper-annotate-as-pure": { 60 | "version": "7.10.4", 61 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", 62 | "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", 63 | "requires": { 64 | "@babel/types": "^7.10.4" 65 | } 66 | }, 67 | "@babel/helper-builder-binary-assignment-operator-visitor": { 68 | "version": "7.10.4", 69 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", 70 | "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", 71 | "requires": { 72 | "@babel/helper-explode-assignable-expression": "^7.10.4", 73 | "@babel/types": "^7.10.4" 74 | } 75 | }, 76 | "@babel/helper-builder-react-jsx": { 77 | "version": "7.10.4", 78 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", 79 | "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", 80 | "requires": { 81 | "@babel/helper-annotate-as-pure": "^7.10.4", 82 | "@babel/types": "^7.10.4" 83 | } 84 | }, 85 | "@babel/helper-builder-react-jsx-experimental": { 86 | "version": "7.10.4", 87 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz", 88 | "integrity": "sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q==", 89 | "requires": { 90 | "@babel/helper-annotate-as-pure": "^7.10.4", 91 | "@babel/helper-module-imports": "^7.10.4", 92 | "@babel/types": "^7.10.4" 93 | } 94 | }, 95 | "@babel/helper-compilation-targets": { 96 | "version": "7.10.4", 97 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", 98 | "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", 99 | "requires": { 100 | "@babel/compat-data": "^7.10.4", 101 | "browserslist": "^4.12.0", 102 | "invariant": "^2.2.4", 103 | "levenary": "^1.1.1", 104 | "semver": "^5.5.0" 105 | } 106 | }, 107 | "@babel/helper-create-class-features-plugin": { 108 | "version": "7.10.4", 109 | "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz", 110 | "integrity": "sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ==", 111 | "requires": { 112 | "@babel/helper-function-name": "^7.10.4", 113 | "@babel/helper-member-expression-to-functions": "^7.10.4", 114 | "@babel/helper-optimise-call-expression": "^7.10.4", 115 | "@babel/helper-plugin-utils": "^7.10.4", 116 | "@babel/helper-replace-supers": "^7.10.4", 117 | "@babel/helper-split-export-declaration": "^7.10.4" 118 | } 119 | }, 120 | "@babel/helper-create-regexp-features-plugin": { 121 | "version": "7.10.4", 122 | "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", 123 | "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", 124 | "requires": { 125 | "@babel/helper-annotate-as-pure": "^7.10.4", 126 | "@babel/helper-regex": "^7.10.4", 127 | "regexpu-core": "^4.7.0" 128 | } 129 | }, 130 | "@babel/helper-define-map": { 131 | "version": "7.10.4", 132 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz", 133 | "integrity": "sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA==", 134 | "requires": { 135 | "@babel/helper-function-name": "^7.10.4", 136 | "@babel/types": "^7.10.4", 137 | "lodash": "^4.17.13" 138 | } 139 | }, 140 | "@babel/helper-explode-assignable-expression": { 141 | "version": "7.10.4", 142 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", 143 | "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", 144 | "requires": { 145 | "@babel/traverse": "^7.10.4", 146 | "@babel/types": "^7.10.4" 147 | } 148 | }, 149 | "@babel/helper-function-name": { 150 | "version": "7.10.4", 151 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", 152 | "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", 153 | "requires": { 154 | "@babel/helper-get-function-arity": "^7.10.4", 155 | "@babel/template": "^7.10.4", 156 | "@babel/types": "^7.10.4" 157 | } 158 | }, 159 | "@babel/helper-get-function-arity": { 160 | "version": "7.10.4", 161 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", 162 | "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", 163 | "requires": { 164 | "@babel/types": "^7.10.4" 165 | } 166 | }, 167 | "@babel/helper-hoist-variables": { 168 | "version": "7.10.4", 169 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", 170 | "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", 171 | "requires": { 172 | "@babel/types": "^7.10.4" 173 | } 174 | }, 175 | "@babel/helper-member-expression-to-functions": { 176 | "version": "7.10.4", 177 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz", 178 | "integrity": "sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A==", 179 | "requires": { 180 | "@babel/types": "^7.10.4" 181 | } 182 | }, 183 | "@babel/helper-module-imports": { 184 | "version": "7.10.4", 185 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", 186 | "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", 187 | "requires": { 188 | "@babel/types": "^7.10.4" 189 | } 190 | }, 191 | "@babel/helper-module-transforms": { 192 | "version": "7.10.4", 193 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz", 194 | "integrity": "sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==", 195 | "requires": { 196 | "@babel/helper-module-imports": "^7.10.4", 197 | "@babel/helper-replace-supers": "^7.10.4", 198 | "@babel/helper-simple-access": "^7.10.4", 199 | "@babel/helper-split-export-declaration": "^7.10.4", 200 | "@babel/template": "^7.10.4", 201 | "@babel/types": "^7.10.4", 202 | "lodash": "^4.17.13" 203 | } 204 | }, 205 | "@babel/helper-optimise-call-expression": { 206 | "version": "7.10.4", 207 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", 208 | "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", 209 | "requires": { 210 | "@babel/types": "^7.10.4" 211 | } 212 | }, 213 | "@babel/helper-plugin-utils": { 214 | "version": "7.10.4", 215 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", 216 | "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" 217 | }, 218 | "@babel/helper-regex": { 219 | "version": "7.10.4", 220 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.4.tgz", 221 | "integrity": "sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ==", 222 | "requires": { 223 | "lodash": "^4.17.13" 224 | } 225 | }, 226 | "@babel/helper-remap-async-to-generator": { 227 | "version": "7.10.4", 228 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", 229 | "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", 230 | "requires": { 231 | "@babel/helper-annotate-as-pure": "^7.10.4", 232 | "@babel/helper-wrap-function": "^7.10.4", 233 | "@babel/template": "^7.10.4", 234 | "@babel/traverse": "^7.10.4", 235 | "@babel/types": "^7.10.4" 236 | } 237 | }, 238 | "@babel/helper-replace-supers": { 239 | "version": "7.10.4", 240 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", 241 | "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", 242 | "requires": { 243 | "@babel/helper-member-expression-to-functions": "^7.10.4", 244 | "@babel/helper-optimise-call-expression": "^7.10.4", 245 | "@babel/traverse": "^7.10.4", 246 | "@babel/types": "^7.10.4" 247 | } 248 | }, 249 | "@babel/helper-simple-access": { 250 | "version": "7.10.4", 251 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", 252 | "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", 253 | "requires": { 254 | "@babel/template": "^7.10.4", 255 | "@babel/types": "^7.10.4" 256 | } 257 | }, 258 | "@babel/helper-split-export-declaration": { 259 | "version": "7.10.4", 260 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", 261 | "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", 262 | "requires": { 263 | "@babel/types": "^7.10.4" 264 | } 265 | }, 266 | "@babel/helper-validator-identifier": { 267 | "version": "7.10.4", 268 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 269 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" 270 | }, 271 | "@babel/helper-wrap-function": { 272 | "version": "7.10.4", 273 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", 274 | "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", 275 | "requires": { 276 | "@babel/helper-function-name": "^7.10.4", 277 | "@babel/template": "^7.10.4", 278 | "@babel/traverse": "^7.10.4", 279 | "@babel/types": "^7.10.4" 280 | } 281 | }, 282 | "@babel/helpers": { 283 | "version": "7.10.4", 284 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", 285 | "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", 286 | "requires": { 287 | "@babel/template": "^7.10.4", 288 | "@babel/traverse": "^7.10.4", 289 | "@babel/types": "^7.10.4" 290 | } 291 | }, 292 | "@babel/highlight": { 293 | "version": "7.10.4", 294 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 295 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 296 | "requires": { 297 | "@babel/helper-validator-identifier": "^7.10.4", 298 | "chalk": "^2.0.0", 299 | "js-tokens": "^4.0.0" 300 | } 301 | }, 302 | "@babel/parser": { 303 | "version": "7.10.4", 304 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", 305 | "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" 306 | }, 307 | "@babel/plugin-proposal-async-generator-functions": { 308 | "version": "7.10.4", 309 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz", 310 | "integrity": "sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg==", 311 | "requires": { 312 | "@babel/helper-plugin-utils": "^7.10.4", 313 | "@babel/helper-remap-async-to-generator": "^7.10.4", 314 | "@babel/plugin-syntax-async-generators": "^7.8.0" 315 | } 316 | }, 317 | "@babel/plugin-proposal-class-properties": { 318 | "version": "7.10.4", 319 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", 320 | "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", 321 | "requires": { 322 | "@babel/helper-create-class-features-plugin": "^7.10.4", 323 | "@babel/helper-plugin-utils": "^7.10.4" 324 | } 325 | }, 326 | "@babel/plugin-proposal-decorators": { 327 | "version": "7.10.4", 328 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.4.tgz", 329 | "integrity": "sha512-JHTWjQngOPv+ZQQqOGv2x6sCCr4IYWy7S1/VH6BE9ZfkoLrdQ2GpEP3tfb5M++G9PwvqjhY8VC/C3tXm+/eHvA==", 330 | "requires": { 331 | "@babel/helper-create-class-features-plugin": "^7.10.4", 332 | "@babel/helper-plugin-utils": "^7.10.4", 333 | "@babel/plugin-syntax-decorators": "^7.10.4" 334 | } 335 | }, 336 | "@babel/plugin-proposal-dynamic-import": { 337 | "version": "7.10.4", 338 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", 339 | "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", 340 | "requires": { 341 | "@babel/helper-plugin-utils": "^7.10.4", 342 | "@babel/plugin-syntax-dynamic-import": "^7.8.0" 343 | }, 344 | "dependencies": { 345 | "@babel/plugin-syntax-dynamic-import": { 346 | "version": "7.8.3", 347 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", 348 | "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", 349 | "requires": { 350 | "@babel/helper-plugin-utils": "^7.8.0" 351 | } 352 | } 353 | } 354 | }, 355 | "@babel/plugin-proposal-export-default-from": { 356 | "version": "7.2.0", 357 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz", 358 | "integrity": "sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug==", 359 | "requires": { 360 | "@babel/helper-plugin-utils": "^7.0.0", 361 | "@babel/plugin-syntax-export-default-from": "^7.2.0" 362 | } 363 | }, 364 | "@babel/plugin-proposal-json-strings": { 365 | "version": "7.10.4", 366 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", 367 | "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", 368 | "requires": { 369 | "@babel/helper-plugin-utils": "^7.10.4", 370 | "@babel/plugin-syntax-json-strings": "^7.8.0" 371 | } 372 | }, 373 | "@babel/plugin-proposal-nullish-coalescing-operator": { 374 | "version": "7.10.4", 375 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", 376 | "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", 377 | "requires": { 378 | "@babel/helper-plugin-utils": "^7.10.4", 379 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" 380 | } 381 | }, 382 | "@babel/plugin-proposal-numeric-separator": { 383 | "version": "7.10.4", 384 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", 385 | "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", 386 | "requires": { 387 | "@babel/helper-plugin-utils": "^7.10.4", 388 | "@babel/plugin-syntax-numeric-separator": "^7.10.4" 389 | } 390 | }, 391 | "@babel/plugin-proposal-object-rest-spread": { 392 | "version": "7.10.4", 393 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", 394 | "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", 395 | "requires": { 396 | "@babel/helper-plugin-utils": "^7.10.4", 397 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0", 398 | "@babel/plugin-transform-parameters": "^7.10.4" 399 | } 400 | }, 401 | "@babel/plugin-proposal-optional-catch-binding": { 402 | "version": "7.10.4", 403 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", 404 | "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", 405 | "requires": { 406 | "@babel/helper-plugin-utils": "^7.10.4", 407 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" 408 | } 409 | }, 410 | "@babel/plugin-proposal-optional-chaining": { 411 | "version": "7.10.4", 412 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", 413 | "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", 414 | "requires": { 415 | "@babel/helper-plugin-utils": "^7.10.4", 416 | "@babel/plugin-syntax-optional-chaining": "^7.8.0" 417 | } 418 | }, 419 | "@babel/plugin-proposal-private-methods": { 420 | "version": "7.10.4", 421 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", 422 | "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", 423 | "requires": { 424 | "@babel/helper-create-class-features-plugin": "^7.10.4", 425 | "@babel/helper-plugin-utils": "^7.10.4" 426 | } 427 | }, 428 | "@babel/plugin-proposal-unicode-property-regex": { 429 | "version": "7.10.4", 430 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", 431 | "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", 432 | "requires": { 433 | "@babel/helper-create-regexp-features-plugin": "^7.10.4", 434 | "@babel/helper-plugin-utils": "^7.10.4" 435 | } 436 | }, 437 | "@babel/plugin-syntax-async-generators": { 438 | "version": "7.8.4", 439 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 440 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 441 | "requires": { 442 | "@babel/helper-plugin-utils": "^7.8.0" 443 | } 444 | }, 445 | "@babel/plugin-syntax-class-properties": { 446 | "version": "7.10.4", 447 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", 448 | "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", 449 | "requires": { 450 | "@babel/helper-plugin-utils": "^7.10.4" 451 | } 452 | }, 453 | "@babel/plugin-syntax-decorators": { 454 | "version": "7.10.4", 455 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz", 456 | "integrity": "sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw==", 457 | "requires": { 458 | "@babel/helper-plugin-utils": "^7.10.4" 459 | } 460 | }, 461 | "@babel/plugin-syntax-dynamic-import": { 462 | "version": "7.2.0", 463 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", 464 | "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", 465 | "requires": { 466 | "@babel/helper-plugin-utils": "^7.0.0" 467 | } 468 | }, 469 | "@babel/plugin-syntax-export-default-from": { 470 | "version": "7.10.4", 471 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz", 472 | "integrity": "sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA==", 473 | "requires": { 474 | "@babel/helper-plugin-utils": "^7.10.4" 475 | } 476 | }, 477 | "@babel/plugin-syntax-json-strings": { 478 | "version": "7.8.3", 479 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 480 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 481 | "requires": { 482 | "@babel/helper-plugin-utils": "^7.8.0" 483 | } 484 | }, 485 | "@babel/plugin-syntax-jsx": { 486 | "version": "7.10.4", 487 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", 488 | "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", 489 | "requires": { 490 | "@babel/helper-plugin-utils": "^7.10.4" 491 | } 492 | }, 493 | "@babel/plugin-syntax-nullish-coalescing-operator": { 494 | "version": "7.8.3", 495 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 496 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 497 | "requires": { 498 | "@babel/helper-plugin-utils": "^7.8.0" 499 | } 500 | }, 501 | "@babel/plugin-syntax-numeric-separator": { 502 | "version": "7.10.4", 503 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", 504 | "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", 505 | "requires": { 506 | "@babel/helper-plugin-utils": "^7.10.4" 507 | } 508 | }, 509 | "@babel/plugin-syntax-object-rest-spread": { 510 | "version": "7.8.3", 511 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 512 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 513 | "requires": { 514 | "@babel/helper-plugin-utils": "^7.8.0" 515 | } 516 | }, 517 | "@babel/plugin-syntax-optional-catch-binding": { 518 | "version": "7.8.3", 519 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 520 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 521 | "requires": { 522 | "@babel/helper-plugin-utils": "^7.8.0" 523 | } 524 | }, 525 | "@babel/plugin-syntax-optional-chaining": { 526 | "version": "7.8.3", 527 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 528 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 529 | "requires": { 530 | "@babel/helper-plugin-utils": "^7.8.0" 531 | } 532 | }, 533 | "@babel/plugin-syntax-top-level-await": { 534 | "version": "7.10.4", 535 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", 536 | "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", 537 | "requires": { 538 | "@babel/helper-plugin-utils": "^7.10.4" 539 | } 540 | }, 541 | "@babel/plugin-syntax-typescript": { 542 | "version": "7.10.4", 543 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", 544 | "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", 545 | "requires": { 546 | "@babel/helper-plugin-utils": "^7.10.4" 547 | } 548 | }, 549 | "@babel/plugin-transform-arrow-functions": { 550 | "version": "7.10.4", 551 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", 552 | "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", 553 | "requires": { 554 | "@babel/helper-plugin-utils": "^7.10.4" 555 | } 556 | }, 557 | "@babel/plugin-transform-async-to-generator": { 558 | "version": "7.10.4", 559 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", 560 | "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", 561 | "requires": { 562 | "@babel/helper-module-imports": "^7.10.4", 563 | "@babel/helper-plugin-utils": "^7.10.4", 564 | "@babel/helper-remap-async-to-generator": "^7.10.4" 565 | } 566 | }, 567 | "@babel/plugin-transform-block-scoped-functions": { 568 | "version": "7.10.4", 569 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", 570 | "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", 571 | "requires": { 572 | "@babel/helper-plugin-utils": "^7.10.4" 573 | } 574 | }, 575 | "@babel/plugin-transform-block-scoping": { 576 | "version": "7.10.4", 577 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz", 578 | "integrity": "sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A==", 579 | "requires": { 580 | "@babel/helper-plugin-utils": "^7.10.4", 581 | "lodash": "^4.17.13" 582 | } 583 | }, 584 | "@babel/plugin-transform-classes": { 585 | "version": "7.10.4", 586 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", 587 | "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", 588 | "requires": { 589 | "@babel/helper-annotate-as-pure": "^7.10.4", 590 | "@babel/helper-define-map": "^7.10.4", 591 | "@babel/helper-function-name": "^7.10.4", 592 | "@babel/helper-optimise-call-expression": "^7.10.4", 593 | "@babel/helper-plugin-utils": "^7.10.4", 594 | "@babel/helper-replace-supers": "^7.10.4", 595 | "@babel/helper-split-export-declaration": "^7.10.4", 596 | "globals": "^11.1.0" 597 | } 598 | }, 599 | "@babel/plugin-transform-computed-properties": { 600 | "version": "7.10.4", 601 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", 602 | "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", 603 | "requires": { 604 | "@babel/helper-plugin-utils": "^7.10.4" 605 | } 606 | }, 607 | "@babel/plugin-transform-destructuring": { 608 | "version": "7.10.4", 609 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", 610 | "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", 611 | "requires": { 612 | "@babel/helper-plugin-utils": "^7.10.4" 613 | } 614 | }, 615 | "@babel/plugin-transform-dotall-regex": { 616 | "version": "7.10.4", 617 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", 618 | "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", 619 | "requires": { 620 | "@babel/helper-create-regexp-features-plugin": "^7.10.4", 621 | "@babel/helper-plugin-utils": "^7.10.4" 622 | } 623 | }, 624 | "@babel/plugin-transform-duplicate-keys": { 625 | "version": "7.10.4", 626 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", 627 | "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", 628 | "requires": { 629 | "@babel/helper-plugin-utils": "^7.10.4" 630 | } 631 | }, 632 | "@babel/plugin-transform-exponentiation-operator": { 633 | "version": "7.10.4", 634 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", 635 | "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", 636 | "requires": { 637 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", 638 | "@babel/helper-plugin-utils": "^7.10.4" 639 | } 640 | }, 641 | "@babel/plugin-transform-for-of": { 642 | "version": "7.10.4", 643 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", 644 | "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", 645 | "requires": { 646 | "@babel/helper-plugin-utils": "^7.10.4" 647 | } 648 | }, 649 | "@babel/plugin-transform-function-name": { 650 | "version": "7.10.4", 651 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", 652 | "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", 653 | "requires": { 654 | "@babel/helper-function-name": "^7.10.4", 655 | "@babel/helper-plugin-utils": "^7.10.4" 656 | } 657 | }, 658 | "@babel/plugin-transform-literals": { 659 | "version": "7.10.4", 660 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", 661 | "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", 662 | "requires": { 663 | "@babel/helper-plugin-utils": "^7.10.4" 664 | } 665 | }, 666 | "@babel/plugin-transform-member-expression-literals": { 667 | "version": "7.10.4", 668 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", 669 | "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", 670 | "requires": { 671 | "@babel/helper-plugin-utils": "^7.10.4" 672 | } 673 | }, 674 | "@babel/plugin-transform-modules-amd": { 675 | "version": "7.10.4", 676 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz", 677 | "integrity": "sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA==", 678 | "requires": { 679 | "@babel/helper-module-transforms": "^7.10.4", 680 | "@babel/helper-plugin-utils": "^7.10.4", 681 | "babel-plugin-dynamic-import-node": "^2.3.3" 682 | }, 683 | "dependencies": { 684 | "babel-plugin-dynamic-import-node": { 685 | "version": "2.3.3", 686 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", 687 | "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", 688 | "requires": { 689 | "object.assign": "^4.1.0" 690 | } 691 | } 692 | } 693 | }, 694 | "@babel/plugin-transform-modules-commonjs": { 695 | "version": "7.10.4", 696 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", 697 | "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", 698 | "requires": { 699 | "@babel/helper-module-transforms": "^7.10.4", 700 | "@babel/helper-plugin-utils": "^7.10.4", 701 | "@babel/helper-simple-access": "^7.10.4", 702 | "babel-plugin-dynamic-import-node": "^2.3.3" 703 | }, 704 | "dependencies": { 705 | "babel-plugin-dynamic-import-node": { 706 | "version": "2.3.3", 707 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", 708 | "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", 709 | "requires": { 710 | "object.assign": "^4.1.0" 711 | } 712 | } 713 | } 714 | }, 715 | "@babel/plugin-transform-modules-systemjs": { 716 | "version": "7.10.4", 717 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz", 718 | "integrity": "sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ==", 719 | "requires": { 720 | "@babel/helper-hoist-variables": "^7.10.4", 721 | "@babel/helper-module-transforms": "^7.10.4", 722 | "@babel/helper-plugin-utils": "^7.10.4", 723 | "babel-plugin-dynamic-import-node": "^2.3.3" 724 | }, 725 | "dependencies": { 726 | "babel-plugin-dynamic-import-node": { 727 | "version": "2.3.3", 728 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", 729 | "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", 730 | "requires": { 731 | "object.assign": "^4.1.0" 732 | } 733 | } 734 | } 735 | }, 736 | "@babel/plugin-transform-modules-umd": { 737 | "version": "7.10.4", 738 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", 739 | "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", 740 | "requires": { 741 | "@babel/helper-module-transforms": "^7.10.4", 742 | "@babel/helper-plugin-utils": "^7.10.4" 743 | } 744 | }, 745 | "@babel/plugin-transform-named-capturing-groups-regex": { 746 | "version": "7.10.4", 747 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", 748 | "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", 749 | "requires": { 750 | "@babel/helper-create-regexp-features-plugin": "^7.10.4" 751 | } 752 | }, 753 | "@babel/plugin-transform-new-target": { 754 | "version": "7.10.4", 755 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", 756 | "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", 757 | "requires": { 758 | "@babel/helper-plugin-utils": "^7.10.4" 759 | } 760 | }, 761 | "@babel/plugin-transform-object-super": { 762 | "version": "7.10.4", 763 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", 764 | "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", 765 | "requires": { 766 | "@babel/helper-plugin-utils": "^7.10.4", 767 | "@babel/helper-replace-supers": "^7.10.4" 768 | } 769 | }, 770 | "@babel/plugin-transform-parameters": { 771 | "version": "7.10.4", 772 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz", 773 | "integrity": "sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ==", 774 | "requires": { 775 | "@babel/helper-get-function-arity": "^7.10.4", 776 | "@babel/helper-plugin-utils": "^7.10.4" 777 | } 778 | }, 779 | "@babel/plugin-transform-property-literals": { 780 | "version": "7.10.4", 781 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", 782 | "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", 783 | "requires": { 784 | "@babel/helper-plugin-utils": "^7.10.4" 785 | } 786 | }, 787 | "@babel/plugin-transform-react-constant-elements": { 788 | "version": "7.2.0", 789 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz", 790 | "integrity": "sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ==", 791 | "requires": { 792 | "@babel/helper-annotate-as-pure": "^7.0.0", 793 | "@babel/helper-plugin-utils": "^7.0.0" 794 | } 795 | }, 796 | "@babel/plugin-transform-react-display-name": { 797 | "version": "7.10.4", 798 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", 799 | "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", 800 | "requires": { 801 | "@babel/helper-plugin-utils": "^7.10.4" 802 | } 803 | }, 804 | "@babel/plugin-transform-react-inline-elements": { 805 | "version": "7.2.0", 806 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.2.0.tgz", 807 | "integrity": "sha512-OAflI+josEl8xoAzZYpFnN+C4e9wvxDecExTtvDsteAcChIZtsH/D2kMNcJnrrzbFzCroGajCTr9tAB7K0KsiQ==", 808 | "requires": { 809 | "@babel/helper-builder-react-jsx": "^7.0.0", 810 | "@babel/helper-plugin-utils": "^7.0.0" 811 | } 812 | }, 813 | "@babel/plugin-transform-react-jsx": { 814 | "version": "7.10.4", 815 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", 816 | "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", 817 | "requires": { 818 | "@babel/helper-builder-react-jsx": "^7.10.4", 819 | "@babel/helper-builder-react-jsx-experimental": "^7.10.4", 820 | "@babel/helper-plugin-utils": "^7.10.4", 821 | "@babel/plugin-syntax-jsx": "^7.10.4" 822 | } 823 | }, 824 | "@babel/plugin-transform-react-jsx-development": { 825 | "version": "7.10.4", 826 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", 827 | "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", 828 | "requires": { 829 | "@babel/helper-builder-react-jsx-experimental": "^7.10.4", 830 | "@babel/helper-plugin-utils": "^7.10.4", 831 | "@babel/plugin-syntax-jsx": "^7.10.4" 832 | } 833 | }, 834 | "@babel/plugin-transform-react-jsx-self": { 835 | "version": "7.10.4", 836 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", 837 | "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", 838 | "requires": { 839 | "@babel/helper-plugin-utils": "^7.10.4", 840 | "@babel/plugin-syntax-jsx": "^7.10.4" 841 | } 842 | }, 843 | "@babel/plugin-transform-react-jsx-source": { 844 | "version": "7.10.4", 845 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz", 846 | "integrity": "sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug==", 847 | "requires": { 848 | "@babel/helper-plugin-utils": "^7.10.4", 849 | "@babel/plugin-syntax-jsx": "^7.10.4" 850 | } 851 | }, 852 | "@babel/plugin-transform-react-pure-annotations": { 853 | "version": "7.10.4", 854 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", 855 | "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", 856 | "requires": { 857 | "@babel/helper-annotate-as-pure": "^7.10.4", 858 | "@babel/helper-plugin-utils": "^7.10.4" 859 | } 860 | }, 861 | "@babel/plugin-transform-regenerator": { 862 | "version": "7.10.4", 863 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", 864 | "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", 865 | "requires": { 866 | "regenerator-transform": "^0.14.2" 867 | } 868 | }, 869 | "@babel/plugin-transform-reserved-words": { 870 | "version": "7.10.4", 871 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", 872 | "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", 873 | "requires": { 874 | "@babel/helper-plugin-utils": "^7.10.4" 875 | } 876 | }, 877 | "@babel/plugin-transform-shorthand-properties": { 878 | "version": "7.10.4", 879 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", 880 | "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", 881 | "requires": { 882 | "@babel/helper-plugin-utils": "^7.10.4" 883 | } 884 | }, 885 | "@babel/plugin-transform-spread": { 886 | "version": "7.10.4", 887 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", 888 | "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", 889 | "requires": { 890 | "@babel/helper-plugin-utils": "^7.10.4" 891 | } 892 | }, 893 | "@babel/plugin-transform-sticky-regex": { 894 | "version": "7.10.4", 895 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", 896 | "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", 897 | "requires": { 898 | "@babel/helper-plugin-utils": "^7.10.4", 899 | "@babel/helper-regex": "^7.10.4" 900 | } 901 | }, 902 | "@babel/plugin-transform-template-literals": { 903 | "version": "7.10.4", 904 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz", 905 | "integrity": "sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ==", 906 | "requires": { 907 | "@babel/helper-annotate-as-pure": "^7.10.4", 908 | "@babel/helper-plugin-utils": "^7.10.4" 909 | } 910 | }, 911 | "@babel/plugin-transform-typeof-symbol": { 912 | "version": "7.10.4", 913 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", 914 | "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", 915 | "requires": { 916 | "@babel/helper-plugin-utils": "^7.10.4" 917 | } 918 | }, 919 | "@babel/plugin-transform-typescript": { 920 | "version": "7.10.4", 921 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz", 922 | "integrity": "sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw==", 923 | "requires": { 924 | "@babel/helper-create-class-features-plugin": "^7.10.4", 925 | "@babel/helper-plugin-utils": "^7.10.4", 926 | "@babel/plugin-syntax-typescript": "^7.10.4" 927 | } 928 | }, 929 | "@babel/plugin-transform-unicode-escapes": { 930 | "version": "7.10.4", 931 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", 932 | "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", 933 | "requires": { 934 | "@babel/helper-plugin-utils": "^7.10.4" 935 | } 936 | }, 937 | "@babel/plugin-transform-unicode-regex": { 938 | "version": "7.10.4", 939 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", 940 | "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", 941 | "requires": { 942 | "@babel/helper-create-regexp-features-plugin": "^7.10.4", 943 | "@babel/helper-plugin-utils": "^7.10.4" 944 | } 945 | }, 946 | "@babel/preset-env": { 947 | "version": "7.10.4", 948 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", 949 | "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", 950 | "requires": { 951 | "@babel/compat-data": "^7.10.4", 952 | "@babel/helper-compilation-targets": "^7.10.4", 953 | "@babel/helper-module-imports": "^7.10.4", 954 | "@babel/helper-plugin-utils": "^7.10.4", 955 | "@babel/plugin-proposal-async-generator-functions": "^7.10.4", 956 | "@babel/plugin-proposal-class-properties": "^7.10.4", 957 | "@babel/plugin-proposal-dynamic-import": "^7.10.4", 958 | "@babel/plugin-proposal-json-strings": "^7.10.4", 959 | "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", 960 | "@babel/plugin-proposal-numeric-separator": "^7.10.4", 961 | "@babel/plugin-proposal-object-rest-spread": "^7.10.4", 962 | "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", 963 | "@babel/plugin-proposal-optional-chaining": "^7.10.4", 964 | "@babel/plugin-proposal-private-methods": "^7.10.4", 965 | "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", 966 | "@babel/plugin-syntax-async-generators": "^7.8.0", 967 | "@babel/plugin-syntax-class-properties": "^7.10.4", 968 | "@babel/plugin-syntax-dynamic-import": "^7.8.0", 969 | "@babel/plugin-syntax-json-strings": "^7.8.0", 970 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", 971 | "@babel/plugin-syntax-numeric-separator": "^7.10.4", 972 | "@babel/plugin-syntax-object-rest-spread": "^7.8.0", 973 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", 974 | "@babel/plugin-syntax-optional-chaining": "^7.8.0", 975 | "@babel/plugin-syntax-top-level-await": "^7.10.4", 976 | "@babel/plugin-transform-arrow-functions": "^7.10.4", 977 | "@babel/plugin-transform-async-to-generator": "^7.10.4", 978 | "@babel/plugin-transform-block-scoped-functions": "^7.10.4", 979 | "@babel/plugin-transform-block-scoping": "^7.10.4", 980 | "@babel/plugin-transform-classes": "^7.10.4", 981 | "@babel/plugin-transform-computed-properties": "^7.10.4", 982 | "@babel/plugin-transform-destructuring": "^7.10.4", 983 | "@babel/plugin-transform-dotall-regex": "^7.10.4", 984 | "@babel/plugin-transform-duplicate-keys": "^7.10.4", 985 | "@babel/plugin-transform-exponentiation-operator": "^7.10.4", 986 | "@babel/plugin-transform-for-of": "^7.10.4", 987 | "@babel/plugin-transform-function-name": "^7.10.4", 988 | "@babel/plugin-transform-literals": "^7.10.4", 989 | "@babel/plugin-transform-member-expression-literals": "^7.10.4", 990 | "@babel/plugin-transform-modules-amd": "^7.10.4", 991 | "@babel/plugin-transform-modules-commonjs": "^7.10.4", 992 | "@babel/plugin-transform-modules-systemjs": "^7.10.4", 993 | "@babel/plugin-transform-modules-umd": "^7.10.4", 994 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", 995 | "@babel/plugin-transform-new-target": "^7.10.4", 996 | "@babel/plugin-transform-object-super": "^7.10.4", 997 | "@babel/plugin-transform-parameters": "^7.10.4", 998 | "@babel/plugin-transform-property-literals": "^7.10.4", 999 | "@babel/plugin-transform-regenerator": "^7.10.4", 1000 | "@babel/plugin-transform-reserved-words": "^7.10.4", 1001 | "@babel/plugin-transform-shorthand-properties": "^7.10.4", 1002 | "@babel/plugin-transform-spread": "^7.10.4", 1003 | "@babel/plugin-transform-sticky-regex": "^7.10.4", 1004 | "@babel/plugin-transform-template-literals": "^7.10.4", 1005 | "@babel/plugin-transform-typeof-symbol": "^7.10.4", 1006 | "@babel/plugin-transform-unicode-escapes": "^7.10.4", 1007 | "@babel/plugin-transform-unicode-regex": "^7.10.4", 1008 | "@babel/preset-modules": "^0.1.3", 1009 | "@babel/types": "^7.10.4", 1010 | "browserslist": "^4.12.0", 1011 | "core-js-compat": "^3.6.2", 1012 | "invariant": "^2.2.2", 1013 | "levenary": "^1.1.1", 1014 | "semver": "^5.5.0" 1015 | }, 1016 | "dependencies": { 1017 | "@babel/plugin-syntax-dynamic-import": { 1018 | "version": "7.8.3", 1019 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", 1020 | "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", 1021 | "requires": { 1022 | "@babel/helper-plugin-utils": "^7.8.0" 1023 | } 1024 | } 1025 | } 1026 | }, 1027 | "@babel/preset-modules": { 1028 | "version": "0.1.3", 1029 | "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", 1030 | "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", 1031 | "requires": { 1032 | "@babel/helper-plugin-utils": "^7.0.0", 1033 | "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", 1034 | "@babel/plugin-transform-dotall-regex": "^7.4.4", 1035 | "@babel/types": "^7.4.4", 1036 | "esutils": "^2.0.2" 1037 | } 1038 | }, 1039 | "@babel/preset-react": { 1040 | "version": "7.10.4", 1041 | "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", 1042 | "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", 1043 | "requires": { 1044 | "@babel/helper-plugin-utils": "^7.10.4", 1045 | "@babel/plugin-transform-react-display-name": "^7.10.4", 1046 | "@babel/plugin-transform-react-jsx": "^7.10.4", 1047 | "@babel/plugin-transform-react-jsx-development": "^7.10.4", 1048 | "@babel/plugin-transform-react-jsx-self": "^7.10.4", 1049 | "@babel/plugin-transform-react-jsx-source": "^7.10.4", 1050 | "@babel/plugin-transform-react-pure-annotations": "^7.10.4" 1051 | } 1052 | }, 1053 | "@babel/preset-typescript": { 1054 | "version": "7.10.4", 1055 | "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz", 1056 | "integrity": "sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==", 1057 | "requires": { 1058 | "@babel/helper-plugin-utils": "^7.10.4", 1059 | "@babel/plugin-transform-typescript": "^7.10.4" 1060 | } 1061 | }, 1062 | "@babel/runtime": { 1063 | "version": "7.10.4", 1064 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz", 1065 | "integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==", 1066 | "requires": { 1067 | "regenerator-runtime": "^0.13.4" 1068 | } 1069 | }, 1070 | "@babel/template": { 1071 | "version": "7.10.4", 1072 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", 1073 | "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", 1074 | "requires": { 1075 | "@babel/code-frame": "^7.10.4", 1076 | "@babel/parser": "^7.10.4", 1077 | "@babel/types": "^7.10.4" 1078 | } 1079 | }, 1080 | "@babel/traverse": { 1081 | "version": "7.10.4", 1082 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", 1083 | "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", 1084 | "requires": { 1085 | "@babel/code-frame": "^7.10.4", 1086 | "@babel/generator": "^7.10.4", 1087 | "@babel/helper-function-name": "^7.10.4", 1088 | "@babel/helper-split-export-declaration": "^7.10.4", 1089 | "@babel/parser": "^7.10.4", 1090 | "@babel/types": "^7.10.4", 1091 | "debug": "^4.1.0", 1092 | "globals": "^11.1.0", 1093 | "lodash": "^4.17.13" 1094 | } 1095 | }, 1096 | "@babel/types": { 1097 | "version": "7.10.4", 1098 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", 1099 | "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", 1100 | "requires": { 1101 | "@babel/helper-validator-identifier": "^7.10.4", 1102 | "lodash": "^4.17.13", 1103 | "to-fast-properties": "^2.0.0" 1104 | } 1105 | }, 1106 | "ansi-styles": { 1107 | "version": "3.2.1", 1108 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1109 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1110 | "requires": { 1111 | "color-convert": "^1.9.0" 1112 | } 1113 | }, 1114 | "babel-plugin-dynamic-import-node": { 1115 | "version": "2.2.0", 1116 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz", 1117 | "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==", 1118 | "requires": { 1119 | "object.assign": "^4.1.0" 1120 | } 1121 | }, 1122 | "babel-plugin-lodash": { 1123 | "version": "3.3.4", 1124 | "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz", 1125 | "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==", 1126 | "requires": { 1127 | "@babel/helper-module-imports": "^7.0.0-beta.49", 1128 | "@babel/types": "^7.0.0-beta.49", 1129 | "glob": "^7.1.1", 1130 | "lodash": "^4.17.10", 1131 | "require-package-name": "^2.0.1" 1132 | } 1133 | }, 1134 | "babel-plugin-styled-components": { 1135 | "version": "1.10.0", 1136 | "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz", 1137 | "integrity": "sha512-sQVKG8irFXx14ZfaK1bBePirfkacl3j8nZwSZK+ZjsbnadRHKQTbhXbe/RB1vT6Vgkz45E+V95LBq4KqdhZUNw==", 1138 | "requires": { 1139 | "@babel/helper-annotate-as-pure": "^7.0.0", 1140 | "@babel/helper-module-imports": "^7.0.0", 1141 | "babel-plugin-syntax-jsx": "^6.18.0", 1142 | "lodash": "^4.17.10" 1143 | } 1144 | }, 1145 | "babel-plugin-syntax-jsx": { 1146 | "version": "6.18.0", 1147 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", 1148 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" 1149 | }, 1150 | "babel-plugin-transform-imports": { 1151 | "version": "1.5.1", 1152 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-imports/-/babel-plugin-transform-imports-1.5.1.tgz", 1153 | "integrity": "sha512-Jkb0tjqye8kjOD7GdcKJTGB3dC9fruQhwRFZCeYS0sZO2otyjG6SohKR8nZiSm/OvhY+Ny2ktzVE59XKgIqskA==", 1154 | "requires": { 1155 | "babel-types": "^6.6.0", 1156 | "is-valid-path": "^0.1.1", 1157 | "lodash.camelcase": "^4.3.0", 1158 | "lodash.findkey": "^4.6.0", 1159 | "lodash.kebabcase": "^4.1.1", 1160 | "lodash.snakecase": "^4.1.1" 1161 | } 1162 | }, 1163 | "babel-plugin-transform-inline-environment-variables": { 1164 | "version": "0.4.3", 1165 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.3.tgz", 1166 | "integrity": "sha1-o7CYgzU76LXiM24/8e+KXZP5xIk=" 1167 | }, 1168 | "babel-plugin-transform-react-remove-prop-types": { 1169 | "version": "0.4.24", 1170 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", 1171 | "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" 1172 | }, 1173 | "babel-plugin-transform-remove-console": { 1174 | "version": "6.9.4", 1175 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", 1176 | "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=" 1177 | }, 1178 | "babel-plugin-transform-remove-debugger": { 1179 | "version": "6.9.4", 1180 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", 1181 | "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=" 1182 | }, 1183 | "babel-runtime": { 1184 | "version": "6.26.0", 1185 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 1186 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 1187 | "requires": { 1188 | "core-js": "^2.4.0", 1189 | "regenerator-runtime": "^0.11.0" 1190 | }, 1191 | "dependencies": { 1192 | "core-js": { 1193 | "version": "2.6.11", 1194 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", 1195 | "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" 1196 | }, 1197 | "regenerator-runtime": { 1198 | "version": "0.11.1", 1199 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1200 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 1201 | } 1202 | } 1203 | }, 1204 | "babel-types": { 1205 | "version": "6.26.0", 1206 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 1207 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 1208 | "requires": { 1209 | "babel-runtime": "^6.26.0", 1210 | "esutils": "^2.0.2", 1211 | "lodash": "^4.17.4", 1212 | "to-fast-properties": "^1.0.3" 1213 | }, 1214 | "dependencies": { 1215 | "to-fast-properties": { 1216 | "version": "1.0.3", 1217 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1218 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 1219 | } 1220 | } 1221 | }, 1222 | "balanced-match": { 1223 | "version": "1.0.0", 1224 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1225 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 1226 | }, 1227 | "big.js": { 1228 | "version": "5.2.2", 1229 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 1230 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" 1231 | }, 1232 | "brace-expansion": { 1233 | "version": "1.1.11", 1234 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1235 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1236 | "requires": { 1237 | "balanced-match": "^1.0.0", 1238 | "concat-map": "0.0.1" 1239 | } 1240 | }, 1241 | "browserslist": { 1242 | "version": "4.13.0", 1243 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", 1244 | "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", 1245 | "requires": { 1246 | "caniuse-lite": "^1.0.30001093", 1247 | "electron-to-chromium": "^1.3.488", 1248 | "escalade": "^3.0.1", 1249 | "node-releases": "^1.1.58" 1250 | } 1251 | }, 1252 | "caniuse-lite": { 1253 | "version": "1.0.30001099", 1254 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz", 1255 | "integrity": "sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA==" 1256 | }, 1257 | "chalk": { 1258 | "version": "2.4.2", 1259 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1260 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1261 | "requires": { 1262 | "ansi-styles": "^3.2.1", 1263 | "escape-string-regexp": "^1.0.5", 1264 | "supports-color": "^5.3.0" 1265 | } 1266 | }, 1267 | "color-convert": { 1268 | "version": "1.9.3", 1269 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1270 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1271 | "requires": { 1272 | "color-name": "1.1.3" 1273 | } 1274 | }, 1275 | "color-name": { 1276 | "version": "1.1.3", 1277 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1278 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1279 | }, 1280 | "concat-map": { 1281 | "version": "0.0.1", 1282 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1283 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1284 | }, 1285 | "convert-source-map": { 1286 | "version": "1.7.0", 1287 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1288 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1289 | "requires": { 1290 | "safe-buffer": "~5.1.1" 1291 | } 1292 | }, 1293 | "core-js": { 1294 | "version": "3.0.1", 1295 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", 1296 | "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==" 1297 | }, 1298 | "core-js-compat": { 1299 | "version": "3.6.5", 1300 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", 1301 | "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", 1302 | "requires": { 1303 | "browserslist": "^4.8.5", 1304 | "semver": "7.0.0" 1305 | }, 1306 | "dependencies": { 1307 | "semver": { 1308 | "version": "7.0.0", 1309 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1310 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" 1311 | } 1312 | } 1313 | }, 1314 | "debug": { 1315 | "version": "4.1.1", 1316 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1317 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1318 | "requires": { 1319 | "ms": "^2.1.1" 1320 | } 1321 | }, 1322 | "define-properties": { 1323 | "version": "1.1.3", 1324 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1325 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1326 | "requires": { 1327 | "object-keys": "^1.0.12" 1328 | } 1329 | }, 1330 | "dom-walk": { 1331 | "version": "0.1.2", 1332 | "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", 1333 | "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" 1334 | }, 1335 | "electron-to-chromium": { 1336 | "version": "1.3.496", 1337 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.496.tgz", 1338 | "integrity": "sha512-TXY4mwoyowwi4Lsrq9vcTUYBThyc1b2hXaTZI13p8/FRhY2CTaq5lK+DVjhYkKiTLsKt569Xes+0J5JsVXFurQ==" 1339 | }, 1340 | "emojis-list": { 1341 | "version": "3.0.0", 1342 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1343 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" 1344 | }, 1345 | "escalade": { 1346 | "version": "3.0.1", 1347 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", 1348 | "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==" 1349 | }, 1350 | "escape-string-regexp": { 1351 | "version": "1.0.5", 1352 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1353 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1354 | }, 1355 | "esutils": { 1356 | "version": "2.0.3", 1357 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1358 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1359 | }, 1360 | "fast-levenshtein": { 1361 | "version": "2.0.6", 1362 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1363 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 1364 | }, 1365 | "fs.realpath": { 1366 | "version": "1.0.0", 1367 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1368 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1369 | }, 1370 | "function-bind": { 1371 | "version": "1.1.1", 1372 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1373 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1374 | }, 1375 | "gensync": { 1376 | "version": "1.0.0-beta.1", 1377 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", 1378 | "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" 1379 | }, 1380 | "glob": { 1381 | "version": "7.1.6", 1382 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1383 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1384 | "requires": { 1385 | "fs.realpath": "^1.0.0", 1386 | "inflight": "^1.0.4", 1387 | "inherits": "2", 1388 | "minimatch": "^3.0.4", 1389 | "once": "^1.3.0", 1390 | "path-is-absolute": "^1.0.0" 1391 | } 1392 | }, 1393 | "global": { 1394 | "version": "4.4.0", 1395 | "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", 1396 | "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", 1397 | "requires": { 1398 | "min-document": "^2.19.0", 1399 | "process": "^0.11.10" 1400 | } 1401 | }, 1402 | "globals": { 1403 | "version": "11.12.0", 1404 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1405 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" 1406 | }, 1407 | "has-flag": { 1408 | "version": "3.0.0", 1409 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1410 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1411 | }, 1412 | "has-symbols": { 1413 | "version": "1.0.1", 1414 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1415 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" 1416 | }, 1417 | "hoist-non-react-statics": { 1418 | "version": "3.3.2", 1419 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 1420 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 1421 | "requires": { 1422 | "react-is": "^16.7.0" 1423 | } 1424 | }, 1425 | "inflight": { 1426 | "version": "1.0.6", 1427 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1428 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1429 | "requires": { 1430 | "once": "^1.3.0", 1431 | "wrappy": "1" 1432 | } 1433 | }, 1434 | "inherits": { 1435 | "version": "2.0.4", 1436 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1437 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1438 | }, 1439 | "invariant": { 1440 | "version": "2.2.4", 1441 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1442 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1443 | "requires": { 1444 | "loose-envify": "^1.0.0" 1445 | } 1446 | }, 1447 | "is-extglob": { 1448 | "version": "1.0.0", 1449 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1450 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 1451 | }, 1452 | "is-glob": { 1453 | "version": "2.0.1", 1454 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1455 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1456 | "requires": { 1457 | "is-extglob": "^1.0.0" 1458 | } 1459 | }, 1460 | "is-invalid-path": { 1461 | "version": "0.1.0", 1462 | "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", 1463 | "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", 1464 | "requires": { 1465 | "is-glob": "^2.0.0" 1466 | } 1467 | }, 1468 | "is-valid-path": { 1469 | "version": "0.1.1", 1470 | "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", 1471 | "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", 1472 | "requires": { 1473 | "is-invalid-path": "^0.1.0" 1474 | } 1475 | }, 1476 | "js-tokens": { 1477 | "version": "4.0.0", 1478 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1479 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1480 | }, 1481 | "jsesc": { 1482 | "version": "2.5.2", 1483 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1484 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" 1485 | }, 1486 | "json5": { 1487 | "version": "2.1.3", 1488 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", 1489 | "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", 1490 | "requires": { 1491 | "minimist": "^1.2.5" 1492 | } 1493 | }, 1494 | "leven": { 1495 | "version": "3.1.0", 1496 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 1497 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" 1498 | }, 1499 | "levenary": { 1500 | "version": "1.1.1", 1501 | "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", 1502 | "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", 1503 | "requires": { 1504 | "leven": "^3.1.0" 1505 | } 1506 | }, 1507 | "loader-utils": { 1508 | "version": "1.4.0", 1509 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 1510 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 1511 | "requires": { 1512 | "big.js": "^5.2.2", 1513 | "emojis-list": "^3.0.0", 1514 | "json5": "^1.0.1" 1515 | }, 1516 | "dependencies": { 1517 | "json5": { 1518 | "version": "1.0.1", 1519 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1520 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1521 | "requires": { 1522 | "minimist": "^1.2.0" 1523 | } 1524 | } 1525 | } 1526 | }, 1527 | "lodash": { 1528 | "version": "4.17.15", 1529 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1530 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 1531 | }, 1532 | "lodash.camelcase": { 1533 | "version": "4.3.0", 1534 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1535 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" 1536 | }, 1537 | "lodash.findkey": { 1538 | "version": "4.6.0", 1539 | "resolved": "https://registry.npmjs.org/lodash.findkey/-/lodash.findkey-4.6.0.tgz", 1540 | "integrity": "sha1-gwWOkDtRy7dZ0JzPVG3qPqOcRxg=" 1541 | }, 1542 | "lodash.kebabcase": { 1543 | "version": "4.1.1", 1544 | "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", 1545 | "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" 1546 | }, 1547 | "lodash.snakecase": { 1548 | "version": "4.1.1", 1549 | "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", 1550 | "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" 1551 | }, 1552 | "loose-envify": { 1553 | "version": "1.4.0", 1554 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1555 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1556 | "requires": { 1557 | "js-tokens": "^3.0.0 || ^4.0.0" 1558 | } 1559 | }, 1560 | "min-document": { 1561 | "version": "2.19.0", 1562 | "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", 1563 | "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", 1564 | "requires": { 1565 | "dom-walk": "^0.1.0" 1566 | } 1567 | }, 1568 | "minimatch": { 1569 | "version": "3.0.4", 1570 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1571 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1572 | "requires": { 1573 | "brace-expansion": "^1.1.7" 1574 | } 1575 | }, 1576 | "minimist": { 1577 | "version": "1.2.5", 1578 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1579 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1580 | }, 1581 | "ms": { 1582 | "version": "2.1.2", 1583 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1584 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1585 | }, 1586 | "node-releases": { 1587 | "version": "1.1.59", 1588 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.59.tgz", 1589 | "integrity": "sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==" 1590 | }, 1591 | "object-assign": { 1592 | "version": "4.1.1", 1593 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1594 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1595 | }, 1596 | "object-keys": { 1597 | "version": "1.1.1", 1598 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1599 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1600 | }, 1601 | "object.assign": { 1602 | "version": "4.1.0", 1603 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1604 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1605 | "requires": { 1606 | "define-properties": "^1.1.2", 1607 | "function-bind": "^1.1.1", 1608 | "has-symbols": "^1.0.0", 1609 | "object-keys": "^1.0.11" 1610 | } 1611 | }, 1612 | "once": { 1613 | "version": "1.4.0", 1614 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1615 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1616 | "requires": { 1617 | "wrappy": "1" 1618 | } 1619 | }, 1620 | "path-is-absolute": { 1621 | "version": "1.0.1", 1622 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1623 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1624 | }, 1625 | "path-parse": { 1626 | "version": "1.0.6", 1627 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1628 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 1629 | }, 1630 | "process": { 1631 | "version": "0.11.10", 1632 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1633 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1634 | }, 1635 | "prop-types": { 1636 | "version": "15.7.2", 1637 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 1638 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 1639 | "requires": { 1640 | "loose-envify": "^1.4.0", 1641 | "object-assign": "^4.1.1", 1642 | "react-is": "^16.8.1" 1643 | } 1644 | }, 1645 | "react-hot-loader": { 1646 | "version": "4.12.15", 1647 | "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.15.tgz", 1648 | "integrity": "sha512-sgkN6g+tgPE6xZzD0Ysqll7KUFYJbMX0DrczT5OxD6S7hZlSnmqSC3ceudwCkiDd65ZTtm+Ayk4Y9k5xxCvpOw==", 1649 | "requires": { 1650 | "fast-levenshtein": "^2.0.6", 1651 | "global": "^4.3.0", 1652 | "hoist-non-react-statics": "^3.3.0", 1653 | "loader-utils": "^1.1.0", 1654 | "prop-types": "^15.6.1", 1655 | "react-lifecycles-compat": "^3.0.4", 1656 | "shallowequal": "^1.1.0", 1657 | "source-map": "^0.7.3" 1658 | }, 1659 | "dependencies": { 1660 | "source-map": { 1661 | "version": "0.7.3", 1662 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 1663 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" 1664 | } 1665 | } 1666 | }, 1667 | "react-is": { 1668 | "version": "16.13.1", 1669 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 1670 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1671 | }, 1672 | "react-lifecycles-compat": { 1673 | "version": "3.0.4", 1674 | "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", 1675 | "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" 1676 | }, 1677 | "regenerate": { 1678 | "version": "1.4.1", 1679 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", 1680 | "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" 1681 | }, 1682 | "regenerate-unicode-properties": { 1683 | "version": "8.2.0", 1684 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", 1685 | "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", 1686 | "requires": { 1687 | "regenerate": "^1.4.0" 1688 | } 1689 | }, 1690 | "regenerator-runtime": { 1691 | "version": "0.13.5", 1692 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", 1693 | "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" 1694 | }, 1695 | "regenerator-transform": { 1696 | "version": "0.14.5", 1697 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", 1698 | "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", 1699 | "requires": { 1700 | "@babel/runtime": "^7.8.4" 1701 | } 1702 | }, 1703 | "regexpu-core": { 1704 | "version": "4.7.0", 1705 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", 1706 | "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", 1707 | "requires": { 1708 | "regenerate": "^1.4.0", 1709 | "regenerate-unicode-properties": "^8.2.0", 1710 | "regjsgen": "^0.5.1", 1711 | "regjsparser": "^0.6.4", 1712 | "unicode-match-property-ecmascript": "^1.0.4", 1713 | "unicode-match-property-value-ecmascript": "^1.2.0" 1714 | } 1715 | }, 1716 | "regjsgen": { 1717 | "version": "0.5.2", 1718 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", 1719 | "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" 1720 | }, 1721 | "regjsparser": { 1722 | "version": "0.6.4", 1723 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", 1724 | "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", 1725 | "requires": { 1726 | "jsesc": "~0.5.0" 1727 | }, 1728 | "dependencies": { 1729 | "jsesc": { 1730 | "version": "0.5.0", 1731 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1732 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" 1733 | } 1734 | } 1735 | }, 1736 | "require-package-name": { 1737 | "version": "2.0.1", 1738 | "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", 1739 | "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" 1740 | }, 1741 | "resolve": { 1742 | "version": "1.17.0", 1743 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1744 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1745 | "requires": { 1746 | "path-parse": "^1.0.6" 1747 | } 1748 | }, 1749 | "safe-buffer": { 1750 | "version": "5.1.2", 1751 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1752 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1753 | }, 1754 | "semver": { 1755 | "version": "5.7.1", 1756 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1757 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1758 | }, 1759 | "shallowequal": { 1760 | "version": "1.1.0", 1761 | "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", 1762 | "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" 1763 | }, 1764 | "source-map": { 1765 | "version": "0.5.7", 1766 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1767 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 1768 | }, 1769 | "supports-color": { 1770 | "version": "5.5.0", 1771 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1772 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1773 | "requires": { 1774 | "has-flag": "^3.0.0" 1775 | } 1776 | }, 1777 | "to-fast-properties": { 1778 | "version": "2.0.0", 1779 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1780 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 1781 | }, 1782 | "unicode-canonical-property-names-ecmascript": { 1783 | "version": "1.0.4", 1784 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 1785 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" 1786 | }, 1787 | "unicode-match-property-ecmascript": { 1788 | "version": "1.0.4", 1789 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 1790 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 1791 | "requires": { 1792 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 1793 | "unicode-property-aliases-ecmascript": "^1.0.4" 1794 | } 1795 | }, 1796 | "unicode-match-property-value-ecmascript": { 1797 | "version": "1.2.0", 1798 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", 1799 | "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" 1800 | }, 1801 | "unicode-property-aliases-ecmascript": { 1802 | "version": "1.1.0", 1803 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", 1804 | "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" 1805 | }, 1806 | "wrappy": { 1807 | "version": "1.0.2", 1808 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1809 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1810 | } 1811 | } 1812 | } 1813 | --------------------------------------------------------------------------------