@elliemae/pui-cli 7.0.0-alpha.1 → 7.0.0-alpha.10

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.
Files changed (281) hide show
  1. package/{lib/babel/babel.config.js → dist/cjs/babel.config.cjs} +2 -2
  2. package/dist/cjs/cli.js +49 -0
  3. package/dist/cjs/commands/build.js +72 -0
  4. package/dist/cjs/commands/codemod.js +51 -0
  5. package/dist/cjs/commands/gendoc.js +52 -0
  6. package/dist/cjs/commands/lint.js +86 -0
  7. package/dist/cjs/commands/pack.js +88 -0
  8. package/dist/cjs/commands/start.js +61 -0
  9. package/dist/cjs/commands/storybook.js +63 -0
  10. package/dist/cjs/commands/test.js +86 -0
  11. package/dist/cjs/commands/tscheck.js +85 -0
  12. package/dist/cjs/commands/utils.js +137 -0
  13. package/dist/cjs/commands/version.js +71 -0
  14. package/dist/cjs/commands/vitest.js +84 -0
  15. package/{lib/dummy.ts → dist/cjs/dummy.js} +0 -0
  16. package/dist/cjs/index.cjs +25 -0
  17. package/dist/cjs/index.js +41 -0
  18. package/dist/cjs/jsdoc.conf.json +17 -0
  19. package/dist/cjs/lint-config/commitlint.config.cjs +1 -0
  20. package/{lib/lint/eslint/common.js → dist/cjs/lint-config/eslint/common.cjs} +5 -5
  21. package/{lib/lint/eslint/non-react.js → dist/cjs/lint-config/eslint/non-react.cjs} +2 -2
  22. package/{lib/lint/eslint/react.js → dist/cjs/lint-config/eslint/react.cjs} +2 -2
  23. package/{lib/lint/eslint/typescript/common.js → dist/cjs/lint-config/eslint/typescript/common.cjs} +1 -1
  24. package/{lib/lint/eslint/typescript/non-react.js → dist/cjs/lint-config/eslint/typescript/non-react.cjs} +2 -2
  25. package/{lib/lint/eslint/typescript/react.js → dist/cjs/lint-config/eslint/typescript/react.cjs} +2 -2
  26. package/dist/cjs/lint-config/lint-staged.config.js +37 -0
  27. package/{lib/lint/prettier.config.js → dist/cjs/lint-config/prettier.config.cjs} +1 -1
  28. package/{lib/lint/stylelint.config.js → dist/cjs/lint-config/stylelint.config.cjs} +2 -2
  29. package/dist/cjs/monorepo/delete-merged-tags.js +57 -0
  30. package/dist/cjs/monorepo/set-registry-version.js +43 -0
  31. package/dist/cjs/monorepo/set-workspace-version.js +44 -0
  32. package/dist/cjs/monorepo/utils.cjs +30 -0
  33. package/dist/cjs/package.json +4 -0
  34. package/dist/cjs/pui-config.js +40 -0
  35. package/{lib/release/release.config.js → dist/cjs/release.config.cjs} +0 -0
  36. package/{lib/server/util/index.js → dist/cjs/server/app-routes.cjs} +5 -15
  37. package/dist/cjs/server/csp.js +88 -0
  38. package/dist/cjs/server/index.js +30 -0
  39. package/dist/cjs/server/logger.js +50 -0
  40. package/dist/cjs/server/middlewares.js +68 -0
  41. package/dist/cjs/server/utils.js +32 -0
  42. package/{lib/testing/jest.config.js → dist/cjs/testing/jest.config.cjs} +6 -9
  43. package/{lib/testing/jest.node.config.js → dist/cjs/testing/jest.node.config.cjs} +1 -1
  44. package/dist/cjs/testing/mocks/axios.js +37 -0
  45. package/dist/cjs/testing/mocks/cssModule.js +23 -0
  46. package/dist/cjs/testing/mocks/html.js +23 -0
  47. package/dist/cjs/testing/mocks/image.js +23 -0
  48. package/dist/cjs/testing/mocks/matchMedia.js +43 -0
  49. package/dist/cjs/testing/mocks/pui-app-loader.js +24 -0
  50. package/dist/cjs/testing/mocks/pui-diagnostics.js +68 -0
  51. package/dist/cjs/testing/mocks/pui-user-monitoring.js +30 -0
  52. package/dist/cjs/testing/mocks/retry-axios.js +27 -0
  53. package/dist/cjs/testing/mocks/svg.js +29 -0
  54. package/dist/cjs/testing/mocks/webpack-hmr.js +24 -0
  55. package/{lib/testing/resolver.js → dist/cjs/testing/resolver.cjs} +0 -0
  56. package/dist/cjs/testing/setup-react-env.js +18 -0
  57. package/dist/cjs/testing/setup-tests.js +63 -0
  58. package/dist/cjs/testing/vitest.config.js +39 -0
  59. package/{lib/testing/vitest.setup.ts → dist/cjs/testing/vitest.setup.js} +0 -0
  60. package/{lib → dist/cjs}/transpile/.swcrc +0 -0
  61. package/dist/cjs/transpile/esbuild.js +139 -0
  62. package/dist/cjs/transpile/react-shim.js +26 -0
  63. package/{lib/transpile/swcrc.config.js → dist/cjs/transpile/swcrc.config.cjs} +1 -1
  64. package/{lib → dist/cjs}/typescript/app.tsconfig.json +0 -0
  65. package/{lib → dist/cjs}/typescript/library.tsconfig.json +0 -0
  66. package/dist/cjs/update-notifier.js +33 -0
  67. package/dist/cjs/utils.cjs +23 -0
  68. package/dist/cjs/webpack/helpers.js +216 -0
  69. package/dist/cjs/webpack/webpack.base.babel.js +262 -0
  70. package/dist/cjs/webpack/webpack.dev.babel.js +140 -0
  71. package/dist/cjs/webpack/webpack.lib.base.babel.js +217 -0
  72. package/dist/cjs/webpack/webpack.lib.dev.babel.js +67 -0
  73. package/dist/cjs/webpack/webpack.lib.prod.babel.js +92 -0
  74. package/dist/cjs/webpack/webpack.prod.babel.js +139 -0
  75. package/dist/cjs/webpack/webpack.storybook.js +122 -0
  76. package/dist/esm/babel.config.cjs +101 -0
  77. package/dist/esm/cli.js +33 -0
  78. package/dist/esm/commands/build.js +56 -0
  79. package/dist/esm/commands/codemod.js +29 -0
  80. package/dist/esm/commands/gendoc.js +29 -0
  81. package/dist/esm/commands/lint.js +64 -0
  82. package/dist/esm/commands/pack.js +65 -0
  83. package/dist/esm/commands/start.js +38 -0
  84. package/dist/esm/commands/storybook.js +41 -0
  85. package/dist/esm/commands/test.js +64 -0
  86. package/dist/esm/commands/tscheck.js +65 -0
  87. package/dist/esm/commands/utils.js +120 -0
  88. package/dist/esm/commands/version.js +49 -0
  89. package/dist/esm/commands/vitest.js +61 -0
  90. package/dist/esm/dummy.js +0 -0
  91. package/dist/esm/index.cjs +25 -0
  92. package/dist/esm/index.js +22 -0
  93. package/dist/esm/jsdoc.conf.json +17 -0
  94. package/dist/esm/lint-config/commitlint.config.cjs +1 -0
  95. package/dist/esm/lint-config/eslint/common.cjs +160 -0
  96. package/dist/esm/lint-config/eslint/non-react.cjs +14 -0
  97. package/dist/esm/lint-config/eslint/react.cjs +26 -0
  98. package/dist/esm/lint-config/eslint/typescript/common.cjs +43 -0
  99. package/dist/esm/lint-config/eslint/typescript/non-react.cjs +12 -0
  100. package/dist/esm/lint-config/eslint/typescript/react.cjs +19 -0
  101. package/dist/esm/lint-config/lint-staged.config.js +15 -0
  102. package/dist/esm/lint-config/prettier.config.cjs +8 -0
  103. package/dist/esm/lint-config/stylelint.config.cjs +19 -0
  104. package/dist/esm/monorepo/delete-merged-tags.js +38 -0
  105. package/dist/esm/monorepo/set-registry-version.js +21 -0
  106. package/dist/esm/monorepo/set-workspace-version.js +22 -0
  107. package/dist/esm/monorepo/utils.cjs +30 -0
  108. package/dist/esm/package.json +4 -0
  109. package/dist/esm/pui-config.js +18 -0
  110. package/dist/esm/release.config.cjs +31 -0
  111. package/dist/esm/server/app-routes.cjs +42 -0
  112. package/dist/esm/server/csp.js +66 -0
  113. package/dist/esm/server/index.js +18 -0
  114. package/dist/esm/server/logger.js +28 -0
  115. package/dist/esm/server/middlewares.js +46 -0
  116. package/dist/esm/server/utils.js +10 -0
  117. package/dist/esm/testing/jest.config.cjs +102 -0
  118. package/dist/esm/testing/jest.node.config.cjs +8 -0
  119. package/{lib → dist/esm}/testing/mocks/axios.js +8 -5
  120. package/dist/esm/testing/mocks/cssModule.js +4 -0
  121. package/dist/esm/testing/mocks/html.js +4 -0
  122. package/dist/esm/testing/mocks/image.js +4 -0
  123. package/dist/esm/testing/mocks/matchMedia.js +24 -0
  124. package/dist/esm/testing/mocks/pui-app-loader.js +5 -0
  125. package/dist/esm/testing/mocks/pui-diagnostics.js +49 -0
  126. package/dist/esm/testing/mocks/pui-user-monitoring.js +11 -0
  127. package/dist/esm/testing/mocks/retry-axios.js +8 -0
  128. package/dist/esm/testing/mocks/svg.js +7 -0
  129. package/dist/esm/testing/mocks/webpack-hmr.js +5 -0
  130. package/dist/esm/testing/resolver.cjs +47 -0
  131. package/dist/esm/testing/setup-react-env.js +3 -0
  132. package/dist/esm/testing/setup-tests.js +48 -0
  133. package/dist/esm/testing/vitest.config.js +17 -0
  134. package/dist/esm/testing/vitest.setup.js +0 -0
  135. package/dist/esm/transpile/.swcrc +11 -0
  136. package/dist/esm/transpile/esbuild.js +118 -0
  137. package/dist/esm/transpile/react-shim.js +4 -0
  138. package/dist/esm/transpile/swcrc.config.cjs +13 -0
  139. package/dist/esm/typescript/app.tsconfig.json +23 -0
  140. package/dist/esm/typescript/library.tsconfig.json +23 -0
  141. package/dist/esm/update-notifier.js +11 -0
  142. package/dist/esm/utils.cjs +23 -0
  143. package/dist/esm/webpack/helpers.js +196 -0
  144. package/dist/esm/webpack/webpack.base.babel.js +248 -0
  145. package/dist/esm/webpack/webpack.dev.babel.js +121 -0
  146. package/dist/esm/webpack/webpack.lib.base.babel.js +208 -0
  147. package/dist/esm/webpack/webpack.lib.dev.babel.js +45 -0
  148. package/dist/esm/webpack/webpack.lib.prod.babel.js +70 -0
  149. package/dist/esm/webpack/webpack.prod.babel.js +122 -0
  150. package/dist/esm/webpack/webpack.storybook.js +102 -0
  151. package/dist/types/babel.config.d.cts +59 -0
  152. package/dist/types/cli.d.ts +2 -0
  153. package/dist/types/commands/build.d.ts +14 -0
  154. package/dist/types/commands/codemod.d.ts +6 -0
  155. package/dist/types/commands/gendoc.d.ts +6 -0
  156. package/dist/types/commands/lint.d.ts +29 -0
  157. package/dist/types/commands/pack.d.ts +26 -0
  158. package/dist/types/commands/start.d.ts +13 -0
  159. package/dist/types/commands/storybook.d.ts +19 -0
  160. package/dist/types/commands/test.d.ts +35 -0
  161. package/dist/types/commands/tscheck.d.ts +14 -0
  162. package/dist/types/commands/utils.d.ts +14 -0
  163. package/dist/types/commands/version.d.ts +30 -0
  164. package/dist/types/commands/vitest.d.ts +35 -0
  165. package/dist/types/dummy.d.ts +0 -0
  166. package/dist/types/index.d.cts +10 -0
  167. package/dist/types/index.d.ts +10 -0
  168. package/dist/types/lint-config/commitlint.config.d.cts +4 -0
  169. package/dist/types/lint-config/eslint/common.d.cts +127 -0
  170. package/dist/types/lint-config/eslint/non-react.d.cts +93 -0
  171. package/dist/types/lint-config/eslint/react.d.cts +123 -0
  172. package/dist/types/lint-config/eslint/typescript/common.d.cts +37 -0
  173. package/dist/types/lint-config/eslint/typescript/non-react.d.cts +87 -0
  174. package/dist/types/lint-config/eslint/typescript/react.d.cts +118 -0
  175. package/dist/types/lint-config/lint-staged.config.d.ts +5 -0
  176. package/dist/types/lint-config/prettier.config.d.cts +8 -0
  177. package/dist/types/lint-config/stylelint.config.d.cts +11 -0
  178. package/dist/types/monorepo/delete-merged-tags.d.ts +1 -0
  179. package/dist/types/monorepo/set-registry-version.d.ts +1 -0
  180. package/dist/types/monorepo/set-workspace-version.d.ts +1 -0
  181. package/dist/types/monorepo/utils.d.cts +1 -0
  182. package/dist/types/pui-config.d.ts +1 -0
  183. package/dist/types/release.config.d.cts +9 -0
  184. package/dist/types/server/app-routes.d.cts +1 -0
  185. package/dist/types/server/csp.d.ts +10 -0
  186. package/dist/types/server/index.d.ts +1 -0
  187. package/dist/types/server/logger.d.ts +4 -0
  188. package/dist/types/server/middlewares.d.ts +2 -0
  189. package/dist/types/server/utils.d.ts +3 -0
  190. package/dist/types/testing/jest.config.d.cts +38 -0
  191. package/dist/types/testing/jest.node.config.d.cts +38 -0
  192. package/dist/types/testing/mocks/axios.d.ts +17 -0
  193. package/dist/types/testing/mocks/cssModule.d.ts +2 -0
  194. package/dist/types/testing/mocks/html.d.ts +2 -0
  195. package/dist/types/testing/mocks/image.d.ts +2 -0
  196. package/dist/types/testing/mocks/matchMedia.d.ts +1 -0
  197. package/dist/types/testing/mocks/pui-app-loader.d.ts +1 -0
  198. package/dist/types/testing/mocks/pui-diagnostics.d.ts +28 -0
  199. package/dist/types/testing/mocks/pui-user-monitoring.d.ts +3 -0
  200. package/dist/types/testing/mocks/retry-axios.d.ts +3 -0
  201. package/dist/types/testing/mocks/svg.d.ts +3 -0
  202. package/dist/types/testing/mocks/webpack-hmr.d.ts +1 -0
  203. package/dist/types/testing/resolver.d.cts +2 -0
  204. package/dist/types/testing/setup-react-env.d.ts +1 -0
  205. package/dist/types/testing/setup-tests.d.ts +1 -0
  206. package/dist/types/testing/vitest.config.d.ts +2 -0
  207. package/dist/types/testing/vitest.setup.d.ts +0 -0
  208. package/dist/types/transpile/esbuild.d.ts +13 -0
  209. package/dist/types/transpile/react-shim.d.ts +2 -0
  210. package/dist/types/transpile/swcrc.config.d.cts +1 -0
  211. package/dist/types/update-notifier.d.ts +1 -0
  212. package/dist/types/utils.d.cts +4 -0
  213. package/dist/types/webpack/helpers.d.ts +28 -0
  214. package/dist/types/webpack/webpack.base.babel.d.ts +90 -0
  215. package/dist/types/webpack/webpack.dev.babel.d.ts +2 -0
  216. package/dist/types/webpack/webpack.lib.base.babel.d.ts +107 -0
  217. package/dist/types/webpack/webpack.lib.dev.babel.d.ts +91 -0
  218. package/dist/types/webpack/webpack.lib.prod.babel.d.ts +91 -0
  219. package/dist/types/webpack/webpack.prod.babel.d.ts +2 -0
  220. package/dist/types/webpack/webpack.storybook.d.ts +4 -0
  221. package/package.json +55 -39
  222. package/lib/cli-commands/build.js +0 -60
  223. package/lib/cli-commands/codemod.js +0 -31
  224. package/lib/cli-commands/gendoc.js +0 -36
  225. package/lib/cli-commands/lint.js +0 -75
  226. package/lib/cli-commands/pack.js +0 -67
  227. package/lib/cli-commands/start.js +0 -49
  228. package/lib/cli-commands/storybook.js +0 -53
  229. package/lib/cli-commands/test.js +0 -63
  230. package/lib/cli-commands/tsc.js +0 -103
  231. package/lib/cli-commands/utils.js +0 -135
  232. package/lib/cli-commands/version.js +0 -53
  233. package/lib/cli-commands/vitest.js +0 -66
  234. package/lib/cli.js +0 -33
  235. package/lib/docgen/jsdoc.config.js +0 -17
  236. package/lib/index.js +0 -25
  237. package/lib/lint/commitlint.config.js +0 -1
  238. package/lib/lint/lint-staged.config.js +0 -16
  239. package/lib/monorepo/delete-merged-tags.js +0 -48
  240. package/lib/monorepo/set-registry-version.js +0 -22
  241. package/lib/monorepo/set-workspace-version.js +0 -29
  242. package/lib/monorepo/utils.js +0 -15
  243. package/lib/pui-config/index.js +0 -18
  244. package/lib/scripts/helpers/checkmark.js +0 -15
  245. package/lib/scripts/helpers/get-npm-config.js +0 -3
  246. package/lib/scripts/helpers/progress.js +0 -19
  247. package/lib/scripts/helpers/xmark.js +0 -13
  248. package/lib/scripts/npmcheckversion.js +0 -8
  249. package/lib/scripts/update-notifier.js +0 -7
  250. package/lib/server/csp.js +0 -74
  251. package/lib/server/index.js +0 -37
  252. package/lib/server/logger.js +0 -42
  253. package/lib/server/middlewares/addDevMiddlewares.js +0 -39
  254. package/lib/server/middlewares/addProdMiddlewares.js +0 -30
  255. package/lib/server/middlewares/index.js +0 -37
  256. package/lib/testing/mocks/cssModule.js +0 -1
  257. package/lib/testing/mocks/html.js +0 -1
  258. package/lib/testing/mocks/image.js +0 -1
  259. package/lib/testing/mocks/matchMedia.js +0 -24
  260. package/lib/testing/mocks/pui-app-loader.js +0 -1
  261. package/lib/testing/mocks/pui-diagnostics.js +0 -28
  262. package/lib/testing/mocks/pui-user-monitoring.js +0 -3
  263. package/lib/testing/mocks/retry-axios.js +0 -3
  264. package/lib/testing/mocks/svg.js +0 -5
  265. package/lib/testing/mocks/webpack-hmr.js +0 -1
  266. package/lib/testing/setup-react-env.js +0 -3
  267. package/lib/testing/setup-tests.js +0 -58
  268. package/lib/testing/vitest.config.ts +0 -16
  269. package/lib/transpile/esbuild.js +0 -116
  270. package/lib/transpile/react-shim.js +0 -2
  271. package/lib/typescript/tsc-files/index.js +0 -66
  272. package/lib/typescript/tsc-files/utils.js +0 -16
  273. package/lib/typescript/util.js +0 -5
  274. package/lib/webpack/helpers.js +0 -252
  275. package/lib/webpack/webpack.base.babel.js +0 -242
  276. package/lib/webpack/webpack.dev.babel.js +0 -137
  277. package/lib/webpack/webpack.lib.base.babel.js +0 -205
  278. package/lib/webpack/webpack.lib.dev.babel.js +0 -49
  279. package/lib/webpack/webpack.lib.prod.babel.js +0 -77
  280. package/lib/webpack/webpack.prod.babel.js +0 -142
  281. package/lib/webpack/webpack.storybook.js +0 -87
