@mui/internal-test-utils 1.0.0-dev.20240529-082515-213b5e33ab

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 (148) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +9 -0
  4. package/build/.tsbuildinfo +1 -0
  5. package/build/KarmaReporterReactProfiler.d.ts +51 -0
  6. package/build/KarmaReporterReactProfiler.d.ts.map +1 -0
  7. package/build/KarmaReporterReactProfiler.js +68 -0
  8. package/build/KarmaReporterReactProfiler.js.map +1 -0
  9. package/build/components.d.ts +36 -0
  10. package/build/components.d.ts.map +1 -0
  11. package/build/components.js +78 -0
  12. package/build/components.js.map +1 -0
  13. package/build/createDOM.d.ts +3 -0
  14. package/build/createDOM.d.ts.map +1 -0
  15. package/build/createDOM.js +60 -0
  16. package/build/createDOM.js.map +1 -0
  17. package/build/createDescribe.d.ts +8 -0
  18. package/build/createDescribe.d.ts.map +1 -0
  19. package/build/createDescribe.js +22 -0
  20. package/build/createDescribe.js.map +1 -0
  21. package/build/createMount.d.ts +9 -0
  22. package/build/createMount.d.ts.map +1 -0
  23. package/build/createMount.js +120 -0
  24. package/build/createMount.js.map +1 -0
  25. package/build/createRenderer.d.ts +231 -0
  26. package/build/createRenderer.d.ts.map +1 -0
  27. package/build/createRenderer.js +506 -0
  28. package/build/createRenderer.js.map +1 -0
  29. package/build/createRenderer.test.d.ts +2 -0
  30. package/build/createRenderer.test.d.ts.map +1 -0
  31. package/build/createRenderer.test.js +48 -0
  32. package/build/createRenderer.test.js.map +1 -0
  33. package/build/describeConformance.d.ts +152 -0
  34. package/build/describeConformance.d.ts.map +1 -0
  35. package/build/describeConformance.js +815 -0
  36. package/build/describeConformance.js.map +1 -0
  37. package/build/findOutermostIntrinsic.d.ts +14 -0
  38. package/build/findOutermostIntrinsic.d.ts.map +1 -0
  39. package/build/findOutermostIntrinsic.js +22 -0
  40. package/build/findOutermostIntrinsic.js.map +1 -0
  41. package/build/findOutermostIntrinsic.test.d.ts +2 -0
  42. package/build/findOutermostIntrinsic.test.d.ts.map +1 -0
  43. package/build/findOutermostIntrinsic.test.js +70 -0
  44. package/build/findOutermostIntrinsic.test.js.map +1 -0
  45. package/build/fireDiscreteEvent.d.ts +7 -0
  46. package/build/fireDiscreteEvent.d.ts.map +1 -0
  47. package/build/fireDiscreteEvent.js +98 -0
  48. package/build/fireDiscreteEvent.js.map +1 -0
  49. package/build/flushMicrotasks.d.ts +2 -0
  50. package/build/flushMicrotasks.d.ts.map +1 -0
  51. package/build/flushMicrotasks.js +11 -0
  52. package/build/flushMicrotasks.js.map +1 -0
  53. package/build/focusVisible.d.ts +7 -0
  54. package/build/focusVisible.d.ts.map +1 -0
  55. package/build/focusVisible.js +33 -0
  56. package/build/focusVisible.js.map +1 -0
  57. package/build/index.d.ts +18 -0
  58. package/build/index.d.ts.map +1 -0
  59. package/build/index.js +59 -0
  60. package/build/index.js.map +1 -0
  61. package/build/init.d.ts +2 -0
  62. package/build/init.d.ts.map +1 -0
  63. package/build/init.js +42 -0
  64. package/build/init.js.map +1 -0
  65. package/build/initMatchers.d.ts +81 -0
  66. package/build/initMatchers.d.ts.map +1 -0
  67. package/build/initMatchers.js +431 -0
  68. package/build/initMatchers.js.map +1 -0
  69. package/build/initMatchers.test.d.ts +2 -0
  70. package/build/initMatchers.test.d.ts.map +1 -0
  71. package/build/initMatchers.test.js +103 -0
  72. package/build/initMatchers.test.js.map +1 -0
  73. package/build/initPlaywrightMatchers.d.ts +25 -0
  74. package/build/initPlaywrightMatchers.d.ts.map +1 -0
  75. package/build/initPlaywrightMatchers.js +63 -0
  76. package/build/initPlaywrightMatchers.js.map +1 -0
  77. package/build/mochaHooks.d.ts +25 -0
  78. package/build/mochaHooks.d.ts.map +1 -0
  79. package/build/mochaHooks.js +171 -0
  80. package/build/mochaHooks.js.map +1 -0
  81. package/build/mochaHooks.test.d.ts +2 -0
  82. package/build/mochaHooks.test.d.ts.map +1 -0
  83. package/build/mochaHooks.test.js +112 -0
  84. package/build/mochaHooks.test.js.map +1 -0
  85. package/build/setup.d.ts +2 -0
  86. package/build/setup.d.ts.map +1 -0
  87. package/build/setup.js +10 -0
  88. package/build/setup.js.map +1 -0
  89. package/build/setupBabel.d.ts +2 -0
  90. package/build/setupBabel.d.ts.map +1 -0
  91. package/build/setupBabel.js +5 -0
  92. package/build/setupBabel.js.map +1 -0
  93. package/build/setupBabelPlaywright.d.ts +2 -0
  94. package/build/setupBabelPlaywright.d.ts.map +1 -0
  95. package/build/setupBabelPlaywright.js +11 -0
  96. package/build/setupBabelPlaywright.js.map +1 -0
  97. package/build/setupJSDOM.d.ts +7 -0
  98. package/build/setupJSDOM.d.ts.map +1 -0
  99. package/build/setupJSDOM.js +17 -0
  100. package/build/setupJSDOM.js.map +1 -0
  101. package/build/setupKarma.d.ts +2 -0
  102. package/build/setupKarma.d.ts.map +1 -0
  103. package/build/setupKarma.js +56 -0
  104. package/build/setupKarma.js.map +1 -0
  105. package/build/until.d.ts +2 -0
  106. package/build/until.d.ts.map +1 -0
  107. package/build/until.js +26 -0
  108. package/build/until.js.map +1 -0
  109. package/build/until.test.d.ts +2 -0
  110. package/build/until.test.d.ts.map +1 -0
  111. package/build/until.test.js +118 -0
  112. package/build/until.test.js.map +1 -0
  113. package/build/userEvent.d.ts +8 -0
  114. package/build/userEvent.d.ts.map +1 -0
  115. package/build/userEvent.js +61 -0
  116. package/build/userEvent.js.map +1 -0
  117. package/package.json +76 -0
  118. package/src/KarmaReporterReactProfiler.js +81 -0
  119. package/src/components.tsx +61 -0
  120. package/src/createDOM.d.ts +9 -0
  121. package/src/createDOM.js +67 -0
  122. package/src/createDescribe.ts +31 -0
  123. package/src/createMount.tsx +136 -0
  124. package/src/createRenderer.test.js +31 -0
  125. package/src/createRenderer.tsx +737 -0
  126. package/src/describeConformance.tsx +1117 -0
  127. package/src/findOutermostIntrinsic.test.js +68 -0
  128. package/src/findOutermostIntrinsic.ts +19 -0
  129. package/src/fireDiscreteEvent.ts +76 -0
  130. package/src/flushMicrotasks.ts +8 -0
  131. package/src/focusVisible.ts +28 -0
  132. package/src/index.ts +24 -0
  133. package/src/init.js +15 -0
  134. package/src/initMatchers.test.js +126 -0
  135. package/src/initMatchers.ts +658 -0
  136. package/src/initPlaywrightMatchers.ts +96 -0
  137. package/src/mochaHooks.js +209 -0
  138. package/src/mochaHooks.test.js +113 -0
  139. package/src/setup.js +10 -0
  140. package/src/setupBabel.js +3 -0
  141. package/src/setupBabelPlaywright.js +10 -0
  142. package/src/setupJSDOM.js +20 -0
  143. package/src/setupKarma.js +65 -0
  144. package/src/until.js +28 -0
  145. package/src/until.test.js +120 -0
  146. package/src/userEvent.ts +35 -0
  147. package/tsconfig.build.json +17 -0
  148. package/tsconfig.json +12 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const chai_1 = __importStar(require("chai"));
