@elliemae/pui-cli 9.0.0-next.67 → 9.0.0-next.69

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 (214) hide show
  1. package/app.tsconfig.json +3 -4
  2. package/dist/cjs/commands/lint.js +1 -1
  3. package/dist/cjs/commands/test.js +1 -1
  4. package/dist/cjs/lint-config/eslint.config.js +186 -194
  5. package/dist/cjs/release.config.js +2 -0
  6. package/dist/cjs/server/appRoutes.js +3 -1
  7. package/dist/cjs/server/csp.js +16 -12
  8. package/dist/cjs/server/index.js +24 -15
  9. package/dist/cjs/server/middlewares.js +11 -8
  10. package/dist/cjs/testing/jest.config.cjs +2 -1
  11. package/dist/cjs/testing/{extended/axe-core/index.js → mocks/frame.js} +7 -5
  12. package/dist/cjs/testing/mocks/iframe.js +3 -1
  13. package/dist/cjs/testing/setup-tests.js +9 -2
  14. package/dist/cjs/testing/vitest.config.js +0 -1
  15. package/dist/cjs/webpack/csp-plugin.js +3 -1
  16. package/dist/cjs/webpack/webpack.base.babel.js +5 -2
  17. package/dist/cjs/webpack/webpack.lib.base.babel.js +3 -1
  18. package/dist/esm/commands/lint.js +1 -1
  19. package/dist/esm/commands/test.js +1 -1
  20. package/dist/esm/lint-config/eslint.config.js +186 -194
  21. package/dist/esm/release.config.js +2 -0
  22. package/dist/esm/server/appRoutes.js +3 -1
  23. package/dist/esm/server/csp.js +16 -12
  24. package/dist/esm/server/index.js +24 -15
  25. package/dist/esm/server/middlewares.js +11 -8
  26. package/dist/esm/testing/jest.config.cjs +2 -1
  27. package/dist/esm/testing/mocks/frame.js +6 -0
  28. package/dist/esm/testing/mocks/iframe.js +3 -1
  29. package/dist/esm/testing/setup-tests.js +9 -2
  30. package/dist/esm/testing/vitest.config.js +0 -1
  31. package/dist/esm/webpack/csp-plugin.js +3 -1
  32. package/dist/esm/webpack/webpack.base.babel.js +5 -2
  33. package/dist/esm/webpack/webpack.lib.base.babel.js +3 -1
  34. package/dist/types/docusaurus.config.d.ts +0 -1
  35. package/dist/types/eslint.config.d.ts +1 -2
  36. package/dist/types/lib/babel.config.d.cts +0 -1
  37. package/dist/types/lib/build/vite.config.d.ts +0 -1
  38. package/dist/types/lib/cli.d.ts +0 -1
  39. package/dist/types/lib/commands/build.d.ts +0 -1
  40. package/dist/types/lib/commands/buildcdn.d.ts +0 -1
  41. package/dist/types/lib/commands/codemod.d.ts +0 -1
  42. package/dist/types/lib/commands/gendoc.d.ts +0 -1
  43. package/dist/types/lib/commands/lint.d.ts +0 -1
  44. package/dist/types/lib/commands/pack.d.ts +0 -1
  45. package/dist/types/lib/commands/start.d.ts +0 -1
  46. package/dist/types/lib/commands/storybook.d.ts +0 -1
  47. package/dist/types/lib/commands/test.d.ts +0 -1
  48. package/dist/types/lib/commands/tscheck.d.ts +0 -1
  49. package/dist/types/lib/commands/utils.d.ts +0 -1
  50. package/dist/types/lib/commands/version.d.ts +0 -1
  51. package/dist/types/lib/commands/vitest.d.ts +0 -1
  52. package/dist/types/lib/index.d.cts +0 -1
  53. package/dist/types/lib/index.d.ts +0 -1
  54. package/dist/types/lib/lint-config/commitlint.config.d.ts +0 -1
  55. package/dist/types/lib/lint-config/eslint.config.d.ts +2 -3
  56. package/dist/types/lib/lint-config/lint-staged.config.d.ts +0 -1
  57. package/dist/types/lib/lint-config/prettier.config.d.ts +0 -1
  58. package/dist/types/lib/lint-config/stylelint.config.d.ts +0 -1
  59. package/dist/types/lib/monorepo/delete-merged-tags.d.ts +0 -1
  60. package/dist/types/lib/monorepo/set-registry-version.d.ts +0 -1
  61. package/dist/types/lib/monorepo/set-workspace-version.d.ts +0 -1
  62. package/dist/types/lib/monorepo/utils.d.cts +0 -1
  63. package/dist/types/lib/monorepo/utils.d.ts +0 -1
  64. package/dist/types/lib/pui-config.d.ts +0 -1
  65. package/dist/types/lib/release.config.d.ts +0 -1
  66. package/dist/types/lib/server/appRoutes.d.ts +0 -1
  67. package/dist/types/lib/server/cert.d.ts +1 -2
  68. package/dist/types/lib/server/csp.d.ts +1 -2
  69. package/dist/types/lib/server/index.d.ts +0 -1
  70. package/dist/types/lib/server/logger.d.ts +0 -1
  71. package/dist/types/lib/server/middlewares.d.ts +0 -1
  72. package/dist/types/lib/server/utils.d.ts +0 -1
  73. package/dist/types/lib/server/wsServer.d.ts +0 -1
  74. package/dist/types/lib/testing/jest.config.d.cts +2 -2
  75. package/dist/types/lib/testing/jest.node.config.d.cts +2 -2
  76. package/dist/types/lib/testing/jest.polyfills.d.cts +0 -1
  77. package/dist/types/lib/testing/mocks/axios.d.ts +0 -1
  78. package/dist/types/lib/testing/mocks/cssModule.d.ts +0 -1
  79. package/dist/types/lib/testing/mocks/frame.d.ts +3 -0
  80. package/dist/types/lib/testing/mocks/html.d.ts +0 -1
  81. package/dist/types/lib/testing/mocks/iframe.d.ts +1 -1
  82. package/dist/types/lib/testing/mocks/image.d.ts +0 -1
  83. package/dist/types/lib/testing/mocks/matchMedia.d.ts +0 -1
  84. package/dist/types/lib/testing/mocks/pui-app-loader.d.ts +0 -1
  85. package/dist/types/lib/testing/mocks/pui-diagnostics.d.ts +0 -1
  86. package/dist/types/lib/testing/mocks/pui-user-monitoring.d.ts +0 -1
  87. package/dist/types/lib/testing/mocks/retry-axios.d.ts +0 -1
  88. package/dist/types/lib/testing/mocks/svg.d.ts +0 -1
  89. package/dist/types/lib/testing/mocks/webpack-hmr.d.ts +0 -1
  90. package/dist/types/lib/testing/resolver.d.cts +0 -1
  91. package/dist/types/lib/testing/setup-react-env.d.ts +0 -1
  92. package/dist/types/lib/testing/setup-tests.d.ts +0 -1
  93. package/dist/types/lib/testing/vitest.config.d.ts +1 -2
  94. package/dist/types/lib/transpile/esbuild.d.ts +0 -1
  95. package/dist/types/lib/transpile/react-shim.d.ts +0 -1
  96. package/dist/types/lib/transpile/swcrc.config.d.cts +0 -1
  97. package/dist/types/lib/typedoc.d.cts +0 -1
  98. package/dist/types/lib/update-notifier.d.ts +0 -1
  99. package/dist/types/lib/utils.d.cts +1 -2
  100. package/dist/types/lib/utils.d.ts +1 -2
  101. package/dist/types/lib/webpack/csp-plugin.d.ts +3 -2
  102. package/dist/types/lib/webpack/csp.d.ts +0 -1
  103. package/dist/types/lib/webpack/helpers.d.ts +0 -1
  104. package/dist/types/lib/webpack/interceptor-middleware.d.ts +0 -1
  105. package/dist/types/lib/webpack/webpack.base.babel.d.ts +0 -1
  106. package/dist/types/lib/webpack/webpack.dev.babel.d.ts +0 -1
  107. package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts +0 -1
  108. package/dist/types/lib/webpack/webpack.lib.dev.babel.d.ts +0 -1
  109. package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts +0 -1
  110. package/dist/types/lib/webpack/webpack.prod.babel.d.ts +0 -1
  111. package/dist/types/lib/webpack/webpack.storybook.d.ts +0 -1
  112. package/dist/types/tsconfig.tsbuildinfo +1 -1
  113. package/library.tsconfig.json +6 -11
  114. package/package.json +163 -156
  115. package/dist/cjs/testing/ExtendedJSDomEnv.cjs +0 -46
  116. package/dist/cjs/testing/extended/axe-core/getMessageAndPass.js +0 -36
  117. package/dist/cjs/testing/extended/axe-core/reporter.js +0 -50
  118. package/dist/cjs/testing/extended/axe-core/shouldIgnoreNodeViolation.js +0 -31
  119. package/dist/cjs/testing/extended/axe-core/toHaveNoViolations.js +0 -42
  120. package/dist/esm/testing/ExtendedJSDomEnv.cjs +0 -46
  121. package/dist/esm/testing/extended/axe-core/getMessageAndPass.js +0 -16
  122. package/dist/esm/testing/extended/axe-core/index.js +0 -4
  123. package/dist/esm/testing/extended/axe-core/reporter.js +0 -30
  124. package/dist/esm/testing/extended/axe-core/shouldIgnoreNodeViolation.js +0 -11
  125. package/dist/esm/testing/extended/axe-core/toHaveNoViolations.js +0 -22
  126. package/dist/types/docusaurus.config.d.ts.map +0 -1
  127. package/dist/types/eslint.config.d.ts.map +0 -1
  128. package/dist/types/lib/babel.config.d.cts.map +0 -1
  129. package/dist/types/lib/build/vite.config.d.ts.map +0 -1
  130. package/dist/types/lib/cli.d.ts.map +0 -1
  131. package/dist/types/lib/commands/build.d.ts.map +0 -1
  132. package/dist/types/lib/commands/buildcdn.d.ts.map +0 -1
  133. package/dist/types/lib/commands/codemod.d.ts.map +0 -1
  134. package/dist/types/lib/commands/gendoc.d.ts.map +0 -1
  135. package/dist/types/lib/commands/lint.d.ts.map +0 -1
  136. package/dist/types/lib/commands/pack.d.ts.map +0 -1
  137. package/dist/types/lib/commands/start.d.ts.map +0 -1
  138. package/dist/types/lib/commands/storybook.d.ts.map +0 -1
  139. package/dist/types/lib/commands/test.d.ts.map +0 -1
  140. package/dist/types/lib/commands/tscheck.d.ts.map +0 -1
  141. package/dist/types/lib/commands/utils.d.ts.map +0 -1
  142. package/dist/types/lib/commands/version.d.ts.map +0 -1
  143. package/dist/types/lib/commands/vitest.d.ts.map +0 -1
  144. package/dist/types/lib/index.d.cts.map +0 -1
  145. package/dist/types/lib/index.d.ts.map +0 -1
  146. package/dist/types/lib/lint-config/commitlint.config.d.ts.map +0 -1
  147. package/dist/types/lib/lint-config/eslint.config.d.ts.map +0 -1
  148. package/dist/types/lib/lint-config/lint-staged.config.d.ts.map +0 -1
  149. package/dist/types/lib/lint-config/prettier.config.d.ts.map +0 -1
  150. package/dist/types/lib/lint-config/stylelint.config.d.ts.map +0 -1
  151. package/dist/types/lib/monorepo/delete-merged-tags.d.ts.map +0 -1
  152. package/dist/types/lib/monorepo/set-registry-version.d.ts.map +0 -1
  153. package/dist/types/lib/monorepo/set-workspace-version.d.ts.map +0 -1
  154. package/dist/types/lib/monorepo/utils.d.cts.map +0 -1
  155. package/dist/types/lib/monorepo/utils.d.ts.map +0 -1
  156. package/dist/types/lib/pui-config.d.ts.map +0 -1
  157. package/dist/types/lib/release.config.d.ts.map +0 -1
  158. package/dist/types/lib/server/appRoutes.d.ts.map +0 -1
  159. package/dist/types/lib/server/cert.d.ts.map +0 -1
  160. package/dist/types/lib/server/csp.d.ts.map +0 -1
  161. package/dist/types/lib/server/index.d.ts.map +0 -1
  162. package/dist/types/lib/server/logger.d.ts.map +0 -1
  163. package/dist/types/lib/server/middlewares.d.ts.map +0 -1
  164. package/dist/types/lib/server/utils.d.ts.map +0 -1
  165. package/dist/types/lib/server/wsServer.d.ts.map +0 -1
  166. package/dist/types/lib/testing/ExtendedJSDomEnv.d.cts +0 -6
  167. package/dist/types/lib/testing/ExtendedJSDomEnv.d.cts.map +0 -1
  168. package/dist/types/lib/testing/extended/axe-core/getMessageAndPass.d.ts +0 -9
  169. package/dist/types/lib/testing/extended/axe-core/getMessageAndPass.d.ts.map +0 -1
  170. package/dist/types/lib/testing/extended/axe-core/index.d.ts +0 -2
  171. package/dist/types/lib/testing/extended/axe-core/index.d.ts.map +0 -1
  172. package/dist/types/lib/testing/extended/axe-core/reporter.d.ts +0 -3
  173. package/dist/types/lib/testing/extended/axe-core/reporter.d.ts.map +0 -1
  174. package/dist/types/lib/testing/extended/axe-core/shouldIgnoreNodeViolation.d.ts +0 -3
  175. package/dist/types/lib/testing/extended/axe-core/shouldIgnoreNodeViolation.d.ts.map +0 -1
  176. package/dist/types/lib/testing/extended/axe-core/toHaveNoViolations.d.ts +0 -13
  177. package/dist/types/lib/testing/extended/axe-core/toHaveNoViolations.d.ts.map +0 -1
  178. package/dist/types/lib/testing/jest.config.d.cts.map +0 -1
  179. package/dist/types/lib/testing/jest.node.config.d.cts.map +0 -1
  180. package/dist/types/lib/testing/jest.polyfills.d.cts.map +0 -1
  181. package/dist/types/lib/testing/mocks/axios.d.ts.map +0 -1
  182. package/dist/types/lib/testing/mocks/cssModule.d.ts.map +0 -1
  183. package/dist/types/lib/testing/mocks/html.d.ts.map +0 -1
  184. package/dist/types/lib/testing/mocks/iframe.d.ts.map +0 -1
  185. package/dist/types/lib/testing/mocks/image.d.ts.map +0 -1
  186. package/dist/types/lib/testing/mocks/matchMedia.d.ts.map +0 -1
  187. package/dist/types/lib/testing/mocks/pui-app-loader.d.ts.map +0 -1
  188. package/dist/types/lib/testing/mocks/pui-diagnostics.d.ts.map +0 -1
  189. package/dist/types/lib/testing/mocks/pui-user-monitoring.d.ts.map +0 -1
  190. package/dist/types/lib/testing/mocks/retry-axios.d.ts.map +0 -1
  191. package/dist/types/lib/testing/mocks/svg.d.ts.map +0 -1
  192. package/dist/types/lib/testing/mocks/webpack-hmr.d.ts.map +0 -1
  193. package/dist/types/lib/testing/resolver.d.cts.map +0 -1
  194. package/dist/types/lib/testing/setup-react-env.d.ts.map +0 -1
  195. package/dist/types/lib/testing/setup-tests.d.ts.map +0 -1
  196. package/dist/types/lib/testing/vitest.config.d.ts.map +0 -1
  197. package/dist/types/lib/transpile/esbuild.d.ts.map +0 -1
  198. package/dist/types/lib/transpile/react-shim.d.ts.map +0 -1
  199. package/dist/types/lib/transpile/swcrc.config.d.cts.map +0 -1
  200. package/dist/types/lib/typedoc.d.cts.map +0 -1
  201. package/dist/types/lib/update-notifier.d.ts.map +0 -1
  202. package/dist/types/lib/utils.d.cts.map +0 -1
  203. package/dist/types/lib/utils.d.ts.map +0 -1
  204. package/dist/types/lib/webpack/csp-plugin.d.ts.map +0 -1
  205. package/dist/types/lib/webpack/csp.d.ts.map +0 -1
  206. package/dist/types/lib/webpack/helpers.d.ts.map +0 -1
  207. package/dist/types/lib/webpack/interceptor-middleware.d.ts.map +0 -1
  208. package/dist/types/lib/webpack/webpack.base.babel.d.ts.map +0 -1
  209. package/dist/types/lib/webpack/webpack.dev.babel.d.ts.map +0 -1
  210. package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts.map +0 -1
  211. package/dist/types/lib/webpack/webpack.lib.dev.babel.d.ts.map +0 -1
  212. package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts.map +0 -1
  213. package/dist/types/lib/webpack/webpack.prod.babel.d.ts.map +0 -1
  214. package/dist/types/lib/webpack/webpack.storybook.d.ts.map +0 -1
