@elliemae/pui-cli 6.0.0-beta.2 → 6.0.0-beta.3

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.
@@ -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.18', proposals: true },
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
- // ToDo: Once ECC team migrates from webpack 3 to webpack 5 remove tis strip-block plugin from commonjs output. without this they are receiving error when import.meta is used in app sdk
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.js','**/*.test.ts' ./app`,
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
 
@@ -1,10 +1,11 @@
1
1
  const { exit } = require('yargs');
2
2
  const { exec, logError, logSuccess } = require('./utils');
3
- const { isTypeScripEnabled } = require('../typescript/util');
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 "./**/*.{js, ts}" --color --allowEmptyInput --ignore-pattern '/dist/**/*'`,
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 (isTypeScripEnabled) await exec('tsc');
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);
@@ -2,7 +2,7 @@ const { exit } = require('yargs');
2
2
  const path = require('path');
3
3
  const { writeFile, readFile } = require('fs/promises');
4
4
  const { exec, logInfo, logError, logSuccess } = require('./utils');
5
- const { isTypeScripEnabled } = require('../typescript/util');
5
+ const { isTypeScriptEnabled } = require('../typescript/util');
6
6
 
7
7
  const { name } = require('../../package.json');
8
8
 
@@ -42,7 +42,7 @@ async function nodeBuild({ srcPath, commonJS, emitModuleType, target }) {
42
42
  const targetEnv = target === 'node' ? 'TARGET_ENV=node' : '';
43
43
  const babelEnv = commonJS ? ' ES_MODULES=false' : '';
44
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`,
45
+ `cross-env NODE_ENV=production MODULE_EXTENSIONS=true ${targetEnv}${babelEnv} babel --extensions ".ts,.tsx,.js,.jsx" ${srcPath} --out-dir ${outDir} --copy-files --no-copy-ignored --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
46
  { shell: true, stdio: 'inherit' },
47
47
  );