27
+ chai_1.default.use((chaiAPI, utils) => {
28
+ chai_1.default.Assertion.addMethod('toHaveFocus', async function elementHandleIsFocused() {
29
+ const $elementOrHandle = utils.flag(this, 'object');
30
+ if ($elementOrHandle == null) {
31
+ throw new chai_1.AssertionError(`Expected an element handle but got ${String($elementOrHandle)}.`);
32
+ }
33
+ const $element = typeof $elementOrHandle.then === 'function'
34
+ ? await $elementOrHandle
35
+ : $elementOrHandle;
36
+ const { isFocused, stringifiedActiveElement, stringifiedElement } = await $element.evaluate((element) => {
37
+ const activeElement = element.ownerDocument !== null ? element.ownerDocument.activeElement : null;
38
+ return {
39
+ isFocused: activeElement === element,
40
+ stringifiedElement: window.elementToString(element),
41
+ stringifiedActiveElement: window.elementToString(activeElement),
42
+ };
43
+ });
44
+ this.assert(isFocused, `expected element to have focus`, `expected element to NOT have focus \n${stringifiedElement}`, stringifiedElement, stringifiedActiveElement);
45
+ });
46
+ chai_1.default.Assertion.addMethod('toHaveAttribute', async function elementHandleHasAttribute(attributeName, attributeValue) {
47
+ const $elementOrHandle = utils.flag(this, 'object');
48
+ if ($elementOrHandle == null) {
49
+ throw new chai_1.AssertionError(`Expected an element handle but got ${String($elementOrHandle)}.`);
50
+ }
51
+ const $element = typeof $elementOrHandle.then === 'function'
52
+ ? await $elementOrHandle
53
+ : $elementOrHandle;
54
+ const actualAttributeValue = await $element.getAttribute(attributeName);
55
+ if (attributeValue === undefined) {
56
+ this.assert(actualAttributeValue !== null, `expected element to have attribute \`${attributeName}\``, `expected element to NOT have attribute \`${attributeName}\``, null, null);
57
+ }
58
+ else {
59
+ this.assert(actualAttributeValue === attributeValue, `expected element to have attribute \`${attributeName}="${attributeValue}"\``, `expected element to NOT have attribute \`${attributeName}="${attributeValue}"\``, attributeValue, actualAttributeValue);
60
+ }
61
+ });
62
+ });
63
+ //# sourceMappingURL=initPlaywrightMatchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initPlaywrightMatchers.js","sourceRoot":"","sources":["../src/initPlaywrightMatchers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AA8B5C,cAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;IAC1B,cAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,UAAU,sBAAsB;QAC3E,MAAM,gBAAgB,GAA2C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAc,CAAC,sCAAsC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,QAAQ,GACZ,OAAQ,gBAAiC,CAAC,IAAI,KAAK,UAAU;YAC3D,CAAC,CAAC,MAAO,gBAA2C;YACpD,CAAC,CAAE,gBAAkC,CAAC;QAE1C,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACzF,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,aAAa,GACjB,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,OAAO;gBACL,SAAS,EAAE,aAAa,KAAK,OAAO;gBACpC,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;gBACnD,wBAAwB,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;aAChE,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CACT,SAAS,EACT,gCAAgC,EAChC,wCAAwC,kBAAkB,EAAE,EAC5D,kBAAkB,EAClB,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,cAAI,CAAC,SAAS,CAAC,SAAS,CACtB,iBAAiB,EACjB,KAAK,UAAU,yBAAyB,CAAC,aAAqB,EAAE,cAAuB;QACrF,MAAM,gBAAgB,GAA2C,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAc,CAAC,sCAAsC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,QAAQ,GACZ,OAAQ,gBAAiC,CAAC,IAAI,KAAK,UAAU;YAC3D,CAAC,CAAC,MAAO,gBAA2C;YACpD,CAAC,CAAE,gBAAkC,CAAC;QAE1C,MAAM,oBAAoB,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAExE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CACT,oBAAoB,KAAK,IAAI,EAC7B,wCAAwC,aAAa,IAAI,EACzD,4CAA4C,aAAa,IAAI,EAC7D,IAAI,EACJ,IAAI,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CACT,oBAAoB,KAAK,cAAc,EACvC,wCAAwC,aAAa,KAAK,cAAc,KAAK,EAC7E,4CAA4C,aAAa,KAAK,cAAc,KAAK,EACjF,cAAc,EACd,oBAAoB,CACrB,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="mocha" />
2
+ export type MochaHook = (this: import('mocha').Context) => void;
3
+ export type MochaHooks = {
4
+ beforeAll: MochaHook[];
5
+ afterAll: MochaHook[];
6
+ beforeEach: MochaHook[];
7
+ afterEach: MochaHook[];
8
+ };
9
+ /**
10
+ * -- custom definition for `const mocha = require('mocha')`
11
+ */
12
+ export type Mocha = {
13
+ utils: typeof Mocha.utils;
14
+ };
15
+ /**
16
+ * @param {Mocha} Mocha
17
+ * @returns MochaHooks
18
+ */
19
+ export function createMochaHooks(Mocha: Mocha): {
20
+ beforeAll: MochaHook[];
21
+ afterAll: MochaHook[];
22
+ beforeEach: MochaHook[];
23
+ afterEach: MochaHook[];
24
+ };
25
+ //# sourceMappingURL=mochaHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochaHooks.d.ts","sourceRoot":"","sources":["../src/mochaHooks.js"],"names":[],"mappings":";wBAIa,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK,IAAI;;eAGtC,SAAS,EAAE;cACX,SAAS,EAAE;gBACX,SAAS,EAAE;eACX,SAAS,EAAE;;;;;;;;AAsLzB;;;GAGG;AACH,wCAHW,KAAK;;;;;EAaf"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ // @ts-check
3
+ const formatUtil = require('format-util');
4
+ /**
5
+ * @typedef {(this: import('mocha').Context) => void} MochaHook
6
+ *
7
+ * @typedef {object} MochaHooks
8
+ * @property {MochaHook[]} beforeAll
9
+ * @property {MochaHook[]} afterAll
10
+ * @property {MochaHook[]} beforeEach
11
+ * @property {MochaHook[]} afterEach
12
+ *
13
+ * @typedef {object} Mocha -- custom definition for `const mocha = require('mocha')`
14
+ * @property {import('mocha').utils} utils
15
+ */
16
+ const isKarma = Boolean(process.env.KARMA);
17
+ /**
18
+ * Polyfills for https://github.com/facebook/react/issues/19416.
19
+ * @param {[stack: string, message: string][]} consoleCalls
20
+ * @returns {[stack: string, message: string][]}
21
+ */
22
+ function dedupeActWarningsByComponent(consoleCalls) {
23
+ /**
24
+ * @type {[stack: string, message: string][]}
25
+ */
26
+ const dedupedCalls = [];
27
+ /**
28
+ * @type {string | undefined}
29
+ */
30
+ let updatingComponentOutsideAct;
31
+ consoleCalls.forEach(([stack, message]) => {
32
+ const componentName = message.match(/An update to (.+?) ran an effect, but was not wrapped in act/)?.[1];
33
+ const duplicateMissingActWarning = componentName !== undefined && componentName === updatingComponentOutsideAct;
34
+ if (!duplicateMissingActWarning) {
35
+ dedupedCalls.push([stack, message]);
36
+ }
37
+ updatingComponentOutsideAct = componentName;
38
+ });
39
+ return dedupedCalls;
40
+ }
41
+ /**
42
+ * @param {Mocha} Mocha
43
+ * @param {'warn' | 'error'} methodName
44
+ * @param {string} expectedMatcher
45
+ * @returns MochaHooks
46
+ */
47
+ function createUnexpectedConsoleMessagesHooks(Mocha, methodName, expectedMatcher) {
48
+ /**
49
+ * @type {MochaHooks}
50
+ */
51
+ const mochaHooks = {
52
+ beforeAll: [],
53
+ afterAll: [],
54
+ beforeEach: [],
55
+ afterEach: [],
56
+ };
57
+ /**
58
+ * @type {[stack: string, message: string][]}
59
+ */
60
+ const unexpectedCalls = [];
61
+ const stackTraceFilter = Mocha.utils.stackTraceFilter();
62
+ /**
63
+ * @param {string} format
64
+ * @param {...unknown} args
65
+ * @returns {void}
66
+ */
67
+ function logUnexpectedConsoleCalls(format, ...args) {
68
+ const message = formatUtil(format, ...args);
69
+ // Safe stack so that test dev can track where the unexpected console message was created.
70
+ const { stack } = new Error();
71
+ if (stack === undefined) {
72
+ throw new TypeError(`Unable to get stack. Logging unexpected console calls is only supported in environments where Error.prototype.stack is implemented.`);
73
+ }
74
+ if (process.env.NODE_ENV === 'production') {
75
+ // TODO: mock scheduler
76
+ if (message.indexOf('act(...) is not supported in production builds of React') !== -1) {
77
+ return;
78
+ }
79
+ }
80
+ // Ignore legacy root deprecation warnings
81
+ // TODO: Remove once we no longer use legacy roots.
82
+ if (message.indexOf('Use createRoot instead.') !== -1 ||
83
+ message.indexOf('Use hydrateRoot instead.') !== -1) {
84
+ return;
85
+ }
86
+ if (message.indexOf('Warning: useLayoutEffect does nothing on the server') !== -1) {
87
+ // Controversial warning that is commonly ignored by switching to `useEffect` on the server.
88
+ // https://github.com/facebook/react/issues/14927
89
+ // However, this switch doesn't work since it relies on environment sniffing and we test SSR in a browser environment.
90
+ return;
91
+ }
92
+ // Unclear why this is an issue for the current occurrences of this warning.
93
+ // TODO: Revisit once https://github.com/facebook/react/issues/22796 is resolved
94
+ if (message.indexOf('Detected multiple renderers concurrently rendering the same context provider.') !== -1) {
95
+ return;
96
+ }
97
+ unexpectedCalls.push([
98
+ // first line includes the (empty) error message
99
+ // i.e. Remove the `Error:` line
100
+ // second line is this frame
101
+ stackTraceFilter(stack.split('\n').slice(2).join('\n')),
102
+ message,
103
+ ]);
104
+ }
105
+ /**
106
+ * @type {Console['warn' | 'error']}
107
+ */
108
+ let originalConsoleMethod;
109
+ mochaHooks.beforeAll.push(function registerConsoleStub() {
110
+ // eslint-disable-next-line no-console
111
+ originalConsoleMethod = console[methodName];
112
+ // eslint-disable-next-line no-console
113
+ console[methodName] = logUnexpectedConsoleCalls;
114
+ });
115
+ mochaHooks.afterAll.push(function registerConsoleStub() {
116
+ // eslint-disable-next-line no-console
117
+ console[methodName] = originalConsoleMethod;
118
+ });
119
+ mochaHooks.afterEach.push(function flushUnexpectedCalls() {
120
+ const actionableCalls = dedupeActWarningsByComponent(unexpectedCalls);
121
+ const actionableCallCount = actionableCalls.length;
122
+ const formattedCalls = actionableCalls.map(([stack, message], index) => `console.${methodName} message #${index + 1}:\n ${message}\n\nStack:\n${stack}`);
123
+ unexpectedCalls.length = 0;
124
+ // eslint-disable-next-line no-console
125
+ if (console[methodName] !== logUnexpectedConsoleCalls) {
126
+ throw new Error(`Did not tear down spy or stub of console.${methodName} in your test.`);
127
+ }
128
+ if (actionableCallCount > 0) {
129
+ // In karma `file` is `null`.
130
+ // We still have the stacktrace though
131
+ // @ts-expect-error -- this.currentTest being undefined would be a bug
132
+ const location = this.currentTest.file ?? '(unknown file)';
133
+ const message = `Expected test not to call console.${methodName}() but instead received ${actionableCallCount} calls.\n\n` +
134
+ 'If the warning is expected, test for it explicitly by ' +
135
+ // Don't add any punctuation after the location.
136
+ // Otherwise it's not clickable in IDEs
137
+ `using the ${expectedMatcher}() matcher.\nTest location:\n ${location} `;
138
+ const error = new Error(`${message}\n\n${formattedCalls.join('\n\n')}`);
139
+ // The stack of `flushUnexpectedCalls` is irrelevant.
140
+ // It includes no clue where the test was triggered
141
+ error.stack = '';
142
+ if (isKarma) {
143
+ // @ts-expect-error -- this.currentTest being undefined would be a bug
144
+ const testPath = `"${this.currentTest.fullTitle()}"`;
145
+ error.message += `\n\nin ${testPath}`;
146
+ throw error;
147
+ }
148
+ else {
149
+ // @ts-expect-error -- this.test being undefined would be a bug
150
+ this.test.error(error);
151
+ }
152
+ }
153
+ });
154
+ return mochaHooks;
155
+ }
156
+ /**
157
+ * @param {Mocha} Mocha
158
+ * @returns MochaHooks
159
+ */
160
+ function createMochaHooks(Mocha) {
161
+ const warnHooks = createUnexpectedConsoleMessagesHooks(Mocha, 'warn', 'toWarnDev');
162
+ const errorHooks = createUnexpectedConsoleMessagesHooks(Mocha, 'error', 'toErrorDev');
163
+ return {
164
+ beforeAll: [...warnHooks.beforeAll, ...errorHooks.beforeAll],
165
+ afterAll: [...warnHooks.afterAll, ...errorHooks.afterAll],
166
+ beforeEach: [...warnHooks.beforeEach, ...errorHooks.beforeEach],
167
+ afterEach: [...warnHooks.afterEach, ...errorHooks.afterEach],
168
+ };
169
+ }
170
+ module.exports = { createMochaHooks };
171
+ //# sourceMappingURL=mochaHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochaHooks.js","sourceRoot":"","sources":["../src/mochaHooks.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mochaHooks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochaHooks.test.d.ts","sourceRoot":"","sources":["../src/mochaHooks.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const Mocha = __importStar(require("mocha"));
27
+ const chai_1 = require("chai");
28
+ const React = __importStar(require("react"));
29
+ const sinon_1 = require("sinon");
30
+ const mochaHooks_1 = require("./mochaHooks");
31
+ const createRenderer_1 = require("./createRenderer");
32
+ describe('mochaHooks', () => {
33
+ // one block per hook.
34
+ describe('afterEach', () => {
35
+ describe('on unexpected console.(warn|error) in afterEach', function suite() {
36
+ const mochaHooks = (0, mochaHooks_1.createMochaHooks)(Mocha);
37
+ beforeEach(function beforeEachHook() {
38
+ mochaHooks.beforeAll.forEach((beforeAllMochaHook) => {
39
+ beforeAllMochaHook.call(this);
40
+ });
41
+ mochaHooks.beforeEach.forEach((beforeEachMochaHook) => {
42
+ beforeEachMochaHook.call(this);
43
+ });
44
+ });
45
+ it('throws an error', () => {
46
+ console.warn('unexpected warning');
47
+ console.error('unexpected error');
48
+ });
49
+ afterEach(function afterEachHook() {
50
+ const errorStub = (0, sinon_1.stub)(this.test, 'error');
51
+ mochaHooks.afterEach.forEach((afterEachMochaHook) => {
52
+ afterEachMochaHook.call(this);
53
+ });
54
+ mochaHooks.afterAll.forEach((afterAllMochaHook) => {
55
+ afterAllMochaHook.call(this);
56
+ });
57
+ (0, chai_1.expect)(errorStub.callCount).to.equal(2);
58
+ (0, chai_1.expect)(String(errorStub.firstCall.args[0])).to.include('console.warn message #1:\n unexpected warning\n\nStack:');
59
+ (0, chai_1.expect)(String(errorStub.secondCall.args[0])).to.include('console.error message #1:\n unexpected error\n\nStack:');
60
+ });
61
+ });
62
+ // TODO: May not be relevant in React 18
63
+ describe('when having missing act() warnings by component', () => {
64
+ const mochaHooks = (0, mochaHooks_1.createMochaHooks)(Mocha);
65
+ // missing act warnings only happen in StrictMode
66
+ const { render } = (0, createRenderer_1.createRenderer)({ strict: true });
67
+ beforeEach(function beforeEachHook() {
68
+ mochaHooks.beforeAll.forEach((beforeAllMochaHook) => {
69
+ beforeAllMochaHook.call(this);
70
+ });
71
+ mochaHooks.beforeEach.forEach((beforeEachMochaHook) => {
72
+ beforeEachMochaHook.call(this);
73
+ });
74
+ });
75
+ it('dedupes them', () => {
76
+ const Child = React.forwardRef(function Child() {
77
+ React.useEffect(() => { });
78
+ React.useEffect(() => { });
79
+ return null;
80
+ });
81
+ let unsafeSetState;
82
+ function Parent() {
83
+ const [state, setState] = React.useState(0);
84
+ unsafeSetState = setState;
85
+ React.useEffect(() => { });
86
+ React.useEffect(() => { });
87
+ return React.createElement(Child, { rerender: state });
88
+ }
89
+ render(React.createElement(Parent, null));
90
+ // not wrapped in act()
91
+ unsafeSetState(1);
92
+ // make sure effects are flushed
93
+ (0, createRenderer_1.act)(() => { });
94
+ });
95
+ afterEach(function afterEachHook() {
96
+ const errorStub = (0, sinon_1.stub)(this.test, 'error');
97
+ mochaHooks.afterEach.forEach((afterEachMochaHook) => {
98
+ afterEachMochaHook.call(this);
99
+ });
100
+ mochaHooks.afterAll.forEach((afterAllMochaHook) => {
101
+ afterAllMochaHook.call(this);
102
+ });
103
+ (0, chai_1.expect)(errorStub.callCount).to.equal(1);
104
+ const error = String(errorStub.firstCall.args[0]);
105
+ (0, chai_1.expect)(error.match(/An update to Parent inside a test was not wrapped in act/g)).to.have.lengthOf(1);
106
+ (0, chai_1.expect)(error.match(/An update to Parent ran an effect, but was not wrapped in act/g) ?? []).to.have.lengthOf(React.startTransition !== undefined ? 0 : 1);
107
+ (0, chai_1.expect)(error.match(/An update to ForwardRef\(Child\) ran an effect, but was not wrapped in act/g) ?? []).to.have.lengthOf(React.startTransition !== undefined ? 0 : 1);
108
+ });
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=mochaHooks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mochaHooks.test.js","sourceRoot":"","sources":["../src/mochaHooks.test.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.js"],"names":[],"mappings":""}
package/build/setup.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ const testingLibrary = require('@testing-library/dom');
3
+ const createDOM = require('./createDOM');
4
+ createDOM();
5
+ require('./init');
6
+ testingLibrary.configure({
7
+ // JSDOM logs errors otherwise on `getComputedStyle(element, pseudoElement)` calls.
8
+ computedStyleSupportsPseudoElements: false,
9
+ });
10
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.js"],"names":[],"mappings":";AAAA,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzC,SAAS,EAAE,CAAC;AACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElB,cAAc,CAAC,SAAS,CAAC;IACvB,mFAAmF;IACnF,mCAAmC,EAAE,KAAK;CAC3C,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setupBabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBabel.d.ts","sourceRoot":"","sources":["../src/setupBabel.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ require('@babel/register')({
3
+ extensions: ['.js', '.ts', '.tsx'],
4
+ });
5
+ //# sourceMappingURL=setupBabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBabel.js","sourceRoot":"","sources":["../src/setupBabel.js"],"names":[],"mappings":";AAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setupBabelPlaywright.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBabelPlaywright.d.ts","sourceRoot":"","sources":["../src/setupBabelPlaywright.js"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ // In playwright we sometimes write functions that are executed in the browser environment.
3
+ // Since we can't tell babel which parts of the code are executed in which environment we can only disable it entirely.
4
+ // We're only stripping types and compiling ES6 to CommonJS modules which should be safe.
5
+ require('@babel/register')({
6
+ configFile: false,
7
+ extensions: ['.js', '.ts', '.tsx'],
8
+ presets: [require.resolve('@babel/preset-typescript')],
9
+ plugins: [require.resolve('@babel/plugin-transform-modules-commonjs')],
10
+ });
11
+ //# sourceMappingURL=setupBabelPlaywright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBabelPlaywright.js","sourceRoot":"","sources":["../src/setupBabelPlaywright.js"],"names":[],"mappings":";AAAA,2FAA2F;AAC3F,uHAAuH;AACvH,yFAAyF;AAEzF,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;CACvE,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const mochaHooks: {
2
+ beforeAll: import("./mochaHooks").MochaHook[];
3
+ afterAll: import("./mochaHooks").MochaHook[];
4
+ beforeEach: import("./mochaHooks").MochaHook[];
5
+ afterEach: import("./mochaHooks").MochaHook[];
6
+ };
7
+ //# sourceMappingURL=setupJSDOM.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupJSDOM.d.ts","sourceRoot":"","sources":["../src/setupJSDOM.js"],"names":[],"mappings":"AAiBA;;;;;EAA2C"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ const testingLibrary = require('@testing-library/dom');
3
+ const Mocha = require('mocha');
4
+ const createDOM = require('./createDOM');
5
+ const { createMochaHooks } = require('./mochaHooks');
6
+ // Enable missing act warnings: https://github.com/reactwg/react-18/discussions/102
7
+ global.jest = null;
8
+ global.IS_REACT_ACT_ENVIRONMENT = true;
9
+ createDOM();
10
+ require('./init');
11
+ testingLibrary.configure({
12
+ // JSDOM logs errors otherwise on `getComputedStyle(element, pseudoElement)` calls.
13
+ computedStyleSupportsPseudoElements: false,
14
+ });
15
+ const mochaHooks = createMochaHooks(Mocha);
16
+ module.exports = { mochaHooks };
17
+ //# sourceMappingURL=setupJSDOM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupJSDOM.js","sourceRoot":"","sources":["../src/setupJSDOM.js"],"names":[],"mappings":";AAAA,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAErD,mFAAmF;AACnF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAEvC,SAAS,EAAE,CAAC;AACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;AAElB,cAAc,CAAC,SAAS,CAAC;IACvB,mFAAmF;IACnF,mCAAmC,EAAE,KAAK;CAC3C,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAE3C,MAAM,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setupKarma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupKarma.d.ts","sourceRoot":"","sources":["../src/setupKarma.js"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-env mocha */
4
+ const mochaHooks_1 = require("./mochaHooks");
5
+ const mochaHooks = (0, mochaHooks_1.createMochaHooks)(window.Mocha);
6
+ /**
7
+ * Emit events from `DispatchingProfiler` as `browser_info` karma events.
8
+ */
9
+ function handleReactProfilerResults(event) {
10
+ // Only own properties are persisted when sending the object.
11
+ const info = { type: event.type, detail: event.detail };
12
+ // eslint-disable-next-line no-underscore-dangle -- public: http://karma-runner.github.io/5.2/dev/plugins.html
13
+ window.__karma__.info(info);
14
+ }
15
+ before(function beforeAllHook() {
16
+ mochaHooks.beforeAll.forEach((mochaHook) => {
17
+ mochaHook.call(this);
18
+ });
19
+ window.addEventListener('reactProfilerResults', handleReactProfilerResults);
20
+ });
21
+ after(function afterAllHook() {
22
+ window.removeEventListener('reactProfilerResults', handleReactProfilerResults);
23
+ mochaHooks.afterAll.forEach((mochaHook) => {
24
+ mochaHook.call(this);
25
+ });
26
+ });
27
+ beforeEach(function beforeEachHook() {
28
+ mochaHooks.beforeEach.forEach((mochaHook) => {
29
+ mochaHook.call(this);
30
+ });
31
+ });
32
+ afterEach(function afterEachHook() {
33
+ mochaHooks.afterEach.forEach((mochaHook) => {
34
+ mochaHook.call(this);
35
+ });
36
+ });
37
+ // Ensure that uncaught exceptions between tests result in the tests failing.
38
+ // This works around an issue with mocha / karma-mocha, see
39
+ // https://github.com/karma-runner/karma-mocha/issues/227
40
+ let pendingError = null;
41
+ let pendingErrorNotice = null;
42
+ window.addEventListener('error', (event) => {
43
+ pendingError = event.error;
44
+ pendingErrorNotice = 'An uncaught exception was thrown between tests';
45
+ });
46
+ window.addEventListener('unhandledrejection', (event) => {
47
+ pendingError = event.reason;
48
+ pendingErrorNotice = 'An uncaught promise rejection occurred between tests';
49
+ });
50
+ afterEach(() => {
51
+ if (pendingError) {
52
+ console.error(pendingErrorNotice);
53
+ throw pendingError;
54
+ }
55
+ });
56
+ //# sourceMappingURL=setupKarma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupKarma.js","sourceRoot":"","sources":["../src/setupKarma.js"],"names":[],"mappings":";;AAAA,sBAAsB;AACtB,6CAAgD;AAEhD,MAAM,UAAU,GAAG,IAAA,6BAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAElD;;GAEG;AACH,SAAS,0BAA0B,CAAC,KAAK;IACvC,6DAA6D;IAC7D,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxD,8GAA8G;IAC9G,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,SAAS,aAAa;IAC3B,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,SAAS,YAAY;IACzB,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;IAE/E,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,SAAS,cAAc;IAChC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC1C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,SAAS,aAAa;IAC9B,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,2DAA2D;AAC3D,yDAAyD;AACzD,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,kBAAkB,GAAG,IAAI,CAAC;AAE9B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,kBAAkB,GAAG,gDAAgD,CAAC;AACxE,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;IACtD,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,kBAAkB,GAAG,sDAAsD,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClC,MAAM,YAAY,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function until(selector: any, options?: {}): any;
2
+ //# sourceMappingURL=until.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"until.d.ts","sourceRoot":"","sources":["../src/until.js"],"names":[],"mappings":"AAyBA,gEAEC"}
package/build/until.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function shallowRecursively(wrapper, selector, { context, ...other }) {
4
+ if (wrapper.isEmptyRender() || typeof wrapper.getElement().type === 'string') {
5
+ return wrapper;
6
+ }
7
+ let newContext = context;
8
+ const instance = wrapper.root().instance();
9
+ // The instance can be null with a stateless functional component and react >= 16.
10
+ if (instance && instance.getChildContext) {
11
+ newContext = {
12
+ ...context,
13
+ ...instance.getChildContext(),
14
+ };
15
+ }
16
+ const nextWrapper = wrapper.shallow({ context: newContext, ...other });
17
+ if (selector && wrapper.is(selector)) {
18
+ return nextWrapper;
19
+ }
20
+ return shallowRecursively(nextWrapper, selector, { context: newContext });
21
+ }
22
+ function until(selector, options = {}) {
23
+ return this.single('until', () => shallowRecursively(this, selector, options));
24
+ }
25
+ exports.default = until;
26
+ //# sourceMappingURL=until.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"until.js","sourceRoot":"","sources":["../src/until.js"],"names":[],"mappings":";;AAAA,SAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE;IAClE,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,UAAU,GAAG,OAAO,CAAC;IAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC3C,kFAAkF;IAClF,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,UAAU,GAAG;YACX,GAAG,OAAO;YACV,GAAG,QAAQ,CAAC,eAAe,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAEvE,IAAI,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAwB,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAFD,wBAEC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=until.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"until.test.d.ts","sourceRoot":"","sources":["../src/until.test.js"],"names":[],"mappings":""}