@cedarjs/testing 7.0.0-canary.3259 → 7.0.0-rc.123

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 (218) hide show
  1. package/config/jest/api/RedwoodApiJestEnv.d.ts +11 -0
  2. package/config/jest/api/RedwoodApiJestEnv.d.ts.map +1 -0
  3. package/config/jest/api/RedwoodApiJestEnv.js +48 -0
  4. package/config/jest/api/apiBabelConfig.d.ts +5 -0
  5. package/config/jest/api/apiBabelConfig.d.ts.map +1 -0
  6. package/config/jest/api/apiBabelConfig.js +34 -0
  7. package/config/jest/api/globalSetup.d.ts +3 -0
  8. package/config/jest/api/globalSetup.d.ts.map +1 -0
  9. package/config/jest/api/globalSetup.js +63 -0
  10. package/config/jest/api/index.d.ts +3 -0
  11. package/config/jest/api/index.d.ts.map +1 -0
  12. package/config/jest/api/index.js +25 -0
  13. package/config/jest/api/jest-preset.d.ts +4 -0
  14. package/config/jest/api/jest-preset.d.ts.map +1 -0
  15. package/config/jest/api/jest-preset.js +140 -0
  16. package/config/jest/api/jest.setup.d.ts +2 -0
  17. package/config/jest/api/jest.setup.d.ts.map +1 -0
  18. package/config/jest/api/jest.setup.js +267 -0
  19. package/config/jest/api/package.json +8 -0
  20. package/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts +11 -0
  21. package/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -0
  22. package/config/jest/babelPlugins/babel-plugin-redwood-cell.js +122 -0
  23. package/config/jest/jest-serial-runner.d.ts +8 -0
  24. package/config/jest/jest-serial-runner.d.ts.map +1 -0
  25. package/config/jest/jest-serial-runner.js +37 -0
  26. package/config/jest/web/RedwoodWebJestEnv.d.ts +6 -0
  27. package/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -0
  28. package/config/jest/web/RedwoodWebJestEnv.js +43 -0
  29. package/config/jest/web/index.d.ts +3 -0
  30. package/config/jest/web/index.d.ts.map +1 -0
  31. package/config/jest/web/index.js +25 -0
  32. package/config/jest/web/jest-fixed-jsdom.d.js +1 -0
  33. package/config/jest/web/jest-preset.d.ts +4 -0
  34. package/config/jest/web/jest-preset.d.ts.map +1 -0
  35. package/config/jest/web/jest-preset.js +224 -0
  36. package/config/jest/web/jest.setup.d.ts +7 -0
  37. package/config/jest/web/jest.setup.d.ts.map +1 -0
  38. package/config/jest/web/jest.setup.js +21 -0
  39. package/config/jest/web/package.json +8 -0
  40. package/config/jest/web/resolver.d.ts +4 -0
  41. package/config/jest/web/resolver.d.ts.map +1 -0
  42. package/config/jest/web/resolver.js +30 -0
  43. package/config/jest/web/webBabelConfig.d.ts +10 -0
  44. package/config/jest/web/webBabelConfig.d.ts.map +1 -0
  45. package/config/jest/web/webBabelConfig.js +48 -0
  46. package/config/package.json +1 -0
  47. package/dist/api/mockContext.d.ts +1 -1
  48. package/dist/api/mockContext.d.ts.map +1 -1
  49. package/dist/api/vitest/vite-plugin-cedar-vitest-api-config.d.ts.map +1 -1
  50. package/dist/api/vitest/vite-plugin-cedar-vitest-api-config.js +1 -6
  51. package/dist/api/vitest/vitest-api.setup.d.ts.map +1 -1
  52. package/dist/api/vitest/vitest-api.setup.js +22 -9
  53. package/dist/cjs/api/apiFunction.d.ts +37 -0
  54. package/dist/cjs/api/apiFunction.d.ts.map +1 -0
  55. package/dist/cjs/api/apiFunction.js +89 -0
  56. package/dist/cjs/api/checkTestDatabase.d.ts +50 -0
  57. package/dist/cjs/api/checkTestDatabase.d.ts.map +1 -0
  58. package/dist/cjs/api/checkTestDatabase.js +182 -0
  59. package/dist/cjs/api/directive.d.ts +51 -0
  60. package/dist/cjs/api/directive.d.ts.map +1 -0
  61. package/dist/cjs/api/directive.js +77 -0
  62. package/dist/cjs/api/index.d.ts +4 -0
  63. package/dist/cjs/api/index.d.ts.map +1 -0
  64. package/dist/cjs/api/index.js +26 -0
  65. package/dist/cjs/api/mockContext.d.ts +5 -0
  66. package/dist/cjs/api/mockContext.d.ts.map +1 -0
  67. package/dist/cjs/api/mockContext.js +58 -0
  68. package/dist/cjs/api/scenario.d.ts +108 -0
  69. package/dist/cjs/api/scenario.d.ts.map +1 -0
  70. package/dist/cjs/api/scenario.js +30 -0
  71. package/dist/cjs/api/vitest/CedarApiVitestEnv.js +86 -0
  72. package/dist/cjs/api/vitest/index.js +34 -0
  73. package/dist/cjs/api/vitest/vite-plugin-auto-import.js +71 -0
  74. package/dist/cjs/api/vitest/vite-plugin-cedar-vitest-api-config.js +69 -0
  75. package/dist/cjs/api/vitest/vite-plugin-track-db-imports.js +47 -0
  76. package/dist/cjs/api/vitest/vitest-api.setup.js +270 -0
  77. package/dist/cjs/cache/index.d.ts +50 -0
  78. package/dist/cjs/cache/index.d.ts.map +1 -0
  79. package/dist/cjs/cache/index.js +104 -0
  80. package/dist/cjs/config/jest/api/RedwoodApiJestEnv.d.ts +11 -0
  81. package/dist/cjs/config/jest/api/RedwoodApiJestEnv.d.ts.map +1 -0
  82. package/dist/cjs/config/jest/api/RedwoodApiJestEnv.js +48 -0
  83. package/dist/cjs/config/jest/api/apiBabelConfig.d.ts +5 -0
  84. package/dist/cjs/config/jest/api/apiBabelConfig.d.ts.map +1 -0
  85. package/dist/cjs/config/jest/api/apiBabelConfig.js +34 -0
  86. package/dist/cjs/config/jest/api/globalSetup.d.ts +3 -0
  87. package/dist/cjs/config/jest/api/globalSetup.d.ts.map +1 -0
  88. package/dist/cjs/config/jest/api/globalSetup.js +63 -0
  89. package/dist/cjs/config/jest/api/index.d.ts +3 -0
  90. package/dist/cjs/config/jest/api/index.d.ts.map +1 -0
  91. package/dist/cjs/config/jest/api/index.js +25 -0
  92. package/dist/cjs/config/jest/api/jest-preset.d.ts +4 -0
  93. package/dist/cjs/config/jest/api/jest-preset.d.ts.map +1 -0
  94. package/dist/cjs/config/jest/api/jest-preset.js +140 -0
  95. package/dist/cjs/config/jest/api/jest.setup.d.ts +2 -0
  96. package/dist/cjs/config/jest/api/jest.setup.d.ts.map +1 -0
  97. package/dist/cjs/config/jest/api/jest.setup.js +267 -0
  98. package/dist/cjs/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts +11 -0
  99. package/dist/cjs/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -0
  100. package/dist/cjs/config/jest/babelPlugins/babel-plugin-redwood-cell.js +122 -0
  101. package/dist/cjs/config/jest/jest-serial-runner.d.ts +8 -0
  102. package/dist/cjs/config/jest/jest-serial-runner.d.ts.map +1 -0
  103. package/dist/cjs/config/jest/jest-serial-runner.js +37 -0
  104. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.d.ts +6 -0
  105. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -0
  106. package/dist/cjs/config/jest/web/RedwoodWebJestEnv.js +43 -0
  107. package/dist/cjs/config/jest/web/index.d.ts +3 -0
  108. package/dist/cjs/config/jest/web/index.d.ts.map +1 -0
  109. package/dist/cjs/config/jest/web/index.js +25 -0
  110. package/dist/cjs/config/jest/web/jest-fixed-jsdom.d.js +1 -0
  111. package/dist/cjs/config/jest/web/jest-preset.d.ts +4 -0
  112. package/dist/cjs/config/jest/web/jest-preset.d.ts.map +1 -0
  113. package/dist/cjs/config/jest/web/jest-preset.js +224 -0
  114. package/dist/cjs/config/jest/web/jest.setup.d.ts +7 -0
  115. package/dist/cjs/config/jest/web/jest.setup.d.ts.map +1 -0
  116. package/dist/cjs/config/jest/web/jest.setup.js +21 -0
  117. package/dist/cjs/config/jest/web/resolver.d.ts +4 -0
  118. package/dist/cjs/config/jest/web/resolver.d.ts.map +1 -0
  119. package/dist/cjs/config/jest/web/resolver.js +30 -0
  120. package/dist/cjs/config/jest/web/webBabelConfig.d.ts +10 -0
  121. package/dist/cjs/config/jest/web/webBabelConfig.d.ts.map +1 -0
  122. package/dist/cjs/config/jest/web/webBabelConfig.js +48 -0
  123. package/dist/cjs/package.json +1 -0
  124. package/dist/cjs/web/MockParamsProvider.d.ts +7 -0
  125. package/dist/cjs/web/MockParamsProvider.d.ts.map +1 -0
  126. package/dist/cjs/web/MockParamsProvider.js +44 -0
  127. package/dist/cjs/web/MockProviders.d.ts +5 -0
  128. package/dist/cjs/web/MockProviders.d.ts.map +1 -0
  129. package/dist/cjs/web/MockProviders.js +66 -0
  130. package/dist/cjs/web/MockRouter.d.ts +11 -0
  131. package/dist/cjs/web/MockRouter.d.ts.map +1 -0
  132. package/dist/cjs/web/MockRouter.js +48 -0
  133. package/dist/cjs/web/customRender.d.ts +6 -0
  134. package/dist/cjs/web/customRender.d.ts.map +1 -0
  135. package/dist/cjs/web/customRender.js +54 -0
  136. package/dist/cjs/web/fileMock.d.ts +10 -0
  137. package/dist/cjs/web/fileMock.d.ts.map +1 -0
  138. package/dist/cjs/web/fileMock.js +24 -0
  139. package/dist/cjs/web/findCellMocks.d.ts +2 -0
  140. package/dist/cjs/web/findCellMocks.d.ts.map +1 -0
  141. package/dist/cjs/web/findCellMocks.js +45 -0
  142. package/dist/cjs/web/globRoutesImporter.d.ts +13 -0
  143. package/dist/cjs/web/globRoutesImporter.d.ts.map +1 -0
  144. package/dist/cjs/web/globRoutesImporter.js +46 -0
  145. package/dist/cjs/web/global.d.ts +6 -0
  146. package/dist/cjs/web/global.d.ts.map +1 -0
  147. package/dist/cjs/web/global.js +1 -0
  148. package/dist/cjs/web/index.d.ts +6 -0
  149. package/dist/cjs/web/index.d.ts.map +1 -0
  150. package/dist/cjs/web/index.js +41 -0
  151. package/dist/cjs/web/mockAuth.d.ts +29 -0
  152. package/dist/cjs/web/mockAuth.d.ts.map +1 -0
  153. package/dist/cjs/web/mockAuth.js +89 -0
  154. package/dist/cjs/web/mockRequests.d.ts +72 -0
  155. package/dist/cjs/web/mockRequests.d.ts.map +1 -0
  156. package/dist/cjs/web/mockRequests.js +210 -0
  157. package/dist/cjs/web/vitest/index.js +37 -0
  158. package/dist/cjs/web/vitest/vite-plugin-auto-import.js +60 -0
  159. package/dist/cjs/web/vitest/vite-plugin-cedar-vitest-web-config.js +51 -0
  160. package/dist/cjs/web/vitest/vite-plugin-cedarjs-router-import-transform.js +42 -0
  161. package/dist/cjs/web/vitest/vite-plugin-create-auth-import-transform.js +43 -0
  162. package/dist/cjs/web/vitest/vitest-web.setup.js +19 -0
  163. package/dist/config/jest/api/RedwoodApiJestEnv.d.ts +11 -0
  164. package/dist/config/jest/api/RedwoodApiJestEnv.d.ts.map +1 -0
  165. package/dist/config/jest/api/RedwoodApiJestEnv.js +28 -0
  166. package/dist/config/jest/api/apiBabelConfig.d.ts +5 -0
  167. package/dist/config/jest/api/apiBabelConfig.d.ts.map +1 -0
  168. package/dist/config/jest/api/apiBabelConfig.js +18 -0
  169. package/dist/config/jest/api/globalSetup.d.ts +3 -0
  170. package/dist/config/jest/api/globalSetup.d.ts.map +1 -0
  171. package/dist/config/jest/api/globalSetup.js +36 -0
  172. package/dist/config/jest/api/index.d.ts +3 -0
  173. package/dist/config/jest/api/index.d.ts.map +1 -0
  174. package/dist/config/jest/api/index.js +15 -0
  175. package/dist/config/jest/api/jest-preset.d.ts +4 -0
  176. package/dist/config/jest/api/jest-preset.d.ts.map +1 -0
  177. package/dist/config/jest/api/jest-preset.js +110 -0
  178. package/dist/config/jest/api/jest.setup.d.ts +2 -0
  179. package/dist/config/jest/api/jest.setup.d.ts.map +1 -0
  180. package/dist/config/jest/api/jest.setup.js +244 -0
  181. package/dist/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts +11 -0
  182. package/dist/config/jest/babelPlugins/babel-plugin-redwood-cell.d.ts.map +1 -0
  183. package/dist/config/jest/babelPlugins/babel-plugin-redwood-cell.js +102 -0
  184. package/dist/config/jest/jest-serial-runner.d.ts +8 -0
  185. package/dist/config/jest/jest-serial-runner.d.ts.map +1 -0
  186. package/dist/config/jest/jest-serial-runner.js +27 -0
  187. package/dist/config/jest/web/RedwoodWebJestEnv.d.ts +6 -0
  188. package/dist/config/jest/web/RedwoodWebJestEnv.d.ts.map +1 -0
  189. package/dist/config/jest/web/RedwoodWebJestEnv.js +13 -0
  190. package/dist/config/jest/web/index.d.ts +3 -0
  191. package/dist/config/jest/web/index.d.ts.map +1 -0
  192. package/dist/config/jest/web/index.js +15 -0
  193. package/dist/config/jest/web/jest-fixed-jsdom.d.js +0 -0
  194. package/dist/config/jest/web/jest-preset.d.ts +4 -0
  195. package/dist/config/jest/web/jest-preset.d.ts.map +1 -0
  196. package/dist/config/jest/web/jest-preset.js +194 -0
  197. package/dist/config/jest/web/jest.setup.d.ts +7 -0
  198. package/dist/config/jest/web/jest.setup.d.ts.map +1 -0
  199. package/dist/config/jest/web/jest.setup.js +27 -0
  200. package/dist/config/jest/web/resolver.d.ts +4 -0
  201. package/dist/config/jest/web/resolver.d.ts.map +1 -0
  202. package/dist/config/jest/web/resolver.js +42 -0
  203. package/dist/config/jest/web/webBabelConfig.d.ts +10 -0
  204. package/dist/config/jest/web/webBabelConfig.d.ts.map +1 -0
  205. package/dist/config/jest/web/webBabelConfig.js +18 -0
  206. package/dist/web/MockParamsProvider.d.ts.map +1 -1
  207. package/dist/web/MockParamsProvider.js +1 -10
  208. package/dist/web/MockRouter.d.ts.map +1 -1
  209. package/dist/web/fileMock.d.ts +10 -0
  210. package/dist/web/fileMock.d.ts.map +1 -0
  211. package/dist/web/fileMock.js +4 -0
  212. package/dist/web/mockRequests.d.ts +0 -14
  213. package/dist/web/mockRequests.d.ts.map +1 -1
  214. package/dist/web/mockRequests.js +0 -8
  215. package/package.json +95 -22
  216. package/dist/api/vitest/teardown.d.ts +0 -18
  217. package/dist/api/vitest/teardown.d.ts.map +0 -1
  218. package/dist/api/vitest/teardown.js +0 -43
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
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
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var customRender_exports = {};
30
+ __export(customRender_exports, {
31
+ customRender: () => customRender,
32
+ customRenderHook: () => customRenderHook
33
+ });
34
+ module.exports = __toCommonJS(customRender_exports);
35
+ var import_react = __toESM(require("react"), 1);
36
+ var import_react2 = require("@testing-library/react");
37
+ var import_MockProviders = require("./MockProviders.js");
38
+ const customRender = (ui, options = {}) => {
39
+ return (0, import_react2.render)(ui, {
40
+ wrapper: (props) => /* @__PURE__ */ import_react.default.createElement(import_MockProviders.MockProviders, { ...props }),
41
+ ...options
42
+ });
43
+ };
44
+ const customRenderHook = (render2, options) => {
45
+ return (0, import_react2.renderHook)(render2, {
46
+ wrapper: (props) => /* @__PURE__ */ import_react.default.createElement(import_MockProviders.MockProviders, { ...props }),
47
+ ...options
48
+ });
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ customRender,
53
+ customRenderHook
54
+ });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Lets Jest gracefully handle asset files such as stylesheets and images.
3
+ * Usually, these files aren't particularly useful in tests so we can safely
4
+ * mock them out. Asset imports are mapped to this module by the
5
+ * `moduleNameMapper` config in
6
+ * `packages/testing/src/config/jest/web/jest-preset.ts`.
7
+ */
8
+ declare const _default: "fileMock";
9
+ export default _default;
10
+ //# sourceMappingURL=fileMock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileMock.d.ts","sourceRoot":"","sources":["../../../src/web/fileMock.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;wBACY,UAAU;AAAzB,wBAAyB"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var fileMock_exports = {};
20
+ __export(fileMock_exports, {
21
+ default: () => fileMock_default
22
+ });
23
+ module.exports = __toCommonJS(fileMock_exports);
24
+ var fileMock_default = "fileMock";
@@ -0,0 +1,2 @@
1
+ export declare const findCellMocks: (webBasePath: string) => string[];
2
+ //# sourceMappingURL=findCellMocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findCellMocks.d.ts","sourceRoot":"","sources":["../../../src/web/findCellMocks.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,aAOhD,CAAA"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
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
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var findCellMocks_exports = {};
30
+ __export(findCellMocks_exports, {
31
+ findCellMocks: () => findCellMocks
32
+ });
33
+ module.exports = __toCommonJS(findCellMocks_exports);
34
+ var import_fast_glob = __toESM(require("fast-glob"), 1);
35
+ const findCellMocks = (webBasePath) => {
36
+ return import_fast_glob.default.sync("**/*Cell/*.mock.{js,ts,jsx,tsx}", {
37
+ cwd: webBasePath,
38
+ ignore: ["node_modules"],
39
+ absolute: true
40
+ });
41
+ };
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ findCellMocks
45
+ });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * All the routes the user has defined
3
+ *
4
+ * We render this in the `<MockProviders>` component to populate the `routes`
5
+ * import from `@cedarjs/router` to make sure code like
6
+ * `<Link to={routes.home()}>Home</Link>` works in tests
7
+ *
8
+ * The final piece to this puzzle is to realize that the user's Routes file
9
+ * imports `@cedarjs/router`, which we replace to import from '@cedarjs/testing'
10
+ * instead using a vite plugin that we only run for vitest and storybook
11
+ */
12
+ export declare const UserRoutes: React.FC;
13
+ //# sourceMappingURL=globRoutesImporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globRoutesImporter.d.ts","sourceRoot":"","sources":["../../../src/web/globRoutesImporter.ts"],"names":[],"mappings":"AAwCA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAqB,KAAK,CAAC,EAAE,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var globRoutesImporter_exports = {};
20
+ __export(globRoutesImporter_exports, {
21
+ UserRoutes: () => UserRoutes
22
+ });
23
+ module.exports = __toCommonJS(globRoutesImporter_exports);
24
+ const import_meta = { glob: () => ({ "routes.tsx": () => null }) };
25
+ const defaultExports = import_meta.glob(
26
+ ["/src/Routes.{tsx,jsx}", "/Routes.{tsx,jsx}"],
27
+ {
28
+ import: "default",
29
+ eager: true
30
+ }
31
+ );
32
+ const routesFileName = Object.keys(defaultExports)[0];
33
+ if (!routesFileName) {
34
+ throw new Error("@cedarjs/testing: No routes found");
35
+ }
36
+ const routesFunction = defaultExports[routesFileName];
37
+ if (typeof routesFunction !== "function") {
38
+ throw new Error(
39
+ "@cedarjs/testing: Routes file does not export a React component"
40
+ );
41
+ }
42
+ const UserRoutes = routesFunction;
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ UserRoutes
46
+ });
@@ -0,0 +1,6 @@
1
+ import type { mockGraphQLQuery as _mockGraphQLQuery, mockGraphQLMutation as _mockGraphQLMutation } from './mockRequests.js';
2
+ declare global {
3
+ var mockGraphQLQuery: typeof _mockGraphQLQuery;
4
+ var mockGraphQLMutation: typeof _mockGraphQLMutation;
5
+ }
6
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../../src/web/global.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,IAAI,iBAAiB,EACrC,mBAAmB,IAAI,oBAAoB,EAC5C,MAAM,mBAAmB,CAAA;AAE1B,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,gBAAgB,EAAE,OAAO,iBAAiB,CAAA;IAE9C,IAAI,mBAAmB,EAAE,OAAO,oBAAoB,CAAA;CAGrD"}
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,6 @@
1
+ export * from '@testing-library/react';
2
+ export { customRender as render, customRenderHook as renderHook, } from './customRender.js';
3
+ export { MockProviders } from './MockProviders.js';
4
+ export { useAuth } from './mockAuth.js';
5
+ export * from './mockRequests.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AAGtC,OAAO,EACL,YAAY,IAAI,MAAM,EACtB,gBAAgB,IAAI,UAAU,GAC/B,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var web_exports = {};
21
+ __export(web_exports, {
22
+ MockProviders: () => import_MockProviders.MockProviders,
23
+ render: () => import_customRender.customRender,
24
+ renderHook: () => import_customRender.customRenderHook,
25
+ useAuth: () => import_mockAuth.useAuth
26
+ });
27
+ module.exports = __toCommonJS(web_exports);
28
+ __reExport(web_exports, require("@testing-library/react"), module.exports);
29
+ var import_customRender = require("./customRender.js");
30
+ var import_MockProviders = require("./MockProviders.js");
31
+ var import_mockAuth = require("./mockAuth.js");
32
+ __reExport(web_exports, require("./mockRequests.js"), module.exports);
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ MockProviders,
36
+ render,
37
+ renderHook,
38
+ useAuth,
39
+ ...require("@testing-library/react"),
40
+ ...require("./mockRequests.js")
41
+ });
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ export * from '@cedarjs/auth';
3
+ interface Props {
4
+ children: React.ReactNode;
5
+ }
6
+ export declare function useAuth(): {
7
+ loading: boolean;
8
+ isAuthenticated: boolean;
9
+ logIn: () => Promise<void>;
10
+ logOut: () => Promise<void>;
11
+ signUp: () => Promise<void>;
12
+ currentUser: Record<string, unknown> | null;
13
+ userMetadata: Record<string, unknown> | null;
14
+ getToken: () => Promise<null>;
15
+ getCurrentUser: () => Promise<Record<string, unknown> | null>;
16
+ hasRole: (roles: string | string[]) => boolean;
17
+ reauthenticate: () => Promise<void>;
18
+ forgotPassword: () => Promise<void>;
19
+ resetPassword: () => Promise<void>;
20
+ validateResetToken: () => Promise<void>;
21
+ type: string;
22
+ client: undefined;
23
+ hasError: boolean;
24
+ };
25
+ export declare const createAuthentication: () => {
26
+ AuthProvider: React.FC<Props>;
27
+ useAuth: typeof useAuth;
28
+ };
29
+ //# sourceMappingURL=mockAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockAuth.d.ts","sourceRoot":"","sources":["../../../src/web/mockAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,cAAc,eAAe,CAAA;AAI7B,UAAU,KAAK;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAYD,wBAAgB,OAAO;;;;;;;;;;qBAWF,MAAM,GAAG,MAAM,EAAE;;;;;;;;EAmBrC;AAED,eAAO,MAAM,oBAAoB;;;CAEhC,CAAA"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var mockAuth_exports = {};
31
+ __export(mockAuth_exports, {
32
+ createAuthentication: () => createAuthentication,
33
+ useAuth: () => useAuth
34
+ });
35
+ module.exports = __toCommonJS(mockAuth_exports);
36
+ var import_react = __toESM(require("react"), 1);
37
+ __reExport(mockAuth_exports, require("@cedarjs/auth"), module.exports);
38
+ var import_mockRequests = require("./mockRequests.js");
39
+ const AuthProvider = ({ children }) => {
40
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, children);
41
+ };
42
+ function makeArray(input) {
43
+ return !input ? [] : Array.isArray(input) ? input : [input];
44
+ }
45
+ function useAuth() {
46
+ return {
47
+ loading: false,
48
+ isAuthenticated: !!import_mockRequests.mockedUserMeta.currentUser,
49
+ logIn: async () => {
50
+ },
51
+ logOut: async () => {
52
+ },
53
+ signUp: async () => {
54
+ },
55
+ currentUser: import_mockRequests.mockedUserMeta.currentUser,
56
+ userMetadata: import_mockRequests.mockedUserMeta.currentUser,
57
+ getToken: async () => null,
58
+ getCurrentUser: async () => import_mockRequests.mockedUserMeta.currentUser,
59
+ hasRole: (roles) => {
60
+ const currentUserRoles = makeArray(
61
+ import_mockRequests.mockedUserMeta.currentUser?.roles
62
+ );
63
+ if (currentUserRoles) {
64
+ return makeArray(roles).some((role) => currentUserRoles.includes(role));
65
+ }
66
+ return false;
67
+ },
68
+ reauthenticate: async () => {
69
+ },
70
+ forgotPassword: async () => {
71
+ },
72
+ resetPassword: async () => {
73
+ },
74
+ validateResetToken: async () => {
75
+ },
76
+ type: "default",
77
+ client: void 0,
78
+ hasError: false
79
+ };
80
+ }
81
+ const createAuthentication = () => {
82
+ return { AuthProvider, useAuth };
83
+ };
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ createAuthentication,
87
+ useAuth,
88
+ ...require("@cedarjs/auth")
89
+ });
@@ -0,0 +1,72 @@
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>;
16
+ export declare const setupRequestHandlers: () => void;
17
+ export declare const closeServer: () => void;
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
+ }
60
+ export type DataFunction<Query extends Record<string, unknown> = Record<string, unknown>, QueryVariables = Record<string, any>> = (variables: QueryVariables, { req, ctx, }: {
61
+ req: MockGraphQLRequest;
62
+ ctx: MockGraphQLContext;
63
+ }) => Query | void | Promise<Query | void>;
64
+ type ResponseEnhancer = 'once' | 'networkError';
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>>;
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>>;
67
+ export declare const mockedUserMeta: {
68
+ currentUser: Record<string, unknown> | null;
69
+ };
70
+ export declare const mockCurrentUser: (user: Record<string, unknown> | null) => void;
71
+ export {};
72
+ //# sourceMappingURL=mockRequests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockRequests.d.ts","sourceRoot":"","sources":["../../../src/web/mockRequests.ts"],"names":[],"mappings":"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"}