@elliemae/pui-cli 6.0.0-beta.1 → 6.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/babel/babel.config.js +8 -3
- package/lib/cli-commands/build.js +1 -1
- package/lib/cli-commands/lint.js +6 -4
- package/lib/cli-commands/pack.js +6 -11
- package/lib/cli-commands/storybook.js +1 -1
- package/lib/cli-commands/test.js +2 -1
- package/lib/esbuild.js +39 -0
- package/lib/lint/eslint/common.js +2 -3
- package/lib/lint/lint-staged.config.js +1 -1
- package/lib/lint/stylelint.config.js +2 -9
- package/lib/release/release.config.js +1 -1
- package/lib/server/csp.js +2 -0
- package/lib/server/util/index.js +2 -2
- package/lib/testing/jest.config.js +2 -1
- package/lib/typescript/util.js +1 -1
- package/lib/webpack/helpers.js +12 -35
- package/lib/webpack/webpack.base.babel.js +46 -27
- package/lib/webpack/webpack.dev.babel.js +15 -5
- package/lib/webpack/webpack.lib.base.babel.js +38 -22
- package/lib/webpack/webpack.lib.dev.babel.js +0 -4
- package/lib/webpack/webpack.lib.prod.babel.js +5 -13
- package/lib/webpack/webpack.prod.babel.js +11 -28
- package/lib/webpack/webpack.storybook.js +23 -18
- package/package.json +117 -115
|
@@ -10,7 +10,7 @@ const nodeEnvPreset = {
|
|
|
10
10
|
const webEnvPreset = {
|
|
11
11
|
modules: process.env.ES_MODULES === 'false' ? 'commonjs' : false,
|
|
12
12
|
useBuiltIns: 'usage',
|
|
13
|
-
corejs: { version: '3.
|
|
13
|
+
corejs: { version: '3.19', proposals: true },
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
const presetEnvOptions =
|
|
@@ -39,13 +39,14 @@ const config = {
|
|
|
39
39
|
'@babel/plugin-proposal-class-properties',
|
|
40
40
|
'@babel/plugin-syntax-dynamic-import',
|
|
41
41
|
'@babel/plugin-proposal-export-default-from',
|
|
42
|
+
'lodash',
|
|
43
|
+
'date-fns',
|
|
42
44
|
],
|
|
43
45
|
env: {
|
|
44
46
|
development: {
|
|
45
47
|
plugins: [
|
|
46
48
|
['babel-plugin-styled-components', { displayName: true }],
|
|
47
49
|
'@babel/plugin-transform-react-jsx-source',
|
|
48
|
-
'react-refresh/babel',
|
|
49
50
|
],
|
|
50
51
|
},
|
|
51
52
|
production: {
|
|
@@ -79,7 +80,11 @@ if (process.env.MODULE_EXTENSIONS === 'true') {
|
|
|
79
80
|
config.plugins.push('babel-plugin-add-import-extension');
|
|
80
81
|
}
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
if (process.env.STORYBOOK_BUILD !== 'true') {
|
|
84
|
+
config.env?.development?.plugins?.push?.('react-refresh/babel');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ToDo: Once ECC team migrates from webpack 3 to webpack 5 remove this strip-block plugin from commonjs output. without this they are receiving error when import.meta is used in app sdk
|
|
83
88
|
if (process.env.ES_MODULES === 'false') {
|
|
84
89
|
config.plugins.push([
|
|
85
90
|
'babel-plugin-transform-strip-block',
|
|
@@ -21,7 +21,7 @@ async function buildWebApp() {
|
|
|
21
21
|
async function buildService() {
|
|
22
22
|
await exec('rimraf ./build');
|
|
23
23
|
await exec(
|
|
24
|
-
`cross-env NODE_ENV=production MODULE_EXTENSIONS=true TARGET_ENV=node babel --extensions '.ts,.js' --config-file ./babel.config.cjs --out-dir ./build --ignore '**/*.test.
|
|
24
|
+
`cross-env NODE_ENV=production MODULE_EXTENSIONS=true TARGET_ENV=node babel --extensions '.ts,.js' --config-file ./babel.config.cjs --out-dir ./build --copy-files --no-copy-ignored --ignore '**/*.test.ts','**/*.test.js','**/*.spec.ts','**/*.test.js' ./app`,
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
27
|
|
package/lib/cli-commands/lint.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
const { exit } = require('yargs');
|
|
2
2
|
const { exec, logError, logSuccess } = require('./utils');
|
|
3
|
-
const {
|
|
3
|
+
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
4
4
|
|
|
5
|
-
async function lintCSS() {
|
|
5
|
+
async function lintCSS(fix = false) {
|
|
6
|
+
const fixIssues = fix ? '--fix' : '';
|
|
6
7
|
await exec(
|
|
7
|
-
`stylelint
|
|
8
|
+
`stylelint ./{lib,app}/**/*.{js,jsx,ts,tsx} ${fixIssues} --color --allowEmptyInput --ignore-pattern /dist/**/*`,
|
|
8
9
|
);
|
|
9
10
|
}
|
|
10
11
|
|
|
@@ -18,7 +19,8 @@ async function lintJS(fix = false) {
|
|
|
18
19
|
async function handler(argv) {
|
|
19
20
|
if (argv.js) {
|
|
20
21
|
// run typescript compilation
|
|
21
|
-
if (
|
|
22
|
+
if (isTypeScriptEnabled())
|
|
23
|
+
await exec('tsc --noEmit --emitDeclarationOnly false');
|
|
22
24
|
try {
|
|
23
25
|
await exec('rimraf ./reports/eslint.json');
|
|
24
26
|
await lintJS(argv.fix);
|
package/lib/cli-commands/pack.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
1
2
|
const { exit } = require('yargs');
|
|
2
3
|
const path = require('path');
|
|
3
4
|
const { writeFile, readFile } = require('fs/promises');
|
|
4
5
|
const { exec, logInfo, logError, logSuccess } = require('./utils');
|
|
5
|
-
const {
|
|
6
|
+
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
7
|
+
const { esBuild } = require('../esbuild');
|
|
6
8
|
|
|
7
9
|
const { name } = require('../../package.json');
|
|
8
10
|
|
|
@@ -37,14 +39,9 @@ async function createPackageJson(file, commonJS, sideEffects) {
|
|
|
37
39
|
await writeFile(file, packageJSON);
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
async function nodeBuild({ srcPath, commonJS, emitModuleType
|
|
42
|
+
async function nodeBuild({ srcPath, commonJS, emitModuleType }) {
|
|
41
43
|
const outDir = `./dist/${commonJS ? 'cjs' : 'es'}`;
|
|
42
|
-
|
|
43
|
-
const babelEnv = commonJS ? ' ES_MODULES=false' : '';
|
|
44
|
-
await exec(
|
|
45
|
-
`cross-env NODE_ENV=production MODULE_EXTENSIONS=true ${targetEnv}${babelEnv} babel --extensions ".ts,.tsx,.js,.jsx" ${srcPath} --out-dir ${outDir} --copy-files --ignore **/*.test.js --ignore **/*.test.ts --ignore **/*.spec.js --ignore **/*.spec.ts --ignore **/*.test.jsx --ignore **/*.test.tsx --ignore **/*.spec.jsx --ignore **/*.spec.tsx`,
|
|
46
|
-
{ shell: true, stdio: 'inherit' },
|
|
47
|
-
);
|
|
44
|
+
await esBuild({ srcPath, commonJS });
|
|
48
45
|
if (emitModuleType) {
|
|
49
46
|
const sideEffects = await getSideEffects();
|
|
50
47
|
await createPackageJson(
|
|
@@ -58,7 +55,7 @@ async function nodeBuild({ srcPath, commonJS, emitModuleType, target }) {
|
|
|
58
55
|
async function pack({ production, target, module, srcPath, emitModuleType }) {
|
|
59
56
|
logInfo('Build in-progress...');
|
|
60
57
|
await exec('rimraf ./dist');
|
|
61
|
-
if (
|
|
58
|
+
if (isTypeScriptEnabled()) {
|
|
62
59
|
await compileTypeScript();
|
|
63
60
|
}
|
|
64
61
|
if (target !== 'node') await webBuild(production);
|
|
@@ -79,7 +76,6 @@ async function pack({ production, target, module, srcPath, emitModuleType }) {
|
|
|
79
76
|
srcPath,
|
|
80
77
|
commonJS: false,
|
|
81
78
|
emitModuleType,
|
|
82
|
-
target,
|
|
83
79
|
});
|
|
84
80
|
}
|
|
85
81
|
}
|
|
@@ -118,7 +114,6 @@ exports.builder = {
|
|
|
118
114
|
},
|
|
119
115
|
emitModuleType: {
|
|
120
116
|
type: 'boolean',
|
|
121
|
-
// eslint-disable-next-line max-lines
|
|
122
117
|
default: true,
|
|
123
118
|
description:
|
|
124
119
|
'creates type attribute in the package.json and sets its value to commonjs or module based on module cli argument. default: true',
|
|
@@ -10,7 +10,7 @@ async function buildStoryBook(isDoc = false) {
|
|
|
10
10
|
|
|
11
11
|
async function startStoryBook(isDoc = false) {
|
|
12
12
|
await exec(
|
|
13
|
-
`cross-env FORCE_COLOR=true start-storybook ${
|
|
13
|
+
`cross-env NODE_ENV=development STORYBOOK_BUILD=true FORCE_COLOR=true start-storybook ${
|
|
14
14
|
isDoc && '--docs'
|
|
15
15
|
} -p 11000 --quiet`,
|
|
16
16
|
);
|
package/lib/cli-commands/test.js
CHANGED
|
@@ -13,7 +13,8 @@ async function handler(argv) {
|
|
|
13
13
|
let commandOptions = '--coverage';
|
|
14
14
|
if (argv.fix) commandOptions = '-u';
|
|
15
15
|
else if (argv.watch) commandOptions = '--watchAll';
|
|
16
|
-
if (CI) commandOptions += ' --ci';
|
|
16
|
+
if (CI) commandOptions += ' --ci --runInBand';
|
|
17
|
+
else commandOptions += ' --maxWorkers=50%';
|
|
17
18
|
if (argv.p) commandOptions += ' --passWithNoTests';
|
|
18
19
|
if (argv.r) commandOptions += ' --bail --findRelatedTests';
|
|
19
20
|
if (argv.s) commandOptions += ' --silent';
|
package/lib/esbuild.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const esbuild = require('esbuild');
|
|
2
|
+
const fg = require('fast-glob');
|
|
3
|
+
|
|
4
|
+
const ESBUILD_TARGET = 'es2020';
|
|
5
|
+
|
|
6
|
+
const commonConfig = {
|
|
7
|
+
bundle: false,
|
|
8
|
+
target: ESBUILD_TARGET,
|
|
9
|
+
loader: { '.js': 'jsx' },
|
|
10
|
+
mainFields: ['module', 'browser', 'main'],
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const outDir = 'dist';
|
|
14
|
+
|
|
15
|
+
const build = async ({ srcPath, commonJS }) => {
|
|
16
|
+
const entryPoints = await fg([
|
|
17
|
+
`${srcPath}/**/*.{js,jsx,ts,tsx}`,
|
|
18
|
+
`!${srcPath}/**/*.test.{js,jsx,ts,tsx}`,
|
|
19
|
+
`!${srcPath}/**/*.stories.{js,jsx,ts,tsx}`,
|
|
20
|
+
]);
|
|
21
|
+
if (!commonJS) {
|
|
22
|
+
await esbuild.build({
|
|
23
|
+
entryPoints,
|
|
24
|
+
...commonConfig,
|
|
25
|
+
outdir: `${outDir}/es`,
|
|
26
|
+
format: 'esm',
|
|
27
|
+
});
|
|
28
|
+
} else {
|
|
29
|
+
await esbuild.build({
|
|
30
|
+
entryPoints,
|
|
31
|
+
...commonConfig,
|
|
32
|
+
outdir: `${outDir}/cjs`,
|
|
33
|
+
format: 'cjs',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.esBuild = build;
|
|
39
|
+
exports.ESBUILD_TARGET = ESBUILD_TARGET;
|
|
@@ -112,16 +112,15 @@ const reactRules = {
|
|
|
112
112
|
exports.reactRules = reactRules;
|
|
113
113
|
|
|
114
114
|
exports.baseConfig = {
|
|
115
|
-
parser: 'babel-
|
|
115
|
+
parser: '@babel/eslint-parser',
|
|
116
116
|
plugins: basePlugins,
|
|
117
117
|
env: {
|
|
118
118
|
jest: true,
|
|
119
119
|
browser: true,
|
|
120
120
|
node: true,
|
|
121
|
-
|
|
121
|
+
es2021: true,
|
|
122
122
|
},
|
|
123
123
|
parserOptions: {
|
|
124
|
-
ecmaVersion: 2020,
|
|
125
124
|
sourceType: 'module',
|
|
126
125
|
ecmaFeatures: {
|
|
127
126
|
jsx: true,
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
|
|
3
|
-
[
|
|
4
|
-
'stylelint-processor-styled-components',
|
|
5
|
-
{
|
|
6
|
-
ignoreFiles: ['**/*.scss'],
|
|
7
|
-
},
|
|
8
|
-
],
|
|
9
|
-
],
|
|
2
|
+
customSyntax: '@stylelint/postcss-css-in-js',
|
|
10
3
|
plugins: [],
|
|
11
4
|
extends: [
|
|
12
5
|
'stylelint-config-recommended',
|
|
13
6
|
'stylelint-config-styled-components',
|
|
14
7
|
],
|
|
15
|
-
rules: { 'selector-type-no-unknown': null },
|
|
8
|
+
rules: { 'selector-type-no-unknown': null, 'no-extra-semicolons': null },
|
|
16
9
|
};
|
|
@@ -2,11 +2,11 @@ module.exports = {
|
|
|
2
2
|
branches: [
|
|
3
3
|
'+([0-9])?(.{+([0-9]),x}).x',
|
|
4
4
|
'master',
|
|
5
|
-
'next',
|
|
6
5
|
'next-major',
|
|
7
6
|
{ name: 'beta', prerelease: true },
|
|
8
7
|
{ name: 'alpha', prerelease: true },
|
|
9
8
|
{ name: 'hotfix', prerelease: true },
|
|
9
|
+
{ name: 'next', prerelease: true },
|
|
10
10
|
],
|
|
11
11
|
plugins: [
|
|
12
12
|
'@semantic-release/commit-analyzer',
|
package/lib/server/csp.js
CHANGED
package/lib/server/util/index.js
CHANGED
|
@@ -3,9 +3,9 @@ const path = require('path');
|
|
|
3
3
|
|
|
4
4
|
const getCWD = () => process.cwd();
|
|
5
5
|
|
|
6
|
-
const allJS =
|
|
6
|
+
const allJS = /\.js$/;
|
|
7
7
|
|
|
8
|
-
const serviceEndpoints =
|
|
8
|
+
const serviceEndpoints = /\.endpoint\.js$/;
|
|
9
9
|
|
|
10
10
|
const getFilesMatching = (filePattern) => {
|
|
11
11
|
const getFiles = (dir) => {
|
|
@@ -62,6 +62,7 @@ const jestConfig = {
|
|
|
62
62
|
'.*\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|ico)$': `${getRootDir()}/lib/testing/mocks/image.js`,
|
|
63
63
|
'.*\\.svg$': `${getRootDir()}/lib/testing/mocks/svg.js`,
|
|
64
64
|
'.*\\.(html)$': `${getRootDir()}/lib/testing/mocks/html.js`,
|
|
65
|
+
'^lodash-es$': 'lodash',
|
|
65
66
|
'@elliemae/pui-user-monitoring': `${getRootDir()}/lib/testing/mocks/pui-user-monitoring.js`,
|
|
66
67
|
'@elliemae/pui-app-loader': `${getRootDir()}/lib/testing/mocks/pui-app-loader.js`,
|
|
67
68
|
'@elliemae/pui-diagnostics': `${getRootDir()}/lib/testing/mocks/pui-diagnostics.js`,
|
|
@@ -74,7 +75,7 @@ const jestConfig = {
|
|
|
74
75
|
snapshotSerializers: [],
|
|
75
76
|
testResultsProcessor: 'jest-sonar-reporter',
|
|
76
77
|
transformIgnorePatterns: [
|
|
77
|
-
'node_modules/(?!(@elliemae/*)/)',
|
|
78
|
+
'node_modules/(?!(@elliemae/*|lodash-es/*)/)',
|
|
78
79
|
'node_modules/@elliemae/em-platform-document-viewer',
|
|
79
80
|
],
|
|
80
81
|
globals: {
|
package/lib/typescript/util.js
CHANGED
package/lib/webpack/helpers.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
/* eslint-disable max-lines */
|
|
2
1
|
const path = require('path');
|
|
3
2
|
const fs = require('fs');
|
|
4
3
|
const _ = require('lodash');
|
|
5
|
-
const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin');
|
|
6
4
|
|
|
7
5
|
let pathSep = path.sep;
|
|
8
6
|
if (pathSep === '\\')
|
|
@@ -89,7 +87,12 @@ const getAlias = () =>
|
|
|
89
87
|
'./node_modules',
|
|
90
88
|
);
|
|
91
89
|
|
|
92
|
-
const modulesToTranspile = [
|
|
90
|
+
const modulesToTranspile = [
|
|
91
|
+
'@elliemae/pui-*',
|
|
92
|
+
'@elliemae/ds-*',
|
|
93
|
+
'@dnd-kit/*',
|
|
94
|
+
'@elliemae/em-platform-document-viewer',
|
|
95
|
+
];
|
|
93
96
|
|
|
94
97
|
const getUserMonitoringFileName = () => {
|
|
95
98
|
const libName = 'emuiUserMonitoring';
|
|
@@ -119,6 +122,7 @@ const getAppLoaderFileName = () => {
|
|
|
119
122
|
|
|
120
123
|
const getDiagnosticsFileName = () => {
|
|
121
124
|
const libName = 'emuiDiagnostics';
|
|
125
|
+
// eslint-disable-next-line max-lines
|
|
122
126
|
const libPath = path.join(
|
|
123
127
|
process.cwd(),
|
|
124
128
|
'node_modules/@elliemae/pui-diagnostics/dist/public/js',
|
|
@@ -176,37 +180,10 @@ const isAppLoaderEnabled = () => process.env.APP_LOADER === 'true';
|
|
|
176
180
|
|
|
177
181
|
const getMediaPath = () => `assets/[name].[contenthash].[ext]`;
|
|
178
182
|
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
// Feel free to experiment with options for better result for you
|
|
184
|
-
plugins: [
|
|
185
|
-
['gifsicle', { interlaced: true }],
|
|
186
|
-
['jpegtran', { progressive: true }],
|
|
187
|
-
['optipng', { optimizationLevel: 5 }],
|
|
188
|
-
// Svgo configuration here https://github.com/svg/svgo#configuration
|
|
189
|
-
[
|
|
190
|
-
'svgo',
|
|
191
|
-
{
|
|
192
|
-
plugins: [
|
|
193
|
-
{
|
|
194
|
-
name: 'preset-default',
|
|
195
|
-
params: {
|
|
196
|
-
overrides: {
|
|
197
|
-
removeViewBox: false,
|
|
198
|
-
addAttributesToSVGElement: {
|
|
199
|
-
attributes: [{ xmlns: 'http://www.w3.org/2000/svg' }],
|
|
200
|
-
},
|
|
201
|
-
},
|
|
202
|
-
},
|
|
203
|
-
},
|
|
204
|
-
],
|
|
205
|
-
},
|
|
206
|
-
],
|
|
207
|
-
],
|
|
208
|
-
},
|
|
209
|
-
});
|
|
183
|
+
const isGoogleTagManagerEnabled = () => {
|
|
184
|
+
const appConfig = JSON.parse(getAppConfig());
|
|
185
|
+
return !!appConfig?.googleTagManager;
|
|
186
|
+
};
|
|
210
187
|
|
|
211
188
|
exports.excludeNodeModulesExcept = excludeNodeModulesExcept;
|
|
212
189
|
exports.getLibraryName = getLibraryName;
|
|
@@ -221,7 +198,6 @@ exports.isAppLoaderEnabled = isAppLoaderEnabled;
|
|
|
221
198
|
exports.LATEST_VERSION = LATEST_VERSION;
|
|
222
199
|
exports.getPaths = getPaths;
|
|
223
200
|
exports.getMediaPath = getMediaPath;
|
|
224
|
-
exports.getImageMinimizerPlugin = getImageMinimizerPlugin;
|
|
225
201
|
exports.resolveExtensions = [
|
|
226
202
|
'.wasm',
|
|
227
203
|
'.mjs',
|
|
@@ -232,3 +208,4 @@ exports.resolveExtensions = [
|
|
|
232
208
|
'.json',
|
|
233
209
|
];
|
|
234
210
|
exports.mainFields = ['browser', 'module', 'main'];
|
|
211
|
+
exports.isGoogleTagManagerEnabled = isGoogleTagManagerEnabled;
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
|
-
/**
|
|
3
|
-
* COMMON WEBPACK CONFIGURATION
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
2
|
const webpack = require('webpack');
|
|
7
|
-
const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|
8
3
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
9
4
|
const PostcssPresetEnv = require('postcss-preset-env');
|
|
10
5
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
@@ -12,9 +7,8 @@ const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack
|
|
|
12
7
|
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
|
|
13
8
|
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');
|
|
14
9
|
const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
|
|
15
|
-
const stylelintFormatter = require('stylelint-formatter-pretty');
|
|
16
|
-
// const ESLintPlugin = require('eslint-webpack-plugin');
|
|
17
10
|
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
|
|
11
|
+
const { ProvidePlugin } = require('webpack');
|
|
18
12
|
|
|
19
13
|
const {
|
|
20
14
|
excludeNodeModulesExcept,
|
|
@@ -23,9 +17,9 @@ const {
|
|
|
23
17
|
getAlias,
|
|
24
18
|
getPaths,
|
|
25
19
|
getMediaPath,
|
|
26
|
-
getImageMinimizerPlugin,
|
|
27
20
|
} = require('./helpers');
|
|
28
|
-
const {
|
|
21
|
+
const { ESBUILD_TARGET } = require('../esbuild');
|
|
22
|
+
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
29
23
|
|
|
30
24
|
// get the application configuration
|
|
31
25
|
const devMode = process.env.NODE_ENV !== 'production';
|
|
@@ -55,13 +49,8 @@ const plugins = [
|
|
|
55
49
|
}),
|
|
56
50
|
new CaseSensitivePathsPlugin(),
|
|
57
51
|
// new ESLintPlugin(),
|
|
58
|
-
new
|
|
59
|
-
|
|
60
|
-
emitWarning: true,
|
|
61
|
-
allowEmptyInput: true,
|
|
62
|
-
failOnError: !devMode,
|
|
63
|
-
formatter: stylelintFormatter,
|
|
64
|
-
files: '(lib|app)/**/view/**/*.{js,ts,jsx,tsx}',
|
|
52
|
+
new ProvidePlugin({
|
|
53
|
+
React: 'react',
|
|
65
54
|
}),
|
|
66
55
|
new CopyWebpackPlugin({
|
|
67
56
|
patterns: [
|
|
@@ -81,21 +70,29 @@ const plugins = [
|
|
|
81
70
|
{
|
|
82
71
|
from: 'node_modules/@elliemae/pui-user-monitoring/dist/public/js',
|
|
83
72
|
to: 'js',
|
|
73
|
+
toType: 'dir',
|
|
74
|
+
info: { minimized: true },
|
|
84
75
|
},
|
|
85
76
|
{
|
|
86
|
-
from: 'node_modules/@elliemae/pui-app-loader/dist/public/js
|
|
87
|
-
to: 'js
|
|
77
|
+
from: 'node_modules/@elliemae/pui-app-loader/dist/public/js',
|
|
78
|
+
to: 'js',
|
|
79
|
+
toType: 'dir',
|
|
88
80
|
noErrorOnMissing: true,
|
|
81
|
+
info: { minimized: true },
|
|
89
82
|
},
|
|
90
83
|
{
|
|
91
|
-
from: 'node_modules/@elliemae/encw-loader/dist/public/js
|
|
92
|
-
to: 'js
|
|
84
|
+
from: 'node_modules/@elliemae/encw-loader/dist/public/js',
|
|
85
|
+
to: 'js',
|
|
86
|
+
toType: 'dir',
|
|
93
87
|
noErrorOnMissing: true,
|
|
88
|
+
info: { minimized: true },
|
|
94
89
|
},
|
|
95
90
|
{
|
|
96
|
-
from: 'node_modules/@elliemae/pui-diagnostics/dist/public/js
|
|
97
|
-
to: 'js
|
|
91
|
+
from: 'node_modules/@elliemae/pui-diagnostics/dist/public/js',
|
|
92
|
+
to: 'js',
|
|
93
|
+
toType: 'dir',
|
|
98
94
|
noErrorOnMissing: true,
|
|
95
|
+
info: { minimized: true },
|
|
99
96
|
},
|
|
100
97
|
{
|
|
101
98
|
from: 'public',
|
|
@@ -111,10 +108,9 @@ const plugins = [
|
|
|
111
108
|
new DuplicatePackageCheckerPlugin(),
|
|
112
109
|
new MomentLocalesPlugin(),
|
|
113
110
|
new WebpackManifestPlugin(),
|
|
114
|
-
getImageMinimizerPlugin(),
|
|
115
111
|
];
|
|
116
112
|
|
|
117
|
-
if (
|
|
113
|
+
if (isTypeScriptEnabled()) {
|
|
118
114
|
plugins.push(
|
|
119
115
|
new ForkTsCheckerWebpackPlugin({
|
|
120
116
|
async: devMode,
|
|
@@ -138,6 +134,21 @@ module.exports = (options) => ({
|
|
|
138
134
|
optimization: options.optimization,
|
|
139
135
|
module: {
|
|
140
136
|
rules: [
|
|
137
|
+
{
|
|
138
|
+
test: /\.(jpe?g|png|gif|svg|ico)$/,
|
|
139
|
+
use: [
|
|
140
|
+
'file-loader',
|
|
141
|
+
{
|
|
142
|
+
loader: 'image-webpack-loader',
|
|
143
|
+
options: {
|
|
144
|
+
gifsicle: {
|
|
145
|
+
enabled: false,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
enforce: 'pre',
|
|
151
|
+
},
|
|
141
152
|
{
|
|
142
153
|
test: /\.(js|ts|jsx|tsx)$/,
|
|
143
154
|
enforce: 'pre',
|
|
@@ -165,7 +176,7 @@ module.exports = (options) => ({
|
|
|
165
176
|
loader: 'esbuild-loader',
|
|
166
177
|
options: {
|
|
167
178
|
loader: 'jsx',
|
|
168
|
-
target:
|
|
179
|
+
target: ESBUILD_TARGET,
|
|
169
180
|
},
|
|
170
181
|
},
|
|
171
182
|
},
|
|
@@ -179,7 +190,7 @@ module.exports = (options) => ({
|
|
|
179
190
|
loader: 'esbuild-loader',
|
|
180
191
|
options: {
|
|
181
192
|
loader: 'tsx',
|
|
182
|
-
target:
|
|
193
|
+
target: ESBUILD_TARGET,
|
|
183
194
|
},
|
|
184
195
|
},
|
|
185
196
|
},
|
|
@@ -194,6 +205,13 @@ module.exports = (options) => ({
|
|
|
194
205
|
sourceMap: true,
|
|
195
206
|
},
|
|
196
207
|
},
|
|
208
|
+
{
|
|
209
|
+
loader: 'esbuild-loader',
|
|
210
|
+
options: {
|
|
211
|
+
loader: 'css',
|
|
212
|
+
minify: options.mode === 'production',
|
|
213
|
+
},
|
|
214
|
+
},
|
|
197
215
|
{
|
|
198
216
|
loader: 'postcss-loader',
|
|
199
217
|
options: {
|
|
@@ -226,7 +244,7 @@ module.exports = (options) => ({
|
|
|
226
244
|
],
|
|
227
245
|
},
|
|
228
246
|
{
|
|
229
|
-
test: /\.(jpe?g|png|gif)$/i,
|
|
247
|
+
test: /\.(jpe?g|png|gif|ico)$/i,
|
|
230
248
|
exclude: excludeNodeModulesExcept(['@elliemae/*']),
|
|
231
249
|
type: 'asset',
|
|
232
250
|
},
|
|
@@ -247,6 +265,7 @@ module.exports = (options) => ({
|
|
|
247
265
|
extensions: ['.wasm', '.mjs', '.ts', '.tsx', '.js', '.jsx', '.json'],
|
|
248
266
|
mainFields: ['browser', 'module', 'main'],
|
|
249
267
|
alias: {
|
|
268
|
+
'lodash-es': 'lodash',
|
|
250
269
|
...getAlias(),
|
|
251
270
|
...((options.resolve || {}).alias || {}),
|
|
252
271
|
},
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DEVELOPMENT WEBPACK CONFIGURATION
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
1
|
const path = require('path');
|
|
6
2
|
const webpack = require('webpack');
|
|
7
3
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
@@ -9,7 +5,12 @@ const CircularDependencyPlugin = require('circular-dependency-plugin');
|
|
|
9
5
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
10
6
|
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
|
|
11
7
|
|
|
12
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
getAssetPath,
|
|
10
|
+
isAppLoaderEnabled,
|
|
11
|
+
getPaths,
|
|
12
|
+
isGoogleTagManagerEnabled,
|
|
13
|
+
} = require('./helpers');
|
|
13
14
|
const baseConfigFactory = require('./webpack.base.babel');
|
|
14
15
|
|
|
15
16
|
const {
|
|
@@ -25,6 +26,14 @@ const {
|
|
|
25
26
|
const devConfig = {
|
|
26
27
|
mode: 'development',
|
|
27
28
|
|
|
29
|
+
cache: {
|
|
30
|
+
type: 'filesystem',
|
|
31
|
+
allowCollectingMemory: true,
|
|
32
|
+
buildDependencies: {
|
|
33
|
+
config: [__filename],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
|
|
28
37
|
// Add hot reloading in development
|
|
29
38
|
entry: {
|
|
30
39
|
app: [
|
|
@@ -83,6 +92,7 @@ const devConfig = {
|
|
|
83
92
|
appLoaderScriptPath,
|
|
84
93
|
diagnosticsScriptPath,
|
|
85
94
|
encwLoaderScriptPath,
|
|
95
|
+
googleTagManager: isGoogleTagManagerEnabled(),
|
|
86
96
|
},
|
|
87
97
|
}),
|
|
88
98
|
new CircularDependencyPlugin({
|
|
@@ -4,15 +4,12 @@ const webpack = require('webpack');
|
|
|
4
4
|
const {
|
|
5
5
|
optimize: { LimitChunkCountPlugin },
|
|
6
6
|
} = require('webpack');
|
|
7
|
-
const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|
8
7
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
9
8
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
10
9
|
const PostcssPresetEnv = require('postcss-preset-env');
|
|
11
10
|
const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin');
|
|
12
11
|
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
|
|
13
12
|
const MomentLocalesPlugin = require('moment-locales-webpack-plugin');
|
|
14
|
-
const stylelintFormatter = require('stylelint-formatter-pretty');
|
|
15
|
-
// const ESLintPlugin = require('eslint-webpack-plugin');
|
|
16
13
|
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
|
|
17
14
|
|
|
18
15
|
const {
|
|
@@ -22,10 +19,10 @@ const {
|
|
|
22
19
|
modulesToTranspile,
|
|
23
20
|
getAssetPath,
|
|
24
21
|
getAlias,
|
|
25
|
-
getImageMinimizerPlugin,
|
|
26
22
|
getMediaPath,
|
|
27
23
|
} = require('./helpers');
|
|
28
|
-
const {
|
|
24
|
+
const { ESBUILD_TARGET } = require('../esbuild');
|
|
25
|
+
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
29
26
|
|
|
30
27
|
const devMode = process.env.NODE_ENV !== 'production';
|
|
31
28
|
const minicssLoader = {
|
|
@@ -46,15 +43,6 @@ const plugins = [
|
|
|
46
43
|
APP_CONFIG: getAppConfig(true),
|
|
47
44
|
}),
|
|
48
45
|
new CaseSensitivePathsPlugin(),
|
|
49
|
-
// new ESLintPlugin(),
|
|
50
|
-
new StyleLintPlugin({
|
|
51
|
-
emitError: true,
|
|
52
|
-
emitWarning: true,
|
|
53
|
-
allowEmptyInput: true,
|
|
54
|
-
failOnError: !devMode,
|
|
55
|
-
formatter: stylelintFormatter,
|
|
56
|
-
files: '(lib|app)/**/view/**/*.{js,ts,jsx,tsx}',
|
|
57
|
-
}),
|
|
58
46
|
new CopyWebpackPlugin({
|
|
59
47
|
patterns: [
|
|
60
48
|
{
|
|
@@ -73,10 +61,9 @@ const plugins = [
|
|
|
73
61
|
maxChunks: 1,
|
|
74
62
|
}),
|
|
75
63
|
new MomentLocalesPlugin(),
|
|
76
|
-
getImageMinimizerPlugin(),
|
|
77
64
|
];
|
|
78
65
|
|
|
79
|
-
if (
|
|
66
|
+
if (isTypeScriptEnabled()) {
|
|
80
67
|
plugins.push(
|
|
81
68
|
new ForkTsCheckerWebpackPlugin({
|
|
82
69
|
async: devMode,
|
|
@@ -101,6 +88,21 @@ module.exports = (options) => ({
|
|
|
101
88
|
optimization: options.optimization,
|
|
102
89
|
module: {
|
|
103
90
|
rules: [
|
|
91
|
+
{
|
|
92
|
+
test: /\.(jpe?g|png|gif|svg|ico)$/,
|
|
93
|
+
use: [
|
|
94
|
+
'file-loader',
|
|
95
|
+
{
|
|
96
|
+
loader: 'image-webpack-loader',
|
|
97
|
+
options: {
|
|
98
|
+
gifsicle: {
|
|
99
|
+
enabled: false,
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
enforce: 'pre',
|
|
105
|
+
},
|
|
104
106
|
{
|
|
105
107
|
test: /^(?!.*\.exec\.js$).*\.(js|ts|jsx|tsx)$/,
|
|
106
108
|
enforce: 'pre',
|
|
@@ -125,18 +127,31 @@ module.exports = (options) => ({
|
|
|
125
127
|
fullySpecified: false,
|
|
126
128
|
},
|
|
127
129
|
use: {
|
|
128
|
-
loader: '
|
|
130
|
+
loader: 'esbuild-loader',
|
|
129
131
|
options: {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
...(options.babelQuery || {}),
|
|
132
|
+
loader: 'jsx',
|
|
133
|
+
target: ESBUILD_TARGET,
|
|
133
134
|
},
|
|
134
135
|
},
|
|
135
136
|
},
|
|
136
137
|
{
|
|
137
138
|
test: /\.exec\.js$/,
|
|
138
139
|
exclude: /node_modules/,
|
|
139
|
-
use: [
|
|
140
|
+
use: [
|
|
141
|
+
{
|
|
142
|
+
loader: 'imports-loader',
|
|
143
|
+
options: {
|
|
144
|
+
wrapper: {
|
|
145
|
+
thisArg: 'window',
|
|
146
|
+
args: {
|
|
147
|
+
module: false,
|
|
148
|
+
exports: false,
|
|
149
|
+
define: false,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
],
|
|
140
155
|
},
|
|
141
156
|
{
|
|
142
157
|
test: /\.css$/,
|
|
@@ -186,7 +201,7 @@ module.exports = (options) => ({
|
|
|
186
201
|
],
|
|
187
202
|
},
|
|
188
203
|
{
|
|
189
|
-
test: /\.(jpe?g|png|gif)$/i,
|
|
204
|
+
test: /\.(jpe?g|png|gif|ico)$/i,
|
|
190
205
|
exclude: excludeNodeModulesExcept(['@elliemae/*']),
|
|
191
206
|
type: 'asset',
|
|
192
207
|
},
|
|
@@ -212,6 +227,7 @@ module.exports = (options) => ({
|
|
|
212
227
|
extensions: ['.wasm', '.mjs', '.ts', '.tsx', '.js', '.jsx', '.json'],
|
|
213
228
|
mainFields: ['browser', 'module', 'main'],
|
|
214
229
|
alias: {
|
|
230
|
+
'lodash-es': 'lodash',
|
|
215
231
|
...getAlias(),
|
|
216
232
|
...((options.resolve || {}).alias || {}),
|
|
217
233
|
},
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
// Important modules this config uses
|
|
2
1
|
const path = require('path');
|
|
3
|
-
const TerserPlugin = require('terser-webpack-plugin');
|
|
4
2
|
const CompressionPlugin = require('compression-webpack-plugin');
|
|
5
3
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
6
4
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
7
|
-
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
|
8
5
|
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
6
|
+
const { ESBuildMinifyPlugin } = require('esbuild-loader');
|
|
9
7
|
const { getLibraryName } = require('./helpers');
|
|
8
|
+
const { ESBUILD_TARGET } = require('../esbuild');
|
|
10
9
|
|
|
11
10
|
const libraryName = getLibraryName();
|
|
12
11
|
|
|
@@ -24,17 +23,10 @@ module.exports = require('./webpack.lib.base.babel')({
|
|
|
24
23
|
moduleIds: 'deterministic',
|
|
25
24
|
minimize: true,
|
|
26
25
|
minimizer: [
|
|
27
|
-
new
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
comparisons: false,
|
|
31
|
-
},
|
|
32
|
-
format: {
|
|
33
|
-
comments: false,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
26
|
+
new ESBuildMinifyPlugin({
|
|
27
|
+
target: ESBUILD_TARGET,
|
|
28
|
+
css: true,
|
|
36
29
|
}),
|
|
37
|
-
new CssMinimizerPlugin(),
|
|
38
30
|
],
|
|
39
31
|
nodeEnv: 'production',
|
|
40
32
|
sideEffects: true,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
4
|
-
// const WebpackPwaManifest = require('webpack-pwa-manifest');
|
|
5
4
|
const { GenerateSW } = require('workbox-webpack-plugin');
|
|
6
5
|
const CompressionPlugin = require('compression-webpack-plugin');
|
|
7
6
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
@@ -15,7 +14,9 @@ const {
|
|
|
15
14
|
LATEST_VERSION,
|
|
16
15
|
getPaths,
|
|
17
16
|
getAppVersion,
|
|
17
|
+
isGoogleTagManagerEnabled,
|
|
18
18
|
} = require('./helpers');
|
|
19
|
+
const { ESBUILD_TARGET } = require('../esbuild');
|
|
19
20
|
|
|
20
21
|
const getProdConfig = ({ latestVersion = true } = {}) => {
|
|
21
22
|
const { buildPath, publicPath } = getPaths(latestVersion);
|
|
@@ -23,12 +24,10 @@ const getProdConfig = ({ latestVersion = true } = {}) => {
|
|
|
23
24
|
return {
|
|
24
25
|
mode: 'production',
|
|
25
26
|
|
|
26
|
-
// In production, we skip all hot-reloading stuff
|
|
27
27
|
entry: {
|
|
28
28
|
app: path.join(process.cwd(), 'app/index'),
|
|
29
29
|
},
|
|
30
30
|
|
|
31
|
-
// eslint-disable-next-line max-len
|
|
32
31
|
// Utilize long-term caching by adding content hashes (not compilation hashes) to compiled assets
|
|
33
32
|
output: {
|
|
34
33
|
path: buildPath,
|
|
@@ -42,7 +41,7 @@ const getProdConfig = ({ latestVersion = true } = {}) => {
|
|
|
42
41
|
moduleIds: 'deterministic',
|
|
43
42
|
minimizer: [
|
|
44
43
|
new ESBuildMinifyPlugin({
|
|
45
|
-
target:
|
|
44
|
+
target: ESBUILD_TARGET,
|
|
46
45
|
css: true,
|
|
47
46
|
}),
|
|
48
47
|
],
|
|
@@ -73,34 +72,17 @@ const getProdConfig = ({ latestVersion = true } = {}) => {
|
|
|
73
72
|
filename: '[path][base].gz',
|
|
74
73
|
algorithm: 'gzip',
|
|
75
74
|
test: /\.js$|\.css$$/,
|
|
76
|
-
exclude: [
|
|
75
|
+
exclude: [
|
|
76
|
+
/\/adrum-ext/,
|
|
77
|
+
/\/emuiUserMonitoring/,
|
|
78
|
+
/\/emuiDiagnostics/,
|
|
79
|
+
/\/emuiAppLoader/,
|
|
80
|
+
/\/encwLoader/,
|
|
81
|
+
],
|
|
77
82
|
// we are compressing all files since in aws cloudfront edge lambda, we don't want to whitelist files that are not compressed due to below limits
|
|
78
83
|
minRatio: Number.MAX_SAFE_INTEGER,
|
|
79
84
|
}),
|
|
80
85
|
|
|
81
|
-
// new WebpackPwaManifest({
|
|
82
|
-
// name: 'Ellie Mae UI Boilerplate',
|
|
83
|
-
// short_name: 'EM BP',
|
|
84
|
-
// description: 'EllieMae UI Boilerplate-based project!',
|
|
85
|
-
// background_color: '#fafafa',
|
|
86
|
-
// theme_color: '#b1624d',
|
|
87
|
-
// inject: true,
|
|
88
|
-
// ios: true,
|
|
89
|
-
// icons: [
|
|
90
|
-
// {
|
|
91
|
-
// src: path.resolve('app/view/images/icon-512x512.png'),
|
|
92
|
-
// destination: path.join('media', 'images'),
|
|
93
|
-
// sizes: [72, 96, 128, 144, 192, 384, 512],
|
|
94
|
-
// },
|
|
95
|
-
// {
|
|
96
|
-
// src: path.resolve('app/view/images/icon-512x512.png'),
|
|
97
|
-
// sizes: [120, 152, 167, 180],
|
|
98
|
-
// ios: true,
|
|
99
|
-
// destination: path.join('media', 'images'),
|
|
100
|
-
// },
|
|
101
|
-
// ],
|
|
102
|
-
// }),
|
|
103
|
-
|
|
104
86
|
new BundleAnalyzerPlugin({
|
|
105
87
|
analyzerMode: 'static',
|
|
106
88
|
reportFilename: path.join(process.cwd(), 'reports/bundle-stats.html'),
|
|
@@ -158,6 +140,7 @@ const htmlWebpackPlugin = new HtmlWebpackPlugin({
|
|
|
158
140
|
appLoaderScriptPath,
|
|
159
141
|
diagnosticsScriptPath,
|
|
160
142
|
encwLoaderScriptPath,
|
|
143
|
+
googleTagManager: isGoogleTagManagerEnabled(),
|
|
161
144
|
},
|
|
162
145
|
});
|
|
163
146
|
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
/* eslint-disable max-lines
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
2
|
const webpack = require('webpack');
|
|
3
3
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
4
4
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
5
|
-
const StyleLintPlugin = require('stylelint-webpack-plugin');
|
|
6
|
-
const stylelintFormatter = require('stylelint-formatter-pretty');
|
|
7
5
|
const CompressionPlugin = require('compression-webpack-plugin');
|
|
8
6
|
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
|
|
9
7
|
const {
|
|
@@ -15,13 +13,13 @@ const {
|
|
|
15
13
|
resolveExtensions,
|
|
16
14
|
mainFields,
|
|
17
15
|
getMediaPath,
|
|
18
|
-
getImageMinimizerPlugin,
|
|
19
16
|
} = require('./helpers');
|
|
17
|
+
const { ESBUILD_TARGET } = require('../esbuild');
|
|
20
18
|
|
|
21
19
|
const IS_APP = isApp();
|
|
22
20
|
const CWD = process.cwd();
|
|
23
21
|
|
|
24
|
-
const getAdditionalPlugins = (
|
|
22
|
+
const getAdditionalPlugins = () => [
|
|
25
23
|
new webpack.DefinePlugin({
|
|
26
24
|
APP_CONFIG: getAppConfig(),
|
|
27
25
|
}),
|
|
@@ -51,15 +49,6 @@ const getAdditionalPlugins = (isProd) => [
|
|
|
51
49
|
},
|
|
52
50
|
],
|
|
53
51
|
}),
|
|
54
|
-
new StyleLintPlugin({
|
|
55
|
-
emitError: true,
|
|
56
|
-
emitWarning: true,
|
|
57
|
-
allowEmptyInput: true,
|
|
58
|
-
failOnError: isProd,
|
|
59
|
-
formatter: stylelintFormatter,
|
|
60
|
-
files: '(lib|app)/**/view/**/*.{js,ts,jsx,tsx}',
|
|
61
|
-
}),
|
|
62
|
-
getImageMinimizerPlugin(),
|
|
63
52
|
];
|
|
64
53
|
|
|
65
54
|
const compressionPlugin = new CompressionPlugin({
|
|
@@ -71,6 +60,21 @@ const compressionPlugin = new CompressionPlugin({
|
|
|
71
60
|
});
|
|
72
61
|
|
|
73
62
|
const getModulePreRules = () => [
|
|
63
|
+
{
|
|
64
|
+
test: /\.(jpe?g|png|gif|svg|ico)$/,
|
|
65
|
+
use: [
|
|
66
|
+
'file-loader',
|
|
67
|
+
{
|
|
68
|
+
loader: 'image-webpack-loader',
|
|
69
|
+
options: {
|
|
70
|
+
gifsicle: {
|
|
71
|
+
enabled: false,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
enforce: 'pre',
|
|
77
|
+
},
|
|
74
78
|
{
|
|
75
79
|
test: /\.(js|ts|jsx|tsx)$/,
|
|
76
80
|
enforce: 'pre',
|
|
@@ -98,9 +102,10 @@ const getModuleRules = () => [
|
|
|
98
102
|
fullySpecified: false,
|
|
99
103
|
},
|
|
100
104
|
use: {
|
|
101
|
-
loader: '
|
|
105
|
+
loader: 'esbuild-loader',
|
|
102
106
|
options: {
|
|
103
|
-
|
|
107
|
+
loader: 'jsx',
|
|
108
|
+
target: ESBUILD_TARGET,
|
|
104
109
|
},
|
|
105
110
|
},
|
|
106
111
|
},
|
|
@@ -125,7 +130,7 @@ const getModuleRules = () => [
|
|
|
125
130
|
],
|
|
126
131
|
},
|
|
127
132
|
{
|
|
128
|
-
test: /\.(jpe?g|png|gif)$/i,
|
|
133
|
+
test: /\.(jpe?g|png|gif|ico)$/i,
|
|
129
134
|
exclude: excludeNodeModulesExcept(['@elliemae/*']),
|
|
130
135
|
type: 'asset',
|
|
131
136
|
},
|
|
@@ -145,7 +150,7 @@ exports.webpackFinal = async (config, { configType }) => {
|
|
|
145
150
|
config.module.rules.push(...getModulePreRules());
|
|
146
151
|
config.module.rules.unshift(...getModuleRules(isProd));
|
|
147
152
|
|
|
148
|
-
config.plugins.push(...getAdditionalPlugins(
|
|
153
|
+
config.plugins.push(...getAdditionalPlugins());
|
|
149
154
|
if (isProd) {
|
|
150
155
|
config.plugins.push(compressionPlugin);
|
|
151
156
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/pui-cli",
|
|
3
|
-
"version": "6.0.0-beta.
|
|
3
|
+
"version": "6.0.0-beta.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "EllieMae Platform UI CLI",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -47,206 +47,208 @@
|
|
|
47
47
|
"indent": 4
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@babel/cli": "~7.
|
|
51
|
-
"@babel/core": "~7.
|
|
52
|
-
"@babel/
|
|
53
|
-
"@babel/
|
|
54
|
-
"@babel/plugin-proposal-
|
|
50
|
+
"@babel/cli": "~7.16.0",
|
|
51
|
+
"@babel/core": "~7.16.0",
|
|
52
|
+
"@babel/eslint-parser": "~7.16.3",
|
|
53
|
+
"@babel/node": "~7.16.0",
|
|
54
|
+
"@babel/plugin-proposal-class-properties": "~7.16.0",
|
|
55
|
+
"@babel/plugin-proposal-export-default-from": "~7.16.0",
|
|
55
56
|
"@babel/plugin-syntax-dynamic-import": "~7.8.3",
|
|
56
|
-
"@babel/plugin-transform-modules-commonjs": "~7.
|
|
57
|
-
"@babel/plugin-transform-react-constant-elements": "~7.
|
|
58
|
-
"@babel/plugin-transform-react-inline-elements": "~7.
|
|
59
|
-
"@babel/plugin-transform-react-jsx-source": "~7.
|
|
60
|
-
"@babel/plugin-transform-runtime": "~7.
|
|
61
|
-
"@babel/preset-env": "~7.
|
|
62
|
-
"@babel/preset-react": "~7.
|
|
63
|
-
"@babel/preset-typescript": "~7.
|
|
64
|
-
"@babel/runtime": "~7.
|
|
65
|
-
"@commitlint/cli": "~
|
|
66
|
-
"@commitlint/config-conventional": "~
|
|
57
|
+
"@babel/plugin-transform-modules-commonjs": "~7.16.0",
|
|
58
|
+
"@babel/plugin-transform-react-constant-elements": "~7.16.0",
|
|
59
|
+
"@babel/plugin-transform-react-inline-elements": "~7.16.0",
|
|
60
|
+
"@babel/plugin-transform-react-jsx-source": "~7.16.0",
|
|
61
|
+
"@babel/plugin-transform-runtime": "~7.16.4",
|
|
62
|
+
"@babel/preset-env": "~7.16.4",
|
|
63
|
+
"@babel/preset-react": "~7.16.0",
|
|
64
|
+
"@babel/preset-typescript": "~7.16.0",
|
|
65
|
+
"@babel/runtime": "~7.16.3",
|
|
66
|
+
"@commitlint/cli": "~15.0.0",
|
|
67
|
+
"@commitlint/config-conventional": "~15.0.0",
|
|
67
68
|
"@elliemae/browserslist-config-elliemae": "~1.2.1",
|
|
68
|
-
"@pmmmwh/react-refresh-webpack-plugin": "~0.5.
|
|
69
|
-
"@semantic-release/changelog": "~6.0.
|
|
70
|
-
"@semantic-release/exec": "~6.0.
|
|
71
|
-
"@semantic-release/git": "~10.0.
|
|
72
|
-
"@storybook/addon-a11y": "~6.3.
|
|
73
|
-
"@storybook/addon-actions": "~6.3.
|
|
74
|
-
"@storybook/addon-backgrounds": "~6.3.
|
|
69
|
+
"@pmmmwh/react-refresh-webpack-plugin": "~0.5.2",
|
|
70
|
+
"@semantic-release/changelog": "~6.0.1",
|
|
71
|
+
"@semantic-release/exec": "~6.0.2",
|
|
72
|
+
"@semantic-release/git": "~10.0.1",
|
|
73
|
+
"@storybook/addon-a11y": "~6.3.12",
|
|
74
|
+
"@storybook/addon-actions": "~6.3.12",
|
|
75
|
+
"@storybook/addon-backgrounds": "~6.3.12",
|
|
75
76
|
"@storybook/addon-console": "~1.2.3",
|
|
76
|
-
"@storybook/addon-controls": "~6.3.
|
|
77
|
-
"@storybook/addon-docs": "~6.3.
|
|
77
|
+
"@storybook/addon-controls": "~6.3.12",
|
|
78
|
+
"@storybook/addon-docs": "~6.3.12",
|
|
78
79
|
"@storybook/addon-events": "~6.2.9",
|
|
79
80
|
"@storybook/addon-knobs": "~6.3.1",
|
|
80
|
-
"@storybook/addon-links": "~6.3.
|
|
81
|
-
"@storybook/addon-storysource": "~6.3.
|
|
82
|
-
"@storybook/addon-toolbars": "~6.3.
|
|
83
|
-
"@storybook/addon-viewport": "~6.3.
|
|
84
|
-
"@storybook/addons": "~6.3.
|
|
85
|
-
"@storybook/builder-webpack5": "~6.3.
|
|
86
|
-
"@storybook/manager-webpack5": "~6.3.
|
|
87
|
-
"@storybook/react": "~6.3.
|
|
88
|
-
"@storybook/theming": "~6.3.
|
|
81
|
+
"@storybook/addon-links": "~6.3.12",
|
|
82
|
+
"@storybook/addon-storysource": "~6.3.12",
|
|
83
|
+
"@storybook/addon-toolbars": "~6.3.12",
|
|
84
|
+
"@storybook/addon-viewport": "~6.3.12",
|
|
85
|
+
"@storybook/addons": "~6.3.12",
|
|
86
|
+
"@storybook/builder-webpack5": "~6.3.12",
|
|
87
|
+
"@storybook/manager-webpack5": "~6.3.12",
|
|
88
|
+
"@storybook/react": "~6.3.12",
|
|
89
|
+
"@storybook/theming": "~6.3.12",
|
|
90
|
+
"@stylelint/postcss-css-in-js": "~0.37.2",
|
|
89
91
|
"@svgr/webpack": "~5.5.0",
|
|
90
|
-
"@testing-library/jest-dom": "~5.
|
|
92
|
+
"@testing-library/jest-dom": "~5.15.1",
|
|
91
93
|
"@testing-library/react": "~12.1.2",
|
|
92
94
|
"@testing-library/react-hooks": "~7.0.2",
|
|
93
|
-
"@types/jest": "~27.0.
|
|
94
|
-
"@types/node": "~16.10
|
|
95
|
+
"@types/jest": "~27.0.3",
|
|
96
|
+
"@types/node": "~16.11.10",
|
|
95
97
|
"@types/rimraf": "~3.0.2",
|
|
96
98
|
"@types/testing-library__jest-dom": "~5.14.1",
|
|
97
|
-
"@typescript-eslint/eslint-plugin": "~4.
|
|
98
|
-
"@typescript-eslint/parser": "~4.
|
|
99
|
-
"autoprefixer": "~10.
|
|
100
|
-
"axe-core": "~4.3.
|
|
101
|
-
"babel-
|
|
102
|
-
"babel-loader": "~8.2.2",
|
|
99
|
+
"@typescript-eslint/eslint-plugin": "~5.4.0",
|
|
100
|
+
"@typescript-eslint/parser": "~5.4.0",
|
|
101
|
+
"autoprefixer": "~10.4.0",
|
|
102
|
+
"axe-core": "~4.3.5",
|
|
103
|
+
"babel-loader": "~8.2.3",
|
|
103
104
|
"babel-plugin-add-import-extension": "1.5.1",
|
|
105
|
+
"babel-plugin-date-fns": "~2.0.0",
|
|
104
106
|
"babel-plugin-dynamic-import-node": "~2.3.3",
|
|
105
107
|
"babel-plugin-import-remove-resource-query": "~1.0.0",
|
|
108
|
+
"babel-plugin-lodash": "~3.3.4",
|
|
106
109
|
"babel-plugin-module-resolver": "~4.1.0",
|
|
107
|
-
"babel-plugin-
|
|
110
|
+
"babel-plugin-source-map-support": "~2.1.3",
|
|
111
|
+
"babel-plugin-styled-components": "~2.0.1",
|
|
108
112
|
"babel-plugin-transform-react-remove-prop-types": "~0.4.24",
|
|
109
113
|
"babel-plugin-transform-remove-console": "~6.9.4",
|
|
110
114
|
"babel-plugin-transform-strip-block": "~0.0.4",
|
|
111
115
|
"body-parser": "~1.19.0",
|
|
112
|
-
"browserslist": "~4.
|
|
116
|
+
"browserslist": "~4.18.1",
|
|
113
117
|
"bundlesize": "~0.18.1",
|
|
114
118
|
"case-sensitive-paths-webpack-plugin": "~2.4.0",
|
|
115
119
|
"chalk": "~4.1.2",
|
|
116
120
|
"circular-dependency-plugin": "~5.2.2",
|
|
117
121
|
"classnames": "~2.3.1",
|
|
118
|
-
"compare-versions": "~
|
|
122
|
+
"compare-versions": "~4.1.1",
|
|
119
123
|
"compression": "~1.7.4",
|
|
120
|
-
"compression-webpack-plugin": "~9.0.
|
|
121
|
-
"copy-webpack-plugin": "~
|
|
124
|
+
"compression-webpack-plugin": "~9.0.1",
|
|
125
|
+
"copy-webpack-plugin": "~10.0.0",
|
|
122
126
|
"cors": "~2.8.5",
|
|
123
127
|
"cross-env": "~7.0.3",
|
|
124
|
-
"css-loader": "~6.
|
|
125
|
-
"css-minimizer-webpack-plugin": "~3.
|
|
128
|
+
"css-loader": "~6.5.1",
|
|
129
|
+
"css-minimizer-webpack-plugin": "~3.2.0",
|
|
126
130
|
"depcheck": "~1.4.2",
|
|
127
131
|
"docdash": "~1.2.0",
|
|
128
132
|
"dotenv": "~10.0.0",
|
|
129
133
|
"dotenv-webpack": "~7.0.3",
|
|
130
134
|
"duplicate-package-checker-webpack-plugin": "~3.0.0",
|
|
131
|
-
"esbuild
|
|
132
|
-
"
|
|
135
|
+
"esbuild": "~0.13.15",
|
|
136
|
+
"esbuild-loader": "~2.16.0",
|
|
137
|
+
"eslint": "~8.3.0",
|
|
133
138
|
"eslint-config-airbnb": "~18.2.1",
|
|
134
|
-
"eslint-config-airbnb-base": "~
|
|
135
|
-
"eslint-config-airbnb-typescript": "~
|
|
139
|
+
"eslint-config-airbnb-base": "~15.0.0",
|
|
140
|
+
"eslint-config-airbnb-typescript": "~15.0.0",
|
|
136
141
|
"eslint-config-prettier": "~8.3.0",
|
|
137
142
|
"eslint-config-react-app": "~6.0.0",
|
|
138
143
|
"eslint-import-resolver-babel-module": "~5.3.1",
|
|
139
144
|
"eslint-import-resolver-typescript": "~2.5.0",
|
|
140
|
-
"eslint-import-resolver-webpack": "~0.13.
|
|
141
|
-
"eslint-loader": "~4.0.2",
|
|
145
|
+
"eslint-import-resolver-webpack": "~0.13.2",
|
|
142
146
|
"eslint-plugin-compat": "~3.13.0",
|
|
143
147
|
"eslint-plugin-eslint-comments": "~3.2.0",
|
|
144
|
-
"eslint-plugin-import": "~2.
|
|
145
|
-
"eslint-plugin-jest": "~
|
|
146
|
-
"eslint-plugin-jsdoc": "~
|
|
147
|
-
"eslint-plugin-jsx-a11y": "~6.
|
|
148
|
-
"eslint-plugin-mdx": "~1.
|
|
148
|
+
"eslint-plugin-import": "~2.25.3",
|
|
149
|
+
"eslint-plugin-jest": "~25.3.0",
|
|
150
|
+
"eslint-plugin-jsdoc": "~37.0.3",
|
|
151
|
+
"eslint-plugin-jsx-a11y": "~6.5.1",
|
|
152
|
+
"eslint-plugin-mdx": "~1.16.0",
|
|
149
153
|
"eslint-plugin-prettier": "~4.0.0",
|
|
150
|
-
"eslint-plugin-react": "~7.
|
|
151
|
-
"eslint-plugin-react-hooks": "~4.
|
|
154
|
+
"eslint-plugin-react": "~7.27.1",
|
|
155
|
+
"eslint-plugin-react-hooks": "~4.3.0",
|
|
152
156
|
"eslint-plugin-redux-saga": "~1.2.1",
|
|
153
|
-
"eslint-plugin-testing-library": "~
|
|
157
|
+
"eslint-plugin-testing-library": "~5.0.0",
|
|
154
158
|
"eslint-plugin-wdio": "~7.4.2",
|
|
155
|
-
"eslint-webpack-plugin": "~3.0.1",
|
|
156
159
|
"execa": "~5.1.1",
|
|
157
160
|
"express": "~4.17.1",
|
|
158
|
-
"express-pino-logger": "~
|
|
161
|
+
"express-pino-logger": "~7.0.0",
|
|
159
162
|
"file-loader": "~6.2.0",
|
|
160
|
-
"fork-ts-checker-webpack-plugin": "~6.
|
|
163
|
+
"fork-ts-checker-webpack-plugin": "~6.4.2",
|
|
161
164
|
"helmet-csp": "~3.4.0",
|
|
162
|
-
"html-loader": "~
|
|
163
|
-
"html-webpack-plugin": "~5.
|
|
164
|
-
"http-server": "~
|
|
165
|
-
"husky": "~7.0.
|
|
165
|
+
"html-loader": "~3.0.1",
|
|
166
|
+
"html-webpack-plugin": "~5.5.0",
|
|
167
|
+
"http-server": "~14.0.0",
|
|
168
|
+
"husky": "~7.0.4",
|
|
166
169
|
"husky-init": "~7.0.0",
|
|
167
|
-
"image-
|
|
168
|
-
"
|
|
169
|
-
"imagemin-jpegtran": "~7.0.0",
|
|
170
|
-
"imagemin-optipng": "~8.0.0",
|
|
171
|
-
"imagemin-svgo": "~10.0.0",
|
|
172
|
-
"imports-loader": "~3.0.0",
|
|
170
|
+
"image-webpack-loader": "~8.0.1",
|
|
171
|
+
"imports-loader": "~3.1.1",
|
|
173
172
|
"ip": "~1.1.5",
|
|
174
173
|
"jest-axe": "~5.0.1",
|
|
175
|
-
"jest-cli": "~27.
|
|
174
|
+
"jest-cli": "~27.3.1",
|
|
176
175
|
"jest-sonar-reporter": "~2.0.0",
|
|
177
|
-
"jest-styled-components": "~7.0.
|
|
176
|
+
"jest-styled-components": "~7.0.8",
|
|
178
177
|
"jscodeshift": "~0.13.0",
|
|
179
178
|
"jsdoc": "~3.6.7",
|
|
180
|
-
"lint-staged": "~
|
|
181
|
-
"mini-css-extract-plugin": "~2.4.
|
|
179
|
+
"lint-staged": "~12.1.2",
|
|
180
|
+
"mini-css-extract-plugin": "~2.4.5",
|
|
182
181
|
"minimist": "~1.2.5",
|
|
183
182
|
"moment": "~2.29.1",
|
|
184
183
|
"moment-locales-webpack-plugin": "~1.2.0",
|
|
185
184
|
"msw": "~0.35.0",
|
|
186
|
-
"node-plop": "~0.26.
|
|
187
|
-
"nodemon": "~2.0.
|
|
188
|
-
"npm-check-updates": "
|
|
185
|
+
"node-plop": "~0.26.3",
|
|
186
|
+
"nodemon": "~2.0.15",
|
|
187
|
+
"npm-check-updates": "12.0.2",
|
|
189
188
|
"null-loader": "~4.0.1",
|
|
190
|
-
"pino": "~
|
|
191
|
-
"pino-pretty": "~7.0
|
|
189
|
+
"pino": "~7.4.1",
|
|
190
|
+
"pino-pretty": "~7.2.0",
|
|
192
191
|
"pinst": "~2.1.6",
|
|
193
|
-
"plop": "~2.7.
|
|
194
|
-
"postcss": "~8.
|
|
195
|
-
"postcss-
|
|
196
|
-
"postcss-
|
|
197
|
-
"
|
|
192
|
+
"plop": "~2.7.6",
|
|
193
|
+
"postcss": "~8.4.1",
|
|
194
|
+
"postcss-jsx": "~0.36.4",
|
|
195
|
+
"postcss-html": "~1.3.0",
|
|
196
|
+
"postcss-markdown": "~1.2.0",
|
|
197
|
+
"postcss-syntax": "~0.36.2",
|
|
198
|
+
"postcss-loader": "~6.2.0",
|
|
199
|
+
"postcss-preset-env": "~7.0.1",
|
|
200
|
+
"prettier": "~2.5.0",
|
|
198
201
|
"pug": "~3.0.2",
|
|
199
202
|
"pug-loader": "~2.4.0",
|
|
200
203
|
"raf": "~3.4.1",
|
|
201
204
|
"raw-loader": "~4.0.2",
|
|
202
205
|
"react-axe": "~3.5.4",
|
|
203
206
|
"react-docgen": "~5.4.0",
|
|
204
|
-
"react-refresh": "~0.
|
|
207
|
+
"react-refresh": "~0.11.0",
|
|
205
208
|
"react-test-renderer": "~17.0.2",
|
|
206
209
|
"resize-observer-polyfill": "~1.5.1",
|
|
207
210
|
"rimraf": "~3.0.2",
|
|
208
211
|
"script-loader": "~0.7.2",
|
|
209
|
-
"semantic-release": "~18.0.
|
|
212
|
+
"semantic-release": "~18.0.1",
|
|
210
213
|
"shelljs": "~0.8.4",
|
|
211
214
|
"slackify-markdown": "~4.3.0",
|
|
212
215
|
"storybook-react-router": "~1.0.8",
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"stylelint
|
|
216
|
+
"storybook-addon-turbo-build": "~1.0.1",
|
|
217
|
+
"style-loader": "~3.3.1",
|
|
218
|
+
"stylelint": "~14.1.0",
|
|
219
|
+
"stylelint-config-recommended": "~6.0.0",
|
|
216
220
|
"stylelint-config-styled-components": "~0.1.1",
|
|
217
221
|
"stylelint-custom-processor-loader": "~0.6.0",
|
|
218
|
-
"stylelint-formatter-pretty": "~2.1.1",
|
|
219
222
|
"stylelint-processor-styled-components": "~1.10.0",
|
|
220
|
-
"stylelint-webpack-plugin": "~3.0.1",
|
|
221
223
|
"svg-url-loader": "~7.1.1",
|
|
222
|
-
"svgo": "~2.
|
|
223
|
-
"terser-webpack-plugin": "~5.2.
|
|
224
|
-
"ts-node": "~10.
|
|
225
|
-
"tsc-alias": "~1.
|
|
226
|
-
"tsc-files": "~1.1.
|
|
227
|
-
"tsconfig-paths": "~3.
|
|
228
|
-
"tsconfig-paths-webpack-plugin": "~3.5.
|
|
229
|
-
"type-fest": "~2.
|
|
230
|
-
"typescript": "~4.
|
|
224
|
+
"svgo": "~2.8.0",
|
|
225
|
+
"terser-webpack-plugin": "~5.2.5",
|
|
226
|
+
"ts-node": "~10.4.0",
|
|
227
|
+
"tsc-alias": "~1.4.1",
|
|
228
|
+
"tsc-files": "~1.1.3",
|
|
229
|
+
"tsconfig-paths": "~3.12.0",
|
|
230
|
+
"tsconfig-paths-webpack-plugin": "~3.5.2",
|
|
231
|
+
"type-fest": "~2.6.0",
|
|
232
|
+
"typescript": "~4.5.2",
|
|
231
233
|
"update-notifier": "~5.1.0",
|
|
232
234
|
"url-loader": "~4.1.1",
|
|
233
235
|
"uuid": "~8.3.2",
|
|
234
|
-
"webpack": "~5.
|
|
235
|
-
"webpack-bundle-analyzer": "~4.
|
|
236
|
-
"webpack-cli": "~4.9.
|
|
237
|
-
"webpack-dev-middleware": "~5.2.
|
|
236
|
+
"webpack": "~5.64.4",
|
|
237
|
+
"webpack-bundle-analyzer": "~4.5.0",
|
|
238
|
+
"webpack-cli": "~4.9.1",
|
|
239
|
+
"webpack-dev-middleware": "~5.2.2",
|
|
238
240
|
"webpack-hot-middleware": "~2.25.1",
|
|
239
241
|
"webpack-manifest-plugin": "~4.0.2",
|
|
240
242
|
"webpack-merge": "~5.8.0",
|
|
241
243
|
"webpack-pwa-manifest": "~4.3.0",
|
|
242
244
|
"webpack-strip-block": "~0.3.0",
|
|
243
245
|
"whatwg-fetch": "~3.6.2",
|
|
244
|
-
"workbox-webpack-plugin": "~6.
|
|
246
|
+
"workbox-webpack-plugin": "~6.4.1",
|
|
245
247
|
"yargs": "~17.2.1"
|
|
246
248
|
},
|
|
247
249
|
"devDependencies": {
|
|
248
|
-
"redux": "~4.1.
|
|
250
|
+
"redux": "~4.1.2",
|
|
249
251
|
"redux-saga": "~1.1.3",
|
|
250
|
-
"styled-components": "~5.3.
|
|
252
|
+
"styled-components": "~5.3.3"
|
|
251
253
|
}
|
|
252
254
|
}
|