@elliemae/pui-cli 9.0.0-next.5 → 9.0.0-next.50

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 (204) hide show
  1. package/app.tsconfig.json +1 -1
  2. package/dist/cjs/babel.config.cjs +1 -1
  3. package/dist/cjs/cli.js +2 -2
  4. package/dist/cjs/commands/build.js +4 -6
  5. package/dist/cjs/commands/codemod.js +1 -1
  6. package/dist/cjs/commands/gendoc.js +2 -2
  7. package/dist/cjs/commands/lint.js +28 -11
  8. package/dist/cjs/commands/pack.js +3 -4
  9. package/dist/cjs/commands/start.js +3 -3
  10. package/dist/cjs/commands/storybook.js +1 -1
  11. package/dist/cjs/commands/test.js +46 -23
  12. package/dist/cjs/commands/tscheck.js +3 -3
  13. package/dist/cjs/commands/utils.js +37 -10
  14. package/dist/cjs/commands/version.js +1 -1
  15. package/dist/cjs/commands/vitest.js +6 -11
  16. package/dist/cjs/index.cjs +0 -2
  17. package/dist/cjs/index.js +4 -2
  18. package/dist/cjs/lint-config/eslint/common.cjs +3 -2
  19. package/dist/cjs/lint-config/eslint/typescript/common.cjs +3 -3
  20. package/dist/cjs/lint-config/lint-staged.config.js +2 -2
  21. package/dist/cjs/lint-config/stylelint.config.js +45 -0
  22. package/dist/cjs/monorepo/delete-merged-tags.js +2 -3
  23. package/dist/cjs/monorepo/set-registry-version.js +3 -3
  24. package/dist/cjs/monorepo/set-workspace-version.js +3 -3
  25. package/dist/cjs/monorepo/utils.js +1 -1
  26. package/dist/cjs/pui-config.js +5 -6
  27. package/dist/cjs/release.config.js +46 -0
  28. package/dist/cjs/server/appRoutes.js +5 -8
  29. package/dist/cjs/server/csp.js +6 -5
  30. package/dist/cjs/server/index.js +6 -1
  31. package/dist/cjs/server/logger.js +2 -2
  32. package/dist/cjs/server/middlewares.js +5 -5
  33. package/dist/cjs/server/utils.js +12 -5
  34. package/dist/cjs/server/wsServer.js +125 -0
  35. package/dist/cjs/testing/ExtendedJSDomEnv.cjs +27 -0
  36. package/dist/cjs/testing/extended/axe-core/getMessageAndPass.js +36 -0
  37. package/dist/cjs/testing/extended/axe-core/index.js +24 -0
  38. package/dist/cjs/testing/extended/axe-core/reporter.js +50 -0
  39. package/dist/cjs/testing/extended/axe-core/shouldIgnoreNodeViolation.js +31 -0
  40. package/dist/cjs/testing/extended/axe-core/toHaveNoViolations.js +42 -0
  41. package/dist/cjs/testing/jest.config.cjs +6 -2
  42. package/dist/cjs/testing/jest.polyfills.cjs +30 -0
  43. package/dist/cjs/testing/mocks/svg.js +1 -1
  44. package/dist/cjs/testing/setup-react-env.js +1 -1
  45. package/dist/cjs/testing/setup-test-env.js +0 -2
  46. package/dist/cjs/testing/setup-tests.js +30 -12
  47. package/dist/cjs/testing/vitest.config.js +10 -10
  48. package/dist/cjs/transpile/.swcrc +1 -1
  49. package/dist/cjs/transpile/esbuild.js +48 -15
  50. package/dist/cjs/transpile/react-shim.js +1 -1
  51. package/dist/cjs/update-notifier.js +3 -3
  52. package/dist/cjs/utils.js +4 -5
  53. package/dist/cjs/webpack/helpers.js +29 -23
  54. package/dist/cjs/webpack/webpack.base.babel.js +21 -35
  55. package/dist/cjs/webpack/webpack.dev.babel.js +20 -10
  56. package/dist/cjs/webpack/webpack.lib.base.babel.js +22 -13
  57. package/dist/cjs/webpack/webpack.lib.dev.babel.js +14 -18
  58. package/dist/cjs/webpack/webpack.lib.prod.babel.js +12 -11
  59. package/dist/cjs/webpack/webpack.prod.babel.js +8 -8
  60. package/dist/cjs/webpack/webpack.storybook.js +15 -17
  61. package/dist/esm/babel.config.cjs +1 -1
  62. package/dist/esm/commands/build.js +2 -4
  63. package/dist/esm/commands/lint.js +27 -9
  64. package/dist/esm/commands/pack.js +1 -2
  65. package/dist/esm/commands/start.js +1 -1
  66. package/dist/esm/commands/test.js +45 -22
  67. package/dist/esm/commands/utils.js +33 -6
  68. package/dist/esm/commands/vitest.js +5 -10
  69. package/dist/esm/index.cjs +0 -2
  70. package/dist/esm/index.js +4 -2
  71. package/dist/esm/lint-config/eslint/common.cjs +3 -2
  72. package/dist/esm/lint-config/eslint/typescript/common.cjs +3 -3
  73. package/dist/esm/lint-config/stylelint.config.js +25 -0
  74. package/dist/esm/monorepo/delete-merged-tags.js +2 -3
  75. package/dist/esm/monorepo/set-registry-version.js +1 -1
  76. package/dist/esm/monorepo/set-workspace-version.js +1 -1
  77. package/dist/esm/pui-config.js +2 -3
  78. package/dist/esm/release.config.js +26 -0
  79. package/dist/esm/server/appRoutes.js +3 -6
  80. package/dist/esm/server/csp.js +2 -1
  81. package/dist/esm/server/index.js +6 -1
  82. package/dist/esm/server/utils.js +11 -4
  83. package/dist/esm/server/wsServer.js +95 -0
  84. package/dist/esm/testing/ExtendedJSDomEnv.cjs +27 -0
  85. package/dist/esm/testing/extended/axe-core/getMessageAndPass.js +16 -0
  86. package/dist/esm/testing/extended/axe-core/index.js +4 -0
  87. package/dist/esm/testing/extended/axe-core/reporter.js +30 -0
  88. package/dist/esm/testing/extended/axe-core/shouldIgnoreNodeViolation.js +11 -0
  89. package/dist/esm/testing/extended/axe-core/toHaveNoViolations.js +22 -0
  90. package/dist/esm/testing/jest.config.cjs +6 -2
  91. package/dist/esm/testing/jest.polyfills.cjs +30 -0
  92. package/dist/esm/testing/setup-test-env.js +0 -2
  93. package/dist/esm/testing/setup-tests.js +29 -11
  94. package/dist/esm/testing/vitest.config.js +8 -8
  95. package/dist/esm/transpile/.swcrc +1 -1
  96. package/dist/esm/transpile/esbuild.js +45 -12
  97. package/dist/esm/update-notifier.js +1 -1
  98. package/dist/esm/utils.js +2 -3
  99. package/dist/esm/webpack/helpers.js +25 -19
  100. package/dist/esm/webpack/webpack.base.babel.js +13 -27
  101. package/dist/esm/webpack/webpack.dev.babel.js +13 -3
  102. package/dist/esm/webpack/webpack.lib.base.babel.js +14 -5
  103. package/dist/esm/webpack/webpack.lib.dev.babel.js +9 -13
  104. package/dist/esm/webpack/webpack.lib.prod.babel.js +12 -7
  105. package/dist/esm/webpack/webpack.prod.babel.js +4 -4
  106. package/dist/esm/webpack/webpack.storybook.js +12 -14
  107. package/dist/types/docusaurus.config.d.ts +2 -0
  108. package/dist/types/{babel.config.d.cts → lib/babel.config.d.cts} +7 -7
  109. package/dist/types/{commands → lib/commands}/build.d.ts +2 -2
  110. package/dist/types/{commands → lib/commands}/codemod.d.ts +2 -2
  111. package/dist/types/{commands → lib/commands}/lint.d.ts +3 -2
  112. package/dist/types/{commands → lib/commands}/pack.d.ts +2 -2
  113. package/dist/types/{commands → lib/commands}/start.d.ts +2 -2
  114. package/dist/types/{commands → lib/commands}/storybook.d.ts +2 -2
  115. package/dist/types/{commands → lib/commands}/test.d.ts +4 -2
  116. package/dist/types/{commands → lib/commands}/tscheck.d.ts +2 -2
  117. package/dist/types/lib/commands/utils.d.ts +39 -0
  118. package/dist/types/{commands → lib/commands}/version.d.ts +2 -2
  119. package/dist/types/{commands → lib/commands}/vitest.d.ts +2 -2
  120. package/dist/types/{index.d.cts → lib/index.d.cts} +1 -2
  121. package/dist/types/{index.d.ts → lib/index.d.ts} +3 -1
  122. package/dist/types/{lint-config → lib/lint-config}/commitlint.config.d.cts +1 -1
  123. package/dist/types/{lint-config → lib/lint-config}/eslint/common.d.cts +18 -12
  124. package/dist/types/{lint-config → lib/lint-config}/eslint/non-react.d.cts +8 -1
  125. package/dist/types/{lint-config → lib/lint-config}/eslint/react.d.cts +8 -1
  126. package/dist/types/{lint-config → lib/lint-config}/eslint/typescript/common.d.cts +6 -6
  127. package/dist/types/{lint-config → lib/lint-config}/eslint/typescript/non-react.d.cts +9 -2
  128. package/dist/types/{lint-config → lib/lint-config}/eslint/typescript/react.d.cts +9 -2
  129. package/dist/types/lib/lint-config/lint-staged.config.d.ts +5 -0
  130. package/dist/types/lib/lint-config/prettier.config.d.cts +8 -0
  131. package/dist/types/lib/lint-config/stylelint.config.d.ts +13 -0
  132. package/dist/types/lib/release.config.d.ts +10 -0
  133. package/dist/types/{server → lib/server}/csp.d.ts +2 -2
  134. package/dist/types/{server → lib/server}/utils.d.ts +1 -0
  135. package/dist/types/lib/server/wsServer.d.ts +13 -0
  136. package/dist/types/lib/testing/ExtendedJSDomEnv.d.cts +5 -0
  137. package/dist/types/lib/testing/extended/axe-core/getMessageAndPass.d.ts +8 -0
  138. package/dist/types/lib/testing/extended/axe-core/index.d.ts +1 -0
  139. package/dist/types/lib/testing/extended/axe-core/reporter.d.ts +2 -0
  140. package/dist/types/lib/testing/extended/axe-core/shouldIgnoreNodeViolation.d.ts +2 -0
  141. package/dist/types/lib/testing/extended/axe-core/toHaveNoViolations.d.ts +12 -0
  142. package/dist/types/lib/testing/jest.config.d.cts +45 -0
  143. package/dist/types/{testing → lib/testing}/jest.node.config.d.cts +4 -0
  144. package/dist/types/lib/testing/mocks/axios.d.ts +17 -0
  145. package/dist/types/{testing → lib/testing}/mocks/pui-diagnostics.d.ts +13 -13
  146. package/dist/types/lib/testing/setup-tests.d.ts +1 -0
  147. package/dist/types/lib/testing/vitest.config.d.ts +1 -0
  148. package/dist/types/lib/tests/basic.test.d.ts +0 -0
  149. package/dist/types/{transpile → lib/transpile}/esbuild.d.ts +3 -3
  150. package/dist/types/lib/typedoc.d.cts +3 -0
  151. package/dist/types/{webpack → lib/webpack}/helpers.d.ts +4 -1
  152. package/dist/types/{webpack → lib/webpack}/webpack.storybook.d.ts +0 -1
  153. package/nx.json +97 -0
  154. package/package.json +209 -193
  155. package/dist/cjs/lint-config/stylelint.config.cjs +0 -19
  156. package/dist/cjs/release.config.cjs +0 -24
  157. package/dist/esm/lint-config/stylelint.config.cjs +0 -19
  158. package/dist/esm/release.config.cjs +0 -24
  159. package/dist/types/commands/utils.d.ts +0 -17
  160. package/dist/types/lint-config/lint-staged.config.d.ts +0 -5
  161. package/dist/types/lint-config/prettier.config.d.cts +0 -8
  162. package/dist/types/lint-config/stylelint.config.d.cts +0 -10
  163. package/dist/types/release.config.d.cts +0 -7
  164. package/dist/types/testing/jest.config.d.cts +0 -41
  165. package/dist/types/testing/mocks/axios.d.ts +0 -17
  166. package/dist/types/testing/vitest.config.d.ts +0 -1
  167. package/dist/types/typedoc.d.cts +0 -3
  168. /package/dist/types/{cli.d.ts → lib/cli.d.ts} +0 -0
  169. /package/dist/types/{commands → lib/commands}/gendoc.d.ts +0 -0
  170. /package/dist/types/{dummy.d.ts → lib/dummy.d.ts} +0 -0
  171. /package/dist/types/{monorepo → lib/monorepo}/delete-merged-tags.d.ts +0 -0
  172. /package/dist/types/{monorepo → lib/monorepo}/set-registry-version.d.ts +0 -0
  173. /package/dist/types/{monorepo → lib/monorepo}/set-workspace-version.d.ts +0 -0
  174. /package/dist/types/{monorepo → lib/monorepo}/utils.d.cts +0 -0
  175. /package/dist/types/{monorepo → lib/monorepo}/utils.d.ts +0 -0
  176. /package/dist/types/{pui-config.d.ts → lib/pui-config.d.ts} +0 -0
  177. /package/dist/types/{server → lib/server}/appRoutes.d.ts +0 -0
  178. /package/dist/types/{server → lib/server}/index.d.ts +0 -0
  179. /package/dist/types/{server → lib/server}/logger.d.ts +0 -0
  180. /package/dist/types/{server → lib/server}/middlewares.d.ts +0 -0
  181. /package/dist/types/{testing/setup-react-env.d.ts → lib/testing/jest.polyfills.d.cts} +0 -0
  182. /package/dist/types/{testing → lib/testing}/mocks/cssModule.d.ts +0 -0
  183. /package/dist/types/{testing → lib/testing}/mocks/html.d.ts +0 -0
  184. /package/dist/types/{testing → lib/testing}/mocks/image.d.ts +0 -0
  185. /package/dist/types/{testing → lib/testing}/mocks/matchMedia.d.ts +0 -0
  186. /package/dist/types/{testing → lib/testing}/mocks/pui-app-loader.d.ts +0 -0
  187. /package/dist/types/{testing → lib/testing}/mocks/pui-user-monitoring.d.ts +0 -0
  188. /package/dist/types/{testing → lib/testing}/mocks/retry-axios.d.ts +0 -0
  189. /package/dist/types/{testing → lib/testing}/mocks/svg.d.ts +0 -0
  190. /package/dist/types/{testing → lib/testing}/mocks/webpack-hmr.d.ts +0 -0
  191. /package/dist/types/{testing → lib/testing}/resolver.d.cts +0 -0
  192. /package/dist/types/{testing/setup-test-env.d.ts → lib/testing/setup-react-env.d.ts} +0 -0
  193. /package/dist/types/{testing/setup-tests.d.ts → lib/testing/setup-test-env.d.ts} +0 -0
  194. /package/dist/types/{transpile → lib/transpile}/react-shim.d.ts +0 -0
  195. /package/dist/types/{transpile → lib/transpile}/swcrc.config.d.cts +0 -0
  196. /package/dist/types/{update-notifier.d.ts → lib/update-notifier.d.ts} +0 -0
  197. /package/dist/types/{utils.d.cts → lib/utils.d.cts} +0 -0
  198. /package/dist/types/{utils.d.ts → lib/utils.d.ts} +0 -0
  199. /package/dist/types/{webpack → lib/webpack}/webpack.base.babel.d.ts +0 -0
  200. /package/dist/types/{webpack → lib/webpack}/webpack.dev.babel.d.ts +0 -0
  201. /package/dist/types/{webpack → lib/webpack}/webpack.lib.base.babel.d.ts +0 -0
  202. /package/dist/types/{webpack → lib/webpack}/webpack.lib.dev.babel.d.ts +0 -0
  203. /package/dist/types/{webpack → lib/webpack}/webpack.lib.prod.babel.d.ts +0 -0
  204. /package/dist/types/{webpack → lib/webpack}/webpack.prod.babel.d.ts +0 -0
