@elliemae/pui-cli 5.3.0 → 5.4.0

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.17', proposals: true },
13
+ corejs: { version: '3.18', proposals: true },
14
14
  };
15
15
 
16
16
  const presetEnvOptions =
@@ -1,5 +1,11 @@
1
1
  const { exit } = require('yargs');
2
- const { exec, logInfo, logError, logSuccess } = require('./utils');
2
+ const {
3
+ exec,
4
+ logInfo,
5
+ logError,
6
+ logSuccess,
7
+ writeAppInfo,
8
+ } = require('./utils');
3
9
 
4
10
  const { name } = require('../../package.json');
5
11
 
@@ -9,6 +15,7 @@ async function buildWebApp() {
9
15
  await exec(
10
16
  `cross-env NODE_ENV=production webpack --config node_modules/${name}/lib/webpack/webpack.prod.babel.js --color`,
11
17
  );
18
+ await writeAppInfo();
12
19
  }
13
20
 
14
21
  async function buildService() {
@@ -1,11 +1,81 @@
1
1
  /* eslint-disable no-console */
2
2
  const execa = require('execa');
3
3
  const chalk = require('chalk');
4
+ const path = require('path');
5
+ const { readFile, writeFile } = require('fs/promises');
4
6
 
5
- exports.exec = async (command, options = { stdio: 'inherit' }) => {
6
- await execa.command(command, options);
7
+ const browsersMapping = {
8
+ and_chr: 'Chrome for Android',
9
+ chrome: 'Google Chrome',
10
+ edge: 'Microsoft Edge',
11
+ firefox: 'Mozilla Firefox',
12
+ ios_saf: 'iOS Safari',
13
+ safari: 'Safari',
14
+ samsung: 'Samsung Internet',
7
15
  };
8
16
 
17
+ const exec = async (command, options = { stdio: 'inherit' }) =>
18
+ execa.command(command, options);
19
+ exports.exec = exec;
20
+
9
21
  exports.logInfo = console.log;
10
22
  exports.logSuccess = (...args) => console.log(chalk.green(...args));
11
23
  exports.logError = console.error;
24
+
25
+ const readPackageLock = async () => {
26
+ const appPkgLockFile = path.join(process.cwd(), 'package-lock.json');
27
+ const pkgLockJSON = await readFile(appPkgLockFile, 'utf8');
28
+ const { dependencies } = JSON.parse(pkgLockJSON);
29
+ return (moduleName) => dependencies[moduleName]?.version || '';
30
+ };
31
+
32
+ const getSupportedBrowsers = async () => {
33
+ const { stdout } = await exec('npx --no-install browserslist', {
34
+ stdout: 'pipe',
35
+ });
36
+ const browserVersions = (stdout && stdout.split('\n')) || [];
37
+ return browserVersions.reduce((acc, nameVersion) => {
38
+ const [name, version] = nameVersion.split(' ');
39
+ const versionRange = version.split('-');
40
+ acc[browsersMapping[name]] = (versionRange && versionRange[0]) || version;
41
+ return acc;
42
+ }, {});
43
+ };
44
+
45
+ const getModulesInfo = async () => {
46
+ try {
47
+ const getModuleVersion = await readPackageLock();
48
+ return {
49
+ react: getModuleVersion('react'),
50
+ 'react-dom': getModuleVersion('react-dom'),
51
+ 'app-react-dependencies': getModuleVersion(
52
+ '@elliemae/app-react-dependencies',
53
+ ),
54
+ 'app-sdk': getModuleVersion('@elliemae/pui-app-sdk'),
55
+ cli: getModuleVersion('@elliemae/pui-cli'),
56
+ dimsum: getModuleVersion('@elliemae/ds-system'),
57
+ };
58
+ } catch (err) {
59
+ console.warn(err);
60
+ return {};
61
+ }
62
+ };
63
+
64
+ exports.writeAppInfo = async () => {
65
+ const appInfo = {
66
+ timestamp: new Date().toISOString(),
67
+ modules: await getModulesInfo(),
68
+ browserSupport: await getSupportedBrowsers(),
69
+ screenReaderSupport: [
70
+ 'JAWS with Chrome',
71
+ 'NVDA with Chrome',
72
+ 'VoiceOver with Safari',
73
+ 'iOS VoiceOver',
74
+ 'Android Talkback',
75
+ ],
76
+ };
77
+ await writeFile(
78
+ path.join(process.cwd(), 'build', 'info.json'),
79
+ JSON.stringify(appInfo, null, 2),
80
+ );
81
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/pui-cli",
3
- "version": "5.3.0",
3
+ "version": "5.4.0",
4
4
  "private": false,
5
5
  "description": "EllieMae Platform UI CLI",
6
6
  "sideEffects": false,
@@ -183,7 +183,7 @@
183
183
  "moment-locales-webpack-plugin": "~1.2.0",
184
184
  "msw": "~0.35.0",
185
185
  "node-plop": "~0.26.2",
186
- "nodemon": "~2.0.12",
186
+ "nodemon": "~2.0.13",
187
187
  "npm-check-updates": "~11.8.5",
188
188
  "null-loader": "~4.0.1",
189
189
  "pino": "~6.13.3",
@@ -218,7 +218,7 @@
218
218
  "stylelint-processor-styled-components": "~1.10.0",
219
219
  "stylelint-webpack-plugin": "~3.0.1",
220
220
  "svg-url-loader": "~7.1.1",
221
- "svgo": "~2.6.1",
221
+ "svgo": "~2.7.0",
222
222
  "terser-webpack-plugin": "~5.2.4",
223
223
  "ts-node": "~10.2.1",
224
224
  "tsc-alias": "~1.3.9",
@@ -232,7 +232,7 @@
232
232
  "webpack": "~5.53.0",
233
233
  "webpack-bundle-analyzer": "~4.4.2",
234
234
  "webpack-cli": "~4.8.0",
235
- "webpack-dev-middleware": "~5.1.0",
235
+ "webpack-dev-middleware": "~5.2.0",
236
236
  "webpack-hot-middleware": "~2.25.1",
237
237
  "webpack-manifest-plugin": "~4.0.2",
238
238
  "webpack-merge": "~5.8.0",