48
48
  if (emitModuleType) {
@@ -58,7 +58,7 @@ async function nodeBuild({ srcPath, commonJS, emitModuleType, target }) {
58
58
  async function pack({ production, target, module, srcPath, emitModuleType }) {
59
59
  logInfo('Build in-progress...');
60
60
  await exec('rimraf ./dist');
61
- if (isTypeScripEnabled()) {
61
+ if (isTypeScriptEnabled()) {
62
62
  await compileTypeScript();
63
63
  }
64
64
  if (target !== 'node') await webBuild(production);
@@ -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
  );
@@ -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';
@@ -112,16 +112,15 @@ const reactRules = {
112
112
  exports.reactRules = reactRules;
113
113
 
114
114
  exports.baseConfig = {
115
- parser: 'babel-eslint',
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
- es6: true,
121
+ es2021: true,
122
122
  },
123
123
  parserOptions: {
124
- ecmaVersion: 2020,
125
124
  sourceType: 'module',
126
125
  ecmaFeatures: {
127
126
  jsx: true,
@@ -1,5 +1,5 @@
1
1
  module.exports = {
2
- '*.{ts,tsx}': ['tsc-files'],
2
+ '*.{ts,tsx}': ['tsc-files --noEmit --emitDeclarationOnly false'],
3
3
  '*.{js,ts,jsx,tsx}': [
4
4
  'npm run lint:fix',
5
5
  'npm run test:staged',
@@ -1,16 +1,9 @@
1
1
  module.exports = {
2
- processors: [
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
@@ -12,6 +12,8 @@ const sources = [
12
12
  '*.ellielabs.com',
13
13
  'http://pdx-col.eum-appdynamics.com',
14
14
  'https://pdx-col.eum-appdynamics.com/',
15
+ 'https://www.google-analytics.com',
16
+ 'https://www.googletagmanager.com',
15
17
  ];
16
18
 
17
19
  const sendFileWithCSPNonce = ({
@@ -3,9 +3,9 @@ const path = require('path');
3
3
 
4
4
  const getCWD = () => process.cwd();
5
5
 
6
- const allJS = new RegExp(/\.js$/);
6
+ const allJS = /\.js$/;
7
7
 
8
- const serviceEndpoints = new RegExp(/\.endpoint\.js$/);
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: {
@@ -1,5 +1,5 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
3
 
4
- exports.isTypeScripEnabled = () =>
4
+ exports.isTypeScriptEnabled = () =>
5
5
  fs.existsSync(path.join(process.cwd(), 'tsconfig.json'));
@@ -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 = ['@elliemae/pui-*', '@elliemae/ds-*', '@dnd-kit/*'];
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 getImageMinimizerPlugin = () =>
180
- new ImageMinimizerPlugin({
181
- minimizerOptions: {
182
- // Lossless optimization with custom option
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,5 @@ exports.resolveExtensions = [
232
208
  '.json',
233
209
  ];
234
210
  exports.mainFields = ['browser', 'module', 'main'];
211
+ exports.isGoogleTagManagerEnabled = isGoogleTagManagerEnabled;
212
+ exports.ESBUILD_TARGET = 'es2020';
@@ -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,8 +7,6 @@ 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');
18
11
  const { ProvidePlugin } = require('webpack');
19
12
 
@@ -24,11 +17,9 @@ const {
24
17
  getAlias,
25
18
  getPaths,
26
19
  getMediaPath,
27
- getImageMinimizerPlugin,
20
+ ESBUILD_TARGET,
28
21
  } = require('./helpers');
29
- const { isTypeScripEnabled } = require('../typescript/util');
30
-
31
- const ESBUILD_TARGET = 'es2020';
22
+ const { isTypeScriptEnabled } = require('../typescript/util');
32
23
 
33
24
  // get the application configuration
34
25
  const devMode = process.env.NODE_ENV !== 'production';
@@ -61,14 +52,6 @@ const plugins = [
61
52
  new ProvidePlugin({
62
53
  React: 'react',
63
54
  }),
64
- new StyleLintPlugin({
65
- emitError: true,
66
- emitWarning: true,
67
- allowEmptyInput: true,
68
- failOnError: !devMode,
69
- formatter: stylelintFormatter,
70
- files: '(lib|app)/**/view/**/*.{js,ts,jsx,tsx}',
71
- }),
72
55
  new CopyWebpackPlugin({
73
56
  patterns: [
74
57
  {
@@ -117,10 +100,9 @@ const plugins = [
117
100
  new DuplicatePackageCheckerPlugin(),
118
101
  new MomentLocalesPlugin(),
119
102
  new WebpackManifestPlugin(),
120
- getImageMinimizerPlugin(),
121
103
  ];
122
104
 
123
- if (isTypeScripEnabled()) {
105
+ if (isTypeScriptEnabled()) {
124
106
  plugins.push(
125
107
  new ForkTsCheckerWebpackPlugin({
126
108
  async: devMode,
@@ -144,6 +126,21 @@ module.exports = (options) => ({
144
126
  optimization: options.optimization,
145
127
  module: {
146
128
  rules: [
129
+ {
130
+ test: /\.(jpe?g|png|gif|svg|ico)$/,
131
+ use: [
132
+ 'file-loader',
133
+ {
134
+ loader: 'image-webpack-loader',
135
+ options: {
136
+ gifsicle: {
137
+ enabled: false,
138
+ },
139
+ },
140
+ },
141
+ ],
142
+ enforce: 'pre',
143
+ },
147
144
  {
148
145
  test: /\.(js|ts|jsx|tsx)$/,
149
146
  enforce: 'pre',
@@ -260,6 +257,7 @@ module.exports = (options) => ({
260
257
  extensions: ['.wasm', '.mjs', '.ts', '.tsx', '.js', '.jsx', '.json'],
261
258
  mainFields: ['browser', 'module', 'main'],
262
259
  alias: {
260
+ 'lodash-es': 'lodash',
263
261
  ...getAlias(),
264
262
  ...((options.resolve || {}).alias || {}),
265
263
  },
@@ -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 { getAssetPath, isAppLoaderEnabled, getPaths } = require('./helpers');
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,9 @@ const {
22
19
  modulesToTranspile,
23
20
  getAssetPath,
24
21
  getAlias,
25
- getImageMinimizerPlugin,
26
22
  getMediaPath,
27
23
  } = require('./helpers');
28
- const { isTypeScripEnabled } = require('../typescript/util');
24
+ const { isTypeScriptEnabled } = require('../typescript/util');
29
25
 
30
26
  const devMode = process.env.NODE_ENV !== 'production';
31
27
  const minicssLoader = {
@@ -46,15 +42,6 @@ const plugins = [
46
42
  APP_CONFIG: getAppConfig(true),
47
43
  }),
48
44
  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
45
  new CopyWebpackPlugin({
59
46
  patterns: [
60
47
  {
@@ -73,10 +60,9 @@ const plugins = [
73
60
  maxChunks: 1,
74
61
  }),
75
62
  new MomentLocalesPlugin(),
76
- getImageMinimizerPlugin(),
77
63
  ];
78
64
 
79
- if (isTypeScripEnabled()) {
65
+ if (isTypeScriptEnabled()) {
80
66
  plugins.push(
81
67
  new ForkTsCheckerWebpackPlugin({
82
68
  async: devMode,
@@ -101,6 +87,21 @@ module.exports = (options) => ({
101
87
  optimization: options.optimization,
102
88
  module: {
103
89
  rules: [
90
+ {
91
+ test: /\.(jpe?g|png|gif|svg|ico)$/,
92
+ use: [
93
+ 'file-loader',
94
+ {
95
+ loader: 'image-webpack-loader',
96
+ options: {
97
+ gifsicle: {
98
+ enabled: false,
99
+ },
100
+ },
101
+ },
102
+ ],
103
+ enforce: 'pre',
104
+ },
104
105
  {
105
106
  test: /^(?!.*\.exec\.js$).*\.(js|ts|jsx|tsx)$/,
106
107
  enforce: 'pre',
@@ -136,7 +137,21 @@ module.exports = (options) => ({
136
137
  {
137
138
  test: /\.exec\.js$/,
138
139
  exclude: /node_modules/,
139
- use: ['script-loader'],
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$/,
@@ -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,7 +1,3 @@
1
- /**
2
- * DEVELOPMENT WEBPACK CONFIGURATION
3
- */
4
-
5
1
  const CircularDependencyPlugin = require('circular-dependency-plugin');
6
2
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
7
3
  const HtmlWebpackPlugin = require('html-webpack-plugin');
@@ -1,4 +1,3 @@
1
- // Important modules this config uses
2
1
  const path = require('path');
3
2
  const TerserPlugin = require('terser-webpack-plugin');
4
3
  const CompressionPlugin = require('compression-webpack-plugin');
@@ -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,6 +14,8 @@ const {
15
14
  LATEST_VERSION,
16
15
  getPaths,
17
16
  getAppVersion,
17
+ isGoogleTagManagerEnabled,
18
+ ESBUILD_TARGET,
18
19
  } = require('./helpers');
19
20
 
20
21
  const getProdConfig = ({ latestVersion = true } = {}) => {
@@ -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: 'es2020',
44
+ target: ESBUILD_TARGET,
46
45
  css: true,
47
46
  }),
48
47
  ],
@@ -78,29 +77,6 @@ const getProdConfig = ({ latestVersion = true } = {}) => {
78
77
  minRatio: Number.MAX_SAFE_INTEGER,
79
78
  }),
80
79
 
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
80
  new BundleAnalyzerPlugin({
105
81
  analyzerMode: 'static',
106
82
  reportFilename: path.join(process.cwd(), 'reports/bundle-stats.html'),
@@ -158,6 +134,7 @@ const htmlWebpackPlugin = new HtmlWebpackPlugin({
158
134
  appLoaderScriptPath,
159
135
  diagnosticsScriptPath,
160
136
  encwLoaderScriptPath,
137
+ googleTagManager: isGoogleTagManagerEnabled(),
161
138
  },
162
139
  });
163
140
 
@@ -1,9 +1,7 @@
1
- /* eslint-disable max-lines, no-param-reassign */
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,12 @@ const {
15
13
  resolveExtensions,
16
14
  mainFields,
17
15
  getMediaPath,
18
- getImageMinimizerPlugin,
19
16
  } = require('./helpers');
20
17
 
21
18
  const IS_APP = isApp();
22
19
  const CWD = process.cwd();
23
20
 
24
- const getAdditionalPlugins = (isProd) => [
21
+ const getAdditionalPlugins = () => [
25
22
  new webpack.DefinePlugin({
26
23
  APP_CONFIG: getAppConfig(),
27
24
  }),
@@ -51,15 +48,6 @@ const getAdditionalPlugins = (isProd) => [
51
48
  },
52
49
  ],
53
50
  }),
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
51
  ];
64
52
 
65
53
  const compressionPlugin = new CompressionPlugin({
@@ -71,6 +59,21 @@ const compressionPlugin = new CompressionPlugin({
71
59
  });
72
60
 
73
61
  const getModulePreRules = () => [
62
+ {
63
+ test: /\.(jpe?g|png|gif|svg|ico)$/,
64
+ use: [
65
+ 'file-loader',
66
+ {
67
+ loader: 'image-webpack-loader',
68
+ options: {
69
+ gifsicle: {
70
+ enabled: false,
71
+ },
72
+ },
73
+ },
74
+ ],
75
+ enforce: 'pre',
76
+ },
74
77
  {
75
78
  test: /\.(js|ts|jsx|tsx)$/,
76
79
  enforce: 'pre',
@@ -145,7 +148,7 @@ exports.webpackFinal = async (config, { configType }) => {
145
148
  config.module.rules.push(...getModulePreRules());
146
149
  config.module.rules.unshift(...getModuleRules(isProd));
147
150
 
148
- config.plugins.push(...getAdditionalPlugins(isProd));
151
+ config.plugins.push(...getAdditionalPlugins());
149
152
  if (isProd) {
150
153
  config.plugins.push(compressionPlugin);
151
154
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/pui-cli",
3
- "version": "6.0.0-beta.2",
3
+ "version": "6.0.0-beta.3",
4
4
  "private": false,
5
5
  "description": "EllieMae Platform UI CLI",
6
6
  "sideEffects": false,
@@ -47,153 +47,155 @@
47
47
  "indent": 4
48
48
  },
49
49
  "dependencies": {
50
- "@babel/cli": "~7.15.7",
51
- "@babel/core": "~7.15.8",
52
- "@babel/node": "~7.15.8",
53
- "@babel/plugin-proposal-class-properties": "~7.14.5",
54
- "@babel/plugin-proposal-export-default-from": "~7.14.5",
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.15.4",
57
- "@babel/plugin-transform-react-constant-elements": "~7.14.5",
58
- "@babel/plugin-transform-react-inline-elements": "~7.14.5",
59
- "@babel/plugin-transform-react-jsx-source": "~7.14.5",
60
- "@babel/plugin-transform-runtime": "~7.15.8",
61
- "@babel/preset-env": "~7.15.8",
62
- "@babel/preset-react": "~7.14.5",
63
- "@babel/preset-typescript": "~7.15.0",
64
- "@babel/runtime": "~7.15.4",
65
- "@commitlint/cli": "~13.2.0",
66
- "@commitlint/config-conventional": "~13.2.0",
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.1",
69
- "@semantic-release/changelog": "~6.0.0",
70
- "@semantic-release/exec": "~6.0.1",
71
- "@semantic-release/git": "~10.0.0",
72
- "@storybook/addon-a11y": "~6.3.10",
73
- "@storybook/addon-actions": "~6.3.10",
74
- "@storybook/addon-backgrounds": "~6.3.10",
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.10",
77
- "@storybook/addon-docs": "~6.3.10",
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.10",
81
- "@storybook/addon-storysource": "~6.3.10",
82
- "@storybook/addon-toolbars": "~6.3.10",
83
- "@storybook/addon-viewport": "~6.3.10",
84
- "@storybook/addons": "~6.3.10",
85
- "@storybook/builder-webpack5": "~6.3.10",
86
- "@storybook/manager-webpack5": "~6.3.10",
87
- "@storybook/react": "~6.3.10",
88
- "@storybook/theming": "~6.3.10",
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.14.1",
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.2",
94
- "@types/node": "~16.10.3",
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.33.0",
98
- "@typescript-eslint/parser": "~4.33.0",
99
- "autoprefixer": "~10.3.7",
100
- "axe-core": "~4.3.3",
101
- "babel-eslint": "~10.1.0",
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-styled-components": "~1.13.2",
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.17.3",
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": "~3.6.0",
122
+ "compare-versions": "~4.1.1",
119
123
  "compression": "~1.7.4",
120
- "compression-webpack-plugin": "~9.0.0",
121
- "copy-webpack-plugin": "~9.0.1",
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.3.0",
125
- "css-minimizer-webpack-plugin": "~3.1.1",
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-loader": "~2.15.1",
132
- "eslint": "~7.32.0",
135
+ "esbuild-loader": "~2.16.0",
136
+ "eslint": "~8.3.0",
133
137
  "eslint-config-airbnb": "~18.2.1",
134
- "eslint-config-airbnb-base": "~14.2.1",
135
- "eslint-config-airbnb-typescript": "~14.0.0",
138
+ "eslint-config-airbnb-base": "~15.0.0",
139
+ "eslint-config-airbnb-typescript": "~15.0.0",
136
140
  "eslint-config-prettier": "~8.3.0",
137
141
  "eslint-config-react-app": "~6.0.0",
138
142
  "eslint-import-resolver-babel-module": "~5.3.1",
139
143
  "eslint-import-resolver-typescript": "~2.5.0",
140
- "eslint-import-resolver-webpack": "~0.13.1",
141
- "eslint-loader": "~4.0.2",
144
+ "eslint-import-resolver-webpack": "~0.13.2",
142
145
  "eslint-plugin-compat": "~3.13.0",
143
146
  "eslint-plugin-eslint-comments": "~3.2.0",
144
- "eslint-plugin-import": "~2.24.2",
145
- "eslint-plugin-jest": "~24.5.2",
146
- "eslint-plugin-jsdoc": "~36.1.0",
147
- "eslint-plugin-jsx-a11y": "~6.4.1",
148
- "eslint-plugin-mdx": "~1.15.1",
147
+ "eslint-plugin-import": "~2.25.3",
148
+ "eslint-plugin-jest": "~25.3.0",
149
+ "eslint-plugin-jsdoc": "~37.0.3",
150
+ "eslint-plugin-jsx-a11y": "~6.5.1",
151
+ "eslint-plugin-mdx": "~1.16.0",
149
152
  "eslint-plugin-prettier": "~4.0.0",
150
- "eslint-plugin-react": "~7.26.1",
151
- "eslint-plugin-react-hooks": "~4.2.0",
153
+ "eslint-plugin-react": "~7.27.1",
154
+ "eslint-plugin-react-hooks": "~4.3.0",
152
155
  "eslint-plugin-redux-saga": "~1.2.1",
153
- "eslint-plugin-testing-library": "~4.12.4",
156
+ "eslint-plugin-testing-library": "~5.0.0",
154
157
  "eslint-plugin-wdio": "~7.4.2",
155
- "eslint-webpack-plugin": "~3.0.1",
156
158
  "execa": "~5.1.1",
157
159
  "express": "~4.17.1",
158
- "express-pino-logger": "~6.0.0",
160
+ "express-pino-logger": "~7.0.0",
159
161
  "file-loader": "~6.2.0",
160
- "fork-ts-checker-webpack-plugin": "~6.3.4",
162
+ "fork-ts-checker-webpack-plugin": "~6.4.2",
161
163
  "helmet-csp": "~3.4.0",
162
- "html-loader": "~2.1.2",
163
- "html-webpack-plugin": "~5.3.2",
164
- "http-server": "~13.0.2",
165
- "husky": "~7.0.2",
164
+ "html-loader": "~3.0.1",
165
+ "html-webpack-plugin": "~5.5.0",
166
+ "http-server": "~14.0.0",
167
+ "husky": "~7.0.4",
166
168
  "husky-init": "~7.0.0",
167
- "image-minimizer-webpack-plugin": "~2.2.0",
168
- "imagemin-gifsicle": "~7.0.0",
169
- "imagemin-jpegtran": "~7.0.0",
170
- "imagemin-optipng": "~8.0.0",
171
- "imagemin-svgo": "~10.0.0",
172
- "imports-loader": "~3.0.0",
169
+ "image-webpack-loader": "~8.0.1",
170
+ "imports-loader": "~3.1.1",
173
171
  "ip": "~1.1.5",
174
172
  "jest-axe": "~5.0.1",
175
- "jest-cli": "~27.2.4",
173
+ "jest-cli": "~27.3.1",
176
174
  "jest-sonar-reporter": "~2.0.0",
177
- "jest-styled-components": "~7.0.5",
175
+ "jest-styled-components": "~7.0.8",
178
176
  "jscodeshift": "~0.13.0",
179
177
  "jsdoc": "~3.6.7",
180
- "lint-staged": "~11.2.0",
181
- "mini-css-extract-plugin": "~2.4.1",
178
+ "lint-staged": "~12.1.2",
179
+ "mini-css-extract-plugin": "~2.4.5",
182
180
  "minimist": "~1.2.5",
183
181
  "moment": "~2.29.1",
184
182
  "moment-locales-webpack-plugin": "~1.2.0",
185
183
  "msw": "~0.35.0",
186
- "node-plop": "~0.26.2",
187
- "nodemon": "~2.0.13",
188
- "npm-check-updates": "~11.8.5",
184
+ "node-plop": "~0.26.3",
185
+ "nodemon": "~2.0.15",
186
+ "npm-check-updates": "12.0.2",
189
187
  "null-loader": "~4.0.1",
190
- "pino": "~6.13.3",
191
- "pino-pretty": "~7.0.1",
188
+ "pino": "~7.4.1",
189
+ "pino-pretty": "~7.2.0",
192
190
  "pinst": "~2.1.6",
193
- "plop": "~2.7.4",
194
- "postcss": "~8.3.9",
195
- "postcss-loader": "~6.1.1",
196
- "postcss-preset-env": "~6.7.0",
191
+ "plop": "~2.7.6",
192
+ "postcss": "~8.4.1",
193
+ "postcss-jsx": "~0.36.4",
194
+ "postcss-html": "~1.3.0",
195
+ "postcss-markdown": "~1.2.0",
196
+ "postcss-syntax": "~0.36.2",
197
+ "postcss-loader": "~6.2.0",
198
+ "postcss-preset-env": "~7.0.1",
197
199
  "prettier": "~2.4.1",
198
200
  "pug": "~3.0.2",
199
201
  "pug-loader": "~2.4.0",
@@ -201,52 +203,51 @@
201
203
  "raw-loader": "~4.0.2",
202
204
  "react-axe": "~3.5.4",
203
205
  "react-docgen": "~5.4.0",
204
- "react-refresh": "~0.10.0",
206
+ "react-refresh": "~0.11.0",
205
207
  "react-test-renderer": "~17.0.2",
206
208
  "resize-observer-polyfill": "~1.5.1",
207
209
  "rimraf": "~3.0.2",
208
210
  "script-loader": "~0.7.2",
209
- "semantic-release": "~18.0.0",
211
+ "semantic-release": "~18.0.1",
210
212
  "shelljs": "~0.8.4",
211
213
  "slackify-markdown": "~4.3.0",
212
214
  "storybook-react-router": "~1.0.8",
213
- "style-loader": "~3.3.0",
214
- "stylelint": "~13.13.1",
215
- "stylelint-config-recommended": "~5.0.0",
215
+ "storybook-addon-turbo-build": "~1.0.1",
216
+ "style-loader": "~3.3.1",
217
+ "stylelint": "~14.1.0",
218
+ "stylelint-config-recommended": "~6.0.0",
216
219
  "stylelint-config-styled-components": "~0.1.1",
217
220
  "stylelint-custom-processor-loader": "~0.6.0",
218
- "stylelint-formatter-pretty": "~2.1.1",
219
221
  "stylelint-processor-styled-components": "~1.10.0",
220
- "stylelint-webpack-plugin": "~3.0.1",
221
222
  "svg-url-loader": "~7.1.1",
222
- "svgo": "~2.7.0",
223
- "terser-webpack-plugin": "~5.2.4",
224
- "ts-node": "~10.2.1",
225
- "tsc-alias": "~1.3.10",
226
- "tsc-files": "~1.1.2",
227
- "tsconfig-paths": "~3.11.0",
228
- "tsconfig-paths-webpack-plugin": "~3.5.1",
229
- "type-fest": "~2.3.4",
230
- "typescript": "~4.4.3",
223
+ "svgo": "~2.8.0",
224
+ "terser-webpack-plugin": "~5.2.5",
225
+ "ts-node": "~10.4.0",
226
+ "tsc-alias": "~1.4.1",
227
+ "tsc-files": "~1.1.3",
228
+ "tsconfig-paths": "~3.12.0",
229
+ "tsconfig-paths-webpack-plugin": "~3.5.2",
230
+ "type-fest": "~2.6.0",
231
+ "typescript": "~4.5.2",
231
232
  "update-notifier": "~5.1.0",
232
233
  "url-loader": "~4.1.1",
233
234
  "uuid": "~8.3.2",
234
- "webpack": "~5.57.1",
235
- "webpack-bundle-analyzer": "~4.4.2",
236
- "webpack-cli": "~4.9.0",
237
- "webpack-dev-middleware": "~5.2.1",
235
+ "webpack": "~5.64.3",
236
+ "webpack-bundle-analyzer": "~4.5.0",
237
+ "webpack-cli": "~4.9.1",
238
+ "webpack-dev-middleware": "~5.2.2",
238
239
  "webpack-hot-middleware": "~2.25.1",
239
240
  "webpack-manifest-plugin": "~4.0.2",
240
241
  "webpack-merge": "~5.8.0",
241
242
  "webpack-pwa-manifest": "~4.3.0",
242
243
  "webpack-strip-block": "~0.3.0",
243
244
  "whatwg-fetch": "~3.6.2",
244
- "workbox-webpack-plugin": "~6.3.0",
245
+ "workbox-webpack-plugin": "~6.4.1",
245
246
  "yargs": "~17.2.1"
246
247
  },
247
248
  "devDependencies": {
248
- "redux": "~4.1.1",
249
+ "redux": "~4.1.2",
249
250
  "redux-saga": "~1.1.3",
250
- "styled-components": "~5.3.1"
251
+ "styled-components": "~5.3.3"
251
252
  }
252
253
  }