@@ -31,33 +31,32 @@ __export(webpack_lib_dev_babel_exports, {
31
31
  default: () => webpack_lib_dev_babel_default
32
32
  });
33
33
  module.exports = __toCommonJS(webpack_lib_dev_babel_exports);
34
- var import_node_path = __toESM(require("node:path"), 1);
35
- var import_webpack = __toESM(require("webpack"), 1);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_webpack = __toESM(require("webpack"));
36
36
  var import_webpack_dev_server = require("webpack-dev-server");
37
- var import_fast_glob = __toESM(require("fast-glob"), 1);
38
- var import_circular_dependency_plugin = __toESM(require("circular-dependency-plugin"), 1);
39
- var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"), 1);
40
- var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"), 1);
37
+ var import_fast_glob = __toESM(require("fast-glob"));
38
+ var import_circular_dependency_plugin = __toESM(require("circular-dependency-plugin"));
39
+ var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
40
+ var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
41
41
  var import_helpers = require("./helpers.js");
42
42
  var import_webpack_lib_base_babel = require("./webpack.lib.base.babel.js");
43
43
  const { basePath } = (0, import_helpers.getPaths)();
44
44
  const getHtmlWebpackPlugins = () => {
45
- const htmlTemplateFiles = import_fast_glob.default.sync([import_node_path.default.join(process.cwd(), "lib/*.html")]);
45
+ const htmlTemplateFiles = import_fast_glob.default.sync([
46
+ import_node_path.default.join(process.cwd(), "lib", "*.html").replace(/\\/g, "/")
47
+ ]);
46
48
  return htmlTemplateFiles.map(
47
49
  (htmlTemplateFile) => new import_html_webpack_plugin.default({
48
50
  template: htmlTemplateFile,
49
51
  filename: import_node_path.default.basename(htmlTemplateFile),
50
- inject: true
52
+ inject: "head",
53
+ scriptLoading: "defer",
54
+ library: (0, import_helpers.getLibraryVariableName)()
51
55
  })
52
56
  );
53
57
  };
