@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
package/app.tsconfig.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "lib": ["dom", "dom.iterable", "esnext"],
4
- "moduleResolution": "bundler",
5
- "module": "esnext",
6
- "target": "es2020",
3
+ "lib": ["dom", "dom.iterable", "ES2022"],
4
+ "module": "ESNext",
5
+ "target": "ES2022",
7
6
  "allowJs": true,
8
7
  "allowSyntheticDefaultImports": true,
9
8
  "esModuleInterop": true,
@@ -56,7 +56,7 @@ const lintJS = async (args) => {
56
56
  const fixIssues = args.fix ? "--fix" : "";
57
57
  const debugFlags = args.debug ? "--env-info --debug" : "";
58
58
  await (0, import_utils.exec)(
59
- `eslint --flag unstable_ts_config ${!(0, import_utils.getCIEnv)() ? "--color" : "--no-color"} ${fixIssues} ${debugFlags} .`
59
+ `eslint ${!(0, import_utils.getCIEnv)() ? "--color" : "--no-color"} ${fixIssues} ${debugFlags} .`
60
60
  );
61
61
  };
62
62
  const cmdArgs = {
@@ -161,7 +161,7 @@ const typedTestCmd = {
161
161
  },
162
162
  command: "test [options]",
163
163
  describe: "unit tests application code",
164
- builder: (yargsRef) => yargsRef.options(cmdArgs).help()
164
+ builder: ((yargsRef) => yargsRef.options(cmdArgs).help())
165
165
  // the way yargs types are defined this fails if we don't cast it explicitly
166
166
  // this cast is safe, we are not overriding the builder
167
167
  // just telling typescript that our implementation is compatible with the yargs type system
@@ -36,6 +36,7 @@ var import_node_fs = require("node:fs");
36
36
  var import_node_url = require("node:url");
37
37
  var import_globals = __toESM(require("globals"));
38
38
  var import_js = __toESM(require("@eslint/js"));
39
+ var import_config = require("eslint/config");
39
40
  var import_eslintrc = require("@eslint/eslintrc");
40
41
  var import_compat = require("@eslint/compat");
41
42
  var import_typescript_eslint = __toESM(require("typescript-eslint"));
@@ -57,207 +58,198 @@ const gitignorePath = import_node_path.default.resolve(process.cwd(), ".gitignor
57
58
  const compat = new import_eslintrc.FlatCompat({
58
59
  baseDirectory: __dirname
59
60
  });
60
- const ignores = {
61
- ignores: [
62
- "build/*",
63
- "**/node_modules/",
64
- "dist/*",
65
- "reports/*",
66
- "allure-report/*",
67
- "public/*",
68
- "webroot/*",
69
- "cdn/*",
70
- ".tmp/*",
71
- "coverage/*",
72
- "demo/*",
73
- "docs/*",
74
- "temp/*",
75
- "**/vendor/*.js",
76
- ".docusaurus/*",
77
- ".scannerwork/*",
78
- ".DS_Store/*",
79
- ".nx/*",
80
- ".idea/*",
81
- "*.tgz",
82
- "npm-debug.log",
83
- "stats.json",
84
- "!.storybook"
85
- ]
86
- };
87
- const options = {
88
- languageOptions: {
89
- ecmaVersion: "latest",
90
- sourceType: "module",
91
- globals: {
92
- ...import_globals.default.builtin,
93
- ...import_globals.default.browser,
94
- ...import_globals.default.es2021,
95
- ...import_globals.default.nodeBuiltin,
96
- ...import_globals.default.node,
97
- ...import_globals.default.serviceworker,
98
- ...import_globals.default.jest,
99
- ...import_globals.default.commonjs,
100
- browser: true,
101
- $: true
102
- },
103
- parserOptions: {
104
- ecmaVersion: "latest",
105
- sourceType: "module",
106
- ecmaFeatures: {
107
- jsx: true
108
- },
109
- project: true,
110
- projectService: true,
111
- tsconfigRootDir: process.cwd()
112
- }
113
- },
114
- settings: {
115
- react: {
116
- version: "detect",
117
- pragma: "React"
118
- },
119
- jest: {
120
- version: "detect"
121
- },
122
- "import-x/parsers": {
123
- espree: [".js", ".cjs", ".mjs", ".jsx"]
124
- },
125
- // "import-x/resolver": {
126
- // node: {
127
- // extensions: [".js", ".jsx", ".ts", ".tsx"],
128
- // },
129
- // typescript: true,
130
- // },
131
- "import/resolver-next": [
132
- (0, import_eslint_import_resolver_typescript.createTypeScriptImportResolver)({
133
- alwaysTryTypes: true
134
- })
135
- ]
136
- }
137
- };
138
- const e2eTestConfig = {
139
- files: ["**/*.func.spec.{js,ts}", "**/*.visual.spec.{js,ts}"],
140
- extends: [import_eslint_plugin_wdio.configs["flat/recommended"]],
141
- rules: {
142
- "jest/valid-expect": "off"
143
- }
144
- };
145
- const jestConfig = {
146
- files: ["**/*.test.{js,jsx,ts,tsx}", "**/testing/**/*.{js,jsx,ts,tsx}"],
147
- extends: [
148
- import_eslint_plugin_jest.default.configs["flat/recommended"],
149
- import_eslint_plugin_jest.default.configs["flat/style"],
150
- import_eslint_plugin_testing_library.default.configs["flat/dom"],
151
- import_eslint_plugin_testing_library.default.configs["flat/react"]
152
- ]
153
- };
154
- const sbConfig = {
155
- files: ["**/*.stories.{js,jsx,ts,tsx,mdx}"],
156
- extends: [import_eslint_plugin_storybook.default.configs["flat/recommended"]]
157
- };
158
- const jsRulesConfig = {
159
- rules: {
160
- complexity: ["error", { max: 10 }],
161
- "import-x/no-named-as-default-member": "off",
162
- "import-x/no-named-as-default": "off",
163
- "import-x/no-unresolved": [
164
- "error",
165
- { caseSensitive: true, caseSensitiveStrict: true }
166
- ],
167
- "import-x/extensions": [
168
- "error",
169
- "never",
170
- {
171
- json: "ignorePackages",
172
- js: "ignorePackages"
173
- }
174
- ],
175
- "max-depth": ["error", { max: 4 }],
176
- "max-nested-callbacks": ["error", { max: 3 }],
177
- "max-params": ["error", { max: 3 }],
178
- "max-statements": ["error", { max: 20 }],
179
- "no-console": "warn",
180
- "no-param-reassign": ["error", { props: false }],
181
- "no-unused-vars": "off",
182
- "prefer-template": "error"
183
- }
184
- };
185
- const tsConfig = {
186
- ignores: ["**/*.{js,jsx,mjs,cjs,mdx,md}"],
187
- extends: [
188
- import_typescript_eslint.default.configs.recommendedTypeChecked,
189
- import_typescript_eslint.default.configs.stylisticTypeChecked
190
- ],
191
- rules: {
192
- "@typescript-eslint/no-unused-vars": [
193
- "error",
194
- {
195
- args: "all",
196
- argsIgnorePattern: "^_",
197
- caughtErrors: "all",
198
- caughtErrorsIgnorePattern: "^_",
199
- destructuredArrayIgnorePattern: "^_",
200
- varsIgnorePattern: "^_",
201
- ignoreRestSiblings: true
202
- }
203
- ],
204
- "@typescript-eslint/unbound-method": [
205
- "error",
206
- {
207
- ignoreStatic: true
208
- }
61
+ const gitignoreExists = (0, import_node_fs.existsSync)(gitignorePath);
62
+ let gitIgnoreConfig = {};
63
+ if (gitignoreExists) {
64
+ gitIgnoreConfig = (0, import_compat.includeIgnoreFile)(gitignorePath) ?? {};
65
+ }
66
+ const config = (0, import_config.defineConfig)([
67
+ gitIgnoreConfig,
68
+ {
69
+ ignores: [
70
+ "build/*",
71
+ "**/node_modules/",
72
+ "dist/*",
73
+ "reports/*",
74
+ "allure-report/*",
75
+ "public/*",
76
+ "webroot/*",
77
+ "cdn/*",
78
+ ".tmp/*",
79
+ "coverage/*",
80
+ "demo/*",
81
+ "docs/*",
82
+ "temp/*",
83
+ "**/vendor/*.js",
84
+ ".docusaurus/*",
85
+ ".scannerwork/*",
86
+ ".DS_Store/*",
87
+ ".nx/*",
88
+ ".idea/*",
89
+ "*.tgz",
90
+ "npm-debug.log",
91
+ "stats.json",
92
+ "!.storybook"
209
93
  ]
210
- }
211
- };
212
- const reactConfig = {
213
- files: ["**/*.{jsx,tsx}"],
214
- extends: [
215
- import_eslint_plugin_react.default.configs.flat.recommended,
216
- import_eslint_plugin_react.default.configs.flat["jsx-runtime"],
217
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
218
- import_eslint_plugin_jsx_a11y.default.flatConfigs.recommended,
219
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
220
- ...compat.extends("plugin:redux-saga/recommended")
221
- ],
222
- languageOptions: {
223
- ...import_eslint_plugin_react.default.configs.flat.recommended.languageOptions
224
- },
225
- plugins: {
226
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
227
- "react-hooks": import_eslint_plugin_react_hooks.default
228
94
  },
229
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
230
- rules: {
231
- "react/prop-types": ["error", { skipUndeclared: true }],
232
- "react/display-name": "off",
233
- "react/function-component-definition": [
234
- 2,
235
- { namedComponents: "arrow-function" }
236
- ],
237
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
238
- ...import_eslint_plugin_react_hooks.default.configs.recommended.rules
239
- }
240
- };
241
- const gitignorExists = (0, import_node_fs.existsSync)(gitignorePath);
242
- const tseslintConfigArgs = [ignores];
243
- if (gitignorExists) {
244
- tseslintConfigArgs.push((0, import_compat.includeIgnoreFile)(gitignorePath));
245
- }
246
- tseslintConfigArgs.push(
247
95
  {
248
96
  ignores: ["**/*.stories.mdx"],
249
97
  extends: [mdx.flat]
250
98
  },
251
99
  import_js.default.configs.recommended,
252
- tsConfig,
100
+ {
101
+ ignores: ["**/*.{js,jsx,mjs,cjs,mdx,md}"],
102
+ extends: [
103
+ import_typescript_eslint.default.configs.recommendedTypeChecked,
104
+ import_typescript_eslint.default.configs.stylisticTypeChecked
105
+ ],
106
+ rules: {
107
+ "@typescript-eslint/no-unused-vars": [
108
+ "error",
109
+ {
110
+ args: "all",
111
+ argsIgnorePattern: "^_",
112
+ caughtErrors: "all",
113
+ caughtErrorsIgnorePattern: "^_",
114
+ destructuredArrayIgnorePattern: "^_",
115
+ varsIgnorePattern: "^_",
116
+ ignoreRestSiblings: true
117
+ }
118
+ ],
119
+ "@typescript-eslint/unbound-method": [
120
+ "error",
121
+ {
122
+ ignoreStatic: true
123
+ }
124
+ ]
125
+ }
126
+ },
253
127
  import_eslint_plugin_import_x.default.flatConfigs.recommended,
254
128
  import_eslint_plugin_import_x.default.flatConfigs.typescript,
255
- jestConfig,
129
+ {
130
+ files: ["**/*.test.{js,jsx,ts,tsx}", "**/testing/**/*.{js,jsx,ts,tsx}"],
131
+ ...import_eslint_plugin_jest.default.configs["flat/recommended"],
132
+ ...import_eslint_plugin_jest.default.configs["flat/style"],
133
+ ...import_eslint_plugin_testing_library.default.configs["flat/dom"],
134
+ ...import_eslint_plugin_testing_library.default.configs["flat/react"]
135
+ },
256
136
  import_recommended.default,
257
- reactConfig,
258
- e2eTestConfig,
259
- sbConfig,
260
- jsRulesConfig,
261
- options
262
- );
263
- const config = import_typescript_eslint.default.config(...tseslintConfigArgs);
137
+ {
138
+ files: ["**/*.{jsx,tsx}"],
139
+ ...import_eslint_plugin_react.default.configs.flat.recommended,
140
+ ...import_eslint_plugin_react.default.configs.flat["jsx-runtime"],
141
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
142
+ ...import_eslint_plugin_jsx_a11y.default.flatConfigs.recommended,
143
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
144
+ ...compat.extends("plugin:redux-saga/recommended"),
145
+ languageOptions: {
146
+ ...import_eslint_plugin_react.default.configs.flat.recommended.languageOptions
147
+ },
148
+ plugins: {
149
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
150
+ "react-hooks": import_eslint_plugin_react_hooks.default
151
+ },
152
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
153
+ rules: {
154
+ "react/prop-types": ["error", { skipUndeclared: true }],
155
+ "react/display-name": "off",
156
+ "react/function-component-definition": [
157
+ 2,
158
+ { namedComponents: "arrow-function" }
159
+ ],
160
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
161
+ ...import_eslint_plugin_react_hooks.default.configs.recommended.rules
162
+ }
163
+ },
164
+ {
165
+ files: ["**/*.func.spec.{js,ts}", "**/*.visual.spec.{js,ts}"],
166
+ extends: [import_eslint_plugin_wdio.configs["flat/recommended"]],
167
+ rules: {
168
+ "jest/valid-expect": "off"
169
+ }
170
+ },
171
+ {
172
+ files: ["**/*.stories.{js,jsx,ts,tsx,mdx}"],
173
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
174
+ // @ts-ignore
175
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
176
+ extends: [import_eslint_plugin_storybook.default.configs["flat/recommended"]]
177
+ },
178
+ {
179
+ rules: {
180
+ complexity: ["error", { max: 10 }],
181
+ "import-x/no-named-as-default-member": "off",
182
+ "import-x/no-named-as-default": "off",
183
+ "import-x/no-unresolved": [
184
+ "error",
185
+ { caseSensitive: true, caseSensitiveStrict: true }
186
+ ],
187
+ "import-x/extensions": [
188
+ "error",
189
+ "never",
190
+ {
191
+ json: "ignorePackages",
192
+ js: "ignorePackages"
193
+ }
194
+ ],
195
+ "max-depth": ["error", { max: 4 }],
196
+ "max-nested-callbacks": ["error", { max: 3 }],
197
+ "max-params": ["error", { max: 3 }],
198
+ "max-statements": ["error", { max: 20 }],
199
+ "no-console": "warn",
200
+ "no-param-reassign": ["error", { props: false }],
201
+ "no-unused-vars": "off",
202
+ "prefer-template": "error"
203
+ }
204
+ },
205
+ {
206
+ languageOptions: {
207
+ ecmaVersion: "latest",
208
+ sourceType: "module",
209
+ globals: {
210
+ ...import_globals.default.builtin,
211
+ ...import_globals.default.browser,
212
+ ...import_globals.default.es2021,
213
+ ...import_globals.default.nodeBuiltin,
214
+ ...import_globals.default.node,
215
+ ...import_globals.default.serviceworker,
216
+ ...import_globals.default.jest,
217
+ ...import_globals.default.commonjs,
218
+ browser: true,
219
+ $: true
220
+ },
221
+ parserOptions: {
222
+ ecmaVersion: "latest",
223
+ sourceType: "module",
224
+ ecmaFeatures: {
225
+ jsx: true
226
+ },
227
+ projectService: true,
228
+ tsconfigRootDir: process.cwd()
229
+ }
230
+ },
231
+ settings: {
232
+ react: {
233
+ version: "detect",
234
+ pragma: "React"
235
+ },
236
+ jest: {
237
+ version: "detect"
238
+ },
239
+ "import-x/parsers": {
240
+ espree: [".js", ".cjs", ".mjs", ".jsx"]
241
+ },
242
+ // "import-x/resolver": {
243
+ // node: {
244
+ // extensions: [".js", ".jsx", ".ts", ".tsx"],
245
+ // },
246
+ // typescript: true,
247
+ // },
248
+ "import/resolver-next": [
249
+ (0, import_eslint_import_resolver_typescript.createTypeScriptImportResolver)({
250
+ alwaysTryTypes: true
251
+ })
252
+ ]
253
+ }
254
+ }
255
+ ]);
@@ -25,9 +25,11 @@ var release_config_default = {
25
25
  branches: [
26
26
  "+([0-9])?(.{+([0-9]),x}).x",
27
27
  "master",
28
+ "main",
28
29
  "next-major",
29
30
  { name: "beta", prerelease: true },
30
31
  { name: "alpha", prerelease: true },
32
+ { name: "rc", prerelease: true },
31
33
  { name: "hotfix", prerelease: true },
32
34
  { name: "next", prerelease: true }
33
35
  ],
@@ -63,7 +63,9 @@ const loadRoutes = async (app) => {
63
63
  const routeFileURL = (0, import_node_url.pathToFileURL)(routeFile).href;
64
64
  const { default: init } = await import(routeFileURL);
65
65
  try {
66
- if (typeof init === "function") init(app);
66
+ if (typeof init === "function") {
67
+ await init(app);
68
+ }
67
69
  } catch (err) {
68
70
  console.error(
69
71
  `unable to load routes from ${routeFile}. ${err.message}`
@@ -55,18 +55,22 @@ const sendFileWithCSPNonce = ({
55
55
  res,
56
56
  fileSystem = import_node_fs.default
57
57
  }) => {
58
- fileSystem.readFile(import_node_path.default.resolve(buildPath, page), "utf8", (err, html) => {
59
- if (err) {
60
- res.sendStatus(404);
61
- } else {
62
- res.set("Content-Type", "text/html");
63
- res.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
64
- res.set(
65
- "Permissions-Policy",
66
- "geolocation=(), camera=(), microphone=(), interest-cohort=()"
67
- );
68
- res.send(html.replace(nonceRegex, res.locals.cspNonce));
69
- }
58
+ return new Promise((resolve) => {
59
+ fileSystem.readFile(import_node_path.default.resolve(buildPath, page), "utf8", (err, html) => {
60
+ const r = res;
61
+ if (err) {
62
+ r.sendStatus(404);
63
+ } else {
64
+ r.set("Content-Type", "text/html");
65
+ r.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
66
+ r.set(
67
+ "Permissions-Policy",
68
+ "geolocation=(), camera=(), microphone=(), interest-cohort=()"
69
+ );
70
+ r.send(html.replace(nonceRegex, r.locals.cspNonce ?? ""));
71
+ }
72
+ resolve();
73
+ });
70
74
  });
71
75
  };
72
76
  const getScriptSrc = () => {
@@ -31,20 +31,29 @@ var import_utils = require("./utils.js");
31
31
  var import_utils2 = require("../utils.js");
32
32
  var import_appRoutes = require("./appRoutes.js");
33
33
  var import_wsServer = require("./wsServer.js");
34
- void async function startServer() {
35
- const app = (0, import_express.default)();
36
- (0, import_middlewares.setupDefaultMiddlewares)(app);
37
- await (0, import_appRoutes.loadRoutes)(app);
38
- (0, import_middlewares.setupAdditionalMiddlewars)(app);
39
- const server = (0, import_utils2.isHttps)() ? import_node_https.default.createServer((0, import_cert.getCertOptions)(), app) : import_node_http.default.createServer(app);
40
- server.listen(import_utils.port, import_utils.host, () => {
41
- import_logger.logger.appStarted(import_utils.port.toString(), import_utils.host || "localhost");
42
- }).on("error", (err) => {
34
+ void (async function startServer() {
35
+ try {
36
+ const app = (0, import_express.default)();
37
+ (0, import_middlewares.setupDefaultMiddlewares)(app);
38
+ await (0, import_appRoutes.loadRoutes)(app);
39
+ (0, import_middlewares.setupAdditionalMiddlewars)(app);
40
+ const server = (0, import_utils2.isHttps)() ? import_node_https.default.createServer((0, import_cert.getCertOptions)(), app) : import_node_http.default.createServer(app);
41
+ server.listen(import_utils.port, import_utils.host, () => {
42
+ import_logger.logger.appStarted(import_utils.port.toString(), import_utils.host || "localhost");
43
+ }).on("error", (err) => {
44
+ import_logger.logger.error(err);
45
+ process.exit(1);
46
+ });
47
+ const { wsServer } = await (0, import_wsServer.createWSServer)({
48
+ port: import_utils.wsPort
49
+ });
50
+ app.locals.wsServer = wsServer;
51
+ } catch (err) {
43
52
  import_logger.logger.error(err);
44
53
  process.exit(1);
45
- });
46
- const { wsServer } = await (0, import_wsServer.createWSServer)({
47
- port: import_utils.wsPort
48
- });
49
- app.locals.wsServer = wsServer;
50
- }();
54
+ }
55
+ })();
56
+ process.on("unhandledRejection", (reason) => {
57
+ import_logger.logger.error(reason);
58
+ process.exit(1);
59
+ });
@@ -36,12 +36,12 @@ var import_express = __toESM(require("express"));
36
36
  var import_cors = __toESM(require("cors"));
37
37
  var import_compression = __toESM(require("compression"));
38
38
  var import_express_static_gzip = __toESM(require("express-static-gzip"));
39
- var import_pino_http = __toESM(require("pino-http"));
39
+ var import_pino_http = require("pino-http");
40
40
  var import_csp = require("./csp.js");
41
41
  var import_helpers = require("../webpack/helpers.js");
42
42
  const paths = (0, import_helpers.getPaths)();
43
43
  const setupDefaultMiddlewares = (app) => {
44
- const pino = (0, import_pino_http.default)({
44
+ const pino = (0, import_pino_http.pinoHttp)({
45
45
  transport: {
46
46
  target: "pino-pretty",
47
47
  options: {
@@ -61,8 +61,8 @@ const setupDefaultMiddlewares = (app) => {
61
61
  const setupAdditionalMiddlewars = (app, options = {}) => {
62
62
  const { buildPath = paths.buildPath, basePath = paths.basePath } = options;
63
63
  app.use((0, import_compression.default)());
64
- app.get(basePath, (_req, res) => {
65
- (0, import_csp.sendFileWithCSPNonce)({ buildPath, res });
64
+ app.get(basePath, async (_req, res) => {
65
+ await (0, import_csp.sendFileWithCSPNonce)({ buildPath, res });
66
66
  });
67
67
  app.use(
68
68
  basePath,
@@ -73,9 +73,12 @@ const setupAdditionalMiddlewars = (app, options = {}) => {
73
73
  })
74
74
  );
75
75
  app.use((0, import_express_static_gzip.default)("cdn", {}));
76
- app.get(
77
- "*",
78
- (_req, res) => (0, import_csp.sendFileWithCSPNonce)({ buildPath, res })
79
- );
76
+ app.get("*", async (_req, res) => {
77
+ await (0, import_csp.sendFileWithCSPNonce)({ buildPath, res });
78
+ });
79
+ app.use(function(err, _req, res, _next) {
80
+ console.error("Express error:", err);
81
+ res.status(500).send("Internal Server Error");
82
+ });
80
83
  return app;
81
84
  };
@@ -63,6 +63,7 @@ const jestConfig = {
63
63
  getMockFilePath('image.js'),
64
64
  '.*\\.svg(?:\\?[a-zA-Z]+)?$': getMockFilePath('svg.js'),
65
65
  '.*iframe\\.html(?:\\?[a-zA-Z]+)?$': getMockFilePath('iframe.js'),
66
+ '.*frame\\.html(?:\\?[a-zA-Z]+)?$': getMockFilePath('frame.js'),
66
67
  '.*\\.html(?:\\?[a-zA-Z]+)?$': getMockFilePath('html.js'),
67
68
  '@elliemae/pui-user-monitoring': getMockFilePath('pui-user-monitoring.js'),
68
69
  '@elliemae/pui-app-loader': getMockFilePath('pui-app-loader.js'),
@@ -95,7 +96,7 @@ const jestConfig = {
95
96
  resources: 'usable',
96
97
  customExportConditions: [''],
97
98
  },
98
- testEnvironment: path.resolve(__dirname, './ExtendedJSDomEnv.cjs'),
99
+ testEnvironment: 'jsdom',
99
100
  watchPlugins: [
100
101
  'jest-watch-typeahead/filename',
101
102
  'jest-watch-typeahead/testname',
@@ -16,9 +16,11 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var axe_core_exports = {};
20
- __export(axe_core_exports, {
21
- toHaveNoViolations: () => import_toHaveNoViolations.toHaveNoViolations
19
+ var frame_exports = {};
20
+ __export(frame_exports, {
21
+ default: () => frame_default,
22
+ filename: () => filename
22
23
  });
23
- module.exports = __toCommonJS(axe_core_exports);
24
- var import_toHaveNoViolations = require("./toHaveNoViolations.js");
24
+ module.exports = __toCommonJS(frame_exports);
25
+ const filename = "./frame.html";
26
+ var frame_default = "./frame.html";
@@ -18,7 +18,9 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var iframe_exports = {};
20
20
  __export(iframe_exports, {
21
- default: () => iframe_default
21
+ default: () => iframe_default,
22
+ filename: () => filename
22
23
  });
23
24
  module.exports = __toCommonJS(iframe_exports);
25
+ const filename = "./iframe.html";
24
26
  var iframe_default = "./iframe.html";
@@ -22,11 +22,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
  var import_runtime = require("regenerator-runtime/runtime");
25
+ var import_node_crypto = require("node:crypto");
25
26
  var import_jest_globals = require("@testing-library/jest-dom/jest-globals");
27
+ var import_jest_axe = __toESM(require("jest-axe"));
26
28
  var import_resize_observer_polyfill = __toESM(require("resize-observer-polyfill"));
27
- var import_axe_core = require("./extended/axe-core");
28
29
  var import_matchMedia = require("./mocks/matchMedia.js");
29
30
  var import_pui_diagnostics = require("./mocks/pui-diagnostics.js");
31
+ Object.defineProperty(globalThis, "crypto", {
32
+ value: import_node_crypto.webcrypto
33
+ });
30
34
  const originalError = console.error;
31
35
  console.error = (...args) => {
32
36
  const ignoreList = [
@@ -46,7 +50,7 @@ console.error = (...args) => {
46
50
  return false;
47
51
  return originalError(...args);
48
52
  };
49
- if (expect) expect.extend(import_axe_core.toHaveNoViolations);
53
+ if (expect) expect.extend(import_jest_axe.default.toHaveNoViolations);
50
54
  const addElementToBody = (element) => {
51
55
  const documentEle = (window || {}).document;
52
56
  if (!documentEle) return null;
@@ -90,3 +94,6 @@ global.it = (name, fn, timeout = void 0) => {
90
94
  };
91
95
  global.it.skip = originalTest.skip;
92
96
  global.it.only = originalTest.only;
97
+ if (!global.performance.getEntriesByType) {
98
+ global.performance.getEntriesByType = jest.fn(() => []);
99
+ }