@elliemae/pui-cli 7.0.0-beta.9 → 7.2.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.
- package/README.md +4 -0
- package/{lib/babel/babel.config.js → dist/cjs/babel.config.cjs} +3 -7
- package/dist/cjs/cli.js +53 -0
- package/dist/cjs/commands/build.js +81 -0
- package/dist/cjs/commands/codemod.js +55 -0
- package/dist/cjs/commands/gendoc.js +53 -0
- package/dist/cjs/commands/lint.js +95 -0
- package/dist/cjs/commands/pack.js +98 -0
- package/dist/cjs/commands/start.js +76 -0
- package/dist/cjs/commands/storybook.js +71 -0
- package/dist/cjs/commands/test.js +100 -0
- package/dist/cjs/commands/tscheck.js +82 -0
- package/dist/cjs/commands/utils.js +157 -0
- package/dist/cjs/commands/version.js +77 -0
- package/dist/cjs/commands/vitest.js +93 -0
- package/dist/cjs/dummy.js +1 -0
- package/dist/cjs/index.cjs +25 -0
- package/dist/cjs/index.js +42 -0
- package/dist/cjs/jsdoc.conf.json +17 -0
- package/dist/cjs/lint-config/commitlint.config.cjs +1 -0
- package/{lib/lint/eslint/common.js → dist/cjs/lint-config/eslint/common.cjs} +5 -5
- package/{lib/lint/eslint/non-react.js → dist/cjs/lint-config/eslint/non-react.cjs} +2 -2
- package/{lib/lint/eslint/react.js → dist/cjs/lint-config/eslint/react.cjs} +2 -2
- package/{lib/lint/eslint/typescript/common.js → dist/cjs/lint-config/eslint/typescript/common.cjs} +1 -1
- package/{lib/lint/eslint/typescript/non-react.js → dist/cjs/lint-config/eslint/typescript/non-react.cjs} +2 -2
- package/{lib/lint/eslint/typescript/react.js → dist/cjs/lint-config/eslint/typescript/react.cjs} +2 -2
- package/dist/cjs/lint-config/lint-staged.config.js +40 -0
- package/{lib/lint/prettier.config.js → dist/cjs/lint-config/prettier.config.cjs} +1 -1
- package/{lib/lint/stylelint.config.js → dist/cjs/lint-config/stylelint.config.cjs} +2 -2
- package/dist/cjs/monorepo/delete-merged-tags.js +58 -0
- package/dist/cjs/monorepo/set-registry-version.js +49 -0
- package/dist/cjs/monorepo/set-workspace-version.js +56 -0
- package/{lib/monorepo/utils.js → dist/cjs/monorepo/utils.cjs} +17 -2
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/pui-config.js +44 -0
- package/{lib/release/release.config.js → dist/cjs/release.config.cjs} +0 -0
- package/{lib/server/util/index.js → dist/cjs/server/app-routes.cjs} +5 -15
- package/dist/cjs/server/csp.js +94 -0
- package/dist/cjs/server/index.js +34 -0
- package/dist/cjs/server/logger.js +58 -0
- package/dist/cjs/server/middlewares.js +75 -0
- package/dist/cjs/server/utils.js +39 -0
- package/{lib/testing/jest.config.js → dist/cjs/testing/jest.config.cjs} +10 -10
- package/{lib/testing/jest.node.config.js → dist/cjs/testing/jest.node.config.cjs} +1 -1
- package/dist/cjs/testing/mocks/axios.js +38 -0
- package/dist/cjs/testing/mocks/cssModule.js +24 -0
- package/dist/cjs/testing/mocks/html.js +24 -0
- package/dist/cjs/testing/mocks/image.js +24 -0
- package/dist/cjs/testing/mocks/matchMedia.js +44 -0
- package/dist/cjs/testing/mocks/pui-app-loader.js +25 -0
- package/dist/cjs/testing/mocks/pui-diagnostics.js +69 -0
- package/dist/cjs/testing/mocks/pui-user-monitoring.js +31 -0
- package/dist/cjs/testing/mocks/retry-axios.js +28 -0
- package/dist/cjs/testing/mocks/svg.js +33 -0
- package/dist/cjs/testing/mocks/webpack-hmr.js +25 -0
- package/{lib/testing/resolver.js → dist/cjs/testing/resolver.cjs} +0 -0
- package/dist/cjs/testing/setup-react-env.js +22 -0
- package/dist/cjs/testing/setup-test-env.js +23 -0
- package/dist/cjs/testing/setup-tests.js +69 -0
- package/dist/cjs/testing/vitest.config.js +52 -0
- package/{lib → dist/cjs}/transpile/.swcrc +0 -0
- package/dist/cjs/transpile/esbuild.js +134 -0
- package/dist/cjs/transpile/react-shim.js +30 -0
- package/{lib/transpile/swcrc.config.js → dist/cjs/transpile/swcrc.config.cjs} +1 -1
- package/dist/cjs/typedoc.cjs +12 -0
- package/{lib → dist/cjs}/typescript/app.tsconfig.json +0 -0
- package/{lib → dist/cjs}/typescript/library.tsconfig.json +0 -0
- package/dist/cjs/update-notifier.js +37 -0
- package/dist/cjs/utils.cjs +23 -0
- package/dist/cjs/webpack/helpers.js +237 -0
- package/dist/cjs/webpack/webpack.base.babel.js +280 -0
- package/dist/cjs/webpack/webpack.dev.babel.js +144 -0
- package/dist/cjs/webpack/webpack.lib.base.babel.js +212 -0
- package/dist/cjs/webpack/webpack.lib.dev.babel.js +93 -0
- package/dist/cjs/webpack/webpack.lib.prod.babel.js +95 -0
- package/dist/cjs/webpack/webpack.prod.babel.js +145 -0
- package/dist/cjs/webpack/webpack.storybook.js +111 -0
- package/dist/esm/babel.config.cjs +97 -0
- package/dist/esm/cli.js +33 -0
- package/dist/esm/commands/build.js +61 -0
- package/dist/esm/commands/codemod.js +29 -0
- package/dist/esm/commands/gendoc.js +26 -0
- package/dist/esm/commands/lint.js +69 -0
- package/dist/esm/commands/pack.js +71 -0
- package/dist/esm/commands/start.js +49 -0
- package/dist/esm/commands/storybook.js +45 -0
- package/dist/esm/commands/test.js +74 -0
- package/dist/esm/commands/tscheck.js +56 -0
- package/dist/esm/commands/utils.js +143 -0
- package/dist/esm/commands/version.js +51 -0
- package/dist/esm/commands/vitest.js +66 -0
- package/{lib/dummy.ts → dist/esm/dummy.js} +0 -0
- package/dist/esm/index.cjs +25 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/jsdoc.conf.json +17 -0
- package/dist/esm/lint-config/commitlint.config.cjs +1 -0
- package/dist/esm/lint-config/eslint/common.cjs +160 -0
- package/dist/esm/lint-config/eslint/non-react.cjs +14 -0
- package/dist/esm/lint-config/eslint/react.cjs +26 -0
- package/dist/esm/lint-config/eslint/typescript/common.cjs +43 -0
- package/dist/esm/lint-config/eslint/typescript/non-react.cjs +12 -0
- package/dist/esm/lint-config/eslint/typescript/react.cjs +19 -0
- package/dist/esm/lint-config/lint-staged.config.js +14 -0
- package/dist/esm/lint-config/prettier.config.cjs +8 -0
- package/dist/esm/lint-config/stylelint.config.cjs +19 -0
- package/dist/esm/monorepo/delete-merged-tags.js +38 -0
- package/dist/esm/monorepo/set-registry-version.js +23 -0
- package/dist/esm/monorepo/set-workspace-version.js +30 -0
- package/dist/esm/monorepo/utils.cjs +30 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/pui-config.js +18 -0
- package/dist/esm/release.config.cjs +31 -0
- package/dist/esm/server/app-routes.cjs +42 -0
- package/dist/esm/server/csp.js +68 -0
- package/dist/esm/server/index.js +18 -0
- package/dist/esm/server/logger.js +32 -0
- package/dist/esm/server/middlewares.js +49 -0
- package/dist/esm/server/utils.js +13 -0
- package/dist/esm/testing/jest.config.cjs +103 -0
- package/dist/esm/testing/jest.node.config.cjs +8 -0
- package/{lib → dist/esm}/testing/mocks/axios.js +8 -5
- package/dist/esm/testing/mocks/cssModule.js +4 -0
- package/dist/esm/testing/mocks/html.js +4 -0
- package/dist/esm/testing/mocks/image.js +4 -0
- package/dist/esm/testing/mocks/matchMedia.js +24 -0
- package/dist/esm/testing/mocks/pui-app-loader.js +5 -0
- package/dist/esm/testing/mocks/pui-diagnostics.js +49 -0
- package/dist/esm/testing/mocks/pui-user-monitoring.js +11 -0
- package/dist/esm/testing/mocks/retry-axios.js +8 -0
- package/dist/esm/testing/mocks/svg.js +7 -0
- package/dist/esm/testing/mocks/webpack-hmr.js +5 -0
- package/dist/esm/testing/resolver.cjs +47 -0
- package/dist/esm/testing/setup-react-env.js +3 -0
- package/dist/esm/testing/setup-test-env.js +4 -0
- package/dist/esm/testing/setup-tests.js +50 -0
- package/dist/esm/testing/vitest.config.js +25 -0
- package/dist/esm/transpile/.swcrc +11 -0
- package/{lib → dist/esm}/transpile/esbuild.js +35 -44
- package/dist/esm/transpile/react-shim.js +4 -0
- package/dist/esm/transpile/swcrc.config.cjs +13 -0
- package/dist/esm/typedoc.cjs +12 -0
- package/dist/esm/typescript/app.tsconfig.json +23 -0
- package/dist/esm/typescript/library.tsconfig.json +23 -0
- package/dist/esm/update-notifier.js +11 -0
- package/dist/esm/utils.cjs +23 -0
- package/dist/esm/webpack/helpers.js +211 -0
- package/dist/esm/webpack/webpack.base.babel.js +260 -0
- package/dist/esm/webpack/webpack.dev.babel.js +121 -0
- package/dist/esm/webpack/webpack.lib.base.babel.js +192 -0
- package/dist/esm/webpack/webpack.lib.dev.babel.js +67 -0
- package/dist/esm/webpack/webpack.lib.prod.babel.js +69 -0
- package/dist/esm/webpack/webpack.prod.babel.js +124 -0
- package/dist/esm/webpack/webpack.storybook.js +85 -0
- package/dist/types/babel.config.d.cts +59 -0
- package/dist/types/cli.d.ts +2 -0
- package/dist/types/commands/build.d.ts +14 -0
- package/dist/types/commands/codemod.d.ts +6 -0
- package/dist/types/commands/gendoc.d.ts +6 -0
- package/dist/types/commands/lint.d.ts +29 -0
- package/dist/types/commands/pack.d.ts +26 -0
- package/dist/types/commands/start.d.ts +13 -0
- package/dist/types/commands/storybook.d.ts +19 -0
- package/dist/types/commands/test.d.ts +39 -0
- package/dist/types/commands/tscheck.d.ts +14 -0
- package/dist/types/commands/utils.d.ts +16 -0
- package/dist/types/commands/version.d.ts +30 -0
- package/dist/types/commands/vitest.d.ts +35 -0
- package/{lib/testing/vitest.setup.ts → dist/types/dummy.d.ts} +0 -0
- package/dist/types/index.d.cts +10 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/lint-config/commitlint.config.d.cts +4 -0
- package/dist/types/lint-config/eslint/common.d.cts +127 -0
- package/dist/types/lint-config/eslint/non-react.d.cts +93 -0
- package/dist/types/lint-config/eslint/react.d.cts +123 -0
- package/dist/types/lint-config/eslint/typescript/common.d.cts +37 -0
- package/dist/types/lint-config/eslint/typescript/non-react.d.cts +87 -0
- package/dist/types/lint-config/eslint/typescript/react.d.cts +118 -0
- package/dist/types/lint-config/lint-staged.config.d.ts +5 -0
- package/dist/types/lint-config/prettier.config.d.cts +8 -0
- package/dist/types/lint-config/stylelint.config.d.cts +11 -0
- package/dist/types/monorepo/delete-merged-tags.d.ts +1 -0
- package/dist/types/monorepo/set-registry-version.d.ts +1 -0
- package/dist/types/monorepo/set-workspace-version.d.ts +1 -0
- package/dist/types/monorepo/utils.d.cts +1 -0
- package/dist/types/pui-config.d.ts +1 -0
- package/dist/types/release.config.d.cts +9 -0
- package/dist/types/server/app-routes.d.cts +1 -0
- package/dist/types/server/csp.d.ts +10 -0
- package/dist/types/server/index.d.ts +1 -0
- package/dist/types/server/logger.d.ts +4 -0
- package/dist/types/server/middlewares.d.ts +2 -0
- package/dist/types/server/utils.d.ts +3 -0
- package/dist/types/testing/jest.config.d.cts +39 -0
- package/dist/types/testing/jest.node.config.d.cts +39 -0
- package/dist/types/testing/mocks/axios.d.ts +17 -0
- package/dist/types/testing/mocks/cssModule.d.ts +2 -0
- package/dist/types/testing/mocks/html.d.ts +2 -0
- package/dist/types/testing/mocks/image.d.ts +2 -0
- package/dist/types/testing/mocks/matchMedia.d.ts +1 -0
- package/dist/types/testing/mocks/pui-app-loader.d.ts +1 -0
- package/dist/types/testing/mocks/pui-diagnostics.d.ts +28 -0
- package/dist/types/testing/mocks/pui-user-monitoring.d.ts +3 -0
- package/dist/types/testing/mocks/retry-axios.d.ts +3 -0
- package/dist/types/testing/mocks/svg.d.ts +3 -0
- package/dist/types/testing/mocks/webpack-hmr.d.ts +1 -0
- package/dist/types/testing/resolver.d.cts +2 -0
- package/dist/types/testing/setup-react-env.d.ts +1 -0
- package/dist/types/testing/setup-test-env.d.ts +2 -0
- package/dist/types/testing/setup-tests.d.ts +1 -0
- package/dist/types/testing/vitest.config.d.ts +2 -0
- package/dist/types/transpile/esbuild.d.ts +13 -0
- package/dist/types/transpile/react-shim.d.ts +2 -0
- package/dist/types/transpile/swcrc.config.d.cts +1 -0
- package/dist/types/typedoc.d.cts +3 -0
- package/dist/types/update-notifier.d.ts +1 -0
- package/dist/types/utils.d.cts +4 -0
- package/dist/types/webpack/helpers.d.ts +28 -0
- package/dist/types/webpack/webpack.base.babel.d.ts +90 -0
- package/dist/types/webpack/webpack.dev.babel.d.ts +2 -0
- package/dist/types/webpack/webpack.lib.base.babel.d.ts +110 -0
- package/dist/types/webpack/webpack.lib.dev.babel.d.ts +110 -0
- package/dist/types/webpack/webpack.lib.prod.babel.d.ts +110 -0
- package/dist/types/webpack/webpack.prod.babel.d.ts +2 -0
- package/dist/types/webpack/webpack.storybook.d.ts +4 -0
- package/package.json +159 -144
- package/lib/cli-commands/build.js +0 -60
- package/lib/cli-commands/codemod.js +0 -31
- package/lib/cli-commands/gendoc.js +0 -36
- package/lib/cli-commands/lint.js +0 -75
- package/lib/cli-commands/pack.js +0 -67
- package/lib/cli-commands/start.js +0 -49
- package/lib/cli-commands/storybook.js +0 -53
- package/lib/cli-commands/test.js +0 -63
- package/lib/cli-commands/tsc.js +0 -103
- package/lib/cli-commands/utils.js +0 -135
- package/lib/cli-commands/version.js +0 -53
- package/lib/cli-commands/vitest.js +0 -66
- package/lib/cli.js +0 -33
- package/lib/docgen/jsdoc.config.js +0 -17
- package/lib/index.js +0 -25
- package/lib/lint/commitlint.config.js +0 -1
- package/lib/lint/lint-staged.config.js +0 -16
- package/lib/monorepo/delete-merged-tags.js +0 -48
- package/lib/monorepo/set-registry-version.js +0 -22
- package/lib/monorepo/set-workspace-version.js +0 -29
- package/lib/pui-config/index.js +0 -18
- package/lib/scripts/helpers/checkmark.js +0 -15
- package/lib/scripts/helpers/get-npm-config.js +0 -3
- package/lib/scripts/helpers/progress.js +0 -19
- package/lib/scripts/helpers/xmark.js +0 -13
- package/lib/scripts/npmcheckversion.js +0 -8
- package/lib/scripts/update-notifier.js +0 -7
- package/lib/server/csp.js +0 -74
- package/lib/server/index.js +0 -37
- package/lib/server/logger.js +0 -42
- package/lib/server/middlewares/addDevMiddlewares.js +0 -39
- package/lib/server/middlewares/addProdMiddlewares.js +0 -30
- package/lib/server/middlewares/index.js +0 -37
- package/lib/testing/mocks/cssModule.js +0 -1
- package/lib/testing/mocks/html.js +0 -1
- package/lib/testing/mocks/image.js +0 -1
- package/lib/testing/mocks/matchMedia.js +0 -24
- package/lib/testing/mocks/pui-app-loader.js +0 -1
- package/lib/testing/mocks/pui-diagnostics.js +0 -28
- package/lib/testing/mocks/pui-user-monitoring.js +0 -3
- package/lib/testing/mocks/retry-axios.js +0 -3
- package/lib/testing/mocks/svg.js +0 -5
- package/lib/testing/mocks/webpack-hmr.js +0 -1
- package/lib/testing/setup-react-env.js +0 -3
- package/lib/testing/setup-tests.js +0 -58
- package/lib/testing/vitest.config.ts +0 -16
- package/lib/transpile/react-shim.js +0 -2
- package/lib/typescript/tsc-files/index.js +0 -66
- package/lib/typescript/tsc-files/utils.js +0 -16
- package/lib/typescript/util.js +0 -5
- package/lib/webpack/helpers.js +0 -252
- package/lib/webpack/webpack.base.babel.js +0 -242
- package/lib/webpack/webpack.dev.babel.js +0 -139
- package/lib/webpack/webpack.lib.base.babel.js +0 -205
- package/lib/webpack/webpack.lib.dev.babel.js +0 -49
- package/lib/webpack/webpack.lib.prod.babel.js +0 -77
- package/lib/webpack/webpack.prod.babel.js +0 -142
- package/lib/webpack/webpack.storybook.js +0 -87
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const {
|
|
4
|
-
exec,
|
|
5
|
-
logInfo,
|
|
6
|
-
logError,
|
|
7
|
-
logSuccess,
|
|
8
|
-
writeAppInfo,
|
|
9
|
-
copyBuildAssetsToVersionedFolder,
|
|
10
|
-
} = require('./utils');
|
|
11
|
-
const { esBuild, TARGETS } = require('../transpile/esbuild');
|
|
12
|
-
|
|
13
|
-
async function buildWebApp() {
|
|
14
|
-
await exec(`rimraf ./build`);
|
|
15
|
-
await exec(
|
|
16
|
-
`cross-env NODE_ENV=production webpack --config ${path.resolve(
|
|
17
|
-
__dirname,
|
|
18
|
-
'../webpack/webpack.prod.babel.js',
|
|
19
|
-
)} --color`,
|
|
20
|
-
);
|
|
21
|
-
await copyBuildAssetsToVersionedFolder();
|
|
22
|
-
await writeAppInfo();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async function buildService() {
|
|
26
|
-
await exec('rimraf ./build');
|
|
27
|
-
await esBuild({
|
|
28
|
-
srcdir: './app',
|
|
29
|
-
outdir: 'build',
|
|
30
|
-
esmOnly: true,
|
|
31
|
-
target: TARGETS.node,
|
|
32
|
-
injectReactShim: false,
|
|
33
|
-
skipNestedPackageJSON: true,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async function handler({ service = false }) {
|
|
38
|
-
try {
|
|
39
|
-
logInfo('Build in progress...');
|
|
40
|
-
if (service) await buildService();
|
|
41
|
-
else await buildWebApp();
|
|
42
|
-
logSuccess('Build completed');
|
|
43
|
-
} catch (err) {
|
|
44
|
-
logError('Build failed', err);
|
|
45
|
-
exit(-1, err);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
exports.command = 'build';
|
|
50
|
-
|
|
51
|
-
exports.describe = 'builds front end application or NodeJS service';
|
|
52
|
-
|
|
53
|
-
exports.builder = {
|
|
54
|
-
service: {
|
|
55
|
-
type: 'boolean',
|
|
56
|
-
default: false,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
exports.handler = handler;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { exec, logInfo, logError, logSuccess } = require('./utils');
|
|
3
|
-
|
|
4
|
-
async function transform(argv) {
|
|
5
|
-
logInfo('Code modification in-progress...');
|
|
6
|
-
exec(`jscodeshift --ignore-file=.gitignore -t ${argv.transform} .`);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
async function handler(argv) {
|
|
10
|
-
try {
|
|
11
|
-
await transform(argv);
|
|
12
|
-
logSuccess('Code modifications completed. ');
|
|
13
|
-
} catch (err) {
|
|
14
|
-
logError('Code modifications failed', err);
|
|
15
|
-
exit(-1, err);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
exports.command = 'codemod <transform>';
|
|
20
|
-
|
|
21
|
-
exports.describe = 'Transforms code';
|
|
22
|
-
|
|
23
|
-
exports.builder = (yargs) => {
|
|
24
|
-
yargs.positional('transform', {
|
|
25
|
-
describe: 'path to the transform file. Can be either a local path or url',
|
|
26
|
-
type: 'string',
|
|
27
|
-
default: './transform.js',
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
exports.handler = handler;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const { exec, logInfo, logSuccess, logError } = require('./utils');
|
|
5
|
-
|
|
6
|
-
const { name } = require('../../package.json');
|
|
7
|
-
|
|
8
|
-
function isApp() {
|
|
9
|
-
return fs.existsSync(path.join(process.cwd(), 'app'));
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async function generateDocs() {
|
|
13
|
-
logInfo('Documentation Generation inprogress...');
|
|
14
|
-
const srcPath = isApp() ? 'app' : 'lib';
|
|
15
|
-
exec(
|
|
16
|
-
`jsdoc -r -c node_modules/${name}/lib/docgen/jsdoc.config.js -d docs ${srcPath}`,
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async function handler() {
|
|
21
|
-
try {
|
|
22
|
-
await generateDocs();
|
|
23
|
-
logSuccess('Document generation completed. ');
|
|
24
|
-
} catch (err) {
|
|
25
|
-
logError('Document generation failed', err);
|
|
26
|
-
exit(-1, err);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
exports.command = 'gendoc';
|
|
31
|
-
|
|
32
|
-
exports.describe = 'Builds documentation from source files';
|
|
33
|
-
|
|
34
|
-
exports.builder = {};
|
|
35
|
-
|
|
36
|
-
exports.handler = handler;
|
package/lib/cli-commands/lint.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { exec, logError, logSuccess } = require('./utils');
|
|
3
|
-
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
4
|
-
|
|
5
|
-
const { CI = false } = process.env;
|
|
6
|
-
|
|
7
|
-
async function lintCSS(fix = false) {
|
|
8
|
-
const fixIssues = fix ? '--fix' : '';
|
|
9
|
-
await exec(
|
|
10
|
-
`stylelint ./{lib,app}/**/*.{js,jsx,ts,tsx} ${fixIssues} ${
|
|
11
|
-
!CI ? '--color' : ''
|
|
12
|
-
} --allowEmptyInput`,
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function lintJS(fix = false) {
|
|
17
|
-
const fixIssues = fix ? '--fix' : '';
|
|
18
|
-
await exec(`eslint ${!CI ? '--color' : ''} ${fixIssues} .`);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async function handler(argv) {
|
|
22
|
-
if (argv.js) {
|
|
23
|
-
// run typescript compilation
|
|
24
|
-
if (isTypeScriptEnabled())
|
|
25
|
-
await exec('tsc --noEmit --emitDeclarationOnly false');
|
|
26
|
-
try {
|
|
27
|
-
await exec('rimraf ./reports/eslint.json');
|
|
28
|
-
await lintJS(argv.fix);
|
|
29
|
-
logSuccess('JS linting completed');
|
|
30
|
-
} catch (err) {
|
|
31
|
-
logError('JS linting failed');
|
|
32
|
-
exit(-1, err);
|
|
33
|
-
return -1;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (argv.css) {
|
|
37
|
-
try {
|
|
38
|
-
await exec('rimraf ./reports/stylelint.json');
|
|
39
|
-
await lintCSS(argv.fix);
|
|
40
|
-
logSuccess('CSS linting completed');
|
|
41
|
-
} catch (err) {
|
|
42
|
-
logError('CSS linting failed');
|
|
43
|
-
exit(-1, err);
|
|
44
|
-
return -1;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return 0;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
exports.command = 'lint [options]';
|
|
51
|
-
|
|
52
|
-
exports.describe = 'lints application code';
|
|
53
|
-
|
|
54
|
-
exports.builder = {
|
|
55
|
-
css: {
|
|
56
|
-
alias: 'css',
|
|
57
|
-
type: 'boolean',
|
|
58
|
-
default: true,
|
|
59
|
-
},
|
|
60
|
-
js: {
|
|
61
|
-
alias: 'js',
|
|
62
|
-
type: 'boolean',
|
|
63
|
-
default: true,
|
|
64
|
-
},
|
|
65
|
-
fix: {
|
|
66
|
-
alias: 'fix',
|
|
67
|
-
type: 'boolean',
|
|
68
|
-
default: false,
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
exports.handler = handler;
|
|
73
|
-
|
|
74
|
-
exports.lintCSS = lintCSS;
|
|
75
|
-
exports.lintJS = lintJS;
|
package/lib/cli-commands/pack.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { exec, logInfo, logError, logSuccess } = require('./utils');
|
|
3
|
-
const { isTypeScriptEnabled } = require('../typescript/util');
|
|
4
|
-
const { esBuild } = require('../transpile/esbuild');
|
|
5
|
-
const { name } = require('../../package.json');
|
|
6
|
-
|
|
7
|
-
const compileTypeScript = async () => {
|
|
8
|
-
logInfo('Generating types...');
|
|
9
|
-
await exec('tsc --emitDeclarationOnly');
|
|
10
|
-
logInfo('Types generation completed...');
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const webBuild = async (productionBuild) => {
|
|
14
|
-
logInfo('Building source files for browser environment...');
|
|
15
|
-
const devCmd = `node_modules/${name}/lib/webpack/webpack.lib.dev.babel.js --color`;
|
|
16
|
-
const prodCmd = `node_modules/${name}/lib/webpack/webpack.lib.prod.babel.js --color`;
|
|
17
|
-
await exec(`webpack --config ${productionBuild ? prodCmd : devCmd}`);
|
|
18
|
-
logInfo('Building source files for browser environment completed...');
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const pack = async ({ production, target, srcPath }) => {
|
|
22
|
-
logInfo('Build in-progress...');
|
|
23
|
-
await exec('rimraf ./dist');
|
|
24
|
-
if (isTypeScriptEnabled()) {
|
|
25
|
-
await compileTypeScript();
|
|
26
|
-
}
|
|
27
|
-
if (target !== 'node') await webBuild(production);
|
|
28
|
-
if (target !== 'web') {
|
|
29
|
-
logInfo('Building source files for nodejs environment...');
|
|
30
|
-
await esBuild({ srcdir: srcPath });
|
|
31
|
-
logInfo('Building source files for nodejs environment completed.');
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const handler = async (argv) => {
|
|
36
|
-
try {
|
|
37
|
-
await pack(argv);
|
|
38
|
-
logSuccess('Build completed');
|
|
39
|
-
} catch (err) {
|
|
40
|
-
logError('Build failed', err);
|
|
41
|
-
exit(-1, err);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
exports.command = 'pack';
|
|
46
|
-
|
|
47
|
-
exports.describe = 'builds library';
|
|
48
|
-
|
|
49
|
-
exports.builder = {
|
|
50
|
-
production: {
|
|
51
|
-
alias: 'p',
|
|
52
|
-
type: 'boolean',
|
|
53
|
-
default: false,
|
|
54
|
-
},
|
|
55
|
-
target: {
|
|
56
|
-
alias: 't',
|
|
57
|
-
type: 'string',
|
|
58
|
-
description:
|
|
59
|
-
'target environment where this library will be used. allowed values are web, node. by default libraries will be compiled for both web and nodejs environments',
|
|
60
|
-
},
|
|
61
|
-
srcPath: {
|
|
62
|
-
type: 'string',
|
|
63
|
-
default: './lib',
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
exports.handler = handler;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const { exit } = require('yargs');
|
|
3
|
-
const { exec, logError, logSuccess } = require('./utils');
|
|
4
|
-
|
|
5
|
-
async function startProdServer() {
|
|
6
|
-
await exec(
|
|
7
|
-
`cross-env NODE_ENV=production ts-node ${path.resolve(
|
|
8
|
-
__dirname,
|
|
9
|
-
'../server',
|
|
10
|
-
)} --color always`,
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function startDevServer() {
|
|
15
|
-
await exec(
|
|
16
|
-
`cross-env NODE_ENV=development webpack serve --config ${path.resolve(
|
|
17
|
-
__dirname,
|
|
18
|
-
'../webpack/webpack.dev.babel.js',
|
|
19
|
-
)}`,
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async function handler(argv) {
|
|
24
|
-
try {
|
|
25
|
-
if (argv.prod) {
|
|
26
|
-
await startProdServer();
|
|
27
|
-
} else {
|
|
28
|
-
await startDevServer();
|
|
29
|
-
}
|
|
30
|
-
logSuccess('Server started');
|
|
31
|
-
} catch (err) {
|
|
32
|
-
logError('Server start failed', err);
|
|
33
|
-
exit(-1, err);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
exports.command = 'start [options]';
|
|
38
|
-
|
|
39
|
-
exports.describe = 'starts local web server to test the application';
|
|
40
|
-
|
|
41
|
-
exports.builder = {
|
|
42
|
-
prod: {
|
|
43
|
-
alias: 'p',
|
|
44
|
-
default: false,
|
|
45
|
-
type: 'boolean',
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
exports.handler = handler;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { exec, logInfo, logError, logSuccess } = require('./utils');
|
|
3
|
-
|
|
4
|
-
async function buildStoryBook(isDoc = false) {
|
|
5
|
-
const additionalParams = isDoc ? '--docs -o demo/docs' : '-o demo';
|
|
6
|
-
await exec(
|
|
7
|
-
`cross-env NODE_ENV=production FORCE_COLOR=true build-storybook --quiet ${additionalParams}`,
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
async function startStoryBook(isDoc = false) {
|
|
12
|
-
await exec(
|
|
13
|
-
`cross-env NODE_ENV=development STORYBOOK_BUILD=true FORCE_COLOR=true start-storybook ${
|
|
14
|
-
isDoc && '--docs'
|
|
15
|
-
} -p 11000 --quiet`,
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function handler(argv) {
|
|
20
|
-
try {
|
|
21
|
-
if (!argv.build) {
|
|
22
|
-
await startStoryBook(argv.docs);
|
|
23
|
-
logInfo('Storybook started');
|
|
24
|
-
} else {
|
|
25
|
-
await buildStoryBook(argv.docs);
|
|
26
|
-
logSuccess('Storybook build completed');
|
|
27
|
-
}
|
|
28
|
-
} catch (err) {
|
|
29
|
-
logError('Storybook execution failed', err);
|
|
30
|
-
exit(-1, err);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
exports.command = 'storybook [options]';
|
|
35
|
-
|
|
36
|
-
exports.describe = 'story book application code';
|
|
37
|
-
|
|
38
|
-
exports.builder = {
|
|
39
|
-
build: {
|
|
40
|
-
alias: 'b',
|
|
41
|
-
type: 'boolean',
|
|
42
|
-
default: false,
|
|
43
|
-
},
|
|
44
|
-
docs: {
|
|
45
|
-
type: 'boolean',
|
|
46
|
-
default: false,
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
exports.handler = handler;
|
|
51
|
-
|
|
52
|
-
exports.startStoryBook = startStoryBook;
|
|
53
|
-
exports.buildStoryBook = buildStoryBook;
|
package/lib/cli-commands/test.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { exec, logError, logSuccess } = require('./utils');
|
|
3
|
-
|
|
4
|
-
const { CI = false } = process.env;
|
|
5
|
-
|
|
6
|
-
async function test(commandOptions) {
|
|
7
|
-
await exec(`cross-env NODE_ENV=test jest ${commandOptions}`);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line max-statements
|
|
11
|
-
async function handler(argv) {
|
|
12
|
-
let commandOptions = '--coverage';
|
|
13
|
-
if (argv.fix) commandOptions = '-u';
|
|
14
|
-
else if (argv.watch) commandOptions = '--watchAll';
|
|
15
|
-
if (CI) commandOptions += ' --ci --runInBand --no-colors';
|
|
16
|
-
else commandOptions += ' --maxWorkers=50%';
|
|
17
|
-
if (argv.p) commandOptions += ' --passWithNoTests';
|
|
18
|
-
if (argv.r) commandOptions += ' --bail --findRelatedTests';
|
|
19
|
-
if (argv.s) commandOptions += ' --silent';
|
|
20
|
-
try {
|
|
21
|
-
if (CI) {
|
|
22
|
-
await exec('rimraf ./reports');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// eslint-disable-next-line jest/valid-title, jest/no-disabled-tests, jest/expect-expect
|
|
26
|
-
await test(commandOptions);
|
|
27
|
-
logSuccess('Unit test execution completed');
|
|
28
|
-
} catch (err) {
|
|
29
|
-
logError('Unit test execution failed', err);
|
|
30
|
-
exit(-1, err);
|
|
31
|
-
return -1;
|
|
32
|
-
}
|
|
33
|
-
return 0;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
exports.command = 'test [options]';
|
|
37
|
-
|
|
38
|
-
exports.describe = 'unit tests application code';
|
|
39
|
-
|
|
40
|
-
exports.builder = {
|
|
41
|
-
fix: {
|
|
42
|
-
alias: 'f',
|
|
43
|
-
type: 'boolean',
|
|
44
|
-
},
|
|
45
|
-
watch: {
|
|
46
|
-
alias: 'w',
|
|
47
|
-
type: 'boolean',
|
|
48
|
-
},
|
|
49
|
-
passWithNoTests: {
|
|
50
|
-
alias: 'p',
|
|
51
|
-
type: 'boolean',
|
|
52
|
-
},
|
|
53
|
-
findReleatedTests: {
|
|
54
|
-
alias: 'r',
|
|
55
|
-
type: 'boolean',
|
|
56
|
-
},
|
|
57
|
-
silent: {
|
|
58
|
-
alias: 's',
|
|
59
|
-
type: 'boolean',
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
exports.handler = handler;
|
package/lib/cli-commands/tsc.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
const { exit } = require('yargs');
|
|
2
|
-
const { dirname, join } = require('path');
|
|
3
|
-
const { spawnSync } = require('child_process');
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
const { logInfo, logError } = require('./utils');
|
|
6
|
-
|
|
7
|
-
const randomChars = () => Math.random().toString(36).slice(2);
|
|
8
|
-
|
|
9
|
-
const resolveFromModule = (moduleName, ...paths) => {
|
|
10
|
-
const modulePath = dirname(require.resolve(`${moduleName}/package.json`));
|
|
11
|
-
return join(modulePath, ...paths);
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const resolveFromRoot = (...paths) => join(process.cwd(), ...paths);
|
|
15
|
-
|
|
16
|
-
const validateTypescript = async () => {
|
|
17
|
-
const args = process.argv.slice(2);
|
|
18
|
-
const argsProjectIndex = args.findIndex((arg) =>
|
|
19
|
-
['-p', '--project'].includes(arg),
|
|
20
|
-
);
|
|
21
|
-
const argsProjectValue =
|
|
22
|
-
argsProjectIndex !== -1 ? args[argsProjectIndex + 1] : undefined;
|
|
23
|
-
|
|
24
|
-
const files = args.filter((file) => /\.(ts|tsx)$/.test(file));
|
|
25
|
-
if (files.length === 0) {
|
|
26
|
-
process.exit(0);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const remainingArgsToForward = args
|
|
30
|
-
.slice()
|
|
31
|
-
.filter((arg) => !files.includes(arg));
|
|
32
|
-
|
|
33
|
-
if (argsProjectIndex !== -1) {
|
|
34
|
-
remainingArgsToForward.splice(argsProjectIndex, 2);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Load existing config
|
|
38
|
-
const tsconfigPath = argsProjectValue || resolveFromRoot('tsconfig.json');
|
|
39
|
-
const tsconfigContent = fs.readFileSync(tsconfigPath).toString();
|
|
40
|
-
// Use 'eval' to read the JSON as regular JavaScript syntax so that comments are allowed
|
|
41
|
-
// eslint-disable-next-line prefer-const
|
|
42
|
-
let tsconfig = {};
|
|
43
|
-
// eslint-disable-next-line no-eval
|
|
44
|
-
eval(`tsconfig = ${tsconfigContent}`);
|
|
45
|
-
|
|
46
|
-
// Write a temp config file
|
|
47
|
-
const tmpTsconfigPath = resolveFromRoot(`tsconfig.${randomChars()}.json`);
|
|
48
|
-
const tmpTsconfig = {
|
|
49
|
-
...tsconfig,
|
|
50
|
-
compilerOptions: {
|
|
51
|
-
...tsconfig.compilerOptions,
|
|
52
|
-
skipLibCheck: true,
|
|
53
|
-
},
|
|
54
|
-
files,
|
|
55
|
-
include: ['shared/typings'],
|
|
56
|
-
};
|
|
57
|
-
fs.writeFileSync(tmpTsconfigPath, JSON.stringify(tmpTsconfig, null, 2));
|
|
58
|
-
|
|
59
|
-
// Type-check our files
|
|
60
|
-
const { status } = spawnSync(
|
|
61
|
-
resolveFromModule(
|
|
62
|
-
'typescript',
|
|
63
|
-
`../.bin/tsc${process.platform === 'win32' ? '.cmd' : ''}`,
|
|
64
|
-
),
|
|
65
|
-
['-p', tmpTsconfigPath, ...remainingArgsToForward],
|
|
66
|
-
{ stdio: 'inherit' },
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
// Delete temp config file
|
|
70
|
-
fs.unlinkSync(tmpTsconfigPath);
|
|
71
|
-
|
|
72
|
-
process.exit(status);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
async function handler(argv) {
|
|
76
|
-
try {
|
|
77
|
-
await validateTypescript(argv.p);
|
|
78
|
-
logInfo('Typescript validation started');
|
|
79
|
-
} catch (err) {
|
|
80
|
-
logError('Typescript validation failed', err);
|
|
81
|
-
exit(-1, err);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
exports.command = 'tsc [options]';
|
|
86
|
-
|
|
87
|
-
exports.describe = 'validate typescript code';
|
|
88
|
-
|
|
89
|
-
exports.builder = {
|
|
90
|
-
project: {
|
|
91
|
-
alias: 'p',
|
|
92
|
-
type: 'boolean',
|
|
93
|
-
default: false,
|
|
94
|
-
},
|
|
95
|
-
docs: {
|
|
96
|
-
type: 'boolean',
|
|
97
|
-
default: false,
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
exports.handler = handler;
|
|
102
|
-
|
|
103
|
-
exports.validateTypescript = validateTypescript;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-lines */
|
|
2
|
-
/* eslint-disable no-console */
|
|
3
|
-
const execa = require('execa');
|
|
4
|
-
const chalk = require('chalk');
|
|
5
|
-
const path = require('path');
|
|
6
|
-
const {
|
|
7
|
-
readFile,
|
|
8
|
-
writeFile,
|
|
9
|
-
mkdir,
|
|
10
|
-
readdir,
|
|
11
|
-
copyFile,
|
|
12
|
-
} = require('fs/promises');
|
|
13
|
-
const {
|
|
14
|
-
getPaths,
|
|
15
|
-
isAppLoaderEnabled,
|
|
16
|
-
getAppVersion,
|
|
17
|
-
LATEST_VERSION,
|
|
18
|
-
} = require('../webpack/helpers');
|
|
19
|
-
|
|
20
|
-
const browsersMapping = {
|
|
21
|
-
and_chr: 'Chrome for Android',
|
|
22
|
-
chrome: 'Google Chrome',
|
|
23
|
-
edge: 'Microsoft Edge',
|
|
24
|
-
firefox: 'Mozilla Firefox',
|
|
25
|
-
ios_saf: 'iOS Safari',
|
|
26
|
-
safari: 'Safari',
|
|
27
|
-
samsung: 'Samsung Internet',
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const exec = async (command, options = { stdio: 'inherit' }) =>
|
|
31
|
-
execa.command(command, options);
|
|
32
|
-
exports.exec = exec;
|
|
33
|
-
|
|
34
|
-
exports.logInfo = console.log;
|
|
35
|
-
exports.logSuccess = (...args) => console.log(chalk.green(...args));
|
|
36
|
-
exports.logError = console.error;
|
|
37
|
-
|
|
38
|
-
const readPackageLock = async () => {
|
|
39
|
-
try {
|
|
40
|
-
const appPkgLockFile = path.join(process.cwd(), 'package-lock.json');
|
|
41
|
-
const pkgLockJSON = await readFile(appPkgLockFile, 'utf8');
|
|
42
|
-
const { dependencies } = JSON.parse(pkgLockJSON);
|
|
43
|
-
return (moduleName) => dependencies[moduleName]?.version || '';
|
|
44
|
-
} catch (err) {
|
|
45
|
-
console.warn('Package lock file not found');
|
|
46
|
-
return () => '';
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const getSupportedBrowsers = async () => {
|
|
51
|
-
const { stdout } = await exec('npx --no-install browserslist', {
|
|
52
|
-
stdout: 'pipe',
|
|
53
|
-
});
|
|
54
|
-
const browserVersions = (stdout && stdout.split('\n')) || [];
|
|
55
|
-
return browserVersions.reduce((acc, nameVersion) => {
|
|
56
|
-
const [name, version] = nameVersion.split(' ');
|
|
57
|
-
const versionRange = version.split('-');
|
|
58
|
-
acc[browsersMapping[name]] = (versionRange && versionRange[0]) || version;
|
|
59
|
-
return acc;
|
|
60
|
-
}, {});
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const getModulesInfo = async () => {
|
|
64
|
-
try {
|
|
65
|
-
const getModuleVersion = await readPackageLock();
|
|
66
|
-
return {
|
|
67
|
-
react: getModuleVersion('react'),
|
|
68
|
-
'react-dom': getModuleVersion('react-dom'),
|
|
69
|
-
'app-react-dependencies': getModuleVersion(
|
|
70
|
-
'@elliemae/app-react-dependencies',
|
|
71
|
-
),
|
|
72
|
-
'app-sdk': getModuleVersion('@elliemae/pui-app-sdk'),
|
|
73
|
-
cli: getModuleVersion('@elliemae/pui-cli'),
|
|
74
|
-
dimsum: getModuleVersion('@elliemae/ds-system'),
|
|
75
|
-
};
|
|
76
|
-
} catch (err) {
|
|
77
|
-
console.warn(err);
|
|
78
|
-
return {};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
exports.writeAppInfo = async () => {
|
|
83
|
-
const appInfo = {
|
|
84
|
-
timestamp: new Date().toISOString(),
|
|
85
|
-
modules: await getModulesInfo(),
|
|
86
|
-
browserSupport: await getSupportedBrowsers(),
|
|
87
|
-
screenReaderSupport: [
|
|
88
|
-
'JAWS with Chrome',
|
|
89
|
-
'NVDA with Chrome',
|
|
90
|
-
'VoiceOver with Safari',
|
|
91
|
-
'iOS VoiceOver',
|
|
92
|
-
'Android Talkback',
|
|
93
|
-
],
|
|
94
|
-
};
|
|
95
|
-
const infoJSON = JSON.stringify(appInfo, null, 2);
|
|
96
|
-
const { buildPath: versionedPath } = getPaths();
|
|
97
|
-
[
|
|
98
|
-
path.join(versionedPath, 'info.json'),
|
|
99
|
-
path.join(process.cwd(), 'build', 'public', 'info.json'),
|
|
100
|
-
].forEach(async (infoPath) => writeFile(infoPath, infoJSON));
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const copyDir = async (src, dest) => {
|
|
104
|
-
const entries = await readdir(src, {
|
|
105
|
-
withFileTypes: true,
|
|
106
|
-
});
|
|
107
|
-
await mkdir(dest);
|
|
108
|
-
return Promise.all(
|
|
109
|
-
entries.map((entry) => {
|
|
110
|
-
const srcPath = path.join(src, entry.name);
|
|
111
|
-
const destPath = path.join(dest, entry.name);
|
|
112
|
-
if (entry.isDirectory()) {
|
|
113
|
-
return copyDir(srcPath, destPath);
|
|
114
|
-
}
|
|
115
|
-
return copyFile(srcPath, destPath);
|
|
116
|
-
}),
|
|
117
|
-
);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const updateManifestWithVersionInfo = async (dest) => {
|
|
121
|
-
const manifestFile = path.join(dest, 'manifest.json');
|
|
122
|
-
let manifestData = await readFile(manifestFile, 'utf8');
|
|
123
|
-
manifestData = manifestData.replace(/latest\//g, `${getAppVersion()}/`);
|
|
124
|
-
await writeFile(manifestFile, manifestData);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
exports.copyBuildAssetsToVersionedFolder = async () => {
|
|
128
|
-
const appVersion = getAppVersion();
|
|
129
|
-
const isVersionedApp = isAppLoaderEnabled() && appVersion !== LATEST_VERSION;
|
|
130
|
-
if (!isVersionedApp) return;
|
|
131
|
-
const src = path.resolve(process.cwd(), 'build/public/latest');
|
|
132
|
-
const dest = path.resolve(process.cwd(), `build/public/${appVersion}`);
|
|
133
|
-
await copyDir(src, dest);
|
|
134
|
-
await updateManifestWithVersionInfo(dest);
|
|
135
|
-
};
|