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

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 (290) hide show
  1. package/{lib/babel/babel.config.js → dist/cjs/babel/babel.config.cjs} +2 -2
  2. package/dist/cjs/cli-commands/build.js +72 -0
  3. package/dist/cjs/cli-commands/codemod.js +51 -0
  4. package/dist/cjs/cli-commands/gendoc.js +52 -0
  5. package/dist/cjs/cli-commands/lint.js +86 -0
  6. package/dist/cjs/cli-commands/pack.js +88 -0
  7. package/dist/cjs/cli-commands/start.js +61 -0
  8. package/dist/cjs/cli-commands/storybook.js +63 -0
  9. package/dist/cjs/cli-commands/test.js +86 -0
  10. package/dist/cjs/cli-commands/tsc.js +103 -0
  11. package/dist/cjs/cli-commands/utils.js +137 -0
  12. package/dist/cjs/cli-commands/version.js +71 -0
  13. package/dist/cjs/cli-commands/vitest.js +84 -0
  14. package/dist/cjs/cli.js +47 -0
  15. package/dist/cjs/docgen/jsdoc.conf.json +17 -0
  16. package/{lib/dummy.ts → dist/cjs/dummy.js} +0 -0
  17. package/dist/cjs/index.js +41 -0
  18. package/dist/cjs/lint/commitlint.config.cjs +1 -0
  19. package/{lib/lint/eslint/common.js → dist/cjs/lint/eslint/common.cjs} +8 -8
  20. package/{lib/lint/eslint/non-react.js → dist/cjs/lint/eslint/non-react.cjs} +2 -2
  21. package/{lib/lint/eslint/react.js → dist/cjs/lint/eslint/react.cjs} +2 -2
  22. package/{lib/lint/eslint/typescript/common.js → dist/cjs/lint/eslint/typescript/common.cjs} +1 -1
  23. package/{lib/lint/eslint/typescript/non-react.js → dist/cjs/lint/eslint/typescript/non-react.cjs} +2 -2
  24. package/{lib/lint/eslint/typescript/react.js → dist/cjs/lint/eslint/typescript/react.cjs} +2 -2
  25. package/dist/cjs/lint/lint-staged.config.js +42 -0
  26. package/{lib/lint/prettier.config.js → dist/cjs/lint/prettier.config.cjs} +1 -1
  27. package/{lib/lint/stylelint.config.js → dist/cjs/lint/stylelint.config.cjs} +2 -2
  28. package/dist/cjs/monorepo/delete-merged-tags.js +57 -0
  29. package/dist/cjs/monorepo/set-registry-version.js +43 -0
  30. package/dist/cjs/monorepo/set-workspace-version.js +44 -0
  31. package/dist/cjs/monorepo/utils.js +34 -0
  32. package/dist/cjs/package.json +4 -0
  33. package/dist/cjs/pui-config/index.js +40 -0
  34. package/{lib/release/release.config.js → dist/cjs/release/release.config.cjs} +0 -0
  35. package/dist/cjs/scripts/helpers/checkmark.js +32 -0
  36. package/dist/cjs/scripts/helpers/get-npm-config.js +27 -0
  37. package/dist/cjs/scripts/helpers/progress.js +35 -0
  38. package/dist/cjs/scripts/helpers/xmark.js +31 -0
  39. package/dist/cjs/scripts/npmcheckversion.js +8 -0
  40. package/dist/cjs/scripts/update-notifier.js +33 -0
  41. package/dist/cjs/server/csp.js +88 -0
  42. package/dist/cjs/server/index.js +29 -0
  43. package/dist/cjs/server/logger.js +50 -0
  44. package/dist/cjs/server/middlewares/addProdMiddlewares.js +44 -0
  45. package/dist/cjs/server/middlewares/index.js +57 -0
  46. package/dist/cjs/server/util/index.js +68 -0
  47. package/{lib/testing/jest.config.js → dist/cjs/testing/jest.config.cjs} +15 -15
  48. package/{lib/testing/jest.node.config.js → dist/cjs/testing/jest.node.config.cjs} +1 -1
  49. package/{lib/testing/mocks/axios.js → dist/cjs/testing/mocks/axios.cjs} +0 -0
  50. package/{lib/testing/mocks/cssModule.js → dist/cjs/testing/mocks/cssModule.cjs} +0 -0
  51. package/{lib/testing/mocks/html.js → dist/cjs/testing/mocks/html.cjs} +0 -0
  52. package/{lib/testing/mocks/image.js → dist/cjs/testing/mocks/image.cjs} +0 -0
  53. package/{lib/testing/mocks/matchMedia.js → dist/cjs/testing/mocks/matchMedia.cjs} +0 -0
  54. package/{lib/testing/mocks/pui-app-loader.js → dist/cjs/testing/mocks/pui-app-loader.cjs} +0 -0
  55. package/{lib/testing/mocks/pui-diagnostics.js → dist/cjs/testing/mocks/pui-diagnostics.cjs} +0 -0
  56. package/{lib/testing/mocks/pui-user-monitoring.js → dist/cjs/testing/mocks/pui-user-monitoring.cjs} +0 -0
  57. package/{lib/testing/mocks/retry-axios.js → dist/cjs/testing/mocks/retry-axios.cjs} +0 -0
  58. package/{lib/testing/mocks/svg.js → dist/cjs/testing/mocks/svg.cjs} +0 -0
  59. package/{lib/testing/mocks/webpack-hmr.js → dist/cjs/testing/mocks/webpack-hmr.cjs} +0 -0
  60. package/{lib/testing/resolver.js → dist/cjs/testing/resolver.cjs} +0 -0
  61. package/dist/cjs/testing/setup-react-env.js +18 -0
  62. package/dist/cjs/testing/setup-tests.js +63 -0
  63. package/dist/cjs/testing/vitest.config.js +39 -0
  64. package/{lib/testing/vitest.setup.ts → dist/cjs/testing/vitest.setup.js} +0 -0
  65. package/dist/cjs/transpile/esbuild.js +138 -0
  66. package/dist/cjs/transpile/react-shim.js +26 -0
  67. package/{lib/transpile/swcrc.config.js → dist/cjs/transpile/swcrc.config.cjs} +1 -1
  68. package/{lib → dist/cjs}/typescript/app.tsconfig.json +0 -0
  69. package/{lib → dist/cjs}/typescript/library.tsconfig.json +0 -0
  70. package/dist/cjs/typescript/tsc-files/index.js +68 -0
  71. package/dist/cjs/typescript/tsc-files/utils.js +31 -0
  72. package/dist/cjs/typescript/util.js +28 -0
  73. package/dist/cjs/utils.cjs +20 -0
  74. package/dist/cjs/webpack/helpers.js +216 -0
  75. package/dist/cjs/webpack/webpack.base.babel.js +262 -0
  76. package/dist/cjs/webpack/webpack.dev.babel.js +136 -0
  77. package/dist/cjs/webpack/webpack.lib.base.babel.js +217 -0
  78. package/dist/cjs/webpack/webpack.lib.dev.babel.js +67 -0
  79. package/dist/cjs/webpack/webpack.lib.prod.babel.js +92 -0
  80. package/dist/cjs/webpack/webpack.prod.babel.js +139 -0
  81. package/{lib/webpack/webpack.storybook.js → dist/cjs/webpack/webpack.storybook.cjs} +1 -1
  82. package/dist/esm/babel/babel.config.cjs +101 -0
  83. package/dist/esm/cli-commands/build.js +56 -0
  84. package/dist/esm/cli-commands/codemod.js +29 -0
  85. package/dist/esm/cli-commands/gendoc.js +29 -0
  86. package/dist/esm/cli-commands/lint.js +64 -0
  87. package/dist/esm/cli-commands/pack.js +65 -0
  88. package/dist/esm/cli-commands/start.js +38 -0
  89. package/dist/esm/cli-commands/storybook.js +41 -0
  90. package/dist/esm/cli-commands/test.js +64 -0
  91. package/dist/esm/cli-commands/tsc.js +83 -0
  92. package/dist/esm/cli-commands/utils.js +120 -0
  93. package/dist/esm/cli-commands/version.js +49 -0
  94. package/dist/esm/cli-commands/vitest.js +61 -0
  95. package/dist/esm/cli.js +31 -0
  96. package/dist/esm/docgen/jsdoc.conf.json +17 -0
  97. package/dist/esm/dummy.js +0 -0
  98. package/dist/esm/index.js +22 -0
  99. package/dist/esm/lint/commitlint.config.cjs +1 -0
  100. package/dist/esm/lint/eslint/common.cjs +160 -0
  101. package/dist/esm/lint/eslint/non-react.cjs +14 -0
  102. package/dist/esm/lint/eslint/react.cjs +26 -0
  103. package/dist/esm/lint/eslint/typescript/common.cjs +43 -0
  104. package/dist/esm/lint/eslint/typescript/non-react.cjs +12 -0
  105. package/dist/esm/lint/eslint/typescript/react.cjs +19 -0
  106. package/dist/esm/lint/lint-staged.config.js +19 -0
  107. package/dist/esm/lint/prettier.config.cjs +8 -0
  108. package/dist/esm/lint/stylelint.config.cjs +19 -0
  109. package/dist/esm/monorepo/delete-merged-tags.js +38 -0
  110. package/dist/esm/monorepo/set-registry-version.js +21 -0
  111. package/dist/esm/monorepo/set-workspace-version.js +22 -0
  112. package/dist/esm/monorepo/utils.js +12 -0
  113. package/dist/esm/package.json +4 -0
  114. package/dist/esm/pui-config/index.js +18 -0
  115. package/dist/esm/release/release.config.cjs +31 -0
  116. package/dist/esm/scripts/helpers/checkmark.js +10 -0
  117. package/dist/esm/scripts/helpers/get-npm-config.js +5 -0
  118. package/dist/esm/scripts/helpers/progress.js +13 -0
  119. package/dist/esm/scripts/helpers/xmark.js +9 -0
  120. package/dist/esm/scripts/npmcheckversion.js +8 -0
  121. package/dist/esm/scripts/update-notifier.js +11 -0
  122. package/dist/esm/server/csp.js +66 -0
  123. package/dist/esm/server/index.js +17 -0
  124. package/dist/esm/server/logger.js +28 -0
  125. package/dist/esm/server/middlewares/addProdMiddlewares.js +22 -0
  126. package/dist/esm/server/middlewares/index.js +35 -0
  127. package/dist/esm/server/util/index.js +46 -0
  128. package/dist/esm/testing/jest.config.cjs +105 -0
  129. package/dist/esm/testing/jest.node.config.cjs +8 -0
  130. package/dist/esm/testing/mocks/axios.cjs +15 -0
  131. package/dist/esm/testing/mocks/cssModule.cjs +1 -0
  132. package/dist/esm/testing/mocks/html.cjs +1 -0
  133. package/dist/esm/testing/mocks/image.cjs +1 -0
  134. package/dist/esm/testing/mocks/matchMedia.cjs +24 -0
  135. package/dist/esm/testing/mocks/pui-app-loader.cjs +1 -0
  136. package/dist/esm/testing/mocks/pui-diagnostics.cjs +28 -0
  137. package/dist/esm/testing/mocks/pui-user-monitoring.cjs +3 -0
  138. package/dist/esm/testing/mocks/retry-axios.cjs +3 -0
  139. package/dist/esm/testing/mocks/svg.cjs +5 -0
  140. package/dist/esm/testing/mocks/webpack-hmr.cjs +1 -0
  141. package/dist/esm/testing/resolver.cjs +47 -0
  142. package/dist/esm/testing/setup-react-env.js +3 -0
  143. package/dist/esm/testing/setup-tests.js +48 -0
  144. package/dist/esm/testing/vitest.config.js +17 -0
  145. package/dist/esm/testing/vitest.setup.js +0 -0
  146. package/dist/esm/transpile/esbuild.js +117 -0
  147. package/dist/esm/transpile/react-shim.js +4 -0
  148. package/dist/esm/transpile/swcrc.config.cjs +13 -0
  149. package/dist/esm/typescript/app.tsconfig.json +23 -0
  150. package/dist/esm/typescript/library.tsconfig.json +23 -0
  151. package/dist/esm/typescript/tsc-files/index.js +55 -0
  152. package/{lib → dist/esm}/typescript/tsc-files/utils.js +3 -7
  153. package/dist/esm/typescript/util.js +6 -0
  154. package/dist/esm/utils.cjs +20 -0
  155. package/dist/esm/webpack/helpers.js +196 -0
  156. package/dist/esm/webpack/webpack.base.babel.js +248 -0
  157. package/dist/esm/webpack/webpack.dev.babel.js +118 -0
  158. package/dist/esm/webpack/webpack.lib.base.babel.js +208 -0
  159. package/dist/esm/webpack/webpack.lib.dev.babel.js +45 -0
  160. package/dist/esm/webpack/webpack.lib.prod.babel.js +70 -0
  161. package/dist/esm/webpack/webpack.prod.babel.js +122 -0
  162. package/dist/esm/webpack/webpack.storybook.cjs +87 -0
  163. package/dist/types/babel/babel.config.d.cts +59 -0
  164. package/dist/types/cli-commands/build.d.ts +14 -0
  165. package/dist/types/cli-commands/codemod.d.ts +6 -0
  166. package/dist/types/cli-commands/gendoc.d.ts +6 -0
  167. package/dist/types/cli-commands/lint.d.ts +29 -0
  168. package/dist/types/cli-commands/pack.d.ts +26 -0
  169. package/dist/types/cli-commands/start.d.ts +13 -0
  170. package/dist/types/cli-commands/storybook.d.ts +19 -0
  171. package/dist/types/cli-commands/test.d.ts +35 -0
  172. package/dist/types/cli-commands/tsc.d.ts +20 -0
  173. package/dist/types/cli-commands/utils.d.ts +14 -0
  174. package/dist/types/cli-commands/version.d.ts +30 -0
  175. package/dist/types/cli-commands/vitest.d.ts +35 -0
  176. package/dist/types/cli.d.ts +2 -0
  177. package/dist/types/dummy.d.ts +0 -0
  178. package/dist/types/index.d.ts +10 -0
  179. package/dist/types/lint/commitlint.config.d.cts +4 -0
  180. package/dist/types/lint/eslint/common.d.cts +124 -0
  181. package/dist/types/lint/eslint/non-react.d.cts +88 -0
  182. package/dist/types/lint/eslint/react.d.cts +118 -0
  183. package/dist/types/lint/eslint/typescript/common.d.cts +37 -0
  184. package/dist/types/lint/eslint/typescript/non-react.d.cts +87 -0
  185. package/dist/types/lint/eslint/typescript/react.d.cts +118 -0
  186. package/dist/types/lint/lint-staged.config.d.ts +5 -0
  187. package/dist/types/lint/prettier.config.d.cts +8 -0
  188. package/dist/types/lint/stylelint.config.d.cts +11 -0
  189. package/dist/types/monorepo/delete-merged-tags.d.ts +1 -0
  190. package/dist/types/monorepo/set-registry-version.d.ts +1 -0
  191. package/dist/types/monorepo/set-workspace-version.d.ts +1 -0
  192. package/dist/types/monorepo/utils.d.ts +1 -0
  193. package/dist/types/pui-config/index.d.ts +1 -0
  194. package/dist/types/release/release.config.d.cts +9 -0
  195. package/dist/types/scripts/helpers/checkmark.d.ts +7 -0
  196. package/dist/types/scripts/helpers/get-npm-config.d.ts +2 -0
  197. package/dist/types/scripts/helpers/progress.d.ts +7 -0
  198. package/dist/types/scripts/helpers/xmark.d.ts +6 -0
  199. package/dist/types/scripts/npmcheckversion.d.ts +1 -0
  200. package/dist/types/scripts/update-notifier.d.ts +2 -0
  201. package/dist/types/server/csp.d.ts +10 -0
  202. package/dist/types/server/index.d.ts +1 -0
  203. package/dist/types/server/logger.d.ts +4 -0
  204. package/dist/types/server/middlewares/addProdMiddlewares.d.ts +1 -0
  205. package/dist/types/server/middlewares/index.d.ts +2 -0
  206. package/dist/types/server/util/index.d.ts +4 -0
  207. package/dist/types/testing/jest.config.d.cts +38 -0
  208. package/dist/types/testing/jest.node.config.d.cts +38 -0
  209. package/dist/types/testing/mocks/axios.d.cts +14 -0
  210. package/dist/types/testing/mocks/cssModule.d.cts +2 -0
  211. package/dist/types/testing/mocks/html.d.cts +2 -0
  212. package/dist/types/testing/mocks/image.d.cts +2 -0
  213. package/dist/types/testing/mocks/matchMedia.d.cts +2 -0
  214. package/dist/types/testing/mocks/pui-app-loader.d.cts +1 -0
  215. package/dist/types/testing/mocks/pui-diagnostics.d.cts +28 -0
  216. package/dist/types/testing/mocks/pui-user-monitoring.d.cts +3 -0
  217. package/dist/types/testing/mocks/retry-axios.d.cts +3 -0
  218. package/dist/types/testing/mocks/svg.d.cts +3 -0
  219. package/dist/types/testing/mocks/webpack-hmr.d.cts +1 -0
  220. package/dist/types/testing/resolver.d.cts +2 -0
  221. package/dist/types/testing/setup-react-env.d.ts +1 -0
  222. package/dist/types/testing/setup-tests.d.ts +1 -0
  223. package/dist/types/testing/vitest.config.d.ts +2 -0
  224. package/dist/types/testing/vitest.setup.d.ts +0 -0
  225. package/dist/types/transpile/esbuild.d.ts +13 -0
  226. package/dist/types/transpile/react-shim.d.ts +2 -0
  227. package/dist/types/transpile/swcrc.config.d.cts +1 -0
  228. package/dist/types/typescript/tsc-files/index.d.ts +1 -0
  229. package/dist/types/typescript/tsc-files/utils.d.ts +3 -0
  230. package/dist/types/typescript/util.d.ts +1 -0
  231. package/dist/types/utils.d.cts +3 -0
  232. package/dist/types/webpack/helpers.d.ts +28 -0
  233. package/dist/types/webpack/webpack.base.babel.d.ts +90 -0
  234. package/dist/types/webpack/webpack.dev.babel.d.ts +1 -0
  235. package/dist/types/webpack/webpack.lib.base.babel.d.ts +107 -0
  236. package/dist/types/webpack/webpack.lib.dev.babel.d.ts +91 -0
  237. package/dist/types/webpack/webpack.lib.prod.babel.d.ts +91 -0
  238. package/dist/types/webpack/webpack.prod.babel.d.ts +2 -0
  239. package/dist/types/webpack/webpack.storybook.d.cts +4 -0
  240. package/package.json +45 -37
  241. package/lib/cli-commands/build.js +0 -60
  242. package/lib/cli-commands/codemod.js +0 -31
  243. package/lib/cli-commands/gendoc.js +0 -36
  244. package/lib/cli-commands/lint.js +0 -75
  245. package/lib/cli-commands/pack.js +0 -67
  246. package/lib/cli-commands/start.js +0 -49
  247. package/lib/cli-commands/storybook.js +0 -53
  248. package/lib/cli-commands/test.js +0 -63
  249. package/lib/cli-commands/tsc.js +0 -103
  250. package/lib/cli-commands/utils.js +0 -135
  251. package/lib/cli-commands/version.js +0 -53
  252. package/lib/cli-commands/vitest.js +0 -66
  253. package/lib/cli.js +0 -33
  254. package/lib/docgen/jsdoc.config.js +0 -17
  255. package/lib/index.js +0 -25
  256. package/lib/lint/commitlint.config.js +0 -1
  257. package/lib/lint/lint-staged.config.js +0 -16
  258. package/lib/monorepo/delete-merged-tags.js +0 -48
  259. package/lib/monorepo/set-registry-version.js +0 -22
  260. package/lib/monorepo/set-workspace-version.js +0 -29
  261. package/lib/monorepo/utils.js +0 -15
  262. package/lib/pui-config/index.js +0 -18
  263. package/lib/scripts/helpers/checkmark.js +0 -15
  264. package/lib/scripts/helpers/get-npm-config.js +0 -3
  265. package/lib/scripts/helpers/progress.js +0 -19
  266. package/lib/scripts/helpers/xmark.js +0 -13
  267. package/lib/scripts/npmcheckversion.js +0 -8
  268. package/lib/scripts/update-notifier.js +0 -7
  269. package/lib/server/csp.js +0 -74
  270. package/lib/server/index.js +0 -37
  271. package/lib/server/logger.js +0 -42
  272. package/lib/server/middlewares/addDevMiddlewares.js +0 -39
  273. package/lib/server/middlewares/addProdMiddlewares.js +0 -30
  274. package/lib/server/middlewares/index.js +0 -37
  275. package/lib/server/util/index.js +0 -52
  276. package/lib/testing/setup-react-env.js +0 -3
  277. package/lib/testing/setup-tests.js +0 -58
  278. package/lib/testing/vitest.config.ts +0 -16
  279. package/lib/transpile/.swcrc +0 -11
  280. package/lib/transpile/esbuild.js +0 -116
  281. package/lib/transpile/react-shim.js +0 -2
  282. package/lib/typescript/tsc-files/index.js +0 -66
  283. package/lib/typescript/util.js +0 -5
  284. package/lib/webpack/helpers.js +0 -252
  285. package/lib/webpack/webpack.base.babel.js +0 -242
  286. package/lib/webpack/webpack.dev.babel.js +0 -137
  287. package/lib/webpack/webpack.lib.base.babel.js +0 -205
  288. package/lib/webpack/webpack.lib.dev.babel.js +0 -49
  289. package/lib/webpack/webpack.lib.prod.babel.js +0 -77
  290. package/lib/webpack/webpack.prod.babel.js +0 -142
