cursedbelt 5.55.0 → 5.55.2
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/react/activity-bar/ActivityBar.js +1 -1
- package/dist/react/activity-bar/ActivityBar.js.map +1 -1
- package/dist/react/charts/HeatmapChart.js +1 -1
- package/dist/react/charts/HeatmapChart.js.map +1 -1
- package/dist/react/charts/IntervalTimeline.js +1 -1
- package/dist/react/charts/IntervalTimeline.js.map +1 -1
- package/dist/react/components/AddItemsMenu.js +1 -1
- package/dist/react/components/AddItemsMenu.js.map +1 -1
- package/dist/react/components/Button.js +1 -1
- package/dist/react/components/Button.js.map +1 -1
- package/dist/react/components/Collapsible.js +1 -1
- package/dist/react/components/Collapsible.js.map +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.js +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
- package/dist/react/components/DataTable/SortStack.js +1 -1
- package/dist/react/components/DataTable/SortStack.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -1
- package/dist/react/components/DatePicker.js +1 -1
- package/dist/react/components/DatePicker.js.map +1 -1
- package/dist/react/components/DateRangePicker.js +1 -1
- package/dist/react/components/DateRangePicker.js.map +1 -1
- package/dist/react/components/DisclosureButton.js +1 -1
- package/dist/react/components/DisclosureButton.js.map +1 -1
- package/dist/react/components/DragHandle.js +1 -1
- package/dist/react/components/DragHandle.js.map +1 -1
- package/dist/react/components/EmojiField.js +1 -1
- package/dist/react/components/EmojiField.js.map +1 -1
- package/dist/react/components/ExpandableRow.js +1 -1
- package/dist/react/components/ExpandableRow.js.map +1 -1
- package/dist/react/components/InlineEditableText.js +1 -1
- package/dist/react/components/InlineEditableText.js.map +1 -1
- package/dist/react/components/Menu.js +1 -1
- package/dist/react/components/Menu.js.map +1 -1
- package/dist/react/components/RatingField.js +1 -1
- package/dist/react/components/RatingField.js.map +1 -1
- package/dist/react/components/ReactionBar.js +1 -1
- package/dist/react/components/ReactionBar.js.map +1 -1
- package/dist/react/components/RevealAction.js +1 -1
- package/dist/react/components/RevealAction.js.map +1 -1
- package/dist/react/components/SelectableRow.js +1 -1
- package/dist/react/components/SelectableRow.js.map +1 -1
- package/dist/react/components/StarRating.js +1 -1
- package/dist/react/components/StarRating.js.map +1 -1
- package/dist/react/components/TooltipImpl.js +1 -1
- package/dist/react/components/TooltipImpl.js.map +1 -1
- package/dist/react/components/TreeView.js +1 -1
- package/dist/react/components/TreeView.js.map +1 -1
- package/dist/react/components/UnstyledButton.js +1 -1
- package/dist/react/components/UnstyledButton.js.map +1 -1
- package/dist/react/components/calendar/EventChip.js +1 -1
- package/dist/react/components/calendar/EventChip.js.map +1 -1
- package/dist/react/components/sharing/RecipientPicker.js +1 -1
- package/dist/react/components/sharing/RecipientPicker.js.map +1 -1
- package/dist/react/emoji/EmojiAutocomplete.js +1 -1
- package/dist/react/emoji/EmojiAutocomplete.js.map +1 -1
- package/dist/react/file-tree/FileTree.js +1 -1
- package/dist/react/file-tree/FileTree.js.map +1 -1
- package/dist/react/filter-rail/FilterRail.js +1 -1
- package/dist/react/filter-rail/FilterRail.js.map +1 -1
- package/dist/react/filter-rail/RailSection.js +1 -1
- package/dist/react/filter-rail/RailSection.js.map +1 -1
- package/dist/react/folder-tree/FolderPicker.js +1 -1
- package/dist/react/folder-tree/FolderPicker.js.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.js +1 -1
- package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
- package/dist/react/hooks/useScrollMemory.d.ts +5 -0
- package/dist/react/hooks/useScrollMemory.d.ts.map +1 -1
- package/dist/react/hooks/useScrollMemory.js +48 -23
- package/dist/react/hooks/useScrollMemory.js.map +1 -1
- package/dist/react/layoutEngine/NodeInspector.js +1 -1
- package/dist/react/layoutEngine/NodeInspector.js.map +1 -1
- package/dist/react/lib/daypicker.js +1 -1
- package/dist/react/lib/daypicker.js.map +1 -1
- package/dist/react/master-detail/MasterDetail.js +1 -1
- package/dist/react/master-detail/MasterDetail.js.map +1 -1
- package/dist/react/master-lock/MasterLockProvider.js +1 -1
- package/dist/react/master-lock/MasterLockProvider.js.map +1 -1
- package/dist/react/media/DenseGalleryShell.js +1 -1
- package/dist/react/media/DenseGalleryShell.js.map +1 -1
- package/dist/react/media/FocusViewer.js +1 -1
- package/dist/react/media/FocusViewer.js.map +1 -1
- package/dist/react/media/FrameGrabber.js +1 -1
- package/dist/react/media/FrameGrabber.js.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
- package/dist/react/media/PictureEditor.js +1 -1
- package/dist/react/media/PictureEditor.js.map +1 -1
- package/dist/react/media/PlayerStrip.js +1 -1
- package/dist/react/media/PlayerStrip.js.map +1 -1
- package/dist/react/media/VideoChapterEditor.js +1 -1
- package/dist/react/media/VideoChapterEditor.js.map +1 -1
- package/dist/react/media/VideoCutEditor.js +1 -1
- package/dist/react/media/VideoCutEditor.js.map +1 -1
- package/dist/react/media/VideoTurner.js +1 -1
- package/dist/react/media/VideoTurner.js.map +1 -1
- package/dist/react/media/controlBar.js +1 -1
- package/dist/react/media/controlBar.js.map +1 -1
- package/dist/react/media-gallery/GalleryTable.js +1 -1
- package/dist/react/media-gallery/GalleryTable.js.map +1 -1
- package/dist/react/media-gallery/MediaGallery.js +1 -1
- package/dist/react/media-gallery/MediaGallery.js.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.js +1 -1
- package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
- package/dist/react/nav/HubTileGrid.js +1 -1
- package/dist/react/nav/HubTileGrid.js.map +1 -1
- package/dist/react/nav/SideNavCustomize.js +1 -1
- package/dist/react/nav/SideNavCustomize.js.map +1 -1
- package/dist/testing/designBaseline.d.ts +1 -1
- package/dist/testing/designBaseline.d.ts.map +1 -1
- package/dist/testing/designBaseline.js +1 -1
- package/dist/testing/designBaseline.js.map +1 -1
- package/package.json +1 -1
- package/src/react/activity-bar/ActivityBar.tsx +1 -1
- package/src/react/charts/HeatmapChart.tsx +1 -1
- package/src/react/charts/IntervalTimeline.tsx +1 -1
- package/src/react/components/AddItemsMenu.tsx +1 -1
- package/src/react/components/Button.tsx +1 -1
- package/src/react/components/Collapsible.tsx +1 -1
- package/src/react/components/DataTable/ColumnChecklist.tsx +1 -1
- package/src/react/components/DataTable/SortStack.tsx +1 -1
- package/src/react/components/DataTable/TableFilterBuilder.tsx +1 -1
- package/src/react/components/DatePicker.tsx +1 -1
- package/src/react/components/DateRangePicker.tsx +1 -1
- package/src/react/components/DisclosureButton.tsx +1 -1
- package/src/react/components/DragHandle.tsx +1 -1
- package/src/react/components/EmojiField.tsx +1 -1
- package/src/react/components/ExpandableRow.tsx +1 -1
- package/src/react/components/InlineEditableText.tsx +1 -1
- package/src/react/components/Menu.tsx +1 -1
- package/src/react/components/RatingField.tsx +1 -1
- package/src/react/components/ReactionBar.tsx +1 -1
- package/src/react/components/RevealAction.tsx +1 -1
- package/src/react/components/SelectableRow.tsx +1 -1
- package/src/react/components/StarRating.tsx +1 -1
- package/src/react/components/TooltipImpl.tsx +1 -1
- package/src/react/components/TreeView.tsx +1 -1
- package/src/react/components/UnstyledButton.tsx +1 -1
- package/src/react/components/calendar/EventChip.tsx +1 -1
- package/src/react/components/sharing/RecipientPicker.tsx +1 -1
- package/src/react/emoji/EmojiAutocomplete.tsx +1 -1
- package/src/react/file-tree/FileTree.tsx +1 -1
- package/src/react/filter-rail/FilterRail.tsx +1 -1
- package/src/react/filter-rail/RailSection.tsx +1 -1
- package/src/react/folder-tree/FolderPicker.tsx +1 -1
- package/src/react/folder-tree/FolderTreeRail.tsx +1 -1
- package/src/react/hooks/useScrollMemory.spec.tsx +46 -0
- package/src/react/hooks/useScrollMemory.ts +47 -20
- package/src/react/layoutEngine/NodeInspector.tsx +1 -1
- package/src/react/lib/daypicker.tsx +1 -1
- package/src/react/master-detail/MasterDetail.tsx +1 -1
- package/src/react/master-lock/MasterLockProvider.tsx +1 -1
- package/src/react/media/DenseGalleryShell.tsx +1 -1
- package/src/react/media/FocusViewer.tsx +1 -1
- package/src/react/media/FrameGrabber.tsx +1 -1
- package/src/react/media/HoverScrubVideoThumb.tsx +1 -1
- package/src/react/media/PictureEditor.tsx +1 -1
- package/src/react/media/PlayerStrip.tsx +1 -1
- package/src/react/media/VideoChapterEditor.tsx +1 -1
- package/src/react/media/VideoCutEditor.tsx +1 -1
- package/src/react/media/VideoTurner.tsx +1 -1
- package/src/react/media/controlBar.tsx +1 -1
- package/src/react/media-gallery/GalleryTable.tsx +1 -1
- package/src/react/media-gallery/MediaGallery.tsx +1 -1
- package/src/react/nav/BreadcrumbTrail.tsx +1 -1
- package/src/react/nav/HubTileGrid.tsx +1 -1
- package/src/react/nav/SideNavCustomize.tsx +1 -1
- package/src/relativeSpecifiersCarryJs.spec.ts +44 -0
- package/src/testing/designBaseline.ts +1 -1
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
isSomebodyWatching,
|
|
56
56
|
} from "cursedbelt-core/master-lock";
|
|
57
57
|
import { MasterLockDialog } from "./MasterLockDialog.js";
|
|
58
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
58
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
59
59
|
|
|
60
60
|
/** How often, at most, an interaction becomes a network call. Also bounded by the timeout,
|
|
61
61
|
* so a short setting still gets pings often enough to matter. */
|
|
@@ -15,7 +15,7 @@ import { Tooltip } from '../components/Tooltip.js';
|
|
|
15
15
|
import { MediaResizeBar, MediaResizeCorner, useMediaResize } from './MediaResize.js';
|
|
16
16
|
import { STAGE_HEIGHT_KEY } from './stageResize.js';
|
|
17
17
|
import { isSurfaceControl } from './surfaceGesture.js';
|
|
18
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
18
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
19
19
|
|
|
20
20
|
// The shared dense-gallery layout — extracted from the video gallery so the photo and
|
|
21
21
|
// mixed-media galleries reuse the exact same presentation (thumbnail-maximal browse grid +
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
snapshotSize,
|
|
86
86
|
writeEnhance,
|
|
87
87
|
} from "./videoEnhance.js";
|
|
88
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
88
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
89
89
|
|
|
90
90
|
/** `m:ss`, or `h:mm:ss` past the hour. Local so this module has no app dependency. */
|
|
91
91
|
function formatDuration(seconds: number): string {
|
|
@@ -6,7 +6,7 @@ import { cn } from '../lib/cn.js';
|
|
|
6
6
|
import { NO_EDIT, previewTransform, swapsAxes } from './pictureEdit.js';
|
|
7
7
|
import { releaseVideo, useInView, useSettled } from './previewGate.js';
|
|
8
8
|
import type { MediaOrientation } from './VideoTurner.js';
|
|
9
|
-
import { RAW_BUTTON } from '../lib/cn';
|
|
9
|
+
import { RAW_BUTTON } from '../lib/cn.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* The stored turn, as an inline transform for the tile's poster and preview.
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from './pictureEdit.js';
|
|
29
29
|
|
|
30
30
|
import { Tooltip } from '../components/Tooltip.js';
|
|
31
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
31
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
32
32
|
/** What the editor hands back. The APP decides what to do with it — see `mode`. */
|
|
33
33
|
export interface PictureEditResult {
|
|
34
34
|
/** The baked bytes. */
|
|
@@ -57,7 +57,7 @@ import { Tooltip } from "../components/Tooltip.js";
|
|
|
57
57
|
import { cn } from "../lib/cn.js";
|
|
58
58
|
import { splitActions } from "./splitActions.js";
|
|
59
59
|
import "./playerStrip.css";
|
|
60
|
-
import { RAW_BUTTON } from '../lib/cn';
|
|
60
|
+
import { RAW_BUTTON } from '../lib/cn.js';
|
|
61
61
|
|
|
62
62
|
export type PlayerStripRepeat = "off" | "one" | "all";
|
|
63
63
|
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
normalizeChapters,
|
|
14
14
|
type VideoChapter,
|
|
15
15
|
} from './videoChapters.js';
|
|
16
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
16
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Put markers on a video at points in time and NAME them — the dialog.
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
toggleSegment,
|
|
21
21
|
type VideoCut,
|
|
22
22
|
} from 'cursedbelt-core/media/video-cuts';
|
|
23
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
23
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Mark the parts of a video to cut out, and send the marks off to be executed.
|
|
@@ -5,7 +5,7 @@ import { Button } from '../components/Button.js';
|
|
|
5
5
|
import { Modal } from '../components/Modal.js';
|
|
6
6
|
import { flip, NO_EDIT, type PictureEdit, previewTransform, rotate, swapsAxes } from './pictureEdit.js';
|
|
7
7
|
import { Tooltip } from '../components/Tooltip.js';
|
|
8
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
8
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
9
9
|
|
|
10
10
|
/** The three integers a turn amounts to — the same shape `MediaGalleryItem.orientation` carries. */
|
|
11
11
|
export interface MediaOrientation {
|
|
@@ -8,7 +8,7 @@ import { useMediaPlayer, useMediaState } from '@vidstack/react';
|
|
|
8
8
|
import type { DefaultVideoLayoutSlots } from '@vidstack/react/player/layouts/default';
|
|
9
9
|
import { useMemo } from 'react';
|
|
10
10
|
import { chapterSpans, sectionJump, type VideoChapter } from './videoChapters.js';
|
|
11
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
11
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* A button that rides INSIDE Vidstack's control bar — the file step and the section step both.
|
|
@@ -41,7 +41,7 @@ import { releaseVideo, useInView, useSettled } from '../media/previewGate.js';
|
|
|
41
41
|
import { createdLabel, type MediaCache, ThumbImg, useItemMedia } from './galleryItemMedia.js';
|
|
42
42
|
import { galleryItemCategory } from './mediaGalleryModel.js';
|
|
43
43
|
import type { MediaGalleryItem, MediaGalleryOrder } from './types.js';
|
|
44
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
44
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Row height in px. It is a CONSTANT rather than a measurement because the spacer-row
|
|
@@ -141,7 +141,7 @@ import { createdLabel, type MediaCache, ThumbImg, useItemMedia } from './gallery
|
|
|
141
141
|
import { Tooltip } from '../components/Tooltip.js';
|
|
142
142
|
|
|
143
143
|
import { TruncatedText } from '../components/TruncatedText.js';
|
|
144
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
144
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
145
145
|
// The reusable media gallery — the plugin-era mixed gallery generalised to EVERY binary
|
|
146
146
|
// kind the fleet stores. Same design as plugin-media-gallery: a thumbnail-maximal browse
|
|
147
147
|
// grid (hover-scrub video tiles, still photo tiles, type-icon tiles for other binaries)
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
} from './breadcrumbModel.js';
|
|
59
59
|
import { NavLink, type NavNavigationProps } from './navShared.js';
|
|
60
60
|
import { TAP_TARGET } from '../lib/tapTarget.js';
|
|
61
|
-
import { RAW_BUTTON } from '../lib/cn';
|
|
61
|
+
import { RAW_BUTTON } from '../lib/cn.js';
|
|
62
62
|
|
|
63
63
|
/** Fallback width for the `…` trigger before one has ever been rendered. */
|
|
64
64
|
const ESTIMATED_TRIGGER_WIDTH = 36;
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
|
|
29
29
|
import { Tooltip } from '../components/Tooltip.js';
|
|
30
30
|
import { TAP_TARGET } from '../lib/tapTarget.js';
|
|
31
|
-
import { RAW_BUTTON } from '../lib/cn';
|
|
31
|
+
import { RAW_BUTTON } from '../lib/cn.js';
|
|
32
32
|
export interface HubTileGridProps extends NavNavigationProps {
|
|
33
33
|
/** The domain whose items become tiles. */
|
|
34
34
|
domain: NavDomain;
|
|
@@ -30,7 +30,7 @@ import { NavItemMenu } from './NavItemMenu.js';
|
|
|
30
30
|
import { type IconResolver, renderIcon } from './navShared.js';
|
|
31
31
|
import { Tooltip } from '../components/Tooltip.js';
|
|
32
32
|
import { TAP_TARGET } from '../lib/tapTarget.js';
|
|
33
|
-
import { cn, RAW_BUTTON } from '../lib/cn';
|
|
33
|
+
import { cn, RAW_BUTTON } from '../lib/cn.js';
|
|
34
34
|
|
|
35
35
|
export interface ReorderableRowsProps {
|
|
36
36
|
domains: NavDomain[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Every relative specifier in shipped source names its `.js` (2026-10-04).
|
|
5
|
+
*
|
|
6
|
+
* `dist` is plain tsc output, and tsc copies a specifier through untouched. Bun and
|
|
7
|
+
* every bundler resolve `'../lib/cn'`; plain Node does not, and throws
|
|
8
|
+
* ERR_MODULE_NOT_FOUND on the first import. Task 269 gave every specifier its `.js`;
|
|
9
|
+
* forge tasks 2749/2762 then added `import { RAW_BUTTON } from '../lib/cn'` to ~50 files, every
|
|
10
|
+
* app (bun + Vite) stayed green, and cursedbelt@5.55.0 PUBLISHED with 31 of its 82
|
|
11
|
+
* entries unimportable under Node — caught only by publish-libs.sh's post-publish
|
|
12
|
+
* proveInstall, after the version was immutable (forge task 2771).
|
|
13
|
+
*
|
|
14
|
+
* The scan is of SOURCE, so it fails at `bun test` instead of after a publish.
|
|
15
|
+
*/
|
|
16
|
+
// 🔴 Bun.Glob + Bun.file, NOT node:fs — the test preload mocks node:fs (see
|
|
17
|
+
// publishShape.spec.ts), and a scan through it would read nothing and pass.
|
|
18
|
+
const SPECIFIER = /(?:\bfrom\s*|\bimport\s*\(\s*|\bimport\s+)'(\.{1,2}\/[^']*)'/g;
|
|
19
|
+
const RESOLVED = /\.(js|mjs|css|json|svg|png|woff2?)$/;
|
|
20
|
+
|
|
21
|
+
const extensionless = (text: string): string[] =>
|
|
22
|
+
[...text.matchAll(SPECIFIER)].map((m) => m[1] as string).filter((s) => !RESOLVED.test(s));
|
|
23
|
+
|
|
24
|
+
describe('relative specifiers in shipped source', () => {
|
|
25
|
+
it('flags a specifier with no extension, and passes one with .js', () => {
|
|
26
|
+
expect(extensionless("import { RAW_BUTTON } from '../lib/cn';")).toEqual(['../lib/cn']);
|
|
27
|
+
expect(extensionless("export * from './x';\nimport './side';\nawait import('./lazy')")).toEqual([
|
|
28
|
+
'./x',
|
|
29
|
+
'./side',
|
|
30
|
+
'./lazy',
|
|
31
|
+
]);
|
|
32
|
+
expect(extensionless("import { cn } from '../lib/cn.js';\nimport './a.css';")).toEqual([]);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('every non-spec file under src/ names its .js, so Node can import dist', async () => {
|
|
36
|
+
const offenders: string[] = [];
|
|
37
|
+
for (const rel of new Bun.Glob('**/*.{ts,tsx}').scanSync({ cwd: import.meta.dir })) {
|
|
38
|
+
if (/\.(spec|test)\.tsx?$/.test(rel) || rel.endsWith('.d.ts')) continue;
|
|
39
|
+
const text = await Bun.file(`${import.meta.dir}/${rel}`).text();
|
|
40
|
+
for (const spec of extensionless(text)) offenders.push(`src/${rel}: '${spec}'`);
|
|
41
|
+
}
|
|
42
|
+
expect(offenders).toEqual([]);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
type DesignViolation,
|
|
27
27
|
type EvaluatingPage,
|
|
28
28
|
formatDesignViolations,
|
|
29
|
-
} from './designAudit';
|
|
29
|
+
} from './designAudit.js';
|
|
30
30
|
|
|
31
31
|
/** A page that can also be resized — Playwright's `Page`, structurally. */
|
|
32
32
|
export interface ResizablePage extends EvaluatingPage {
|