sibujs 1.5.0 → 2.0.0
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.
- package/dist/browser.cjs +238 -69
- package/dist/browser.d.cts +5 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.js +6 -6
- package/dist/build.cjs +916 -292
- package/dist/build.js +15 -13
- package/dist/cdn.global.js +17 -16
- package/dist/chunk-2RA7SHDA.js +65 -0
- package/dist/chunk-2UPRY23K.js +80 -0
- package/dist/chunk-3JHCYHWN.js +125 -0
- package/dist/{chunk-VAPYJN4X.js → chunk-3LR7GLWQ.js} +93 -23
- package/dist/{chunk-RJ46C3CS.js → chunk-3NSGB5JN.js} +71 -20
- package/dist/{chunk-XUEEGU5O.js → chunk-52YJLLRO.js} +16 -4
- package/dist/{chunk-XHK6BDAJ.js → chunk-54EDRCEF.js} +25 -8
- package/dist/chunk-7JDB7I65.js +1327 -0
- package/dist/{chunk-WZSPOOER.js → chunk-CC65Y57T.js} +8 -5
- package/dist/{chunk-23VV7YD3.js → chunk-DFPFITST.js} +25 -30
- package/dist/{chunk-BGN5ZMP4.js → chunk-GTBNNBJ6.js} +14 -2
- package/dist/chunk-HB24TBAF.js +121 -0
- package/dist/{chunk-CZUGLNJS.js → chunk-ITX6OO3F.js} +3 -3
- package/dist/{chunk-BGTHZHJ5.js → chunk-JA6667UN.js} +188 -44
- package/dist/{chunk-7GRNSCFT.js → chunk-JXMMDLBY.js} +306 -183
- package/dist/{chunk-3X2YG6YM.js → chunk-JYD2PWXH.js} +59 -28
- package/dist/{chunk-SFKNRVCU.js → chunk-KLRMB5ZS.js} +135 -79
- package/dist/{chunk-5X6PP2UK.js → chunk-LMLD24FC.js} +2 -2
- package/dist/{chunk-M4NLBH4I.js → chunk-LYTCUZ7H.js} +3 -2
- package/dist/{chunk-BMPL52BF.js → chunk-MIUAXB7K.js} +118 -66
- package/dist/{chunk-JCDUJN2F.js → chunk-ND2664SF.js} +486 -153
- package/dist/{chunk-VQDZK23A.js → chunk-O2MNQFLP.js} +181 -66
- package/dist/{chunk-NHUC2QWH.js → chunk-R73P76YZ.js} +1 -1
- package/dist/{chunk-2BYQDGN3.js → chunk-SAHNHTFC.js} +234 -63
- package/dist/chunk-UCS6AMJ7.js +79 -0
- package/dist/{chunk-K4G4ZQNR.js → chunk-VLPPXTYG.js} +84 -38
- package/dist/{chunk-OUZZEE4S.js → chunk-WOMYAHHI.js} +17 -11
- package/dist/{customElement-BL3Uo8dL.d.cts → customElement-CPfIrbvg.d.cts} +14 -10
- package/dist/{customElement-BL3Uo8dL.d.ts → customElement-CPfIrbvg.d.ts} +14 -10
- package/dist/data.cjs +410 -99
- package/dist/data.d.cts +20 -2
- package/dist/data.d.ts +20 -2
- package/dist/data.js +11 -9
- package/dist/devtools.cjs +513 -223
- package/dist/devtools.d.cts +1 -1
- package/dist/devtools.d.ts +1 -1
- package/dist/devtools.js +12 -6
- package/dist/ecosystem.cjs +475 -144
- package/dist/ecosystem.d.cts +9 -7
- package/dist/ecosystem.d.ts +9 -7
- package/dist/ecosystem.js +12 -11
- package/dist/extras.cjs +3355 -1541
- package/dist/extras.d.cts +9 -9
- package/dist/extras.d.ts +9 -9
- package/dist/extras.js +58 -45
- package/dist/index.cjs +920 -292
- package/dist/index.d.cts +71 -8
- package/dist/index.d.ts +71 -8
- package/dist/index.js +28 -16
- package/dist/{introspect-BumjnBKr.d.cts → introspect-BWNjNw64.d.cts} +22 -2
- package/dist/{introspect-CZrlcaYy.d.ts → introspect-cY2pg9pW.d.ts} +22 -2
- package/dist/motion.cjs +77 -34
- package/dist/motion.js +4 -4
- package/dist/patterns.cjs +335 -69
- package/dist/patterns.d.cts +11 -12
- package/dist/patterns.d.ts +11 -12
- package/dist/patterns.js +7 -7
- package/dist/performance.cjs +279 -108
- package/dist/performance.d.cts +23 -16
- package/dist/performance.d.ts +23 -16
- package/dist/performance.js +13 -8
- package/dist/plugin-D30wlGW5.d.cts +71 -0
- package/dist/plugin-D30wlGW5.d.ts +71 -0
- package/dist/plugins.cjs +635 -260
- package/dist/plugins.d.cts +10 -3
- package/dist/plugins.d.ts +10 -3
- package/dist/plugins.js +106 -38
- package/dist/{ssr-Do_SiVoL.d.cts → ssr-CrVNy6Pa.d.cts} +9 -15
- package/dist/{ssr-Do_SiVoL.d.ts → ssr-CrVNy6Pa.d.ts} +9 -15
- package/dist/{ssr-4PBXAOO3.js → ssr-FXD2PPMC.js} +4 -3
- package/dist/ssr.cjs +642 -222
- package/dist/ssr.d.cts +26 -6
- package/dist/ssr.d.ts +26 -6
- package/dist/ssr.js +12 -11
- package/dist/{tagFactory-DaJ0YWX6.d.cts → tagFactory-S17H2qxu.d.cts} +9 -1
- package/dist/{tagFactory-DaJ0YWX6.d.ts → tagFactory-S17H2qxu.d.ts} +9 -1
- package/dist/testing.cjs +252 -63
- package/dist/testing.d.cts +17 -4
- package/dist/testing.d.ts +17 -4
- package/dist/testing.js +100 -44
- package/dist/ui.cjs +463 -137
- package/dist/ui.d.cts +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +20 -17
- package/dist/widgets.cjs +977 -94
- package/dist/widgets.d.cts +104 -2
- package/dist/widgets.d.ts +104 -2
- package/dist/widgets.js +9 -7
- package/package.json +8 -2
- package/dist/chunk-32DY64NT.js +0 -282
- package/dist/chunk-3AIRKM3B.js +0 -1263
- package/dist/chunk-3ARAQO7B.js +0 -398
- package/dist/chunk-3CRQALYP.js +0 -877
- package/dist/chunk-4EI4AG32.js +0 -482
- package/dist/chunk-4MYMUBRS.js +0 -21
- package/dist/chunk-5ZYQ6KDD.js +0 -154
- package/dist/chunk-6BMPXPUW.js +0 -26
- package/dist/chunk-6HLLIF3K.js +0 -398
- package/dist/chunk-6LSNVCS2.js +0 -937
- package/dist/chunk-6SA3QQES.js +0 -61
- package/dist/chunk-77L6NL3X.js +0 -1097
- package/dist/chunk-7BF6TK55.js +0 -1097
- package/dist/chunk-7TQKR4PP.js +0 -294
- package/dist/chunk-7V26P53V.js +0 -712
- package/dist/chunk-AZ3ISID5.js +0 -298
- package/dist/chunk-B7SWRFUT.js +0 -332
- package/dist/chunk-BTU3TJDS.js +0 -365
- package/dist/chunk-BW3WT46K.js +0 -937
- package/dist/chunk-C6KFWOFV.js +0 -616
- package/dist/chunk-CHF5OHIA.js +0 -61
- package/dist/chunk-CHJ27IGK.js +0 -26
- package/dist/chunk-CMBFNA7L.js +0 -27
- package/dist/chunk-DAHRH4ON.js +0 -331
- package/dist/chunk-DKOHBI74.js +0 -924
- package/dist/chunk-DTCOOBMX.js +0 -725
- package/dist/chunk-EBGIRKQY.js +0 -616
- package/dist/chunk-EUZND3CB.js +0 -27
- package/dist/chunk-EVCZO745.js +0 -365
- package/dist/chunk-EWFVA3TJ.js +0 -282
- package/dist/chunk-F3FA4F32.js +0 -292
- package/dist/chunk-FGOEVHY3.js +0 -60
- package/dist/chunk-G3BOQPVO.js +0 -365
- package/dist/chunk-GCOK2LC3.js +0 -282
- package/dist/chunk-GJPXRJ45.js +0 -37
- package/dist/chunk-HGMJFBC7.js +0 -654
- package/dist/chunk-JAKHTMQU.js +0 -1000
- package/dist/chunk-JCI5M6U6.js +0 -956
- package/dist/chunk-K5ZUMYVS.js +0 -89
- package/dist/chunk-KQPDEVVS.js +0 -398
- package/dist/chunk-L6JRBDNS.js +0 -60
- package/dist/chunk-LA6KQEDU.js +0 -712
- package/dist/chunk-MB6QFH3I.js +0 -2776
- package/dist/chunk-MDVXJWFN.js +0 -304
- package/dist/chunk-MEZVEBPN.js +0 -2008
- package/dist/chunk-MK4ERFYL.js +0 -2249
- package/dist/chunk-MLKGABMK.js +0 -9
- package/dist/chunk-MQ5GOYPH.js +0 -2249
- package/dist/chunk-MYRV7VDM.js +0 -742
- package/dist/chunk-N6IZB6KJ.js +0 -567
- package/dist/chunk-NEKUBFPT.js +0 -60
- package/dist/chunk-NMRUZALC.js +0 -1097
- package/dist/chunk-NYVAC6P5.js +0 -37
- package/dist/chunk-NZIIMDWI.js +0 -84
- package/dist/chunk-OF7UZIVB.js +0 -725
- package/dist/chunk-P3XWXJZU.js +0 -282
- package/dist/chunk-P6W3STU4.js +0 -2249
- package/dist/chunk-PBHF5WKN.js +0 -616
- package/dist/chunk-PDZQY43A.js +0 -616
- package/dist/chunk-PTQJDMRT.js +0 -146
- package/dist/chunk-PZEGYCF5.js +0 -61
- package/dist/chunk-QBMDLBU2.js +0 -975
- package/dist/chunk-QWZG56ET.js +0 -2744
- package/dist/chunk-RQGQSLQK.js +0 -725
- package/dist/chunk-SDLZDHKP.js +0 -107
- package/dist/chunk-TDGZL5CU.js +0 -365
- package/dist/chunk-TNQWPPE6.js +0 -37
- package/dist/chunk-TSOKIX5Z.js +0 -654
- package/dist/chunk-UHNL42EF.js +0 -2730
- package/dist/chunk-UNXCEF6S.js +0 -21
- package/dist/chunk-V2XTI523.js +0 -347
- package/dist/chunk-VAU366PN.js +0 -2241
- package/dist/chunk-VMVDTCXB.js +0 -712
- package/dist/chunk-VQNQZCWJ.js +0 -61
- package/dist/chunk-VRW3FULF.js +0 -725
- package/dist/chunk-WADYRCO2.js +0 -304
- package/dist/chunk-WILQZRO4.js +0 -282
- package/dist/chunk-WR5D4EGH.js +0 -26
- package/dist/chunk-WUHJISPP.js +0 -298
- package/dist/chunk-XYU6TZOW.js +0 -182
- package/dist/chunk-Y6GP4QGG.js +0 -276
- package/dist/chunk-YECR7UIA.js +0 -347
- package/dist/chunk-YUTWTI4B.js +0 -654
- package/dist/chunk-Z65KYU7I.js +0 -26
- package/dist/chunk-Z6POF5YC.js +0 -975
- package/dist/chunk-ZBJP6WFL.js +0 -482
- package/dist/chunk-ZD6OAMTH.js +0 -277
- package/dist/chunk-ZWKZCBO6.js +0 -317
- package/dist/contracts-DDrwxvJ-.d.cts +0 -245
- package/dist/contracts-DDrwxvJ-.d.ts +0 -245
- package/dist/contracts-DOrhwbke.d.cts +0 -245
- package/dist/contracts-DOrhwbke.d.ts +0 -245
- package/dist/contracts-xo5ckdRP.d.cts +0 -240
- package/dist/contracts-xo5ckdRP.d.ts +0 -240
- package/dist/customElement-BKQfbSZQ.d.cts +0 -262
- package/dist/customElement-BKQfbSZQ.d.ts +0 -262
- package/dist/customElement-D2DJp_xn.d.cts +0 -313
- package/dist/customElement-D2DJp_xn.d.ts +0 -313
- package/dist/customElement-yz8uyk-0.d.cts +0 -308
- package/dist/customElement-yz8uyk-0.d.ts +0 -308
- package/dist/introspect-Cb0zgpi2.d.cts +0 -477
- package/dist/introspect-Y2xNXGSf.d.ts +0 -477
- package/dist/plugin-Bek4RhJY.d.cts +0 -43
- package/dist/plugin-Bek4RhJY.d.ts +0 -43
- package/dist/ssr-3RXHP5ES.js +0 -38
- package/dist/ssr-6GIMY5MX.js +0 -38
- package/dist/ssr-BA6sxxUd.d.cts +0 -135
- package/dist/ssr-BA6sxxUd.d.ts +0 -135
- package/dist/ssr-WKUPVSSK.js +0 -36
- package/dist/tagFactory-Dl8QCLga.d.cts +0 -23
- package/dist/tagFactory-Dl8QCLga.d.ts +0 -23
package/dist/testing.d.cts
CHANGED
|
@@ -242,11 +242,13 @@ interface MockRoute {
|
|
|
242
242
|
* Create an HTTP mock server that intercepts fetch calls.
|
|
243
243
|
* Useful for testing components that make API calls.
|
|
244
244
|
*/
|
|
245
|
-
declare function createHttpMock(routes?: MockRoute[]
|
|
245
|
+
declare function createHttpMock(routes?: MockRoute[], options?: {
|
|
246
|
+
afterEach?: (cleanup: () => void) => void;
|
|
247
|
+
}): {
|
|
246
248
|
/** Install the mock (replace global fetch) */
|
|
247
249
|
install(): void;
|
|
248
250
|
/** Restore original fetch */
|
|
249
|
-
restore()
|
|
251
|
+
restore: () => void;
|
|
250
252
|
/** Add a mock route */
|
|
251
253
|
addRoute(route: MockRoute): void;
|
|
252
254
|
/** Remove all mock routes */
|
|
@@ -271,7 +273,9 @@ declare function createHttpMock(routes?: MockRoute[]): {
|
|
|
271
273
|
* Create a fake timer system for testing time-dependent code.
|
|
272
274
|
* Mocks setTimeout, setInterval, requestAnimationFrame.
|
|
273
275
|
*/
|
|
274
|
-
declare function createTimerMock(
|
|
276
|
+
declare function createTimerMock(options?: {
|
|
277
|
+
afterEach?: (cleanup: () => void) => void;
|
|
278
|
+
}): {
|
|
275
279
|
install(): void;
|
|
276
280
|
restore(): void;
|
|
277
281
|
/** Advance time by a given number of ms, running any timers that fire */
|
|
@@ -479,8 +483,17 @@ declare function createVisualSuite(): {
|
|
|
479
483
|
clear: () => void;
|
|
480
484
|
};
|
|
481
485
|
|
|
486
|
+
/**
|
|
487
|
+
* Unmount every container still alive from prior `render()` calls.
|
|
488
|
+
* Safe to call from an `afterEach` hook to guarantee teardown.
|
|
489
|
+
*/
|
|
490
|
+
declare function unmountAll(): void;
|
|
482
491
|
/**
|
|
483
492
|
* render mounts a component into a test container and returns helpers.
|
|
493
|
+
*
|
|
494
|
+
* The caller is responsible for calling `unmount()` (typically from an
|
|
495
|
+
* `afterEach` hook). For bulk teardown across many renders, call
|
|
496
|
+
* `unmountAll()` instead — every live container is tracked internally.
|
|
484
497
|
*/
|
|
485
498
|
declare function render(component: () => HTMLElement): {
|
|
486
499
|
container: HTMLElement;
|
|
@@ -529,4 +542,4 @@ declare function mockStore<T extends Record<string, unknown>>(initialState: T):
|
|
|
529
542
|
reset: () => void;
|
|
530
543
|
};
|
|
531
544
|
|
|
532
|
-
export { type A11yCheckResult, type A11yViolation, type A11yViolationLevel, type FindOptions, type FingerprintChange, type MockResponse, type MockRoute, type VisualFingerprint, assertA11y, assertDOMEquals, captureFingerprint, checkA11y, checkAriaAttributes, checkColorContrast, checkFormLabels, checkHeadingHierarchy, checkImageAlt, checkKeyboardAccess, checkLandmarks, checkLinksAndButtons, checkListSemantics, checkTabOrder, compareFingerprints, createCypressAdapter, createDOMSnapshot, createHttpMock, createJestAdapter, createPlaywrightAdapter, createSnapshotMatcher, createSnapshotStore, createTimerMock, createUniversalAdapter, createVisualSuite, findByRole, findByTestId, findByText, fireEvent, matchSnapshot, mockRouter, mockStore, queryByLabel, queryByRole, queryByTestId, queryByText, render, snapshotComponent, testComponent, type, waitFor, waitForSignal };
|
|
545
|
+
export { type A11yCheckResult, type A11yViolation, type A11yViolationLevel, type FindOptions, type FingerprintChange, type MockResponse, type MockRoute, type VisualFingerprint, assertA11y, assertDOMEquals, captureFingerprint, checkA11y, checkAriaAttributes, checkColorContrast, checkFormLabels, checkHeadingHierarchy, checkImageAlt, checkKeyboardAccess, checkLandmarks, checkLinksAndButtons, checkListSemantics, checkTabOrder, compareFingerprints, createCypressAdapter, createDOMSnapshot, createHttpMock, createJestAdapter, createPlaywrightAdapter, createSnapshotMatcher, createSnapshotStore, createTimerMock, createUniversalAdapter, createVisualSuite, findByRole, findByTestId, findByText, fireEvent, matchSnapshot, mockRouter, mockStore, queryByLabel, queryByRole, queryByTestId, queryByText, render, snapshotComponent, testComponent, type, unmountAll, waitFor, waitForSignal };
|
package/dist/testing.d.ts
CHANGED
|
@@ -242,11 +242,13 @@ interface MockRoute {
|
|
|
242
242
|
* Create an HTTP mock server that intercepts fetch calls.
|
|
243
243
|
* Useful for testing components that make API calls.
|
|
244
244
|
*/
|
|
245
|
-
declare function createHttpMock(routes?: MockRoute[]
|
|
245
|
+
declare function createHttpMock(routes?: MockRoute[], options?: {
|
|
246
|
+
afterEach?: (cleanup: () => void) => void;
|
|
247
|
+
}): {
|
|
246
248
|
/** Install the mock (replace global fetch) */
|
|
247
249
|
install(): void;
|
|
248
250
|
/** Restore original fetch */
|
|
249
|
-
restore()
|
|
251
|
+
restore: () => void;
|
|
250
252
|
/** Add a mock route */
|
|
251
253
|
addRoute(route: MockRoute): void;
|
|
252
254
|
/** Remove all mock routes */
|
|
@@ -271,7 +273,9 @@ declare function createHttpMock(routes?: MockRoute[]): {
|
|
|
271
273
|
* Create a fake timer system for testing time-dependent code.
|
|
272
274
|
* Mocks setTimeout, setInterval, requestAnimationFrame.
|
|
273
275
|
*/
|
|
274
|
-
declare function createTimerMock(
|
|
276
|
+
declare function createTimerMock(options?: {
|
|
277
|
+
afterEach?: (cleanup: () => void) => void;
|
|
278
|
+
}): {
|
|
275
279
|
install(): void;
|
|
276
280
|
restore(): void;
|
|
277
281
|
/** Advance time by a given number of ms, running any timers that fire */
|
|
@@ -479,8 +483,17 @@ declare function createVisualSuite(): {
|
|
|
479
483
|
clear: () => void;
|
|
480
484
|
};
|
|
481
485
|
|
|
486
|
+
/**
|
|
487
|
+
* Unmount every container still alive from prior `render()` calls.
|
|
488
|
+
* Safe to call from an `afterEach` hook to guarantee teardown.
|
|
489
|
+
*/
|
|
490
|
+
declare function unmountAll(): void;
|
|
482
491
|
/**
|
|
483
492
|
* render mounts a component into a test container and returns helpers.
|
|
493
|
+
*
|
|
494
|
+
* The caller is responsible for calling `unmount()` (typically from an
|
|
495
|
+
* `afterEach` hook). For bulk teardown across many renders, call
|
|
496
|
+
* `unmountAll()` instead — every live container is tracked internally.
|
|
484
497
|
*/
|
|
485
498
|
declare function render(component: () => HTMLElement): {
|
|
486
499
|
container: HTMLElement;
|
|
@@ -529,4 +542,4 @@ declare function mockStore<T extends Record<string, unknown>>(initialState: T):
|
|
|
529
542
|
reset: () => void;
|
|
530
543
|
};
|
|
531
544
|
|
|
532
|
-
export { type A11yCheckResult, type A11yViolation, type A11yViolationLevel, type FindOptions, type FingerprintChange, type MockResponse, type MockRoute, type VisualFingerprint, assertA11y, assertDOMEquals, captureFingerprint, checkA11y, checkAriaAttributes, checkColorContrast, checkFormLabels, checkHeadingHierarchy, checkImageAlt, checkKeyboardAccess, checkLandmarks, checkLinksAndButtons, checkListSemantics, checkTabOrder, compareFingerprints, createCypressAdapter, createDOMSnapshot, createHttpMock, createJestAdapter, createPlaywrightAdapter, createSnapshotMatcher, createSnapshotStore, createTimerMock, createUniversalAdapter, createVisualSuite, findByRole, findByTestId, findByText, fireEvent, matchSnapshot, mockRouter, mockStore, queryByLabel, queryByRole, queryByTestId, queryByText, render, snapshotComponent, testComponent, type, waitFor, waitForSignal };
|
|
545
|
+
export { type A11yCheckResult, type A11yViolation, type A11yViolationLevel, type FindOptions, type FingerprintChange, type MockResponse, type MockRoute, type VisualFingerprint, assertA11y, assertDOMEquals, captureFingerprint, checkA11y, checkAriaAttributes, checkColorContrast, checkFormLabels, checkHeadingHierarchy, checkImageAlt, checkKeyboardAccess, checkLandmarks, checkLinksAndButtons, checkListSemantics, checkTabOrder, compareFingerprints, createCypressAdapter, createDOMSnapshot, createHttpMock, createJestAdapter, createPlaywrightAdapter, createSnapshotMatcher, createSnapshotStore, createTimerMock, createUniversalAdapter, createVisualSuite, findByRole, findByTestId, findByText, fireEvent, matchSnapshot, mockRouter, mockStore, queryByLabel, queryByRole, queryByTestId, queryByText, render, snapshotComponent, testComponent, type, unmountAll, waitFor, waitForSignal };
|
package/dist/testing.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
dispose
|
|
3
|
+
} from "./chunk-2UPRY23K.js";
|
|
1
4
|
import {
|
|
2
5
|
effect
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-HB24TBAF.js";
|
|
7
|
+
import "./chunk-2RA7SHDA.js";
|
|
8
|
+
import "./chunk-VLPPXTYG.js";
|
|
9
|
+
import "./chunk-LMLD24FC.js";
|
|
7
10
|
|
|
8
11
|
// src/testing/a11y.ts
|
|
9
12
|
var VALID_ARIA_ROLES = /* @__PURE__ */ new Set([
|
|
@@ -1140,8 +1143,9 @@ function createUniversalAdapter() {
|
|
|
1140
1143
|
}
|
|
1141
1144
|
|
|
1142
1145
|
// src/testing/e2e.ts
|
|
1143
|
-
function createHttpMock(routes = []) {
|
|
1146
|
+
function createHttpMock(routes = [], options = {}) {
|
|
1144
1147
|
const originalFetch = globalThis.fetch;
|
|
1148
|
+
const hadOriginalFetch = Object.hasOwn(globalThis, "fetch");
|
|
1145
1149
|
const requestLog = [];
|
|
1146
1150
|
const mockRoutes = [...routes];
|
|
1147
1151
|
function matchRoute(url, method) {
|
|
@@ -1162,29 +1166,41 @@ function createHttpMock(routes = []) {
|
|
|
1162
1166
|
return new Response(JSON.stringify({ error: "Not mocked" }), { status: 404 });
|
|
1163
1167
|
}
|
|
1164
1168
|
let mockResponse;
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
+
try {
|
|
1170
|
+
if (typeof route.response === "function") {
|
|
1171
|
+
mockResponse = await route.response({ url, method, body, headers: new Headers(init?.headers) });
|
|
1172
|
+
} else {
|
|
1173
|
+
mockResponse = route.response;
|
|
1174
|
+
}
|
|
1175
|
+
if (mockResponse.delay) {
|
|
1176
|
+
await new Promise((r) => setTimeout(r, mockResponse.delay));
|
|
1177
|
+
}
|
|
1178
|
+
return new Response(
|
|
1179
|
+
typeof mockResponse.body === "string" ? mockResponse.body : JSON.stringify(mockResponse.body),
|
|
1180
|
+
{
|
|
1181
|
+
status: mockResponse.status || 200,
|
|
1182
|
+
statusText: mockResponse.statusText || "OK",
|
|
1183
|
+
headers: mockResponse.headers
|
|
1184
|
+
}
|
|
1185
|
+
);
|
|
1186
|
+
} catch (err) {
|
|
1187
|
+
return new Response(JSON.stringify({ error: String(err) }), { status: 500 });
|
|
1169
1188
|
}
|
|
1170
|
-
|
|
1171
|
-
|
|
1189
|
+
};
|
|
1190
|
+
const restore = () => {
|
|
1191
|
+
if (hadOriginalFetch) {
|
|
1192
|
+
globalThis.fetch = originalFetch;
|
|
1193
|
+
} else {
|
|
1194
|
+
delete globalThis.fetch;
|
|
1172
1195
|
}
|
|
1173
|
-
return new Response(typeof mockResponse.body === "string" ? mockResponse.body : JSON.stringify(mockResponse.body), {
|
|
1174
|
-
status: mockResponse.status || 200,
|
|
1175
|
-
statusText: mockResponse.statusText || "OK",
|
|
1176
|
-
headers: mockResponse.headers
|
|
1177
|
-
});
|
|
1178
1196
|
};
|
|
1179
|
-
|
|
1197
|
+
const api = {
|
|
1180
1198
|
/** Install the mock (replace global fetch) */
|
|
1181
1199
|
install() {
|
|
1182
1200
|
globalThis.fetch = mockFetch;
|
|
1183
1201
|
},
|
|
1184
1202
|
/** Restore original fetch */
|
|
1185
|
-
restore
|
|
1186
|
-
globalThis.fetch = originalFetch;
|
|
1187
|
-
},
|
|
1203
|
+
restore,
|
|
1188
1204
|
/** Add a mock route */
|
|
1189
1205
|
addRoute(route) {
|
|
1190
1206
|
mockRoutes.push(route);
|
|
@@ -1216,18 +1232,29 @@ function createHttpMock(routes = []) {
|
|
|
1216
1232
|
return requestLog.filter((r) => r.url.includes(url) && r.method.toUpperCase() === method.toUpperCase()).length;
|
|
1217
1233
|
}
|
|
1218
1234
|
};
|
|
1235
|
+
if (typeof options.afterEach === "function") {
|
|
1236
|
+
options.afterEach(() => api.restore());
|
|
1237
|
+
}
|
|
1238
|
+
return api;
|
|
1219
1239
|
}
|
|
1220
|
-
function createTimerMock() {
|
|
1221
|
-
const
|
|
1222
|
-
const
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
const
|
|
1240
|
+
function createTimerMock(options = {}) {
|
|
1241
|
+
const g = globalThis;
|
|
1242
|
+
const snapshot = (key) => ({
|
|
1243
|
+
had: Object.hasOwn(globalThis, key),
|
|
1244
|
+
value: g[key]
|
|
1245
|
+
});
|
|
1246
|
+
const saved = {
|
|
1247
|
+
setTimeout: snapshot("setTimeout"),
|
|
1248
|
+
setInterval: snapshot("setInterval"),
|
|
1249
|
+
clearTimeout: snapshot("clearTimeout"),
|
|
1250
|
+
clearInterval: snapshot("clearInterval"),
|
|
1251
|
+
requestAnimationFrame: snapshot("requestAnimationFrame"),
|
|
1252
|
+
cancelAnimationFrame: snapshot("cancelAnimationFrame")
|
|
1253
|
+
};
|
|
1227
1254
|
let currentTime = 0;
|
|
1228
1255
|
let nextId = 1;
|
|
1229
1256
|
const timers = [];
|
|
1230
|
-
|
|
1257
|
+
const api = {
|
|
1231
1258
|
install() {
|
|
1232
1259
|
currentTime = 0;
|
|
1233
1260
|
globalThis.setTimeout = (cb, delay = 0) => {
|
|
@@ -1259,12 +1286,13 @@ function createTimerMock() {
|
|
|
1259
1286
|
};
|
|
1260
1287
|
},
|
|
1261
1288
|
restore() {
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1289
|
+
for (const [key, snap] of Object.entries(saved)) {
|
|
1290
|
+
if (snap.had) {
|
|
1291
|
+
g[key] = snap.value;
|
|
1292
|
+
} else {
|
|
1293
|
+
delete g[key];
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1268
1296
|
timers.length = 0;
|
|
1269
1297
|
},
|
|
1270
1298
|
/** Advance time by a given number of ms, running any timers that fire */
|
|
@@ -1310,6 +1338,10 @@ function createTimerMock() {
|
|
|
1310
1338
|
return timers.length;
|
|
1311
1339
|
}
|
|
1312
1340
|
};
|
|
1341
|
+
if (typeof options.afterEach === "function") {
|
|
1342
|
+
options.afterEach(() => api.restore());
|
|
1343
|
+
}
|
|
1344
|
+
return api;
|
|
1313
1345
|
}
|
|
1314
1346
|
function createDOMSnapshot(element) {
|
|
1315
1347
|
return serializeElement(element, 0);
|
|
@@ -1480,21 +1512,27 @@ function waitForSignal(getter, predicate, options = {}) {
|
|
|
1480
1512
|
const timeoutMs = options.timeout ?? 1e3;
|
|
1481
1513
|
return new Promise((resolve, reject) => {
|
|
1482
1514
|
let resolved = false;
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1515
|
+
let timer;
|
|
1516
|
+
const finish = (fn) => {
|
|
1517
|
+
if (resolved) return;
|
|
1518
|
+
resolved = true;
|
|
1519
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
1520
|
+
fn();
|
|
1521
|
+
};
|
|
1522
|
+
timer = setTimeout(() => {
|
|
1523
|
+
finish(() => {
|
|
1486
1524
|
teardown();
|
|
1487
1525
|
reject(new Error(`waitForSignal: predicate did not match within ${timeoutMs}ms`));
|
|
1488
|
-
}
|
|
1526
|
+
});
|
|
1489
1527
|
}, timeoutMs);
|
|
1490
1528
|
const teardown = effect(() => {
|
|
1491
1529
|
if (resolved) return;
|
|
1492
1530
|
const value = getter();
|
|
1493
1531
|
if (predicate(value)) {
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1532
|
+
finish(() => {
|
|
1533
|
+
queueMicrotask(() => teardown());
|
|
1534
|
+
resolve(value);
|
|
1535
|
+
});
|
|
1498
1536
|
}
|
|
1499
1537
|
});
|
|
1500
1538
|
});
|
|
@@ -1845,9 +1883,24 @@ function truncate(str, maxLen) {
|
|
|
1845
1883
|
}
|
|
1846
1884
|
|
|
1847
1885
|
// src/testing/index.ts
|
|
1886
|
+
function escapeSelector(value) {
|
|
1887
|
+
const g = globalThis;
|
|
1888
|
+
if (g.CSS && typeof g.CSS.escape === "function") return g.CSS.escape(value);
|
|
1889
|
+
return value.replace(/[^\w-]/g, (m) => `\\${m.charCodeAt(0).toString(16)} `);
|
|
1890
|
+
}
|
|
1891
|
+
var _renderedContainers = /* @__PURE__ */ new Set();
|
|
1892
|
+
function unmountAll() {
|
|
1893
|
+
for (const container of _renderedContainers) {
|
|
1894
|
+
for (const child of Array.from(container.childNodes)) dispose(child);
|
|
1895
|
+
container.replaceChildren();
|
|
1896
|
+
if (container.parentNode) container.parentNode.removeChild(container);
|
|
1897
|
+
}
|
|
1898
|
+
_renderedContainers.clear();
|
|
1899
|
+
}
|
|
1848
1900
|
function render(component) {
|
|
1849
1901
|
const container = document.createElement("div");
|
|
1850
1902
|
document.body.appendChild(container);
|
|
1903
|
+
_renderedContainers.add(container);
|
|
1851
1904
|
const element = component();
|
|
1852
1905
|
container.appendChild(element);
|
|
1853
1906
|
function getByText(text) {
|
|
@@ -1864,7 +1917,7 @@ function render(component) {
|
|
|
1864
1917
|
return walk(container);
|
|
1865
1918
|
}
|
|
1866
1919
|
function getByTestId(testId) {
|
|
1867
|
-
return container.querySelector(`[data-testid="${testId}"]`);
|
|
1920
|
+
return container.querySelector(`[data-testid="${escapeSelector(testId)}"]`);
|
|
1868
1921
|
}
|
|
1869
1922
|
function getByRole(role) {
|
|
1870
1923
|
return container.querySelector(`[role="${role}"]`);
|
|
@@ -1873,8 +1926,10 @@ function render(component) {
|
|
|
1873
1926
|
return Array.from(container.querySelectorAll(selector));
|
|
1874
1927
|
}
|
|
1875
1928
|
function unmount() {
|
|
1876
|
-
container.
|
|
1929
|
+
for (const child of Array.from(container.childNodes)) dispose(child);
|
|
1930
|
+
container.replaceChildren();
|
|
1877
1931
|
if (container.parentNode) container.parentNode.removeChild(container);
|
|
1932
|
+
_renderedContainers.delete(container);
|
|
1878
1933
|
}
|
|
1879
1934
|
return { container, element, getByText, getByTestId, getByRole, queryAll, unmount };
|
|
1880
1935
|
}
|
|
@@ -1984,6 +2039,7 @@ export {
|
|
|
1984
2039
|
snapshotComponent,
|
|
1985
2040
|
testComponent,
|
|
1986
2041
|
type,
|
|
2042
|
+
unmountAll,
|
|
1987
2043
|
waitFor,
|
|
1988
2044
|
waitForSignal
|
|
1989
2045
|
};
|