@@ -35,7 +35,6 @@ var import_config = require("vitest/config");
35
35
  var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
36
36
  var import_vite_tsconfig_paths = __toESM(require("vite-tsconfig-paths"));
37
37
  const vitestConfig = (0, import_config.defineConfig)({
38
- // @ts-expect-error - `react` and `tsconfigPaths` are not part of the default config
39
38
  plugins: [(0, import_plugin_react.default)(), (0, import_vite_tsconfig_paths.default)()],
40
39
  test: {
41
40
  globals: true,
@@ -39,6 +39,8 @@ const defaultOptions = {
39
39
  class CspPlugin {
40
40
  #options = defaultOptions;
41
41
  /**
42
+ *
43
+ * @param htmlWebpackPlugin
42
44
  * @param {object} options Additional options for this module.
43
45
  */
44
46
  constructor(options) {
@@ -46,7 +48,7 @@ class CspPlugin {
46
48
  }
47
49
  /**
48
50
  * Processes HtmlWebpackPlugin's html data by adding the CSP
49
- * @param _compilation
51
+ * @param compilation
50
52
  * @param htmlPluginData
51
53
  * @param htmlPluginData.html
52
54
  * @param compileCb
@@ -41,6 +41,7 @@ var import_moment_locales_webpack_plugin = __toESM(require("moment-locales-webpa
41
41
  var import_webpack_manifest_plugin = require("webpack-manifest-plugin");
42
42
  var import_favicons_webpack_plugin = __toESM(require("favicons-webpack-plugin"));
43
43
  var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"));
44
+ var import_dotenv_webpack = __toESM(require("dotenv-webpack"));
44
45
  var import_helpers = require("./helpers.js");
45
46
  const minicssLoader = {
46
47
  loader: import_mini_css_extract_plugin.default.loader,
@@ -54,6 +55,7 @@ const plugins = [
54
55
  NODE_ENV: "development",
55
56
  CI: "false"
56
57
  }),
58
+ new import_dotenv_webpack.default(),
57
59
  new import_webpack.default.ProvidePlugin({
58
60
  React: "react"
59
61
  }),
@@ -76,6 +78,7 @@ const plugins = [
76
78
  from: "node_modules/@elliemae/pui-user-monitoring/dist/public/js",
77
79
  to: "./latest/js",
78
80
  toType: "dir",
81
+ noErrorOnMissing: true,
79
82
  info: { minimized: true }
80
83
  },
81
84
  // {
@@ -252,11 +255,11 @@ const baseConfig = (options) => ({
252
255
  type: "asset"
253
256
  },
254
257
  {
255
- test: /iframe.html$/i,
258
+ test: /i?frame.html$/i,
256
259
  resourceQuery: /resource/,
257
260
  type: "asset/resource",
258
261
  generator: {
259
- filename: "latest/[name].[hash][ext]"
262
+ filename: "latest/[name].[ext]"
260
263
  },
261
264
  exclude: (0, import_helpers.excludeNodeModulesExcept)(import_helpers.modulesToTranspile)
262
265
  },
@@ -40,6 +40,7 @@ var import_postcss_preset_env = __toESM(require("postcss-preset-env"));
40
40
  var import_moment_locales_webpack_plugin = __toESM(require("moment-locales-webpack-plugin"));
41
41
  var import_resolve_typescript_plugin = __toESM(require("resolve-typescript-plugin"));
42
42
  var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"));
43
+ var import_dotenv_webpack = __toESM(require("dotenv-webpack"));
43
44
  var import_helpers = require("./helpers.js");
44
45
  var import_utils = require("../utils.js");
45
46
  const minicssLoader = {
@@ -63,6 +64,7 @@ const plugins = [
63
64
  ASSET_PATH: "/",
64
65
  CI: "false"
65
66
  }),
67
+ new import_dotenv_webpack.default(),
66
68
  new import_webpack.default.DefinePlugin({
67
69
  APP_CONFIG: (0, import_utils.getAppConfig)()
68
70
  }),
@@ -176,7 +178,7 @@ const baseConfig = (options) => ({
176
178
  type: "asset"
177
179
  },
178
180
  // {
179
- // test: /(?<!\/iframe)\.html$/,
181
+ // test: /(?<!\/i?frame)\.html$/,
180
182
  // exclude: excludeNodeModulesExcept(['@elliemae/*']),
181
183
  // use: 'html-loader',
182
184
  // },
@@ -30,7 +30,7 @@ const lintJS = async (args) => {
30
30
  const fixIssues = args.fix ? "--fix" : "";
31
31
  const debugFlags = args.debug ? "--env-info --debug" : "";
32
32
  await exec(
33
- `eslint --flag unstable_ts_config ${!getCIEnv() ? "--color" : "--no-color"} ${fixIssues} ${debugFlags} .`
33
+ `eslint ${!getCIEnv() ? "--color" : "--no-color"} ${fixIssues} ${debugFlags} .`
34
34
  );
35
35
  };
36
36
  const cmdArgs = {
@@ -128,7 +128,7 @@ const typedTestCmd = {
128
128
  },
129
129
  command: "test [options]",
130
130
  describe: "unit tests application code",
131
- builder: (yargsRef) => yargsRef.options(cmdArgs).help()
131
+ builder: ((yargsRef) => yargsRef.options(cmdArgs).help())
132
132
  // the way yargs types are defined this fails if we don't cast it explicitly
133
133
  // this cast is safe, we are not overriding the builder
134
134
  // just telling typescript that our implementation is compatible with the yargs type system
@@ -3,6 +3,7 @@ import { existsSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import globals from "globals";
5
5
  import eslint from "@eslint/js";
6
+ import { defineConfig } from "eslint/config";
6
7
  import { FlatCompat } from "@eslint/eslintrc";
7
8
  import { includeIgnoreFile } from "@eslint/compat";
8
9
  import tseslint from "typescript-eslint";
@@ -23,210 +24,201 @@ const gitignorePath = path.resolve(process.cwd(), ".gitignore");
23
24
  const compat = new FlatCompat({
24
25
  baseDirectory: __dirname
25
26
  });
26
- const ignores = {
27
- ignores: [
28
- "build/*",
29
- "**/node_modules/",
30
- "dist/*",
31
- "reports/*",
32
- "allure-report/*",
33
- "public/*",
34
- "webroot/*",
35
- "cdn/*",
36
- ".tmp/*",
37
- "coverage/*",
38
- "demo/*",
39
- "docs/*",
40
- "temp/*",
41
- "**/vendor/*.js",
42
- ".docusaurus/*",
43
- ".scannerwork/*",
44
- ".DS_Store/*",
45
- ".nx/*",
46
- ".idea/*",
47
- "*.tgz",
48
- "npm-debug.log",
49
- "stats.json",
50
- "!.storybook"
51
- ]
52
- };
53
- const options = {
54
- languageOptions: {
55
- ecmaVersion: "latest",
56
- sourceType: "module",
57
- globals: {
58
- ...globals.builtin,
59
- ...globals.browser,
60
- ...globals.es2021,
61
- ...globals.nodeBuiltin,
62
- ...globals.node,
63
- ...globals.serviceworker,
64
- ...globals.jest,
65
- ...globals.commonjs,
66
- browser: true,
67
- $: true
68
- },
69
- parserOptions: {
70
- ecmaVersion: "latest",
71
- sourceType: "module",
72
- ecmaFeatures: {
73
- jsx: true
74
- },
75
- project: true,
76
- projectService: true,
77
- tsconfigRootDir: process.cwd()
78
- }
79
- },
80
- settings: {
81
- react: {
82
- version: "detect",
83
- pragma: "React"
84
- },
85
- jest: {
86
- version: "detect"
87
- },
88
- "import-x/parsers": {
89
- espree: [".js", ".cjs", ".mjs", ".jsx"]
90
- },
91
- // "import-x/resolver": {
92
- // node: {
93
- // extensions: [".js", ".jsx", ".ts", ".tsx"],
94
- // },
95
- // typescript: true,
96
- // },
97
- "import/resolver-next": [
98
- createTypeScriptImportResolver({
99
- alwaysTryTypes: true
100
- })
101
- ]
102
- }
103
- };
104
- const e2eTestConfig = {
105
- files: ["**/*.func.spec.{js,ts}", "**/*.visual.spec.{js,ts}"],
106
- extends: [wdioConfig["flat/recommended"]],
107
- rules: {
108
- "jest/valid-expect": "off"
109
- }
110
- };
111
- const jestConfig = {
112
- files: ["**/*.test.{js,jsx,ts,tsx}", "**/testing/**/*.{js,jsx,ts,tsx}"],
113
- extends: [
114
- jest.configs["flat/recommended"],
115
- jest.configs["flat/style"],
116
- testingLibraryConfig.configs["flat/dom"],
117
- testingLibraryConfig.configs["flat/react"]
118
- ]
119
- };
120
- const sbConfig = {
121
- files: ["**/*.stories.{js,jsx,ts,tsx,mdx}"],
122
- extends: [storybookConfig.configs["flat/recommended"]]
123
- };
124
- const jsRulesConfig = {
125
- rules: {
126
- complexity: ["error", { max: 10 }],
127
- "import-x/no-named-as-default-member": "off",
128
- "import-x/no-named-as-default": "off",
129
- "import-x/no-unresolved": [
130
- "error",
131
- { caseSensitive: true, caseSensitiveStrict: true }
132
- ],
133
- "import-x/extensions": [
134
- "error",
135
- "never",
136
- {
137
- json: "ignorePackages",
138
- js: "ignorePackages"
139
- }
140
- ],
141
- "max-depth": ["error", { max: 4 }],
142
- "max-nested-callbacks": ["error", { max: 3 }],
143
- "max-params": ["error", { max: 3 }],
144
- "max-statements": ["error", { max: 20 }],
145
- "no-console": "warn",
146
- "no-param-reassign": ["error", { props: false }],
147
- "no-unused-vars": "off",
148
- "prefer-template": "error"
149
- }
150
- };
151
- const tsConfig = {
152
- ignores: ["**/*.{js,jsx,mjs,cjs,mdx,md}"],
153
- extends: [
154
- tseslint.configs.recommendedTypeChecked,
155
- tseslint.configs.stylisticTypeChecked
156
- ],
157
- rules: {
158
- "@typescript-eslint/no-unused-vars": [
159
- "error",
160
- {
161
- args: "all",
162
- argsIgnorePattern: "^_",
163
- caughtErrors: "all",
164
- caughtErrorsIgnorePattern: "^_",
165
- destructuredArrayIgnorePattern: "^_",
166
- varsIgnorePattern: "^_",
167
- ignoreRestSiblings: true
168
- }
169
- ],
170
- "@typescript-eslint/unbound-method": [
171
- "error",
172
- {
173
- ignoreStatic: true
174
- }
27
+ const gitignoreExists = existsSync(gitignorePath);
28
+ let gitIgnoreConfig = {};
29
+ if (gitignoreExists) {
30
+ gitIgnoreConfig = includeIgnoreFile(gitignorePath) ?? {};
31
+ }
32
+ const config = defineConfig([
33
+ gitIgnoreConfig,
34
+ {
35
+ ignores: [
36
+ "build/*",
37
+ "**/node_modules/",
38
+ "dist/*",
39
+ "reports/*",
40
+ "allure-report/*",
41
+ "public/*",
42
+ "webroot/*",
43
+ "cdn/*",
44
+ ".tmp/*",
45
+ "coverage/*",
46
+ "demo/*",
47
+ "docs/*",
48
+ "temp/*",
49
+ "**/vendor/*.js",
50
+ ".docusaurus/*",
51
+ ".scannerwork/*",
52
+ ".DS_Store/*",
53
+ ".nx/*",
54
+ ".idea/*",
55
+ "*.tgz",
56
+ "npm-debug.log",
57
+ "stats.json",
58
+ "!.storybook"
175
59
  ]
176
- }
177
- };
178
- const reactConfig = {
179
- files: ["**/*.{jsx,tsx}"],
180
- extends: [
181
- reactPlugin.configs.flat.recommended,
182
- reactPlugin.configs.flat["jsx-runtime"],
183
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
184
- jsxA11yConfig.flatConfigs.recommended,
185
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
186
- ...compat.extends("plugin:redux-saga/recommended")
187
- ],
188
- languageOptions: {
189
- ...reactPlugin.configs.flat.recommended.languageOptions
190
- },
191
- plugins: {
192
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
193
- "react-hooks": reactHookPlugin
194
60
  },
195
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
196
- rules: {
197
- "react/prop-types": ["error", { skipUndeclared: true }],
198
- "react/display-name": "off",
199
- "react/function-component-definition": [
200
- 2,
201
- { namedComponents: "arrow-function" }
202
- ],
203
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
204
- ...reactHookPlugin.configs.recommended.rules
205
- }
206
- };
207
- const gitignorExists = existsSync(gitignorePath);
208
- const tseslintConfigArgs = [ignores];
209
- if (gitignorExists) {
210
- tseslintConfigArgs.push(includeIgnoreFile(gitignorePath));
211
- }
212
- tseslintConfigArgs.push(
213
61
  {
214
62
  ignores: ["**/*.stories.mdx"],
215
63
  extends: [mdx.flat]
216
64
  },
217
65
  eslint.configs.recommended,
218
- tsConfig,
66
+ {
67
+ ignores: ["**/*.{js,jsx,mjs,cjs,mdx,md}"],
68
+ extends: [
69
+ tseslint.configs.recommendedTypeChecked,
70
+ tseslint.configs.stylisticTypeChecked
71
+ ],
72
+ rules: {
73
+ "@typescript-eslint/no-unused-vars": [
74
+ "error",
75
+ {
76
+ args: "all",
77
+ argsIgnorePattern: "^_",
78
+ caughtErrors: "all",
79
+ caughtErrorsIgnorePattern: "^_",
80
+ destructuredArrayIgnorePattern: "^_",
81
+ varsIgnorePattern: "^_",
82
+ ignoreRestSiblings: true
83
+ }
84
+ ],
85
+ "@typescript-eslint/unbound-method": [
86
+ "error",
87
+ {
88
+ ignoreStatic: true
89
+ }
90
+ ]
91
+ }
92
+ },
219
93
  eslintPluginImportX.flatConfigs.recommended,
220
94
  eslintPluginImportX.flatConfigs.typescript,
221
- jestConfig,
95
+ {
96
+ files: ["**/*.test.{js,jsx,ts,tsx}", "**/testing/**/*.{js,jsx,ts,tsx}"],
97
+ ...jest.configs["flat/recommended"],
98
+ ...jest.configs["flat/style"],
99
+ ...testingLibraryConfig.configs["flat/dom"],
100
+ ...testingLibraryConfig.configs["flat/react"]
101
+ },
222
102
  prettierRecommended,
223
- reactConfig,
224
- e2eTestConfig,
225
- sbConfig,
226
- jsRulesConfig,
227
- options
228
- );
229
- const config = tseslint.config(...tseslintConfigArgs);
103
+ {
104
+ files: ["**/*.{jsx,tsx}"],
105
+ ...reactPlugin.configs.flat.recommended,
106
+ ...reactPlugin.configs.flat["jsx-runtime"],
107
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
108
+ ...jsxA11yConfig.flatConfigs.recommended,
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
110
+ ...compat.extends("plugin:redux-saga/recommended"),
111
+ languageOptions: {
112
+ ...reactPlugin.configs.flat.recommended.languageOptions
113
+ },
114
+ plugins: {
115
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
116
+ "react-hooks": reactHookPlugin
117
+ },
118
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
119
+ rules: {
120
+ "react/prop-types": ["error", { skipUndeclared: true }],
121
+ "react/display-name": "off",
122
+ "react/function-component-definition": [
123
+ 2,
124
+ { namedComponents: "arrow-function" }
125
+ ],
126
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
127
+ ...reactHookPlugin.configs.recommended.rules
128
+ }
129
+ },
130
+ {
131
+ files: ["**/*.func.spec.{js,ts}", "**/*.visual.spec.{js,ts}"],
132
+ extends: [wdioConfig["flat/recommended"]],
133
+ rules: {
134
+ "jest/valid-expect": "off"
135
+ }
136
+ },
137
+ {
138
+ files: ["**/*.stories.{js,jsx,ts,tsx,mdx}"],
139
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
140
+ // @ts-ignore
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
142
+ extends: [storybookConfig.configs["flat/recommended"]]
143
+ },
144
+ {
145
+ rules: {
146
+ complexity: ["error", { max: 10 }],
147
+ "import-x/no-named-as-default-member": "off",
148
+ "import-x/no-named-as-default": "off",
149
+ "import-x/no-unresolved": [
150
+ "error",
151
+ { caseSensitive: true, caseSensitiveStrict: true }
152
+ ],
153
+ "import-x/extensions": [
154
+ "error",
155
+ "never",
156
+ {
157
+ json: "ignorePackages",
158
+ js: "ignorePackages"
159
+ }
160
+ ],
161
+ "max-depth": ["error", { max: 4 }],
162
+ "max-nested-callbacks": ["error", { max: 3 }],
163
+ "max-params": ["error", { max: 3 }],
164
+ "max-statements": ["error", { max: 20 }],
165
+ "no-console": "warn",
166
+ "no-param-reassign": ["error", { props: false }],
167
+ "no-unused-vars": "off",
168
+ "prefer-template": "error"
169
+ }
170
+ },
171
+ {
172
+ languageOptions: {
173
+ ecmaVersion: "latest",
174
+ sourceType: "module",
175
+ globals: {
176
+ ...globals.builtin,
177
+ ...globals.browser,
178
+ ...globals.es2021,
179
+ ...globals.nodeBuiltin,
180
+ ...globals.node,
181
+ ...globals.serviceworker,
182
+ ...globals.jest,
183
+ ...globals.commonjs,
184
+ browser: true,
185
+ $: true
186
+ },
187
+ parserOptions: {
188
+ ecmaVersion: "latest",
189
+ sourceType: "module",
190
+ ecmaFeatures: {
191
+ jsx: true
192
+ },
193
+ projectService: true,
194
+ tsconfigRootDir: process.cwd()
195
+ }
196
+ },
197
+ settings: {
198
+ react: {
199
+ version: "detect",
200
+ pragma: "React"
201
+ },
202
+ jest: {
203
+ version: "detect"
204
+ },
205
+ "import-x/parsers": {
206
+ espree: [".js", ".cjs", ".mjs", ".jsx"]
207
+ },
208
+ // "import-x/resolver": {
209
+ // node: {
210
+ // extensions: [".js", ".jsx", ".ts", ".tsx"],
211
+ // },
212
+ // typescript: true,
213
+ // },
214
+ "import/resolver-next": [
215
+ createTypeScriptImportResolver({
216
+ alwaysTryTypes: true
217
+ })
218
+ ]
219
+ }
220
+ }
221
+ ]);
230
222
  export {
231
223
  config
232
224
  };
@@ -2,9 +2,11 @@ var release_config_default = {
2
2
  branches: [
3
3
  "+([0-9])?(.{+([0-9]),x}).x",
4
4
  "master",
5
+ "main",
5
6
  "next-major",
6
7
  { name: "beta", prerelease: true },
7
8
  { name: "alpha", prerelease: true },
9
+ { name: "rc", prerelease: true },
8
10
  { name: "hotfix", prerelease: true },
9
11
  { name: "next", prerelease: true }
10
12
  ],
@@ -30,7 +30,9 @@ const loadRoutes = async (app) => {
30
30
  const routeFileURL = pathToFileURL(routeFile).href;
31
31
  const { default: init } = await import(routeFileURL);
32
32
  try {
33
- if (typeof init === "function") init(app);
33
+ if (typeof init === "function") {
34
+ await init(app);
35
+ }
34
36
  } catch (err) {
35
37
  console.error(
36
38
  `unable to load routes from ${routeFile}. ${err.message}`
@@ -21,18 +21,22 @@ const sendFileWithCSPNonce = ({
21
21
  res,
22
22
  fileSystem = fs
23
23
  }) => {
24
- fileSystem.readFile(path.resolve(buildPath, page), "utf8", (err, html) => {
25
- if (err) {
26
- res.sendStatus(404);
27
- } else {
28
- res.set("Content-Type", "text/html");
29
- res.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
30
- res.set(
31
- "Permissions-Policy",
32
- "geolocation=(), camera=(), microphone=(), interest-cohort=()"
33
- );
34
- res.send(html.replace(nonceRegex, res.locals.cspNonce));
35
- }
24
+ return new Promise((resolve) => {
25
+ fileSystem.readFile(path.resolve(buildPath, page), "utf8", (err, html) => {
26
+ const r = res;
27
+ if (err) {
28
+ r.sendStatus(404);
29
+ } else {
30
+ r.set("Content-Type", "text/html");
31
+ r.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
32
+ r.set(
33
+ "Permissions-Policy",
34
+ "geolocation=(), camera=(), microphone=(), interest-cohort=()"
35
+ );
36
+ r.send(html.replace(nonceRegex, r.locals.cspNonce ?? ""));
37
+ }
38
+ resolve();
39
+ });
36
40
  });
37
41
  };
38
42
  const getScriptSrc = () => {
@@ -11,20 +11,29 @@ import { port, wsPort, host } from "./utils.js";
11
11
  import { isHttps } from "../utils.js";
12
12
  import { loadRoutes } from "./appRoutes.js";
13
13
  import { createWSServer } from "./wsServer.js";
14
- void async function startServer() {
15
- const app = express();
16
- setupDefaultMiddlewares(app);
17
- await loadRoutes(app);
18
- setupAdditionalMiddlewars(app);
19
- const server = isHttps() ? https.createServer(getCertOptions(), app) : http.createServer(app);
20
- server.listen(port, host, () => {
21
- logger.appStarted(port.toString(), host || "localhost");
22
- }).on("error", (err) => {
14
+ void (async function startServer() {
15
+ try {
16
+ const app = express();
17
+ setupDefaultMiddlewares(app);
18
+ await loadRoutes(app);
19
+ setupAdditionalMiddlewars(app);
20
+ const server = isHttps() ? https.createServer(getCertOptions(), app) : http.createServer(app);
21
+ server.listen(port, host, () => {
22
+ logger.appStarted(port.toString(), host || "localhost");
23
+ }).on("error", (err) => {
24
+ logger.error(err);
25
+ process.exit(1);
26
+ });
27
+ const { wsServer } = await createWSServer({
28
+ port: wsPort
29
+ });
30
+ app.locals.wsServer = wsServer;
31
+ } catch (err) {
23
32
  logger.error(err);
24
33
  process.exit(1);
25
- });
26
- const { wsServer } = await createWSServer({
27
- port: wsPort
28
- });
29
- app.locals.wsServer = wsServer;
30
- }();
34
+ }
35
+ })();
36
+ process.on("unhandledRejection", (reason) => {
37
+ logger.error(reason);
38
+ process.exit(1);
39
+ });
@@ -2,12 +2,12 @@ import express from "express";
2
2
  import cors from "cors";
3
3
  import compression from "compression";
4
4
  import expressStaticGzip from "express-static-gzip";
5
- import pinoLogger from "pino-http";
5
+ import { pinoHttp } from "pino-http";
6
6
  import { csp, sendFileWithCSPNonce } from "./csp.js";
7
7
  import { getPaths } from "../webpack/helpers.js";
8
8
  const paths = getPaths();
9
9
  const setupDefaultMiddlewares = (app) => {
10
- const pino = pinoLogger({
10
+ const pino = pinoHttp({
11
11
  transport: {
12
12
  target: "pino-pretty",
13
13
  options: {
@@ -27,8 +27,8 @@ const setupDefaultMiddlewares = (app) => {
27
27
  const setupAdditionalMiddlewars = (app, options = {}) => {
28
28
  const { buildPath = paths.buildPath, basePath = paths.basePath } = options;
29
29
  app.use(compression());
30
- app.get(basePath, (_req, res) => {
31
- sendFileWithCSPNonce({ buildPath, res });
30
+ app.get(basePath, async (_req, res) => {
31
+ await sendFileWithCSPNonce({ buildPath, res });
32
32
  });
33
33
  app.use(
34
34
  basePath,
@@ -39,10 +39,13 @@ const setupAdditionalMiddlewars = (app, options = {}) => {
39
39
  })
40
40
  );
41
41
  app.use(expressStaticGzip("cdn", {}));
42
- app.get(
43
- "*",
44
- (_req, res) => sendFileWithCSPNonce({ buildPath, res })
45
- );
42
+ app.get("*", async (_req, res) => {
43
+ await sendFileWithCSPNonce({ buildPath, res });
44
+ });
45
+ app.use(function(err, _req, res, _next) {
46
+ console.error("Express error:", err);
47
+ res.status(500).send("Internal Server Error");
48
+ });
46
49
  return app;
47
50
  };
48
51
  export {