@cedarjs/testing 5.0.3 → 5.0.4-next.167

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 (84) hide show
  1. package/config/jest/api/apiBabelConfig.d.ts.map +1 -1
  2. package/config/jest/api/apiBabelConfig.js +1 -3
  3. package/config/jest/api/jest-preset.d.ts.map +1 -1
  4. package/config/jest/api/jest-preset.js +38 -3
  5. package/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -1
  6. package/config/jest/babelPlugins/babel-plugin-redwood-cell.js +2 -1
  7. package/config/jest/web/RedwoodWebJestEnv.d.ts +2 -2
  8. package/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -1
  9. package/config/jest/web/RedwoodWebJestEnv.js +12 -7
  10. package/config/jest/web/jest-fixed-jsdom.d.js +1 -0
  11. package/config/jest/web/jest-preset.d.ts.map +1 -1
  12. package/config/jest/web/jest-preset.js +135 -30
  13. package/config/jest/web/jest.setup.d.ts +0 -1
  14. package/config/jest/web/jest.setup.d.ts.map +1 -1
  15. package/config/jest/web/jest.setup.js +0 -1
  16. package/dist/api/vitest/CedarApiVitestEnv.js +1 -1
  17. package/dist/api/vitest/vite-plugin-cedar-vitest-api-config.js +7 -7
  18. package/dist/api/vitest/vitest-api.setup.js +4 -4
  19. package/dist/cjs/api/vitest/CedarApiVitestEnv.js +1 -1
  20. package/dist/cjs/api/vitest/vite-plugin-cedar-vitest-api-config.js +7 -7
  21. package/dist/cjs/api/vitest/vitest-api.setup.js +4 -4
  22. package/dist/cjs/config/jest/api/apiBabelConfig.d.ts.map +1 -1
  23. package/dist/cjs/config/jest/api/apiBabelConfig.js +1 -3
  24. package/dist/cjs/config/jest/api/jest-preset.d.ts.map +1 -1
  25. package/dist/cjs/config/jest/api/jest-preset.js +38 -3
  26. package/dist/cjs/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -1
  27. package/dist/cjs/config/jest/babelPlugins/babel-plugin-redwood-cell.js +2 -1
  28. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.d.ts +2 -2
  29. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -1
  30. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.js +12 -7
  31. package/dist/cjs/config/jest/web/jest-fixed-jsdom.d.js +1 -0
  32. package/dist/cjs/config/jest/web/jest-preset.d.ts.map +1 -1
  33. package/dist/cjs/config/jest/web/jest-preset.js +135 -30
  34. package/dist/cjs/config/jest/web/jest.setup.d.ts +0 -1
  35. package/dist/cjs/config/jest/web/jest.setup.d.ts.map +1 -1
  36. package/dist/cjs/config/jest/web/jest.setup.js +0 -1
  37. package/dist/cjs/web/MockProviders.js +9 -3
  38. package/dist/cjs/web/mockRequests.d.ts +60 -18
  39. package/dist/cjs/web/mockRequests.d.ts.map +1 -1
  40. package/dist/cjs/web/mockRequests.js +107 -36
  41. package/dist/cjs/web/vitest/index.js +3 -0
  42. package/dist/cjs/web/vitest/vite-plugin-cedar-vitest-web-config.js +51 -0
  43. package/dist/cjs/web/vitest/vitest-web.setup.js +19 -0
  44. package/dist/config/jest/api/apiBabelConfig.d.ts.map +1 -1
  45. package/dist/config/jest/api/apiBabelConfig.js +1 -3
  46. package/dist/config/jest/api/index.js +5 -1
  47. package/dist/config/jest/api/jest-preset.d.ts.map +1 -1
  48. package/dist/config/jest/api/jest-preset.js +38 -3
  49. package/dist/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -1
  50. package/dist/config/jest/babelPlugins/babel-plugin-redwood-cell.js +2 -1
  51. package/dist/config/jest/jest-serial-runner.js +5 -1
  52. package/dist/config/jest/web/RedwoodWebJestEnv.d.ts +2 -2
  53. package/dist/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -1
  54. package/dist/config/jest/web/RedwoodWebJestEnv.js +2 -7
  55. package/dist/config/jest/web/index.js +5 -1
  56. package/dist/config/jest/web/jest-fixed-jsdom.d.js +0 -0
  57. package/dist/config/jest/web/jest-preset.d.ts.map +1 -1
  58. package/dist/config/jest/web/jest-preset.js +135 -30
  59. package/dist/config/jest/web/jest.setup.d.ts +0 -1
  60. package/dist/config/jest/web/jest.setup.d.ts.map +1 -1
  61. package/dist/config/jest/web/jest.setup.js +0 -1
  62. package/dist/config/jest/web/resolver.js +5 -1
  63. package/dist/web/MockProviders.js +9 -3
  64. package/dist/web/mockRequests.d.ts +60 -18
  65. package/dist/web/mockRequests.d.ts.map +1 -1
  66. package/dist/web/mockRequests.js +108 -37
  67. package/dist/web/vitest/index.d.ts +1 -0
  68. package/dist/web/vitest/index.d.ts.map +1 -1
  69. package/dist/web/vitest/index.js +2 -0
  70. package/dist/web/vitest/vite-plugin-cedar-vitest-web-config.d.ts +12 -0
  71. package/dist/web/vitest/vite-plugin-cedar-vitest-web-config.d.ts.map +1 -0
  72. package/dist/web/vitest/vite-plugin-cedar-vitest-web-config.js +16 -0
  73. package/dist/web/vitest/vitest-web.setup.d.ts +2 -0
  74. package/dist/web/vitest/vitest-web.setup.d.ts.map +1 -0
  75. package/dist/web/vitest/vitest-web.setup.js +18 -0
  76. package/package.json +23 -21
  77. package/dist/cjs/web/vitest/index.d.ts +0 -4
  78. package/dist/cjs/web/vitest/index.d.ts.map +0 -1
  79. package/dist/cjs/web/vitest/vite-plugin-auto-import.d.ts +0 -2
  80. package/dist/cjs/web/vitest/vite-plugin-auto-import.d.ts.map +0 -1
  81. package/dist/cjs/web/vitest/vite-plugin-cedarjs-router-import-transform.d.ts +0 -7
  82. package/dist/cjs/web/vitest/vite-plugin-cedarjs-router-import-transform.d.ts.map +0 -1
  83. package/dist/cjs/web/vitest/vite-plugin-create-auth-import-transform.d.ts +0 -3
  84. package/dist/cjs/web/vitest/vite-plugin-create-auth-import-transform.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