@@ -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
- };
@@ -1,53 +0,0 @@
1
- const { exit } = require('yargs');
2
- const { exec, logError } = require('./utils');
3
- const { setWorkspaceVersion } = require('../monorepo/set-workspace-version');
4
- const { setRegistryVersion } = require('../monorepo/set-registry-version');
5
- const { deleteMergedTags } = require('../monorepo/delete-merged-tags');
6
-
7
- const version = async (lernaOptions = '') => {
8
- await exec(
9
- `cross-env NODE_ENV=production lerna version --conventional-commits --exact --create-release github --force-publish --yes ${lernaOptions}`,
10
- );
11
- };
12
-
13
- async function handler(argv) {
14
- try {
15
- if (argv.deleteTags) {
16
- await deleteMergedTags();
17
- } else if (argv.useRegistry) {
18
- await setRegistryVersion();
19
- } else if (argv.useWorkspace) {
20
- await setWorkspaceVersion();
21
- } else {
22
- await version(argv.lernaOptions);
23
- }
24
- } catch (err) {
25
- logError('Monorepo versioning failed', err);
26
- exit(-1, err);
27
- }
28
- }
29
-
30
- exports.command = 'version [options]';
31
-
32
- exports.describe = 'version monorepo';
33
-
34
- exports.builder = {
35
- deleteTags: {
36
- type: 'boolean',
37
- default: false,
38
- },
39
- useRegistry: {
40
- type: 'boolean',
41
- default: false,
42
- },
43
- useWorkspace: {
44
- type: 'boolean',
45
- default: false,
46
- },
47
- lernaOptions: {
48
- type: 'string',
49
- default: false,
50
- },
51
- };
52
-
53
- exports.handler = handler;
@@ -1,66 +0,0 @@
1
- const { exit } = require('yargs');
2
- const path = require('path');
3
- const { exec, logError, logSuccess } = require('./utils');
4
-
5
- const { CI = false } = process.env;
6
-
7
- const configPath = path.resolve(__dirname, '../testing/vitest.config.ts');
8
-
9
- async function test(commandOptions) {
10
- await exec(
11
- `cross-env FORCE_COLOR=true vitest --config ${configPath} ${commandOptions}`,
12
- );
13
- }
14
-
15
- // eslint-disable-next-line max-statements
16
- async function handler(argv) {
17
- let commandOptions = '--coverage';
18
- if (argv.fix) commandOptions = '-u';
19
- else if (argv.watch) commandOptions = '--watch';
20
- if (argv.p) commandOptions += ' --passWithNoTests';
21
- if (argv.r) commandOptions += ' --related';
22
- if (argv.s) commandOptions += ' --silent';
23
- try {
24
- if (CI) {
25
- await exec('rimraf ./reports');
26
- }
27
-
28
- // eslint-disable-next-line jest/valid-title, jest/no-disabled-tests, jest/expect-expect
29
- await test(commandOptions);
30
- logSuccess('Unit test execution completed');
31
- } catch (err) {
32
- logError('Unit test execution failed', err);
33
- exit(-1, err);
34
- return -1;
35
- }
36
- return 0;
37
- }
38
-
39
- exports.command = 'vitest [options]';
40
-
41
- exports.describe = 'unit tests application code using vitest';
42
-
43
- exports.builder = {
44
- fix: {
45
- alias: 'f',
46
- type: 'boolean',
47
- },
48
- watch: {
49
- alias: 'w',
50
- type: 'boolean',
51
- },
52
- passWithNoTests: {
53
- alias: 'p',
54
- type: 'boolean',
55
- },
56
- related: {
57
- alias: 'r',
58
- type: 'boolean',
59
- },
60
- silent: {
61
- alias: 's',
62
- type: 'boolean',
63
- },
64
- };
65
-
66
- exports.handler = handler;
package/lib/cli.js DELETED
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- /* eslint-disable no-unused-expressions */
3
- const yargs = require('yargs');
4
- const path = require('path');
5
- const { config: envConfig } = require('dotenv');
6
- const notifyUpdates = require('./scripts/update-notifier');
7
- const buildCmd = require('./cli-commands/build');
8
- const packCmd = require('./cli-commands/pack');
9
- const startCmd = require('./cli-commands/start');
10
- const testCmd = require('./cli-commands/test');
11
- const lintCmd = require('./cli-commands/lint');
12
- const gendocCmd = require('./cli-commands/gendoc');
13
- const codemodCmd = require('./cli-commands/codemod');
14
- const storybookCmd = require('./cli-commands/storybook');
15
- const vitestCmd = require('./cli-commands/vitest');
16
- const versionCmd = require('./cli-commands/version');
17
-
18
- envConfig();
19
- process.env.PATH +=
20
- path.delimiter + path.join(__dirname, '..', 'node_modules', '.bin');
21
-
22
- yargs.command(buildCmd).help().argv;
23
- yargs.command(packCmd).help().argv;
24
- yargs.command(startCmd).help().argv;
25
- yargs.command(testCmd).help().argv;
26
- yargs.command(lintCmd).help().argv;
27
- yargs.command(gendocCmd).help().argv;
28
- yargs.command(codemodCmd).help().argv;
29
- yargs.command(storybookCmd).help().argv;
30
- yargs.command(vitestCmd).help().argv;
31
- yargs.command(versionCmd).help().argv;
32
-
33
- notifyUpdates();
@@ -1,17 +0,0 @@
1
- module.exports = {
2
- plugins: ['plugins/markdown'],
3
- opts: {
4
- template: 'node_modules/docdash',
5
- },
6
- docdash: {
7
- sort: true,
8
- search: true,
9
- collapse: true,
10
- wrap: true,
11
- },
12
- templates: {
13
- default: {
14
- includeDate: false,
15
- },
16
- },
17
- };
package/lib/index.js DELETED
@@ -1,25 +0,0 @@
1
- const babelConfig = require('./babel/babel.config');
2
- const { esConfig } = require('./lint/eslint/non-react');
3
- const { esReactConfig } = require('./lint/eslint/react');
4
- const stylelintConfig = require('./lint/stylelint.config');
5
- const prettierConfig = require('./lint/prettier.config');
6
- const commitlintConfig = require('./lint/commitlint.config');
7
- const { jestConfig } = require('./testing/jest.config');
8
- const { jestNodeConfig } = require('./testing/jest.node.config');
9
- const jsdocConfig = require('./docgen/jsdoc.config');
10
- const lintStagedConfig = require('./lint/lint-staged.config');
11
- const { loadRoutes } = require('./server/util');
12
-
13
- module.exports = {
14
- babelConfig,
15
- eslintConfig: esReactConfig,
16
- eslintBaseConfig: esConfig,
17
- stylelintConfig,
18
- prettierConfig,
19
- commitlintConfig,
20
- jestConfig,
21
- jestNodeConfig,
22
- jsdocConfig,
23
- lintStagedConfig,
24
- loadRoutes,
25
- };
@@ -1 +0,0 @@
1
- module.exports = { extends: ['@commitlint/config-conventional'] };
@@ -1,16 +0,0 @@
1
- const path = require('path');
2
-
3
- module.exports = {
4
- '*.{js,ts,jsx,tsx,md,mdx,html,css,json}': ['prettier --write'],
5
- '*.{ts,tsx}': [
6
- `node ${path.resolve(
7
- __dirname,
8
- '../typescript/tsc-files/index.js',
9
- )} --noEmit --emitDeclarationOnly false`,
10
- ],
11
- '*.{js,ts,jsx,tsx}': [
12
- 'npm run lint:fix',
13
- 'npm run test:staged',
14
- 'npm run gendoc',
15
- ],
16
- };
@@ -1,48 +0,0 @@
1
- const { execSync } = require('child_process');
2
- const cwd = process.cwd();
3
- const execaOptions = { cwd, stdio: 'inherit' };
4
-
5
- const semVerRegEx =
6
- /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
7
-
8
- const isSemVersion = (tagName) => semVerRegEx.test(tagName);
9
- const branchName = (process.env.BRANCH_NAME || 'master').toLowerCase();
10
-
11
- const branchTags = {
12
- master: /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/,
13
- next: /^v.*-next\.(0|[1-9]\d*)/,
14
- alpha: /^v.*-alpha\.(0|[1-9]\d*)/,
15
- beta: /^v.*-beta\.(0|[1-9]\d*)/,
16
- };
17
-
18
- const deleteTags = (cmd, filter) => {
19
- const result = execSync(cmd, { cwd });
20
- if (!result) return;
21
- const tags = result.toString().split('\n').join(' ');
22
- execSync(`git tag -d ${filter ? filter(tags) : tags}`, { cwd });
23
- };
24
-
25
- const tagsFromOtherBranches = (tags = []) => {
26
- const regex = branchTags[branchName] || branchTags.master;
27
- return tags
28
- .split(' ')
29
- .filter((tagName) => isSemVersion(tagName) && !regex.test(tagName))
30
- .join(' ');
31
- };
32
-
33
- exports.deleteMergedTags = () => {
34
- try {
35
- // get tag names
36
- if (branchName) {
37
- // delete all tags that are not reachable from the current branch
38
- deleteTags(`git tag -l --no-merged ${branchName}`);
39
- // delete all tags that were not created in current branch
40
- deleteTags(`git tag -l --merged ${branchName}`, tagsFromOtherBranches);
41
- console.log('Last two tags: ');
42
- execSync('git tag --sort=-creatordate | head -n 2', execaOptions);
43
- }
44
- } catch (error) {
45
- // eslint-disable-next-line no-console
46
- console.error(error);
47
- }
48
- };
@@ -1,22 +0,0 @@
1
- const fg = require('fast-glob');
2
- const { readFile, writeFile } = require('fs/promises');
3
- const normalizePath = require('normalize-path');
4
- const { findMonoRepoRoot } = require('./utils');
5
-
6
- const monorepoRoot = normalizePath(findMonoRepoRoot() || '');
7
-
8
- exports.setRegistryVersion = async () => {
9
- const files = await fg([
10
- `${monorepoRoot}/libs/*/package.json`,
11
- `${monorepoRoot}/apps/*/package.json`,
12
- `${monorepoRoot}/package.json`,
13
- ]);
14
- Promise.all(
15
- files.map(async (file) => {
16
- let pkgJSONData = await readFile(file, 'utf8');
17
- const pkgVersion = JSON.parse(pkgJSONData).version;
18
- pkgJSONData = pkgJSONData.replace(/workspace:\*/g, pkgVersion);
19
- await writeFile(file, pkgJSONData);
20
- }),
21
- );
22
- };
@@ -1,29 +0,0 @@
1
- const fg = require('fast-glob');
2
- const { readFile, writeFile } = require('fs/promises');
3
- const normalizePath = require('normalize-path');
4
- const { findMonoRepoRoot } = require('./utils');
5
-
6
- const monorepoRoot = normalizePath(findMonoRepoRoot() || '');
7
-
8
- exports.setWorkspaceVersion = async () => {
9
- const files = await fg([
10
- `${monorepoRoot}/libs/*/package.json`,
11
- `${monorepoRoot}/apps/*/package.json`,
12
- `${monorepoRoot}/package.json`,
13
- ]);
14
- Promise.all(
15
- files.map(async (file) => {
16
- let pkgJSONData = await readFile(file, 'utf8');
17
- const pkgVersion = JSON.parse(pkgJSONData).version;
18
- pkgJSONData = pkgJSONData.replace(
19
- new RegExp(pkgVersion, 'g'),
20
- 'workspace:*',
21
- );
22
- pkgJSONData = pkgJSONData.replace(
23
- /"version": "workspace:\*"/g,
24
- `"version": "${pkgVersion}"`,
25
- );
26
- await writeFile(file, pkgJSONData);
27
- }),
28
- );
29
- };
@@ -1,15 +0,0 @@
1
- const path = require('path');
2
- const { sync: findUp } = require('find-up');
3
-
4
- const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR';
5
- const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml';
6
-
7
- exports.findMonoRepoRoot = (cwd = process.cwd()) => {
8
- const workspaceManifestDirEnvVar =
9
- process.env[WORKSPACE_DIR_ENV_VAR] ??
10
- process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];
11
- const workspaceManifestLocation = workspaceManifestDirEnvVar
12
- ? path.join(workspaceManifestDirEnvVar, 'pnpm-workspace.yaml')
13
- : findUp([WORKSPACE_MANIFEST_FILENAME, 'pnpm-workspace.yml'], { cwd });
14
- return workspaceManifestLocation && path.dirname(workspaceManifestLocation);
15
- };
@@ -1,18 +0,0 @@
1
- const path = require('path');
2
- const fs = require('fs');
3
- const { merge } = require('lodash');
4
-
5
- const baseConfig = {
6
- esBuild: {
7
- target: 'es2020',
8
- },
9
- };
10
-
11
- const getPUIConfig = () => {
12
- const configPath = path.resolve(process.cwd(), './pui.config.js');
13
- if (!fs.existsSync(configPath)) return baseConfig;
14
- const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
15
- return merge(baseConfig, config);
16
- };
17
-
18
- exports.getPUIConfig = getPUIConfig;
@@ -1,15 +0,0 @@
1
- const chalk = require('chalk');
2
-
3
- /**
4
- * Adds mark check symbol
5
- *
6
- * @param callback
7
- * @param message
8
- */
9
- function addCheckMark(callback, message = '') {
10
- process.stdout.write('\n\n');
11
- process.stdout.write(chalk.green(' ✓'));
12
- if (callback) callback(message);
13
- }
14
-
15
- module.exports = addCheckMark;
@@ -1,3 +0,0 @@
1
- const fs = require('fs');
2
-
3
- module.exports = JSON.parse(fs.readFileSync('package.json', 'utf8'));
@@ -1,19 +0,0 @@
1
- const readline = require('readline');
2
-
3
- /**
4
- * Adds an animated progress indicator
5
- *
6
- * @param {string} message The message to write next to the indicator
7
- * @param {number} [amountOfDots=3] The amount of dots you want to animate
8
- */
9
- function animateProgress(message, amountOfDots = 3) {
10
- let i = 0;
11
- return setInterval(() => {
12
- readline.cursorTo(process.stdout, 0);
13
- i = (i + 1) % (amountOfDots + 1);
14
- const dots = new Array(i + 1).join('.');
15
- process.stdout.write(message + dots);
16
- }, 500);
17
- }
18
-
19
- module.exports = animateProgress;
@@ -1,13 +0,0 @@
1
- const chalk = require('chalk');
2
-
3
- /**
4
- * Adds mark cross symbol
5
- *
6
- * @param callback
7
- */
8
- function addXMark(callback) {
9
- process.stdout.write(chalk.red(' ✘'));
10
- if (callback) callback();
11
- }
12
-
13
- module.exports = addXMark;
@@ -1,8 +0,0 @@
1
- const { exec } = require('child_process');
2
- exec('npm -v', (err, stdout) => {
3
- if (err) throw err;
4
- if (parseFloat(stdout) < 5) {
5
- // NOTE: This can happen if you have a dependency which lists an old version of npm in its own dependencies.
6
- throw new Error(`[ERROR] You need npm version @>=5 but you have ${stdout}`);
7
- }
8
- });
@@ -1,7 +0,0 @@
1
- const updateNotifier = require('update-notifier');
2
- const path = require('path');
3
- const pkg = require(path.join(process.cwd(), './package.json'));
4
-
5
- module.exports = () => {
6
- updateNotifier({ pkg }).notify();
7
- };