54
58
  var webpack_lib_dev_babel_default = (0, import_webpack_lib_base_babel.baseConfig)({
55
59
  mode: "development",
56
- // output: {
57
- // filename: `js/${libraryName}.js`,
58
- // chunkFilename: `js/${libraryName}.chunk.js`,
59
- // assetModuleFilename: '[name][ext][query]',
60
- // },
61
60
  optimization: {
62
61
  splitChunks: {
63
62
  chunks: "all"
@@ -74,10 +73,7 @@ var webpack_lib_dev_babel_default = (0, import_webpack_lib_base_babel.baseConfig
74
73
  failOnError: false
75
74
  // show a warning when there is a circular dependency
76
75
  }),
77
- new import_mini_css_extract_plugin.default({
78
- // filename: `css/${libraryName}.css`,
79
- // chunkFilename: `css/${libraryName}.chunk.css`,
80
- }),
76
+ new import_mini_css_extract_plugin.default({}),
81
77
  new import_webpack.default.ProgressPlugin()
82
78
  ],
83
79
  devtool: "eval-source-map",
@@ -95,7 +91,7 @@ var webpack_lib_dev_babel_default = (0, import_webpack_lib_base_babel.baseConfig
95
91
  historyApiFallback: true,
96
92
  hot: true,
97
93
  open: [basePath],
98
- port: process.env.PORT || "auto",
94
+ port: process.env.PORT ?? "auto",
99
95
  headers: {
100
96
  "Access-Control-Allow-Origin": "*",
101
97
  "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS"
@@ -31,22 +31,26 @@ __export(webpack_lib_prod_babel_exports, {
31
31
  default: () => webpack_lib_prod_babel_default
32
32
  });
33
33
  module.exports = __toCommonJS(webpack_lib_prod_babel_exports);
34
- var import_node_path = __toESM(require("node:path"), 1);
35
- var import_fast_glob = __toESM(require("fast-glob"), 1);
36
- var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"), 1);
37
- var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"), 1);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_fast_glob = __toESM(require("fast-glob"));
36
+ var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
37
+ var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
38
38
  var import_webpack_bundle_analyzer = require("webpack-bundle-analyzer");
39
39
  var import_esbuild_loader = require("esbuild-loader");
40
- var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"), 1);
40
+ var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"));
41
41
  var import_helpers = require("./helpers.js");
42
42
  var import_webpack_lib_base_babel = require("./webpack.lib.base.babel.js");
43
43
  const getHtmlWebpackPlugins = () => {
44
- const htmlTemplateFiles = import_fast_glob.default.sync([import_node_path.default.join(process.cwd(), "lib/*.html")]);
44
+ const htmlTemplateFiles = import_fast_glob.default.sync([
45
+ import_node_path.default.join(process.cwd(), "lib", "*.html").replace(/\\/g, "/")
46
+ ]);
45
47
  return htmlTemplateFiles.map(
46
48
  (htmlTemplateFile) => new import_html_webpack_plugin.default({
47
49
  template: htmlTemplateFile,
48
50
  filename: import_node_path.default.basename(htmlTemplateFile),
49
- inject: true,
51
+ inject: "head",
52
+ scriptLoading: "defer",
53
+ library: (0, import_helpers.getLibraryVariableName)(),
50
54
  minify: {
51
55
  removeComments: true,
52
56
  collapseWhitespace: true,
@@ -82,10 +86,7 @@ const prodConfig = {
82
86
  },
83
87
  plugins: [
84
88
  ...getHtmlWebpackPlugins(),
85
- new import_mini_css_extract_plugin.default({
86
- // filename: `css/${libraryName}.[contenthash].css`,
87
- // chunkFilename: `css/${libraryName}.[contenthash].chunk.css`,
88
- }),
89
+ new import_mini_css_extract_plugin.default({}),
89
90
  ...(0, import_helpers.getCompressionPlugins)(true),
90
91
  new import_webpack_bundle_analyzer.BundleAnalyzerPlugin({
91
92
  analyzerMode: "static",
@@ -31,13 +31,13 @@ __export(webpack_prod_babel_exports, {
31
31
  default: () => webpack_prod_babel_default
32
32
  });
33
33
  module.exports = __toCommonJS(webpack_prod_babel_exports);
34
- var import_node_path = __toESM(require("node:path"), 1);
35
- var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"), 1);
34
+ var import_node_path = __toESM(require("node:path"));
35
+ var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
36
36
  var import_workbox_webpack_plugin = require("workbox-webpack-plugin");
37
- var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"), 1);
37
+ var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
38
38
  var import_webpack_bundle_analyzer = require("webpack-bundle-analyzer");
39
39
  var import_esbuild_loader = require("esbuild-loader");
40
- var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"), 1);
40
+ var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"));
41
41
  var import_webpack_base_babel = require("./webpack.base.babel.js");
42
42
  var import_helpers = require("./helpers.js");
43
43
  const getProdConfig = ({ latestVersion = true } = {}) => {
@@ -111,7 +111,7 @@ const {
111
111
  basePath
112
112
  } = (0, import_helpers.getPaths)();
113
113
  const htmlWebpackPlugin = new import_html_webpack_plugin.default({
114
- inject: !(0, import_helpers.isAppLoaderEnabled)(),
114
+ inject: !(0, import_helpers.isAppLoaderEnabled)() ? "head" : false,
115
115
  template: !(0, import_helpers.isAppLoaderEnabled)() ? "app/index.html" : "app/index-app-loader.html",
116
116
  minify: {
117
117
  removeComments: true,
@@ -134,9 +134,9 @@ const htmlWebpackPlugin = new import_html_webpack_plugin.default({
134
134
  diagnosticsScriptPath,
135
135
  encwLoaderScriptPath,
136
136
  googleTagManager: (0, import_helpers.isGoogleTagManagerEnabled)()
137
- }
137
+ },
138
+ scriptLoading: "defer"
138
139
  });
139
140
  const config = (0, import_webpack_base_babel.baseConfig)(getProdConfig());
140
- if (config.plugins)
141
- config.plugins.push(htmlWebpackPlugin);
141
+ if (config.plugins) config.plugins.push(htmlWebpackPlugin);
142
142
  var webpack_prod_babel_default = config;
@@ -28,14 +28,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var webpack_storybook_exports = {};
30
30
  __export(webpack_storybook_exports, {
31
- managerWebpack: () => managerWebpack,
32
31
  webpackFinal: () => webpackFinal
33
32
  });
34
33
  module.exports = __toCommonJS(webpack_storybook_exports);
35
- var import_webpack = __toESM(require("webpack"), 1);
36
- var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"), 1);
37
- var import_copy_webpack_plugin = __toESM(require("copy-webpack-plugin"), 1);
38
- var import_resolve_typescript_plugin = __toESM(require("resolve-typescript-plugin"), 1);
34
+ var import_webpack = __toESM(require("webpack"));
35
+ var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
36
+ var import_copy_webpack_plugin = __toESM(require("copy-webpack-plugin"));
37
+ var import_resolve_typescript_plugin = __toESM(require("resolve-typescript-plugin"));
39
38
  var import_helpers = require("./helpers.js");
40
39
  var import_utils = require("../utils.js");
41
40
  const IS_APP = (0, import_utils.isApp)();
@@ -89,23 +88,29 @@ const webpackFinal = (config, { configType }) => {
89
88
  const fileLoaderRule = config?.module?.rules?.find?.(
90
89
  (rule) => rule.test?.test?.(".svg")
91
90
  );
92
- if (fileLoaderRule)
93
- fileLoaderRule.exclude = /\.svg$/i;
91
+ if (fileLoaderRule) fileLoaderRule.exclude = /\.svg$/i;
94
92
  config?.module?.rules?.unshift(...getModuleRules());
95
93
  config?.plugins?.push(...getAdditionalPlugins());
96
94
  if (isProd) {
97
95
  config.plugins = config?.plugins?.concat((0, import_helpers.getCompressionPlugins)());
98
96
  }
99
97
  if (config.resolve) {
100
- config.resolve.alias = { ...config?.resolve?.alias, ...(0, import_helpers.getAlias)() };
98
+ config.resolve.alias = {
99
+ ...config?.resolve?.alias,
100
+ ...(0, import_helpers.getAlias)(),
101
+ ...(0, import_helpers.getLibraryAlias)(
102
+ "@reduxjs/toolkit/query/react",
103
+ "@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.mjs"
104
+ )
105
+ };
101
106
  config.resolve.fallback = { ...config.resolve.fallback, crypto: false };
102
107
  config.resolve.extensions?.push(".svg");
103
108
  config.resolve.plugins = [
104
- ...config.resolve.plugins || [],
109
+ ...config.resolve.plugins ?? [],
105
110
  new import_resolve_typescript_plugin.default({})
106
111
  ];
107
112
  }
108
- config.externals = config.externals || {};
113
+ config.externals = config.externals ?? {};
109
114
  if (config.externals) {
110
115
  config.externals["@elliemae/pui-user-monitoring"] = "emuiUserMonitoring";
111
116
  config.externals["@elliemae/pui-app-loader"] = "emuiAppLoader";
@@ -113,10 +118,3 @@ const webpackFinal = (config, { configType }) => {
113
118
  }
114
119
  return config;
115
120
  };
116
- const managerWebpack = (config) => {
117
- if (config.plugins)
118
- config.plugins = config.plugins.concat((0, import_helpers.getCompressionPlugins)());
119
- if (config.resolve)
120
- config.resolve.alias = { ...config.resolve.alias, ...(0, import_helpers.getAlias)() };
121
- return config;
122
- };
@@ -10,7 +10,7 @@ const nodeEnvPreset = {
10
10
  const webEnvPreset = {
11
11
  modules: process.env.ES_MODULES === 'false' ? 'commonjs' : false,
12
12
  useBuiltIns: 'usage',
13
- corejs: { version: '3.22', proposals: true },
13
+ corejs: { version: '3.36', proposals: true },
14
14
  };
15
15
 
16
16
  const presetEnvOptions =
@@ -45,10 +45,8 @@ const buildCmd = {
45
45
  handler: async ({ service = false }) => {
46
46
  try {
47
47
  logInfo("Build in progress...");
48
- if (service)
49
- await buildService();
50
- else
51
- await buildWebApp();
48
+ if (service) await buildService();
49
+ else await buildWebApp();
52
50
  logSuccess("Build completed");
53
51
  } catch (err) {
54
52
  logError("Build failed", err);
@@ -1,25 +1,36 @@
1
1
  import path from "node:path";
2
+ import { inspect } from "node:util";
2
3
  import yargs from "yargs";
3
4
  import {
4
5
  exec,
6
+ logInfo,
5
7
  logError,
6
8
  logSuccess,
7
9
  getCIEnv,
8
10
  isTypeScriptEnabled
9
11
  } from "./utils.js";
10
- const lintCSS = async (fix = false) => {
11
- const fixIssues = fix ? "--fix" : "";
12
+ const lintCSS = async (args) => {
13
+ const fixIssues = args.fix ? "--fix" : "";
14
+ if (args.debug) {
15
+ const configPath = path.join(process.cwd(), "stylelint.config.mjs");
16
+ const config = await import(configPath);
17
+ logInfo("stylelint version:");
18
+ await exec(`stylelint ./{lib,app}/**/*.{js,jsx,ts,tsx} --version`);
19
+ logInfo("stylelint config:");
20
+ logInfo(inspect(config, { depth: null }));
21
+ }
12
22
  await exec(
13
23
  `stylelint ./{lib,app}/**/*.{js,jsx,ts,tsx} ${fixIssues} ${!getCIEnv() ? "--color" : "--no-color"} --allow-empty-input --config ${path.join(
14
24
  process.cwd(),
15
- "stylelint.config.cjs"
16
- )}`
25
+ "stylelint.config.mjs"
26
+ )} -o ./reports/stylelint.json`
17
27
  );
18
28
  };
19
- const lintJS = async (fix = false) => {
20
- const fixIssues = fix ? "--fix" : "";
29
+ const lintJS = async (args) => {
30
+ const fixIssues = args.fix ? "--fix" : "";
31
+ const debugFlags = args.debug ? "--env-info --debug" : "";
21
32
  await exec(
22
- `eslint ${!getCIEnv() ? "--color" : "--no-color"} ${fixIssues} .`
33
+ `eslint -o ./reports/eslint.json ${!getCIEnv() ? "--color" : "--no-color"} ${fixIssues} ${debugFlags} .`
23
34
  );
24
35
  };
25
36
  const cmdArgs = {
@@ -37,6 +48,11 @@ const cmdArgs = {
37
48
  boolean: true,
38
49
  alias: "fix",
39
50
  default: false
51
+ },
52
+ debug: {
53
+ boolean: true,
54
+ alias: "debug",
55
+ default: false
40
56
  }
41
57
  };
42
58
  const lintCmd = {
@@ -46,10 +62,11 @@ const lintCmd = {
46
62
  await exec("tsc --noEmit --emitDeclarationOnly false");
47
63
  try {
48
64
  await exec("rimraf ./reports/eslint.json");
49
- await lintJS(argv.fix);
65
+ await lintJS({ ...argv });
50
66
  logSuccess("JS linting completed");
51
67
  } catch (err) {
52
68
  logError("JS linting failed");
69
+ if (argv.debug) logError(err);
53
70
  yargs().exit(-1, err);
54
71
  return;
55
72
  }
@@ -57,10 +74,11 @@ const lintCmd = {
57
74
  if (argv.css) {
58
75
  try {
59
76
  await exec("rimraf ./reports/stylelint.json");
60
- await lintCSS(argv.fix);
77
+ await lintCSS({ ...argv });
61
78
  logSuccess("CSS linting completed");
62
79
  } catch (err) {
63
80
  logError("CSS linting failed");
81
+ if (argv.debug) logError(err);
64
82
  yargs().exit(-1, err);
65
83
  }
66
84
  }
@@ -42,8 +42,7 @@ const pack = async ({
42
42
  if (isTypeScriptEnabled()) {
43
43
  await compileTypeScript();
44
44
  }
45
- if (target !== "node")
46
- await webBuild(production);
45
+ if (target !== "node") await webBuild(production);
47
46
  if (target !== "web") {
48
47
  logInfo("Building source files for nodejs environment...");
49
48
  await esBuild({ srcdir: srcPath });
@@ -5,7 +5,7 @@ import { exec, logError, logSuccess, isApp } from "./utils.js";
5
5
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
6
  const startProdServer = async () => {
7
7
  await exec(
8
- `cross-env NODE_ENV=production ts-node --esm ${path.resolve(
8
+ `cross-env NODE_ENV=production tsx ${path.resolve(
9
9
  __dirname,
10
10
  "../server/index.js"
11
11
  )} --color always`
@@ -1,13 +1,5 @@
1
1
  import yargs from "yargs";
2
2
  import { exec, logError, logSuccess, getCIEnv } from "./utils.js";
3
- const test = async (commandOptions) => {
4
- await exec(`cross-env NODE_ENV=test jest ${commandOptions}`);
5
- };
6
- const debugTest = async () => {
7
- await exec(
8
- `node --inspect-brk ./node_modules/jest-cli/bin/jest.js --runInBand --watch`
9
- );
10
- };
11
3
  const cmdArgs = {
12
4
  fix: {
13
5
  boolean: true,
@@ -38,24 +30,55 @@ const cmdArgs = {
38
30
  boolean: true,
39
31
  alias: "s",
40
32
  default: false
33
+ },
34
+ coverage: {
35
+ string: true,
36
+ // we want to support "CI" | "false" | "true"
37
+ default: "true"
38
+ },
39
+ maxWorkers: {
40
+ string: true,
41
+ default: "50%"
41
42
  }
42
43
  };
44
+ const getJestFlags = (argv) => {
45
+ const flagsArray = [
46
+ argv.maxWorkers ? `--maxWorkers=${argv.maxWorkers}` : ""
47
+ ];
48
+ const isCi = getCIEnv();
49
+ switch (`${argv.coverage}`) {
50
+ case "CI":
51
+ if (isCi) {
52
+ flagsArray.push("--coverage");
53
+ }
54
+ break;
55
+ case "false":
56
+ break;
57
+ case "true":
58
+ default:
59
+ flagsArray.push("--coverage");
60
+ break;
61
+ }
62
+ if (argv.fix) flagsArray.push("-u");
63
+ else if (argv.watch) flagsArray.push("--watchAll");
64
+ if (argv.passWithNoTests) flagsArray.push("--passWithNoTests");
65
+ if (argv.findReleatedTests) flagsArray.push("--bail --findRelatedTests");
66
+ if (argv.silent) flagsArray.push("--silent");
67
+ if (isCi) flagsArray.push("--ci --no-colors");
68
+ return flagsArray.join(" ");
69
+ };
70
+ const test = async (argv) => {
71
+ const jestFlags = getJestFlags(argv);
72
+ await exec(`cross-env NODE_ENV=test jest ${jestFlags}`);
73
+ };
74
+ const debugTest = async () => {
75
+ await exec(
76
+ `node --inspect-brk ./node_modules/jest-cli/bin/jest.js --runInBand --watch`
77
+ );
78
+ };
43
79
  const testCmd = {
44
80
  // eslint-disable-next-line max-statements
45
81
  handler: async (argv) => {
46
- let commandOptions = "--coverage --maxWorkers=50%";
47
- if (argv.fix)
48
- commandOptions = "-u";
49
- else if (argv.watch)
50
- commandOptions = "--watchAll";
51
- if (getCIEnv())
52
- commandOptions += " --ci --no-colors";
53
- if (argv.passWithNoTests)
54
- commandOptions += " --passWithNoTests";
55
- if (argv.findReleatedTests)
56
- commandOptions += " --bail --findRelatedTests";
57
- if (argv.silent)
58
- commandOptions += " --silent";
59
82
  try {
60
83
  if (getCIEnv()) {
61
84
  await exec("rimraf ./reports");
@@ -63,7 +86,7 @@ const testCmd = {
63
86
  if (argv.debug) {
64
87
  await debugTest();
65
88
  } else {
66
- await test(commandOptions);
89
+ await test(argv);
67
90
  }
68
91
  logSuccess("Unit test execution completed");
69
92
  } catch (err) {
@@ -31,6 +31,7 @@ const browsersMapping = {
31
31
  };
32
32
  const exec = async (command, options = { stdio: "inherit" }) => execaCommand(command, options);
33
33
  const logInfo = console.log;
34
+ const logWarning = (...args) => console.log(chalk.yellow(...args));
34
35
  const logSuccess = (...args) => console.log(chalk.green(...args));
35
36
  const logError = console.error;
36
37
  const readPackageLock = async () => {
@@ -50,9 +51,10 @@ const getSupportedBrowsers = async () => {
50
51
  });
51
52
  const browserVersions = stdout?.toString()?.split("\n") || [];
52
53
  return browserVersions.reduce((acc, nameVersion) => {
54
+ if (!nameVersion) return acc;
53
55
  const [name, version] = nameVersion.split(" ");
54
56
  const versionRange = version.split("-");
55
- acc[browsersMapping[name]] = versionRange && versionRange[0] || version;
57
+ acc[browsersMapping[name]] = versionRange?.[0] ?? version;
56
58
  return acc;
57
59
  }, {});
58
60
  };
@@ -122,9 +124,10 @@ const updateManifestWithVersionInfo = async (dest) => {
122
124
  const updateRuntimeFile = async (src, dest, version) => {
123
125
  const latestJSFolder = "latest/js";
124
126
  const pipe = promisify(pipeline);
125
- const results = await fg([path.join(src, "runtime~app.*.js")]);
126
- if (!results?.length)
127
- throw new Error("Runtime file not found");
127
+ const results = await fg([
128
+ path.join(src, "runtime~app.*.js").replace(/\\/g, "/")
129
+ ]);
130
+ if (!results?.length) throw new Error("Runtime file not found");
128
131
  const runtimeFilePath = results[0];
129
132
  const runtimeFileName = path.basename(runtimeFilePath);
130
133
  const destRuntimeFilePath = path.join(dest, runtimeFileName);
@@ -153,8 +156,7 @@ const updateRuntimeFile = async (src, dest, version) => {
153
156
  const copyBuildAssetsToVersionedFolder = async () => {
154
157
  const appVersion = getAppVersion();
155
158
  const isVersionedApp = isAppLoaderEnabled() && appVersion !== LATEST_VERSION;
156
- if (!isVersionedApp)
157
- return;
159
+ if (!isVersionedApp) return;
158
160
  const src = path.resolve(process.cwd(), "build/public/latest");
159
161
  const dest = path.resolve(process.cwd(), `build/public/${appVersion}`);
160
162
  await copyDir(src, dest);
@@ -176,15 +178,40 @@ const isPathExist = async (pathToCheck) => {
176
178
  const isApp = async () => isPathExist(path.join(process.cwd(), "app"));
177
179
  const getCIEnv = () => process.env.CI === "true";
178
180
  const isTypeScriptEnabled = () => fs.existsSync(path.join(process.cwd(), "tsconfig.json"));
181
+ const getUnspecifiedOptions = (options, command) => {
182
+ const rawArgs = process.argv.slice(2);
183
+ const rawArgsMap = /* @__PURE__ */ new Map();
184
+ rawArgs.forEach((arg) => {
185
+ const [key, value] = arg.split("=");
186
+ const keyWithoutPrefix = key.replace(/^-{1,2}/, "");
187
+ rawArgsMap.set(keyWithoutPrefix, value || true);
188
+ });
189
+ const expectedOptionsMap = /* @__PURE__ */ new Map();
190
+ Object.entries(options).forEach(([key, value]) => {
191
+ expectedOptionsMap.set(key, value);
192
+ if (value.alias) expectedOptionsMap.set(value.alias, value);
193
+ });
194
+ const unspecifiedOptions = {};
195
+ rawArgsMap.forEach((value, key) => {
196
+ if (key === command) return;
197
+ if (key === "") return;
198
+ if (!expectedOptionsMap.has(key)) {
199
+ unspecifiedOptions[key] = value;
200
+ }
201
+ });
202
+ return unspecifiedOptions;
203
+ };
179
204
  export {
180
205
  copyBuildAssetsToVersionedFolder,
181
206
  exec,
182
207
  getCIEnv,
208
+ getUnspecifiedOptions,
183
209
  isApp,
184
210
  isPathExist,
185
211
  isTypeScriptEnabled,
186
212
  logError,
187
213
  logInfo,
188
214
  logSuccess,
215
+ logWarning,
189
216
  writeAppInfo
190
217
  };
@@ -34,16 +34,11 @@ const vitestCmd = {
34
34
  // eslint-disable-next-line max-statements
35
35
  handler: async (argv) => {
36
36
  let commandOptions = "--coverage";
37
- if (argv.fix)
38
- commandOptions = "-u";
39
- else if (argv.watch)
40
- commandOptions = "--watch";
41
- if (argv.passWithNoTests)
42
- commandOptions += " --passWithNoTests";
43
- if (argv.findReleatedTests)
44
- commandOptions += " --related";
45
- if (argv.silent)
46
- commandOptions += " --silent";
37
+ if (argv.fix) commandOptions = "-u";
38
+ else if (argv.watch) commandOptions = "--watch";
39
+ if (argv.passWithNoTests) commandOptions += " --passWithNoTests";
40
+ if (argv.findReleatedTests) commandOptions += " --related";
41
+ if (argv.silent) commandOptions += " --silent";
47
42
  try {
48
43
  if (getCIEnv()) {
49
44
  await exec("rimraf ./reports");
@@ -5,7 +5,6 @@ const {
5
5
  const {
6
6
  esReactConfig: eslintConfig,
7
7
  } = require('./lint-config/eslint/react.cjs');
8
- const { stylelintConfig } = require('./lint-config/stylelint.config.cjs');
9
8
  const { prettierConfig } = require('./lint-config/prettier.config.cjs');
10
9
  const { commitlintConfig } = require('./lint-config/commitlint.config.cjs');
11
10
  const { jestConfig } = require('./testing/jest.config.cjs');
@@ -15,7 +14,6 @@ module.exports = {
15
14
  babelConfig,
16
15
  eslintBaseConfig,
17
16
  eslintConfig,
18
- stylelintConfig,
19
17
  prettierConfig,
20
18
  commitlintConfig,
21
19
  jestConfig,
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { babelConfig } from "./babel.config.cjs";
2
2
  import { esConfig } from "./lint-config/eslint/non-react.cjs";
3
3
  import { esReactConfig } from "./lint-config/eslint/react.cjs";
4
- import { stylelintConfig } from "./lint-config/stylelint.config.cjs";
4
+ import { stylelintConfig } from "./lint-config/stylelint.config.js";
5
5
  import { prettierConfig } from "./lint-config/prettier.config.cjs";
6
6
  import { commitlintConfig } from "./lint-config/commitlint.config.cjs";
7
7
  import { jestConfig } from "./testing/jest.config.cjs";
@@ -9,6 +9,7 @@ import { vitestConfig } from "./testing/vitest.config.js";
9
9
  import { jestNodeConfig } from "./testing/jest.node.config.cjs";
10
10
  import { lintStagedConfig } from "./lint-config/lint-staged.config.js";
11
11
  import { loadRoutes } from "./server/appRoutes.js";
12
+ import { webpackFinal } from "./webpack/webpack.storybook.js";
12
13
  export {
13
14
  babelConfig,
14
15
  commitlintConfig,
@@ -20,5 +21,6 @@ export {
20
21
  loadRoutes,
21
22
  prettierConfig,
22
23
  stylelintConfig,
23
- vitestConfig
24
+ vitestConfig,
25
+ webpackFinal
24
26
  };
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable max-lines */
2
- const prettierOptions = require("../prettier.config.cjs");
2
+ const { prettierConfig } = require("../prettier.config.cjs");
3
3
  // const webpackConfig = require('../../webpack/webpack.prod.babel');
4
4
 
5
5
  exports.baseExtends = [
@@ -26,7 +26,7 @@ exports.baseOverrides = [
26
26
  ];
27
27
 
28
28
  const baseRules = {
29
- "prettier/prettier": ["error", prettierOptions],
29
+ "prettier/prettier": ["error", prettierConfig],
30
30
  "arrow-body-style": [2, "as-needed"],
31
31
  "class-methods-use-this": 0,
32
32
  "import/imports-first": 0,
@@ -152,6 +152,7 @@ exports.baseConfig = {
152
152
  },
153
153
  ignorePatterns: [
154
154
  "/build/**/*",
155
+ "/node_modules/**/*",
155
156
  "/dist/**/*",
156
157
  "/reports/**/*",
157
158
  "/coverage/**/*",
@@ -1,9 +1,9 @@
1
1
  const { baseExtends, basePlugins } = require('../common.cjs');
2
2
 
3
3
  exports.tsBaseExtends = [
4
- 'plugin:@typescript-eslint/recommended',
5
4
  'plugin:import/typescript',
6
- 'plugin:@typescript-eslint/recommended-requiring-type-checking',
5
+ 'plugin:@typescript-eslint/recommended-type-checked',
6
+ 'plugin:@typescript-eslint/stylistic-type-checked',
7
7
  ].concat(baseExtends);
8
8
 
9
9
  exports.tsBaseRules = {
@@ -34,7 +34,7 @@ exports.tsBaseConfig = {
34
34
  plugins: ['@typescript-eslint'].concat(basePlugins),
35
35
  parserOptions: {
36
36
  tsconfigRootDir: process.cwd(),
37
- project: 'tsconfig.json',
37
+ project: true,
38
38
  },
39
39
  settings: {
40
40
  'import/resolver': {
@@ -0,0 +1,25 @@
1
+ const stylelintConfig = {
2
+ ignoreFiles: [
3
+ "/dist/**/*",
4
+ "/coverage/**/*",
5
+ "/build/**/*",
6
+ "/reports/**/*",
7
+ "/temp/**/*",
8
+ "/docs/**/*",
9
+ "/demo/**/*",
10
+ "/node_modules/**/*",
11
+ "/vendor/**/*"
12
+ ],
13
+ extends: ["stylelint-config-standard"],
14
+ customSyntax: "postcss-styled-syntax",
15
+ rules: {
16
+ "selector-type-no-unknown": null,
17
+ "function-no-unknown": null,
18
+ "value-no-vendor-prefix": true,
19
+ "property-no-vendor-prefix": true,
20
+ "no-empty-source": null
21
+ }
22
+ };
23
+ export {
24
+ stylelintConfig
25
+ };