- import { TestEnvironment } from 'jest-environment-jsdom';
2
- declare class RedwoodWebJestEnvironment extends TestEnvironment {
1
+ import JSDOMEnvironment from 'jest-fixed-jsdom';
2
+ declare class RedwoodWebJestEnvironment extends JSDOMEnvironment {
3
3
  setup(): Promise<void>;
4
4
  }
5
5
  export default RedwoodWebJestEnvironment;
@@ -1 +1 @@
1
- {"version":3,"file":"RedwoodWebJestEnv.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/RedwoodWebJestEnv.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD,cAAM,yBAA0B,SAAQ,eAAe;IAC/C,KAAK;CAaZ;AAED,eAAe,yBAAyB,CAAA"}
1
+ {"version":3,"file":"RedwoodWebJestEnv.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/RedwoodWebJestEnv.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,kBAAkB,CAAA;AAkB/C,cAAM,yBAA0B,SAAQ,gBAAgB;IAChD,KAAK;CASZ;AAED,eAAe,yBAAyB,CAAA"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,21 +17,24 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var RedwoodWebJestEnv_exports = {};
20
30
  __export(RedwoodWebJestEnv_exports, {
21
31
  default: () => RedwoodWebJestEnv_default
22
32
  });
23
33
  module.exports = __toCommonJS(RedwoodWebJestEnv_exports);
24
- var import_node_util = require("node:util");
25
- var import_jest_environment_jsdom = require("jest-environment-jsdom");
26
- class RedwoodWebJestEnvironment extends import_jest_environment_jsdom.TestEnvironment {
34
+ var import_jest_fixed_jsdom = __toESM(require("jest-fixed-jsdom"), 1);
35
+ class RedwoodWebJestEnvironment extends import_jest_fixed_jsdom.default {
27
36
  async setup() {
28
37
  await super.setup();
29
- if (typeof this.global.TextEncoder === "undefined") {
30
- this.global.TextEncoder = import_node_util.TextEncoder;
31
- this.global.TextDecoder = import_node_util.TextDecoder;
32
- }
33
38
  if (typeof this.global.crypto.subtle === "undefined") {
34
39
  this.global.crypto.subtle = {};
35
40
  }
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1 +1 @@
1
- {"version":3,"file":"jest-preset.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/jest-preset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAOlC,QAAA,MAAM,MAAM,EAAE,MAkFb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"jest-preset.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/jest-preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAiIlC,QAAA,MAAM,MAAM,EAAE,MA0Ib,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -31,15 +31,68 @@ __export(jest_preset_exports, {
31
31
  default: () => jest_preset_default
32
32
  });
33
33
  module.exports = __toCommonJS(jest_preset_exports);
34
+ var import_node_fs = __toESM(require("node:fs"), 1);
34
35
  var import_node_path = __toESM(require("node:path"), 1);
35
36
  var import_project_config = require("@cedarjs/project-config");
36
37
  const cedarPaths = (0, import_project_config.getPaths)();
37
- const NODE_MODULES_PATH = import_node_path.default.join(cedarPaths.base, "node_modules");
38
+ const RESOLVE_FROM = [cedarPaths.web.base, cedarPaths.base];
39
+ function resolvePackageDir(packageName, resolveFrom = RESOLVE_FROM) {
40
+ try {
41
+ return import_node_path.default.dirname(
42
+ require.resolve(`${packageName}/package.json`, { paths: resolveFrom })
43
+ );
44
+ } catch {
45
+ }
46
+ try {
47
+ let dir = import_node_path.default.dirname(require.resolve(packageName, { paths: resolveFrom }));
48
+ for (; ; ) {
49
+ const manifestPath = import_node_path.default.join(dir, "package.json");
50
+ if (import_node_fs.default.existsSync(manifestPath)) {
51
+ const manifest = JSON.parse(
52
+ import_node_fs.default.readFileSync(manifestPath, "utf-8")
53
+ );
54
+ if (manifest && typeof manifest === "object" && "name" in manifest && manifest.name === packageName) {
55
+ return dir;
56
+ }
57
+ }
58
+ const parent = import_node_path.default.dirname(dir);
59
+ if (parent === dir) {
60
+ return void 0;
61
+ }
62
+ dir = parent;
63
+ }
64
+ } catch {
65
+ return void 0;
66
+ }
67
+ }
68
+ function packagePath(packageName, relativePath = "", resolveFrom = RESOLVE_FROM) {
69
+ const packageDir = resolvePackageDir(packageName, resolveFrom);
70
+ return packageDir && import_node_path.default.join(packageDir, relativePath);
71
+ }
72
+ function resolveSubpath(specifier, resolveFrom = RESOLVE_FROM) {
73
+ try {
74
+ return require.resolve(specifier, { paths: resolveFrom });
75
+ } catch {
76
+ return void 0;
77
+ }
78
+ }
79
+ const cedarWebDir = resolvePackageDir("@cedarjs/web");
80
+ const cedarWebResolveFrom = cedarWebDir ? [cedarWebDir, ...RESOLVE_FROM] : RESOLVE_FROM;
81
+ function definedEntries(mappings) {
82
+ return Object.fromEntries(
83
+ Object.entries(mappings).filter(
84
+ (entry) => entry[1] !== void 0
85
+ )
86
+ );
87
+ }
38
88
  const config = {
39
89
  // To make sure other config option which depends on rootDir always
40
90
  // use correct path, for example, coverageDirectory
41
91
  rootDir: cedarPaths.base,
42
92
  roots: [import_node_path.default.join(cedarPaths.web.src)],
93
+ // Opting out of jsdom's browser-style export condition resolution (needed to
94
+ // resolve `msw/node`) is handled by the environment itself, via
95
+ // jest-fixed-jsdom
43
96
  testEnvironment: import_node_path.default.join(__dirname, "./RedwoodWebJestEnv.js"),
44
97
  displayName: {
45
98
  color: "blueBright",
@@ -69,41 +122,78 @@ const config = {
69
122
  ],
70
123
  setupFilesAfterEnv: [import_node_path.default.resolve(__dirname, "./jest.setup.js")],
71
124
  moduleNameMapper: {
72
- /**
73
- * Make sure modules that require different versions of these
74
- * dependencies end up using the same one.
75
- */
76
- "^react$": import_node_path.default.join(NODE_MODULES_PATH, "react"),
77
- "^react-dom$": import_node_path.default.join(NODE_MODULES_PATH, "react-dom"),
78
- "^@apollo/client/react$": import_node_path.default.join(
79
- NODE_MODULES_PATH,
80
- "@apollo/client/react"
81
- ),
82
- // We replace imports to "@cedarjs/router" with our own "mock" implementation.
83
- "^@cedarjs/router$": import_node_path.default.join(
84
- NODE_MODULES_PATH,
85
- "@cedarjs/testing/dist/cjs/web/MockRouter.js"
86
- ),
87
- "^@cedarjs/web$": import_node_path.default.join(NODE_MODULES_PATH, "@cedarjs/web/dist/cjs"),
88
- // This allows us to mock `createAuthentication` which is used by auth
89
- // clients, which in turn lets us mock `useAuth` in tests
90
- "^@cedarjs/auth$": import_node_path.default.join(
91
- NODE_MODULES_PATH,
92
- "@cedarjs/testing/dist/cjs/web/mockAuth.js"
93
- ),
94
- // @NOTE: Import @cedarjs/testing in web tests, and it automatically remaps to the web side only
95
- // This is to prevent web stuff leaking into api, and vice versa
96
- "^@cedarjs/testing$": import_node_path.default.join(NODE_MODULES_PATH, "@cedarjs/testing/web"),
125
+ ...definedEntries({
126
+ /**
127
+ * Make sure modules that require different versions of these
128
+ * dependencies end up using the same one.
129
+ */
130
+ "^react$": resolveSubpath("react"),
131
+ "^react-dom$": resolveSubpath("react-dom"),
132
+ // Point straight at Apollo Client's CJS build. Resolving the subpath
133
+ // would go through its `exports` map and land on the ESM build (Node 22+
134
+ // picks the `module-sync` condition), which Jest can't parse.
135
+ // Resolved starting from `@cedarjs/web` because that's what depends on
136
+ // Apollo — a project doesn't declare it itself, so under pnpm it isn't
137
+ // reachable from the web side at all, and searching from there finds
138
+ // either nothing or some unrelated copy pulled in by another dependency
139
+ "^@apollo/client/react$": packagePath(
140
+ "@apollo/client",
141
+ "__cjs/react/index.cjs",
142
+ cedarWebResolveFrom
143
+ ),
144
+ // We replace imports to "@cedarjs/router" with our own "mock" implementation.
145
+ "^@cedarjs/router$": resolveSubpath("@cedarjs/testing/web/MockRouter.js"),
146
+ "^@cedarjs/web$": resolveSubpath("@cedarjs/web"),
147
+ // This allows us to mock `createAuthentication` which is used by auth
148
+ // clients, which in turn lets us mock `useAuth` in tests
149
+ "^@cedarjs/auth$": resolveSubpath("@cedarjs/testing/auth"),
150
+ // @NOTE: Import @cedarjs/testing in web tests, and it automatically remaps to the web side only
151
+ // This is to prevent web stuff leaking into api, and vice versa
152
+ "^@cedarjs/testing$": resolveSubpath("@cedarjs/testing/web"),
153
+ /**
154
+ * Mock out files that aren't particularly useful in tests. See fileMock.js for more info.
155
+ */
156
+ "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css)$": resolveSubpath("@cedarjs/testing/dist/cjs/web/fileMock.js")
157
+ }),
97
158
  "~__CEDAR__USER_ROUTES_FOR_MOCK": cedarPaths.web.routes,
98
159
  "~__CEDAR__USER_AUTH_FOR_MOCK": import_node_path.default.join(cedarPaths.web.src, "auth"),
99
- /**
100
- * Mock out files that aren't particularly useful in tests. See fileMock.js for more info.
101
- */
102
- "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css)$": "@cedarjs/testing/dist/cjs/web/fileMock.js",
103
160
  // Support for importing files with extensions (like you'd do in ESM projects)
104
161
  "^(\\.{1,2}/.*)\\.js$": "$1"
105
162
  },
106
163
  transform: {
164
+ // MSW's CommonJS build `require`s ESM-only packages (`rettime`,
165
+ // `@open-draft/deferred-promise` and `until-async`, which ships ESM in
166
+ // plain `.js` files). Node supports require(esm), but Jest's runtime
167
+ // doesn't, so compile any `.mjs` file that gets pulled in from
168
+ // node_modules (plus until-async) to CommonJS. This needs its own
169
+ // transform entry (with the config inlined) because the web babel config
170
+ // ignores node_modules
171
+ //
172
+ // The `@cedarjs/auth-*-web` packages are ESM-only too, and (like
173
+ // until-async) ship plain `.js` files rather than `.mjs` since their
174
+ // package.json already declares `"type": "module"`. A generated
175
+ // project's `web/src/auth.ts` imports one of these, so they need the
176
+ // same carve-out. `@cedarjs/forms` is ESM-only for the same reason, and
177
+ // gets pulled into virtually every generated project's web-side tests
178
+ // via `web/src/pages/**` scaffolds and dbAuth login/signup forms.
179
+ // `@cedarjs/web`, `@cedarjs/auth`, and `@cedarjs/router` are ESM-only
180
+ // too. `web` and `router` are imported directly by virtually every
181
+ // generated project's web-side test (`Routes.tsx`, page/component
182
+ // scaffolds), and `auth` gets pulled in transitively through `web`.
183
+ // Jest's own module loader re-applies this carve-out to every file it
184
+ // loads, including ones reached transitively through an
185
+ // already-transformed require() call, so all of them need to be listed
186
+ // even though only `web`/`router` are usually imported directly.
187
+ "[/\\\\]node_modules[/\\\\](?:.+\\.mjs|(?:until-async|@cedarjs[/\\\\](?:auth-[a-z-]+-web|forms|web|auth|router))[/\\\\].+\\.js)$": [
188
+ "babel-jest",
189
+ {
190
+ babelrc: false,
191
+ configFile: false,
192
+ presets: [
193
+ [require.resolve("@babel/preset-env"), { targets: { node: "20" } }]
194
+ ]
195
+ }
196
+ ],
107
197
  "\\.[jt]sx?$": [
108
198
  "babel-jest",
109
199
  // When jest runs tests in parallel, it serializes the config before passing down options to babel
@@ -113,6 +203,21 @@ const config = {
113
203
  }
114
204
  ]
115
205
  },
206
+ // Jest's default is to not transform anything in node_modules, but `.mjs`
207
+ // files (and until-async, @cedarjs/auth-*-web, @cedarjs/forms,
208
+ // @cedarjs/web, @cedarjs/auth, and @cedarjs/router) have to be compiled to
209
+ // CommonJS (see the transform above).
210
+ // The `.pnpm` lookahead is what makes this work with pnpm: its virtual store
211
+ // puts packages at `node_modules/.pnpm/<pkg>@<version>/node_modules/<pkg>`,
212
+ // so without it the pattern matches (and thereby ignores) at the *first*
213
+ // `node_modules` segment, where the following path starts with `.pnpm/`
214
+ // instead of `until-async/` and the exception never gets a chance to apply.
215
+ // Skipping that segment forces the match onto the inner `node_modules`,
216
+ // which looks the same as a hoisted npm/yarn layout
217
+ transformIgnorePatterns: [
218
+ "[/\\\\]node_modules[/\\\\](?!\\.pnpm[/\\\\])(?!.*\\.mjs$)(?!until-async[/\\\\])(?!@cedarjs[/\\\\]auth-[a-z-]+-web[/\\\\])(?!@cedarjs[/\\\\]forms[/\\\\])(?!@cedarjs[/\\\\]web[/\\\\])(?!@cedarjs[/\\\\]auth[/\\\\])(?!@cedarjs[/\\\\]router[/\\\\])",
219
+ "\\.pnp\\.[^\\\\/]+$"
220
+ ],
116
221
  resolver: import_node_path.default.resolve(__dirname, "./resolver.js"),
117
222
  testPathIgnorePatterns: [".(stories|mock).[jt]sx?$"]
118
223
  };
@@ -1,5 +1,4 @@
1
1
  import '@testing-library/jest-dom';
2
- import 'whatwg-fetch';
3
2
  import { mockCurrentUser as _mockCurrentUser } from '../../../web/mockRequests.js';
4
3
  declare global {
5
4
  var __RWJS_TESTROOT_DIR: string;
@@ -1 +1 @@
1
- {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/jest.setup.ts"],"names":[],"mappings":"AAEA,OAAO,2BAA2B,CAAA;AAClC,OAAO,cAAc,CAAA;AAGrB,OAAO,EAML,eAAe,IAAI,gBAAgB,EACpC,MAAM,8BAA8B,CAAA;AAErC,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,mBAAmB,EAAE,MAAM,CAAA;IAE/B,IAAI,eAAe,EAAE,OAAO,gBAAgB,CAAA;CAC7C"}
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../../../src/config/jest/web/jest.setup.ts"],"names":[],"mappings":"AAEA,OAAO,2BAA2B,CAAA;AAGlC,OAAO,EAML,eAAe,IAAI,gBAAgB,EACpC,MAAM,8BAA8B,CAAA;AAErC,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,mBAAmB,EAAE,MAAM,CAAA;IAE/B,IAAI,eAAe,EAAE,OAAO,gBAAgB,CAAA;CAC7C"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  var import_jest_dom = require("@testing-library/jest-dom");
3
- var import_whatwg_fetch = require("whatwg-fetch");
4
3
  var import_findCellMocks = require("../../../web/findCellMocks.js");
5
4
  var import_mockRequests = require("../../../web/mockRequests.js");
6
5
  global.mockGraphQLQuery = import_mockRequests.mockGraphQLQuery;
@@ -34,7 +34,7 @@ module.exports = __toCommonJS(MockProviders_exports);
34
34
  var import_react = __toESM(require("react"), 1);
35
35
  var import_router = require("@cedarjs/router");
36
36
  var import_web = require("@cedarjs/web");
37
- var import_apollo = require("@cedarjs/web/apollo");
37
+ var import_CedarApolloProvider = require("@cedarjs/web/apollo/CedarApolloProvider");
38
38
  var import_globRoutesImporter = require("./globRoutesImporter.js");
39
39
  var import_mockAuth = require("./mockAuth.js");
40
40
  var import_MockParamsProvider = require("./MockParamsProvider.js");
@@ -49,10 +49,16 @@ try {
49
49
  UserRoutes = () => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null);
50
50
  }
51
51
  const MockProviders = ({ children }) => {
52
- return /* @__PURE__ */ import_react.default.createElement(import_web.RedwoodProvider, { titleTemplate: "%PageTitle | %AppTitle" }, /* @__PURE__ */ import_react.default.createElement(import_apollo.RedwoodApolloProvider, { useAuth: import_mockAuth.useAuth }, /* @__PURE__ */ import_react.default.createElement(UserRoutes, null), /* @__PURE__ */ import_react.default.createElement(import_globRoutesImporter.UserRoutes, null), /* @__PURE__ */ import_react.default.createElement(import_router.LocationProvider, null, /* @__PURE__ */ import_react.default.createElement(import_MockParamsProvider.MockParamsProvider, null, children))));
52
+ return /* @__PURE__ */ import_react.default.createElement(import_web.RedwoodProvider, { titleTemplate: "%PageTitle | %AppTitle" }, /* @__PURE__ */ import_react.default.createElement(import_CedarApolloProvider.CedarApolloProvider, { useAuth: import_mockAuth.useAuth }, /* @__PURE__ */ import_react.default.createElement(UserRoutes, null), /* @__PURE__ */ import_react.default.createElement(import_globRoutesImporter.UserRoutes, null), /* @__PURE__ */ import_react.default.createElement(import_router.LocationProvider, null, /* @__PURE__ */ import_react.default.createElement(import_MockParamsProvider.MockParamsProvider, null, children))));
53
53
  };
54
54
  function isModuleNotFoundError(error, module2) {
55
- return !!error && typeof error === "object" && "code" in error && error.code === "MODULE_NOT_FOUND" && "moduleName" in error && error.moduleName === module2;
55
+ if (!error || typeof error !== "object" || !("code" in error) || error.code !== "MODULE_NOT_FOUND") {
56
+ return false;
57
+ }
58
+ if ("moduleName" in error) {
59
+ return error.moduleName === module2;
60
+ }
61
+ return "message" in error && typeof error.message === "string" && (error.message.includes(`'${module2}'`) || error.message.includes(`"${module2}"`));
56
62
  }
57
63
  // Annotate the CommonJS export names for ESM import in node:
58
64
  0 && (module.exports = {
@@ -1,25 +1,67 @@
1
- import type { StartOptions as StartMSWWorkerOptions, SharedOptions as SharedMSWOptions, MockedResponse, DefaultBodyType, RequestHandler, GraphQLContext, GraphQLRequest, ResponseTransformer } from 'msw';
2
- /**
3
- * Plugs fetch for the correct target in order to capture requests.
4
- *
5
- * Request handlers can be registered lazily (via `mockGraphQL<Query|Mutation>`),
6
- * the queue will be drained and used.
7
- */
8
- type StartOptions<Target> = Target extends 'browsers' ? StartMSWWorkerOptions : SharedMSWOptions;
9
- export declare const startMSW: <Target extends "node" | "browsers">(target: Target, options?: StartOptions<Target>) => Promise<any>;
1
+ import type { RequestHandler, SharedOptions } from 'msw';
2
+ import type { StartOptions as StartMSWWorkerOptions } from 'msw/browser';
3
+ interface MockServerCommonApi {
4
+ use(...handlers: any[]): void;
5
+ resetHandlers(): void;
6
+ }
7
+ type MockWorkerInstance = MockServerCommonApi & {
8
+ stop(): void;
9
+ };
10
+ type MockServerInstance = MockServerCommonApi & {
11
+ listen(options?: Partial<SharedOptions>): void;
12
+ close(): void;
13
+ };
14
+ type StartOptions<Target> = Target extends 'browsers' ? StartMSWWorkerOptions : Partial<SharedOptions>;
15
+ export declare const startMSW: <Target extends "node" | "browsers">(target: Target, options?: StartOptions<Target>) => Promise<MockWorkerInstance | MockServerInstance>;
10
16
  export declare const setupRequestHandlers: () => void;
11
17
  export declare const closeServer: () => void;
12
18
  export declare const registerHandler: (handler: RequestHandler) => void;
19
+ /**
20
+ * The `ctx` object passed to mock-data functions. It mirrors the API of MSW
21
+ * v1's GraphQL context so that existing Cedar mocks keep working with MSW v2,
22
+ * where the `(req, res, ctx)` resolver signature no longer exists.
23
+ */
24
+ export interface MockGraphQLContext {
25
+ /** Set the http response status code (and optionally status text) */
26
+ status(code: number, text?: string): void;
27
+ /** Delay the response by the given number of milliseconds */
28
+ delay(durationMs: number): void;
29
+ /** Return GraphQL errors in the response */
30
+ errors(errorList: Record<string, unknown>[]): void;
31
+ /** Set a response header. Accepts a name/value pair or an object */
32
+ set(name: string | Record<string, string>, value?: string): void;
33
+ /** Set a response cookie */
34
+ cookie(name: string, value: string): void;
35
+ /** Set the `extensions` field of the GraphQL response */
36
+ extensions(extensions: Record<string, unknown>): void;
37
+ /** Set an arbitrary field on the GraphQL response body */
38
+ field(fieldName: string, value: unknown): void;
39
+ /** Set the `data` field of the response. Overrides the returned mock-data */
40
+ data(data: Record<string, unknown>): void;
41
+ /** Perform a request that bypasses any mock handlers */
42
+ fetch(input: string | URL | Request, init?: RequestInit): Promise<Response>;
43
+ }
44
+ /**
45
+ * Information about the intercepted GraphQL request, passed to mock-data
46
+ * functions as `req`
47
+ */
48
+ export interface MockGraphQLRequest {
49
+ /** The intercepted Fetch API `Request` */
50
+ request: Request;
51
+ /** The GraphQL query document string */
52
+ query: string;
53
+ operationName: string;
54
+ variables: Record<string, any>;
55
+ cookies: Record<string, string>;
56
+ url: URL;
57
+ headers: Headers;
58
+ method: string;
59
+ }
13
60
  export type DataFunction<Query extends Record<string, unknown> = Record<string, unknown>, QueryVariables = Record<string, any>> = (variables: QueryVariables, { req, ctx, }: {
14
- req: GraphQLRequest<any>;
15
- ctx: GraphQLContext<Record<string, any>>;
16
- }) => Query | void;
17
- type ResponseFunction<BodyType extends DefaultBodyType = any> = (...transformers: ResponseTransformer<BodyType>[]) => MockedResponse<BodyType>;
18
- type ResponseEnhancers = {
19
- once: ResponseFunction<any>;
20
- networkError: (message: string) => void;
21
- };
22
- type ResponseEnhancer = keyof ResponseEnhancers;
61
+ req: MockGraphQLRequest;
62
+ ctx: MockGraphQLContext;
63
+ }) => Query | void | Promise<Query | void>;
64
+ type ResponseEnhancer = 'once' | 'networkError';
23
65
  export declare const mockGraphQLQuery: <Query extends Record<string, unknown> = Record<string, unknown>, QueryVariables = Record<string, any>>(operation: string, data: DataFunction<Query, QueryVariables> | Query, responseEnhancer?: ResponseEnhancer) => Record<string, any> | DataFunction<Record<string, unknown>, Record<string, any>>;
24
66
  export declare const mockGraphQLMutation: <Query extends Record<string, unknown> = Record<string, unknown>, QueryVariables = Record<string, any>>(operation: string, data: DataFunction<Query, QueryVariables> | Query, responseEnhancer?: ResponseEnhancer) => Record<string, any> | DataFunction<Record<string, unknown>, Record<string, any>>;
25
67
  export declare const mockedUserMeta: {
@@ -1 +1 @@
1
- {"version":3,"file":"mockRequests.d.ts","sourceRoot":"","sources":["../../../src/web/mockRequests.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,IAAI,qBAAqB,EACrC,aAAa,IAAI,gBAAgB,EACjC,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EAGpB,MAAM,KAAK,CAAA;AAQZ;;;;;GAKG;AAEH,KAAK,YAAY,CAAC,MAAM,IAAI,MAAM,SAAS,UAAU,GACjD,qBAAqB,GACrB,gBAAgB,CAAA;AACpB,eAAO,MAAM,QAAQ,GAAU,MAAM,SAAS,MAAM,GAAG,UAAU,EAC/D,QAAQ,MAAM,EACd,UAAU,YAAY,CAAC,MAAM,CAAC,iBAgB/B,CAAA;AAED,eAAO,MAAM,oBAAoB,YAMhC,CAAA;AAED,eAAO,MAAM,WAAW,YAEvB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,cAAc,SAQtD,CAAA;AAED,MAAM,MAAM,YAAY,CACtB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,CACF,SAAS,EAAE,cAAc,EACzB,EACE,GAAG,EACH,GAAG,GACJ,EAAE;IACD,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;IACxB,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;CACzC,KACE,KAAK,GAAG,IAAI,CAAA;AAGjB,KAAK,gBAAgB,CAAC,QAAQ,SAAS,eAAe,GAAG,GAAG,IAAI,CAC9D,GAAG,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAC7C,cAAc,CAAC,QAAQ,CAAC,CAAA;AAE7B,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC3B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AACD,KAAK,gBAAgB,GAAG,MAAM,iBAAiB,CAAA;AAuD/C,eAAO,MAAM,gBAAgB,GAC3B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,WAAW,MAAM,EACjB,MAAM,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,KAAK,EACjD,mBAAmB,gBAAgB,qFAGpC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,WAAW,MAAM,EACjB,MAAM,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,KAAK,EACjD,mBAAmB,gBAAgB,qFAGpC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAEzE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,SASnE,CAAA"}
1
+ {"version":3,"file":"mockRequests.d.ts","sourceRoot":"","sources":["../../../src/web/mockRequests.ts"],"names":[],"mappings":"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"}
@@ -41,28 +41,43 @@ module.exports = __toCommonJS(mockRequests_exports);
41
41
  var import_msw = require("msw");
42
42
  let REQUEST_HANDLER_QUEUE = [];
43
43
  let SERVER_INSTANCE;
44
+ const MSW_NODE_SPECIFIER = "msw/node";
44
45
  const startMSW = async (target, options) => {
45
46
  if (SERVER_INSTANCE) {
46
47
  return SERVER_INSTANCE;
47
48
  }
48
49
  if (target === "browsers") {
49
- SERVER_INSTANCE = (0, import_msw.setupWorker)();
50
- await SERVER_INSTANCE.start(options);
50
+ const { setupWorker } = require("msw/browser");
51
+ const worker = setupWorker();
52
+ SERVER_INSTANCE = worker;
53
+ await worker.start(options);
51
54
  } else {
52
- const { setupServer } = require("msw/node");
53
- SERVER_INSTANCE = setupServer();
54
- await SERVER_INSTANCE.listen(options);
55
+ const { setupServer } = require(
56
+ /* @vite-ignore */
57
+ MSW_NODE_SPECIFIER
58
+ );
59
+ const server = setupServer();
60
+ SERVER_INSTANCE = server;
61
+ server.listen(options);
55
62
  }
56
63
  return SERVER_INSTANCE;
57
64
  };
58
65
  const setupRequestHandlers = () => {
59
- SERVER_INSTANCE.resetHandlers();
66
+ SERVER_INSTANCE?.resetHandlers();
60
67
  for (const handler of REQUEST_HANDLER_QUEUE) {
61
- SERVER_INSTANCE.use(handler);
68
+ SERVER_INSTANCE?.use(handler);
62
69
  }
63
70
  };
64
71
  const closeServer = () => {
65
- SERVER_INSTANCE.close();
72
+ if (!SERVER_INSTANCE) {
73
+ return;
74
+ }
75
+ if ("close" in SERVER_INSTANCE) {
76
+ SERVER_INSTANCE.close();
77
+ } else {
78
+ SERVER_INSTANCE.stop();
79
+ }
80
+ SERVER_INSTANCE = void 0;
66
81
  };
67
82
  const registerHandler = (handler) => {
68
83
  if (!SERVER_INSTANCE) {
@@ -72,39 +87,95 @@ const registerHandler = (handler) => {
72
87
  }
73
88
  };
74
89
  const mockGraphQL = (type, operation, data, responseEnhancer) => {
75
- const resolver = (req, res, ctx) => {
76
- let d = data;
77
- let responseTransforms = [];
90
+ const resolver = async ({
91
+ request,
92
+ query,
93
+ operationName,
94
+ variables,
95
+ cookies
96
+ }) => {
97
+ let d = void 0;
98
+ let status = 200;
99
+ let statusText;
100
+ let delayDurationMs;
101
+ let errorList;
102
+ let extensions;
103
+ let explicitData;
104
+ const extraFields = {};
105
+ const headers = new Headers();
78
106
  if (typeof data === "function") {
79
- const captureTransform = (fn) => {
80
- return (...args) => {
81
- const resTransform = fn(...args);
82
- responseTransforms = [...responseTransforms, resTransform];
83
- return resTransform;
84
- };
107
+ const ctx = {
108
+ status: (code, text) => {
109
+ status = code;
110
+ statusText = text;
111
+ },
112
+ delay: (durationMs) => {
113
+ delayDurationMs = durationMs;
114
+ },
115
+ errors: (errors) => {
116
+ errorList = errors;
117
+ },
118
+ set: (name, value) => {
119
+ if (typeof name === "object") {
120
+ for (const [headerName, headerValue] of Object.entries(name)) {
121
+ headers.set(headerName, headerValue);
122
+ }
123
+ } else if (typeof value !== "undefined") {
124
+ headers.set(name, value);
125
+ }
126
+ },
127
+ cookie: (name, value) => {
128
+ headers.append("Set-Cookie", `${name}=${value}`);
129
+ },
130
+ extensions: (ext) => {
131
+ extensions = ext;
132
+ },
133
+ field: (fieldName, value) => {
134
+ extraFields[fieldName] = value;
135
+ },
136
+ data: (dataValue) => {
137
+ explicitData = dataValue;
138
+ },
139
+ fetch: (input, init) => fetch((0, import_msw.bypass)(input, init))
85
140
  };
86
- const newCtx = {
87
- status: captureTransform(ctx.status),
88
- delay: captureTransform(ctx.delay),
89
- errors: captureTransform(ctx.errors),
90
- set: captureTransform(ctx.set),
91
- fetch: captureTransform(ctx.fetch),
92
- data: captureTransform(ctx.data),
93
- extensions: captureTransform(ctx.extensions),
94
- cookie: captureTransform(ctx.cookie),
95
- field: captureTransform(ctx.field)
141
+ const req = {
142
+ request,
143
+ query,
144
+ operationName,
145
+ variables,
146
+ cookies,
147
+ url: new URL(request.url),
148
+ headers: request.headers,
149
+ method: request.method
96
150
  };
97
- d = data(req.variables, {
98
- req,
99
- ctx: newCtx
100
- });
151
+ d = await data(variables, { req, ctx });
152
+ } else {
153
+ d = data;
101
154
  }
102
- return (responseEnhancer ? res[responseEnhancer] : res)(
103
- ctx.data(d),
104
- ...responseTransforms
105
- );
155
+ if (responseEnhancer === "networkError") {
156
+ return import_msw.HttpResponse.error();
157
+ }
158
+ if (typeof delayDurationMs !== "undefined") {
159
+ await (0, import_msw.delay)(delayDurationMs);
160
+ }
161
+ const body = { ...extraFields };
162
+ const bodyData = explicitData ?? d;
163
+ if (typeof bodyData !== "undefined") {
164
+ body.data = bodyData;
165
+ }
166
+ if (typeof errorList !== "undefined") {
167
+ body.errors = errorList;
168
+ }
169
+ if (typeof extensions !== "undefined") {
170
+ body.extensions = extensions;
171
+ }
172
+ return import_msw.HttpResponse.json(body, { status, statusText, headers });
106
173
  };
107
- registerHandler(import_msw.graphql[type](operation, resolver));
174
+ registerHandler(
175
+ import_msw.graphql[type](operation, resolver, {
176
+ once: responseEnhancer === "once"
177
+ })
178
+ );
108
179
  return data;
109
180
  };
110
181
  const mockGraphQLQuery = (operation, data, responseEnhancer) => {
@@ -20,15 +20,18 @@ var vitest_exports = {};
20
20
  __export(vitest_exports, {
21
21
  autoImportsPlugin: () => import_vite_plugin_auto_import.autoImportsPlugin,
22
22
  cedarJsRouterImportTransformPlugin: () => import_vite_plugin_cedarjs_router_import_transform.cedarJsRouterImportTransformPlugin,
23
+ cedarVitestWebConfigPlugin: () => import_vite_plugin_cedar_vitest_web_config.cedarVitestWebConfigPlugin,
23
24
  createAuthImportTransformPlugin: () => import_vite_plugin_create_auth_import_transform.createAuthImportTransformPlugin
24
25
  });
25
26
  module.exports = __toCommonJS(vitest_exports);
26
27
  var import_vite_plugin_cedarjs_router_import_transform = require("./vite-plugin-cedarjs-router-import-transform.js");
28
+ var import_vite_plugin_cedar_vitest_web_config = require("./vite-plugin-cedar-vitest-web-config.js");
27
29
  var import_vite_plugin_create_auth_import_transform = require("./vite-plugin-create-auth-import-transform.js");
28
30
  var import_vite_plugin_auto_import = require("./vite-plugin-auto-import.js");
29
31
  // Annotate the CommonJS export names for ESM import in node:
30
32
  0 && (module.exports = {
31
33
  autoImportsPlugin,
32
34
  cedarJsRouterImportTransformPlugin,
35
+ cedarVitestWebConfigPlugin,
33
36
  createAuthImportTransformPlugin
34
37
  });