@@ -0,0 +1,17 @@
1
+ import express from "express";
2
+ import { logger } from "./logger.js";
3
+ import {
4
+ setupDefaultMiddlewares,
5
+ setupAdditionalMiddlewars
6
+ } from "./middlewares/index.js";
7
+ import { loadRoutes, port, host } from "./util/index.js";
8
+ const app = express();
9
+ setupDefaultMiddlewares(app);
10
+ loadRoutes(app);
11
+ setupAdditionalMiddlewars(app);
12
+ app.listen(port, host, async (err) => {
13
+ if (err) {
14
+ return logger.error(err.message);
15
+ }
16
+ logger.appStarted(port, host || "localhost");
17
+ });
@@ -0,0 +1,28 @@
1
+ import chalk from "chalk";
2
+ import ip from "ip";
3
+ const divider = chalk.gray("\n-----------------------------------");
4
+ const logger = {
5
+ error: (err) => {
6
+ console.error(chalk.red(err));
7
+ },
8
+ appStarted: (port, host, tunnelStarted) => {
9
+ console.log(`Server started ! ${chalk.green("\u2713")}`);
10
+ if (tunnelStarted) {
11
+ console.log(`Tunnel initialised ${chalk.green("\u2713")}`);
12
+ }
13
+ const accessUrls = `${chalk.bold("Access URLs:")}${divider}
14
+ `;
15
+ const localHostUrl = `Localhost: ${chalk.magenta(`http://${host}:${port}`)}
16
+ `;
17
+ const lanUrl = `LAN: ${chalk.magenta(`http://${ip.address()}:${port}`)}
18
+ `;
19
+ const proxy = tunnelStarted ? `
20
+ Proxy: ${chalk.magenta(tunnelStarted)}` : "";
21
+ console.log(`${accessUrls}${localHostUrl}${lanUrl}${proxy}${divider}${chalk.blue(`
22
+ Press ${chalk.italic("CTRL-C")} to stop`)}
23
+ `);
24
+ }
25
+ };
26
+ export {
27
+ logger
28
+ };
@@ -0,0 +1,22 @@
1
+ import compression from "compression";
2
+ import expressStaticGzip from "express-static-gzip";
3
+ import { sendFileWithCSPNonce } from "../csp.js";
4
+ import { getPaths } from "../../webpack/helpers.js";
5
+ const paths = getPaths();
6
+ const addProdMiddlewares = (app, options = {}) => {
7
+ const { buildPath = paths.buildPath, basePath = paths.basePath } = options;
8
+ app.use(compression());
9
+ app.get(basePath, (req, res) => {
10
+ sendFileWithCSPNonce({ buildPath, res });
11
+ });
12
+ app.use(basePath, expressStaticGzip(buildPath, {
13
+ index: false,
14
+ enableBrotli: true,
15
+ orderPreference: ["br"]
16
+ }));
17
+ app.use(expressStaticGzip("cdn"));
18
+ app.get("*", (req, res) => sendFileWithCSPNonce({ buildPath, res }));
19
+ };
20
+ export {
21
+ addProdMiddlewares
22
+ };
@@ -0,0 +1,35 @@
1
+ import express from "express";
2
+ import cors from "cors";
3
+ import expressPinoLogger from "express-pino-logger";
4
+ import { csp } from "../csp.js";
5
+ import { addProdMiddlewares } from "./addProdMiddlewares.js";
6
+ const setupDefaultMiddlewares = (app) => {
7
+ const pino = expressPinoLogger({
8
+ transport: {
9
+ target: "pino-pretty",
10
+ options: {
11
+ colorize: true
12
+ }
13
+ }
14
+ });
15
+ pino.logger.level = "warn";
16
+ app.use(pino);
17
+ app.use(cors());
18
+ app.options("*", cors());
19
+ csp(app);
20
+ app.use(express.urlencoded({ extended: false }));
21
+ app.use(express.text({ type: "text/plain" }));
22
+ app.use(express.json({ type: "application/json" }));
23
+ app.use(express.json({ type: "application/csp-report" }));
24
+ };
25
+ const setupAdditionalMiddlewars = (app, options) => {
26
+ const isProd = false;
27
+ if (isProd) {
28
+ addProdMiddlewares(app, options);
29
+ }
30
+ return app;
31
+ };
32
+ export {
33
+ setupAdditionalMiddlewars,
34
+ setupDefaultMiddlewares
35
+ };
@@ -0,0 +1,46 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import minimist from "minimist";
4
+ const argv = minimist(process.argv.slice(2));
5
+ const getCWD = () => process.cwd();
6
+ const allJS = /\.js$/;
7
+ const serviceEndpoints = /\.endpoint\.js$/;
8
+ const getFilesMatching = (filePattern) => {
9
+ const getFiles = (dir) => {
10
+ let routeFiles = [];
11
+ if (!fs.existsSync(dir))
12
+ return routeFiles;
13
+ fs.readdirSync(dir).forEach((file) => {
14
+ const fullPath = path.join(dir, file);
15
+ if (fs.lstatSync(fullPath).isDirectory()) {
16
+ routeFiles = routeFiles.concat(getFiles(fullPath));
17
+ } else if (filePattern.test(fullPath))
18
+ routeFiles.push(fullPath);
19
+ });
20
+ return routeFiles;
21
+ };
22
+ return getFiles;
23
+ };
24
+ const getServerRouteFiles = getFilesMatching(allJS);
25
+ const getServiceEndpoints = getFilesMatching(serviceEndpoints);
26
+ const loadRoutes = (app) => {
27
+ const routeFiles = getServerRouteFiles(path.join(getCWD(), "server/routes"));
28
+ routeFiles.push(...getServiceEndpoints(path.join(getCWD(), "app")));
29
+ routeFiles.push(...getServiceEndpoints(path.join(getCWD(), "lib")));
30
+ routeFiles.forEach(async (routeFile) => {
31
+ const init = await import(routeFile);
32
+ try {
33
+ init(app);
34
+ } catch (err) {
35
+ console.error(`unable to load routes from ${routeFile}. ${err.message}`);
36
+ }
37
+ });
38
+ };
39
+ const port = parseInt(argv.port || process.env.port || process.env.PORT || "3000", 10);
40
+ const host = argv.host || process.env.HOST;
41
+ export {
42
+ getCWD,
43
+ host,
44
+ loadRoutes,
45
+ port
46
+ };
@@ -0,0 +1,105 @@
1
+ const path = require('path');
2
+ const normalizePath = require('normalize-path');
3
+ const { getAppConfig, basePath } = require('../utils.cjs');
4
+ const { swcrcConfig } = require('../transpile/swcrc.config.cjs');
5
+
6
+ let monorepoRoot = null;
7
+ import('../monorepo/utils.js').then(({ findMonoRepoRoot }) => {
8
+ monorepoRoot = findMonoRepoRoot(process.cwd());
9
+ }).catch((ex) => console.error('Error loading monorepo utils:', ex));
10
+
11
+ let isReactModule = true;
12
+ try {
13
+ /* eslint-disable global-require, import/no-unresolved */
14
+ require('react');
15
+ require('styled-components');
16
+ /* eslint-enable global-require, import/no-unresolved */
17
+ } catch (err) {
18
+ isReactModule = false;
19
+ }
20
+
21
+ const getMockFilePath = (fileName) =>
22
+ normalizePath(path.resolve(__dirname, './mocks', fileName));
23
+
24
+ const getNodeModulesPath = (fileName) => {
25
+ return normalizePath(
26
+ monorepoRoot
27
+ ? path.join(monorepoRoot, 'node_modules', fileName)
28
+ : `<rootDir>/node_modules/${fileName}`,
29
+ );
30
+ };
31
+
32
+ const jestConfig = {
33
+ collectCoverageFrom: [
34
+ 'app/**/*.{js,ts,jsx,tsx}',
35
+ 'lib/**/*.{js,ts,jsx,tsx}',
36
+ '!app/**/*.d.ts',
37
+ '!lib/**/*.d.ts',
38
+ '!app/**/*.test.{js,ts,jsx,tsx}',
39
+ '!lib/**/*.test.{js,ts,jsx,tsx}',
40
+ '!app/**/*.stories.{js,ts,jsx,tsx}',
41
+ '!lib/**/*.stories.{js,ts,jsx,tsx}',
42
+ '!app/**/*.endpoint.{js,ts,jsx,tsx}',
43
+ '!lib/**/*.endpoint.{js,ts,jsx,tsx}',
44
+ '!app/*/RbGenerated*/*.{js,ts,jsx,tsx}',
45
+ '!app/index.{js,ts,jsx,tsx}',
46
+ '!app/global-styles.{js,ts,jsx,tsx}',
47
+ '!app/**/loadable.{js,ts,jsx,tsx}',
48
+ '!lib/**/loadable.{js,ts,jsx,tsx}',
49
+ ],
50
+ coverageThreshold: {
51
+ // Todo: enable the coverage threshold later
52
+ // global: {
53
+ // statements: 95,
54
+ // branches: 90,
55
+ // functions: 95,
56
+ // lines: 95,
57
+ // },
58
+ },
59
+ coverageDirectory: 'reports',
60
+ coverageReporters: ['lcov', 'html', 'text-summary'],
61
+ moduleDirectories: ['node_modules', 'app', 'lib'],
62
+ moduleNameMapper: {
63
+ '.*\\webpack-hmr(.[t|j]s)?$': getMockFilePath('webpack-hmr.cjs'),
64
+ '.*\\.(css|scss)$': getMockFilePath('cssModule.cjs'),
65
+ '.*\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|ico)$':
66
+ getMockFilePath('image.cjs'),
67
+ '.*\\.svg(?:\\?[a-zA-Z]+)?$': getMockFilePath('svg.cjs'),
68
+ '.*\\.html$(?:\\?[a-zA-Z]+)?$': getMockFilePath('html.cjs'),
69
+ '@elliemae/pui-user-monitoring': getMockFilePath('pui-user-monitoring.cjs'),
70
+ '@elliemae/pui-app-loader': getMockFilePath('pui-app-loader.cjs'),
71
+ '@elliemae/pui-diagnostics': getMockFilePath('pui-diagnostics.cjs'),
72
+ 'react-spring/web': getNodeModulesPath('react-spring/web.cjs.js'),
73
+ 'react-spring/renderprops': getNodeModulesPath(
74
+ 'react-spring/renderprops.cjs.js',
75
+ ),
76
+ },
77
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
78
+ setupFilesAfterEnv: [path.resolve(__dirname, './setup-tests.js')],
79
+ setupFiles: ['raf/polyfill', 'whatwg-fetch'],
80
+ testRegex: '(app|lib).*/tests/.*\\.test\\.[jt]sx?$',
81
+ snapshotSerializers: [],
82
+ testResultsProcessor: 'jest-sonar-reporter',
83
+ resolver: path.resolve(__dirname, './resolver.cjs'),
84
+ transform: {
85
+ '^.+\\.[jt]sx?$': ['@swc/jest', swcrcConfig],
86
+ },
87
+ transformIgnorePatterns: [
88
+ 'node_modules/(?!(.*@elliemae/pui-cli|lodash-es|react-select|react-dates)/)',
89
+ ],
90
+ globals: {
91
+ APP_CONFIG: getAppConfig(),
92
+ __webpack_public_path__: '/',
93
+ },
94
+ testEnvironmentOptions: {
95
+ url: `http://localhost:3111${basePath}`,
96
+ },
97
+ testEnvironment: 'jsdom',
98
+ };
99
+
100
+ if (isReactModule && jestConfig.setupFilesAfterEnv)
101
+ jestConfig.setupFilesAfterEnv.push(
102
+ path.resolve(__dirname, './setup-react-env.js'),
103
+ );
104
+
105
+ exports.jestConfig = jestConfig;
@@ -0,0 +1,8 @@
1
+ const { jestConfig } = require('./jest.config.cjs');
2
+ exports.jestNodeConfig = {
3
+ ...jestConfig,
4
+ testEnvironment: 'node',
5
+ transformIgnorePatterns: [],
6
+ setupFiles: [],
7
+ setupFilesAfterEnv: [],
8
+ };
@@ -0,0 +1,15 @@
1
+ module.exports = {
2
+ defaults: {},
3
+ interceptors: {
4
+ request: {
5
+ use: jest.fn(),
6
+ },
7
+ response: {
8
+ use: jest.fn(),
9
+ },
10
+ },
11
+ create: jest.fn().mockReturnThis(),
12
+ get: jest.fn().mockResolvedValue({ data: {} }),
13
+ post: jest.fn().mockResolvedValue({ data: {} }),
14
+ put: jest.fn().mockResolvedValue({ data: {} }),
15
+ };
@@ -0,0 +1 @@
1
+ module.exports = 'CSS_MODULE';
@@ -0,0 +1 @@
1
+ module.exports = 'HTML_MODULE';
@@ -0,0 +1 @@
1
+ module.exports = 'IMAGE_MOCK';
@@ -0,0 +1,24 @@
1
+ /**
2
+ *
3
+ */
4
+ export default () => {
5
+ Object.defineProperty(window, 'matchMedia', {
6
+ writable: true,
7
+ value: jest.fn().mockImplementation((query) => ({
8
+ matches: false,
9
+ media: query,
10
+ onchange: null,
11
+ addListener: jest.fn(), // Deprecated
12
+ removeListener: jest.fn(), // Deprecated
13
+ addEventListener: jest.fn(),
14
+ removeEventListener: jest.fn(),
15
+ dispatchEvent: jest.fn(),
16
+ })),
17
+ });
18
+
19
+ Object.defineProperty(window, 'getComputedStyle', {
20
+ value: () => ({
21
+ getPropertyValue: () => {},
22
+ }),
23
+ });
24
+ };
@@ -0,0 +1 @@
1
+ export const load = () => {};
@@ -0,0 +1,28 @@
1
+ export const logger = () => ({
2
+ setLogLevel() {},
3
+ setOptions() {},
4
+ info() {},
5
+ warn() {},
6
+ error() {},
7
+ trace() {},
8
+ debug() {},
9
+ audit() {},
10
+ fatal() {},
11
+ });
12
+ export const LogLevel = {
13
+ info: 'info',
14
+ debug: 'debug',
15
+ trace: 'trace',
16
+ warn: 'warn',
17
+ error: 'error',
18
+ audit: 'audit',
19
+ fatal: 'fatal',
20
+ };
21
+ export const Console = () => ({
22
+ log: () => {},
23
+ });
24
+ export const http = () => ({
25
+ log() {},
26
+ });
27
+ export const webvitals = () => {};
28
+ export const logUnhandledErrors = () => {};
@@ -0,0 +1,3 @@
1
+ export const setCustomUserData = () => {};
2
+ export const setCustomVirtualPageName = () => {};
3
+ export const startVirtualPageMonitoringWithAutoEnd = () => {};
@@ -0,0 +1,3 @@
1
+ export const attach = jest.fn();
2
+ export const detach = jest.fn();
3
+ export const getConfig = jest.fn();
@@ -0,0 +1,5 @@
1
+ // eslint-disable-next-line no-unused-vars
2
+ import * as React from 'react';
3
+
4
+ export default 'SvgrURL';
5
+ export const ReactComponent = 'div';
@@ -0,0 +1 @@
1
+ exports.enableHotReloading = () => {};
@@ -0,0 +1,47 @@
1
+ const resolutions = [
2
+ {
3
+ matcher: /\.jsx?$/i,
4
+ extensions: ['.tsx', '.ts'],
5
+ },
6
+ {
7
+ matcher: /\.mjs$/i,
8
+ extensions: ['.mts'],
9
+ },
10
+ {
11
+ matcher: /\.cjs$/i,
12
+ extensions: ['.cts'],
13
+ },
14
+ ];
15
+
16
+ const resolveConfig = {
17
+ conditionNames: ['import', 'node', 'default'],
18
+ extensions: ['.ts', '.tsx', '.js', '.jsx', '.json', '.node'],
19
+ modules: ['node_modules', 'app', 'lib'],
20
+ };
21
+
22
+ const importResolver = require('enhanced-resolve').create.sync(resolveConfig);
23
+ const requireResolver = require('enhanced-resolve').create.sync({
24
+ ...resolveConfig,
25
+ conditionNames: ['require', 'node', 'default'],
26
+ });
27
+
28
+ module.exports = (request, options) => {
29
+ let resolver = requireResolver;
30
+ if (options.conditions?.includes('import')) {
31
+ resolver = importResolver;
32
+ }
33
+ const resolution = resolutions.find(({ matcher }) => matcher.test(request));
34
+ if (resolution) {
35
+ // eslint-disable-next-line no-restricted-syntax
36
+ for (const extension of resolution.extensions) {
37
+ try {
38
+ return resolver(
39
+ options.basedir,
40
+ request.replace(resolution.matcher, extension),
41
+ );
42
+ // eslint-disable-next-line no-empty
43
+ } catch {}
44
+ }
45
+ }
46
+ return resolver(options.basedir, request);
47
+ };
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ import "jest-styled-components";
3
+ global.React = React;
@@ -0,0 +1,48 @@
1
+ import "core-js/stable";
2
+ import "regenerator-runtime/runtime";
3
+ import "@testing-library/jest-dom/extend-expect";
4
+ import jestAxe from "jest-axe";
5
+ import ResizeObserver from "resize-observer-polyfill";
6
+ import addMatchMedia from "./mocks/matchMedia.cjs";
7
+ import { logger } from "./mocks/pui-diagnostics.cjs";
8
+ const originalError = console.error;
9
+ console.error = (...args) => {
10
+ const ignoreList = [
11
+ `Warning: Can't perform a React state update on an unmounted component`,
12
+ `Warning: Function components cannot be given refs`,
13
+ `Warning: Failed %s type:`,
14
+ `Warning: Invalid DOM property`,
15
+ `Warning: Each child in a list should have a unique`,
16
+ "Warning: Received `%s` for a non-boolean attribute",
17
+ "Warning: <%s /> is using incorrect casing.",
18
+ "Warning: The tag <%s> is unrecognized in this browser",
19
+ "Warning: Invalid arguments supplied to oneOf"
20
+ ];
21
+ if (ignoreList.find((ignoreMsg) => !!args.find((arg) => arg?.includes?.(ignoreMsg))))
22
+ return false;
23
+ return originalError(...args);
24
+ };
25
+ if (expect)
26
+ expect.extend(jestAxe.toHaveNoViolations);
27
+ jest.setTimeout(6e4);
28
+ const addElementToBody = (element) => {
29
+ const documentEle = (window || {}).document;
30
+ if (!documentEle)
31
+ return null;
32
+ const bodyEle = documentEle.body;
33
+ const newEle = documentEle.createElement(...element);
34
+ if (!newEle)
35
+ return null;
36
+ bodyEle.appendChild(newEle);
37
+ return newEle;
38
+ };
39
+ const addRootElement = (id) => {
40
+ const rootEle = addElementToBody("div");
41
+ if (rootEle)
42
+ rootEle.id = id;
43
+ };
44
+ addRootElement("root");
45
+ addMatchMedia();
46
+ window.ResizeObserver = ResizeObserver;
47
+ window.emui = {};
48
+ window.emui.logger = logger();
@@ -0,0 +1,17 @@
1
+ import { defineConfig } from "vite";
2
+ import path from "path";
3
+ var vitest_config_default = defineConfig({
4
+ test: {
5
+ globals: true,
6
+ root: process.cwd(),
7
+ exclude: ["node_modules", "dist", ".idea", ".git", ".cache", "e2e"],
8
+ setupFiles: [path.resolve(__dirname, "./vitest.setup.ts")],
9
+ coverage: {
10
+ reportsDirectory: "./reports/coverage"
11
+ },
12
+ environment: "happy-dom"
13
+ }
14
+ });
15
+ export {
16
+ vitest_config_default as default
17
+ };
File without changes
@@ -0,0 +1,117 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import path from "node:path";
21
+ import { fileURLToPath } from "node:url";
22
+ import fg from "fast-glob";
23
+ import { build } from "esbuild";
24
+ import { writeFile, copyFile, readFile, mkdir } from "node:fs/promises";
25
+ import browserslistToEsbuild from "browserslist-to-esbuild";
26
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
27
+ const TARGETS = {
28
+ browserslist: browserslistToEsbuild(),
29
+ web: "es2020",
30
+ node: "node14"
31
+ };
32
+ const ESBUILD_FORMAT = {
33
+ CJS: "cjs",
34
+ ESM: "esm"
35
+ };
36
+ const NODE_MODULE_TYPES = {
37
+ CJS: "commonjs",
38
+ ESM: "module"
39
+ };
40
+ const getCommonConfig = ({ injectReactShim }) => ({
41
+ bundle: false,
42
+ loader: { ".js": "jsx" },
43
+ mainFields: ["module", "browser", "main"],
44
+ inject: [
45
+ injectReactShim ? path.resolve(__dirname, "./react-shim.js") : ""
46
+ ].filter(Boolean)
47
+ });
48
+ const copyFiles = async ({ srcdir, outdir }) => {
49
+ const files = await fg([
50
+ `${srcdir}/**/*.*`,
51
+ `!${srcdir}/**/*.{js,jsx,ts,tsx,mjs}`
52
+ ]);
53
+ await Promise.all(files.map(async (srcFilePath) => {
54
+ const destFilePath = srcFilePath.replace(srcdir, outdir);
55
+ const fileDir = path.dirname(destFilePath);
56
+ await mkdir(fileDir, { recursive: true });
57
+ await copyFile(srcFilePath, destFilePath);
58
+ }));
59
+ };
60
+ const getSideEffects = async () => {
61
+ const data = await readFile(path.join(process.cwd(), "./package.json"));
62
+ const packageJSON = JSON.parse(data);
63
+ return packageJSON?.sideEffects || false;
64
+ };
65
+ const createPackageJson = async ({ outdir, type = NODE_MODULE_TYPES.ESM }) => {
66
+ const filePath = path.join(process.cwd(), outdir, "package.json");
67
+ const packageJSON = JSON.stringify({
68
+ type,
69
+ sideEffects: await getSideEffects()
70
+ }, null, 2);
71
+ await writeFile(filePath, packageJSON);
72
+ };
73
+ const esBuild = async ({
74
+ srcdir,
75
+ outdir = "dist",
76
+ esmOnly = false,
77
+ target = TARGETS.browserslist,
78
+ injectReactShim = true,
79
+ skipNestedPackageJSON = false
80
+ }) => {
81
+ const inputFiles = [
82
+ `${srcdir}/**/*.{js,jsx,ts,tsx}`,
83
+ `!${srcdir}/**/*.d.ts`,
84
+ `!${srcdir}/**/*.test.{js,jsx,ts,tsx}`,
85
+ `!${srcdir}/**/*.stories.{js,jsx,ts,tsx}`,
86
+ `!${srcdir}/**/*.endpoint.{js,jsx,ts,tsx}`
87
+ ];
88
+ if (!esmOnly) {
89
+ const cjsOutdir = `${outdir}/cjs`;
90
+ const commonJSEntryPoints = await fg(inputFiles);
91
+ await build(__spreadProps(__spreadValues({
92
+ entryPoints: commonJSEntryPoints
93
+ }, getCommonConfig({ injectReactShim })), {
94
+ outdir: cjsOutdir,
95
+ format: ESBUILD_FORMAT.CJS,
96
+ target
97
+ }));
98
+ await copyFiles({ srcdir, outdir: cjsOutdir });
99
+ await createPackageJson({ outdir: cjsOutdir, type: NODE_MODULE_TYPES.CJS });
100
+ }
101
+ const esmOutdir = esmOnly ? outdir : `${outdir}/esm`;
102
+ const entryPoints = await fg(inputFiles.concat([`!${srcdir}/**/cjs/**/*.{js,jsx,ts,tsx}`]));
103
+ await build(__spreadProps(__spreadValues({
104
+ entryPoints
105
+ }, getCommonConfig({ injectReactShim })), {
106
+ outdir: esmOutdir,
107
+ format: ESBUILD_FORMAT.ESM,
108
+ target
109
+ }));
110
+ await copyFiles({ srcdir, outdir: esmOutdir });
111
+ if (!skipNestedPackageJSON)
112
+ await createPackageJson({ outdir: esmOutdir, type: NODE_MODULE_TYPES.ESM });
113
+ };
114
+ export {
115
+ TARGETS,
116
+ esBuild
117
+ };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ export {
3
+ React
4
+ };
@@ -0,0 +1,13 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { merge } = require('lodash');
4
+
5
+ let projectConfig = {};
6
+ const projectPath = path.join(process.cwd(), '.swcrc');
7
+ if (fs.existsSync(projectPath)) {
8
+ projectConfig = JSON.parse(fs.readFileSync(projectPath, 'utf-8'));
9
+ }
10
+ const localConfig = JSON.parse(
11
+ fs.readFileSync(path.join(__dirname, '.swcrc'), 'utf-8'),
12
+ );
13
+ exports.swcrcConfig = merge(localConfig, projectConfig);
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["dom", "dom.iterable", "esnext"],
4
+ "module": "ES2020",
5
+ "target": "ES2015",
6
+ "allowJs": true,
7
+ "allowSyntheticDefaultImports": true,
8
+ "esModuleInterop": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "isolatedModules": true,
11
+ "jsx": "react-jsx",
12
+ "moduleResolution": "node",
13
+ "noEmit": true,
14
+ "noFallthroughCasesInSwitch": true,
15
+ "resolveJsonModule": true,
16
+ "skipLibCheck": true,
17
+ "strict": true,
18
+ "preserveConstEnums": true,
19
+ "sourceMap": true
20
+ },
21
+ "$schema": "https://json.schemastore.org/tsconfig",
22
+ "display": "pui-cli app"
23
+ }