@visulima/dev-toolbar 1.0.0-alpha.4 → 1.0.0-alpha.41
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/CHANGELOG.md +323 -0
- package/LICENSE.md +137 -5
- package/README.md +75 -18
- package/bin/mcp.js +29 -0
- package/dist/apps/a11y/index.d.ts +3 -2
- package/dist/apps/a11y/index.js +21 -2
- package/dist/apps/annotations/index.d.ts +4 -0
- package/dist/apps/annotations/index.js +18 -0
- package/dist/apps/assets/index.d.ts +4 -0
- package/dist/apps/assets/index.js +16 -0
- package/dist/apps/inspector/index.d.ts +3 -2
- package/dist/apps/inspector/index.js +30 -1
- package/dist/apps/module-graph/index.d.ts +3 -2
- package/dist/apps/module-graph/index.js +20 -1
- package/dist/apps/performance/index.d.ts +3 -2
- package/dist/apps/performance/index.js +17 -1
- package/dist/apps/seo/index.d.ts +3 -2
- package/dist/apps/seo/index.js +17 -1
- package/dist/apps/settings/index.d.ts +3 -2
- package/dist/apps/settings/index.js +17 -1
- package/dist/apps/tailwind/index.d.ts +3 -2
- package/dist/apps/tailwind/index.js +5 -5
- package/dist/apps/timeline/index.d.ts +3 -2
- package/dist/apps/timeline/index.js +18 -1
- package/dist/apps/vite-config/index.d.ts +3 -2
- package/dist/apps/vite-config/index.js +16 -1
- package/dist/client/overlay.d.ts +1 -1
- package/dist/client/overlay.js +1 -1
- package/dist/index.d.ts +133 -8
- package/dist/index.js +1 -1
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +1 -0
- package/dist/packem_chunks/inject-source.js +7 -1
- package/dist/packem_shared/Alert-CZq7C43v.js +1 -0
- package/dist/packem_shared/Badge-PpblpNWg.js +1 -0
- package/dist/packem_shared/Button-CAKvtfij.js +1 -0
- package/dist/packem_shared/Card-BSy2oRiS.js +1 -0
- package/dist/packem_shared/Icon-0XYV-4AL.js +1 -0
- package/dist/packem_shared/Input-Dc1WiT01.js +1 -0
- package/dist/packem_shared/Label-BZh8XxUb.js +1 -0
- package/dist/packem_shared/Popover-DuiU8EPg.js +1 -0
- package/dist/packem_shared/Progress-C90LC--2.js +1 -0
- package/dist/packem_shared/Select-CwD-d0pi.js +1 -0
- package/dist/packem_shared/Separator-PSjfhX_W.js +1 -0
- package/dist/packem_shared/Skeleton-BAFrGUR1.js +1 -0
- package/dist/packem_shared/Switch-Wpsp5M3p.js +1 -0
- package/dist/packem_shared/Tabs-BdNFQd3c.js +1 -0
- package/dist/packem_shared/Textarea-DP9gpte-.js +1 -0
- package/dist/packem_shared/Tooltip-DVeuszoY.js +1 -0
- package/dist/packem_shared/annotation-settings-DlLZO5Zp.js +1 -0
- package/dist/packem_shared/annotation-store-CXMIg0dM.js +1 -0
- package/dist/packem_shared/app.d-SmKEDxsI.d.ts +229 -0
- package/dist/packem_shared/clsx-CtZWcPHt.js +1 -0
- package/dist/packem_shared/createClientRPCContext-80V9c3Qu.js +1 -0
- package/dist/packem_shared/createDevToolbarHook-CzejbqD2.js +1 -0
- package/dist/packem_shared/createServerRPCContext-C30tqEfQ.js +1 -0
- package/dist/packem_shared/getGlobalHook-GRSqUNJ3.js +1 -0
- package/dist/packem_shared/getTimelineStore-BT5sImVb.js +1 -0
- package/dist/packem_shared/global-api.d-DeaCvII9.d.ts +546 -0
- package/dist/packem_shared/loadSettings-C0pUyx9j.js +1 -0
- package/dist/packem_shared/server.d-ZkcY0pge.d.ts +39 -0
- package/dist/packem_shared/sharedToolbarStylesheet-DNABzHAf.js +2 -0
- package/dist/packem_shared/store-Dqy0FbGw.js +1 -0
- package/dist/packem_shared/use-theme-DIqZkPAe.js +1 -0
- package/dist/toolbar/index.d.ts +152 -49
- package/dist/toolbar/index.js +3 -3
- package/dist/ui/index.d.ts +382 -17
- package/dist/ui/index.js +1 -1
- package/dist/vite-plugin.d.ts +183 -141
- package/dist/vite-plugin.js +5 -2
- package/package.json +41 -22
- package/dist/apps/a11y/a11y-app.d.ts +0 -5
- package/dist/apps/a11y/a11y-store.d.ts +0 -42
- package/dist/apps/a11y/a11y-tooltip.d.ts +0 -11
- package/dist/apps/inspector/inspector-app.d.ts +0 -12
- package/dist/apps/module-graph/module-graph-app.d.ts +0 -5
- package/dist/apps/more/index.d.ts +0 -3
- package/dist/apps/more/index.js +0 -2
- package/dist/apps/more/more-app.d.ts +0 -5
- package/dist/apps/performance/performance-app.d.ts +0 -5
- package/dist/apps/performance/performance-tooltip.d.ts +0 -5
- package/dist/apps/seo/seo-app.d.ts +0 -5
- package/dist/apps/settings/settings-app.d.ts +0 -4
- package/dist/apps/tailwind/tailwind-app.d.ts +0 -5
- package/dist/apps/timeline/timeline-app.d.ts +0 -5
- package/dist/apps/vite-config/vite-config-app.d.ts +0 -5
- package/dist/hooks/create-hook.d.ts +0 -12
- package/dist/hooks/events.d.ts +0 -7
- package/dist/hooks/global-hook.d.ts +0 -15
- package/dist/hooks/index.d.ts +0 -6
- package/dist/packem_shared/Alert-H-x1JuZ0.js +0 -1
- package/dist/packem_shared/Badge-C30mDKKG.js +0 -1
- package/dist/packem_shared/Button-DODNCTPZ.js +0 -1
- package/dist/packem_shared/Card-DdI7Wn3t.js +0 -1
- package/dist/packem_shared/Icon-DWFLZkwW.js +0 -1
- package/dist/packem_shared/Input-GfbOwAkK.js +0 -1
- package/dist/packem_shared/Label-Bzi47aUf.js +0 -1
- package/dist/packem_shared/Popover-CLt7YhUF.js +0 -1
- package/dist/packem_shared/Progress-vGfFpxRn.js +0 -1
- package/dist/packem_shared/Separator-DQGeJPQg.js +0 -1
- package/dist/packem_shared/Skeleton-BYXau6jM.js +0 -1
- package/dist/packem_shared/Switch-BeC78S_T.js +0 -1
- package/dist/packem_shared/Tabs-CXERaeAp.js +0 -1
- package/dist/packem_shared/Textarea-DvbSX13V.js +0 -1
- package/dist/packem_shared/Tooltip-tlBN-NdK.js +0 -1
- package/dist/packem_shared/cn-DWLJYh3h.js +0 -1
- package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +0 -1
- package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +0 -1
- package/dist/packem_shared/createServerRPCContext-CEm1Ymkn.js +0 -1
- package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +0 -1
- package/dist/packem_shared/loadSettings-hvjR4fcS.js +0 -1
- package/dist/packem_shared/setupGlobalHook-CCf9Logv.js +0 -1
- package/dist/packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js +0 -2
- package/dist/packem_shared/store-DaUtLjf3.js +0 -1
- package/dist/packem_shared/use-theme-BOw3dPpY.js +0 -1
- package/dist/performance/monitor.d.ts +0 -116
- package/dist/rpc/client.d.ts +0 -9
- package/dist/rpc/functions/module-graph.d.ts +0 -17
- package/dist/rpc/functions/open-in-editor.d.ts +0 -16
- package/dist/rpc/functions/tailwind-config.d.ts +0 -15
- package/dist/rpc/functions/vite-config.d.ts +0 -9
- package/dist/rpc/server.d.ts +0 -15
- package/dist/timeline/capture.d.ts +0 -8
- package/dist/timeline/index.d.ts +0 -8
- package/dist/timeline/store.d.ts +0 -42
- package/dist/toolbar/app-manager.d.ts +0 -104
- package/dist/toolbar/components/app-button.d.ts +0 -19
- package/dist/toolbar/components/app-canvas.d.ts +0 -12
- package/dist/toolbar/components/app-tooltip-overlay.d.ts +0 -12
- package/dist/toolbar/components/first-visit-hint.d.ts +0 -16
- package/dist/toolbar/components/index.d.ts +0 -4
- package/dist/toolbar/components/pinned-tooltip-card.d.ts +0 -22
- package/dist/toolbar/components/toolbar-bar.d.ts +0 -14
- package/dist/toolbar/components/toolbar-container.d.ts +0 -55
- package/dist/toolbar/components/vite-overlay-button.d.ts +0 -14
- package/dist/toolbar/context/index.d.ts +0 -2
- package/dist/toolbar/context/toolbar-context.d.ts +0 -107
- package/dist/toolbar/global-api.d.ts +0 -24
- package/dist/toolbar/helpers.d.ts +0 -8
- package/dist/toolbar/hooks/index.d.ts +0 -10
- package/dist/toolbar/hooks/use-apps.d.ts +0 -15
- package/dist/toolbar/hooks/use-frame-state.d.ts +0 -100
- package/dist/toolbar/hooks/use-panel-visible.d.ts +0 -23
- package/dist/toolbar/hooks/use-position.d.ts +0 -24
- package/dist/toolbar/hooks/use-theme.d.ts +0 -15
- package/dist/toolbar/hooks/use-toolbar.d.ts +0 -16
- package/dist/toolbar/settings.d.ts +0 -17
- package/dist/toolbar/stylesheet.d.ts +0 -3
- package/dist/toolbar/utils/index.d.ts +0 -12
- package/dist/types/app.d.ts +0 -175
- package/dist/types/global-api.d.ts +0 -91
- package/dist/types/hooks.d.ts +0 -86
- package/dist/types/index.d.ts +0 -12
- package/dist/types/messaging.d.ts +0 -43
- package/dist/types/rpc.d.ts +0 -97
- package/dist/types/timeline.d.ts +0 -62
- package/dist/types/toolbar.d.ts +0 -56
- package/dist/ui/components/alert.d.ts +0 -20
- package/dist/ui/components/badge.d.ts +0 -10
- package/dist/ui/components/button.d.ts +0 -12
- package/dist/ui/components/card.d.ts +0 -17
- package/dist/ui/components/icon.d.ts +0 -20
- package/dist/ui/components/input.d.ts +0 -8
- package/dist/ui/components/label.d.ts +0 -8
- package/dist/ui/components/popover.d.ts +0 -27
- package/dist/ui/components/progress.d.ts +0 -8
- package/dist/ui/components/separator.d.ts +0 -9
- package/dist/ui/components/skeleton.d.ts +0 -7
- package/dist/ui/components/switch.d.ts +0 -12
- package/dist/ui/components/tabs.d.ts +0 -29
- package/dist/ui/components/textarea.d.ts +0 -8
- package/dist/ui/components/tooltip.d.ts +0 -19
- package/dist/utils/cn.d.ts +0 -8
- package/dist/vite/inject-source.d.ts +0 -24
- package/dist/vite/matcher.d.ts +0 -6
package/dist/vite-plugin.d.ts
CHANGED
|
@@ -1,144 +1,186 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { Plugin } from 'vite';
|
|
2
|
+
import { R as ReadFileOptions } from "./packem_shared/server.d-ZkcY0pge.js";
|
|
3
|
+
import { D as DevToolbarApp, S as ServerFunctions } from "./packem_shared/app.d-SmKEDxsI.js";
|
|
4
|
+
import "./packem_shared/global-api.d-DeaCvII9.js";
|
|
5
|
+
import '@babel/generator';
|
|
6
|
+
import 'preact';
|
|
7
|
+
interface InjectSourceIgnore {
|
|
8
|
+
/** Component names or patterns to skip. */
|
|
9
|
+
components?: (RegExp | string)[];
|
|
10
|
+
/** File paths or patterns to skip. */
|
|
11
|
+
files?: (RegExp | string)[];
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
14
|
+
* Dev toolbar plugin options
|
|
15
|
+
*/
|
|
16
|
+
interface DevToolbarOptions {
|
|
17
|
+
/**
|
|
18
|
+
* append an import to the module id ending with `appendTo` instead of adding a script into body
|
|
19
|
+
* useful for projects that do not use html file as an entry
|
|
20
|
+
*
|
|
21
|
+
* WARNING: only set this if you know exactly what it does.
|
|
22
|
+
* @default Empty string (disabled).
|
|
23
|
+
*/
|
|
24
|
+
appendTo?: string | RegExp;
|
|
25
|
+
/**
|
|
26
|
+
* Built-in apps to enable. All apps are disabled by default — only
|
|
27
|
+
* `viteConfig`, `settings`, and the "more" drawer are shown out of the box.
|
|
28
|
+
* Explicitly set an app to `true` to enable it.
|
|
29
|
+
* @example { inspector: true, seo: true }
|
|
30
|
+
*/
|
|
31
|
+
apps?: {
|
|
32
|
+
[key: string]: boolean | undefined;
|
|
33
|
+
a11y?: boolean;
|
|
34
|
+
annotations?: boolean;
|
|
35
|
+
assets?: boolean;
|
|
36
|
+
inspector?: boolean;
|
|
37
|
+
moduleGraph?: boolean;
|
|
38
|
+
performance?: boolean;
|
|
39
|
+
seo?: boolean;
|
|
40
|
+
settings?: boolean;
|
|
41
|
+
tailwind?: boolean;
|
|
42
|
+
timeline?: boolean;
|
|
43
|
+
viteConfig?: boolean;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Whether clicking outside the DevTools panel closes it.
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
closeOnOutsideClick?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Custom apps to register
|
|
52
|
+
*/
|
|
53
|
+
customApps?: DevToolbarApp[];
|
|
54
|
+
/**
|
|
55
|
+
* Whether toolbar is visible by default
|
|
56
|
+
*/
|
|
57
|
+
defaultVisible?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* The editor to open when clicking "Open in editor" in the inspector.
|
|
60
|
+
* Accepts any value supported by `launch-editor` — an editor name/alias
|
|
61
|
+
* (e.g. `"code"`, `"webstorm"`, `"vim"`, `"atom"`) or the full path to
|
|
62
|
+
* the editor executable.
|
|
63
|
+
*
|
|
64
|
+
* If omitted, `launch-editor` auto-detects the editor from the `EDITOR`
|
|
65
|
+
* / `VISUAL` environment variables or from the currently running IDE
|
|
66
|
+
* process detected on the OS process list.
|
|
67
|
+
* @example "webstorm"
|
|
68
|
+
* @example "code"
|
|
69
|
+
*/
|
|
70
|
+
editor?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Master switch for the whole plugin. When `false`, `devToolbar()` returns an
|
|
73
|
+
* empty plugin array, so no virtual modules, RPC server, or client overlay are
|
|
74
|
+
* registered — the equivalent of removing the plugin from `vite.config.ts`
|
|
75
|
+
* without editing the config.
|
|
76
|
+
*
|
|
77
|
+
* Handy for CI/preview environments:
|
|
78
|
+
* `devToolbar({ enabled: !process.env.CI })`.
|
|
79
|
+
* @default true
|
|
80
|
+
*/
|
|
81
|
+
enabled?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Initial panel height as a percentage of the viewport height (20–95).
|
|
84
|
+
* @default 60
|
|
85
|
+
*/
|
|
86
|
+
height?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Inject `data-vdt-source="<file>:<line>:<col>"` attributes into every JSX
|
|
89
|
+
* opening element during development. This lets the inspector jump directly
|
|
90
|
+
* to the source file when an element is clicked.
|
|
91
|
+
*
|
|
92
|
+
* Only active when `mode === 'development'`. Set `enabled: false` to opt out.
|
|
93
|
+
* Use `ignore.files` / `ignore.components` to exclude specific paths or
|
|
94
|
+
* component names (strings are treated as glob patterns).
|
|
95
|
+
* @default { enabled: true }
|
|
96
|
+
*/
|
|
97
|
+
injectSource?: {
|
|
98
|
+
enabled?: boolean;
|
|
99
|
+
ignore?: InjectSourceIgnore;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Keyboard shortcut bindings.
|
|
103
|
+
* These are project-level defaults; users can still override them via the
|
|
104
|
+
* Settings app (stored in localStorage).
|
|
105
|
+
*/
|
|
106
|
+
keybindings?: {
|
|
107
|
+
/** Close active app / panel. \@default "Escape" */
|
|
108
|
+
close?: string;
|
|
109
|
+
/** Toggle the DevTools panel open/closed. \@default "Alt+Shift+D" */
|
|
110
|
+
toggle?: string;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Auto-hide the toolbar pill after this many milliseconds of inactivity.
|
|
114
|
+
* Set to -1 to never auto-hide.
|
|
115
|
+
* @default 5000
|
|
116
|
+
*/
|
|
117
|
+
minimizePanelInactive?: number;
|
|
118
|
+
/**
|
|
119
|
+
* Toolbar placement (coarse shorthand — sets the edge and rough horizontal
|
|
120
|
+
* alignment of the toolbar pill).
|
|
121
|
+
* @default "bottom-center"
|
|
122
|
+
*/
|
|
123
|
+
placement?: "bottom-left" | "bottom-center" | "bottom-right";
|
|
124
|
+
/**
|
|
125
|
+
* Which edge of the viewport the toolbar pill is anchored to.
|
|
126
|
+
* Takes precedence over the edge implied by `placement`.
|
|
127
|
+
* @default "bottom"
|
|
128
|
+
*/
|
|
129
|
+
position?: "bottom" | "left" | "right" | "top";
|
|
130
|
+
/**
|
|
131
|
+
* Policy for the built-in `readFile` RPC endpoint, which lets toolbar apps read
|
|
132
|
+
* text files under the project root.
|
|
133
|
+
*
|
|
134
|
+
* Set to `false` to remove the endpoint entirely — recommended when the dev
|
|
135
|
+
* server is exposed on the network (`vite --host`), since any device on the LAN
|
|
136
|
+
* can then call RPC methods. Pass an object to override the allowed extensions.
|
|
137
|
+
*
|
|
138
|
+
* By default the endpoint is restricted to a curated allowlist of source/markup/
|
|
139
|
+
* text extensions, so `.env`, lockfiles, and key material are never served.
|
|
140
|
+
* @default { extensions: curated source/text list }
|
|
141
|
+
*/
|
|
142
|
+
readFile?: ReadFileOptions | false;
|
|
143
|
+
/**
|
|
144
|
+
* Reduce motion for accessibility (disables all CSS animations).
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
147
|
+
reduceMotion?: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Strip all \@visulima/dev-toolbar imports and virtual modules when building
|
|
150
|
+
* for production (i.e. when `command !== 'serve'` or `mode === 'production'`).
|
|
151
|
+
* This guarantees the toolbar never ends up in a production bundle even if the
|
|
152
|
+
* user accidentally imports our package in application code.
|
|
153
|
+
* @default true
|
|
154
|
+
*/
|
|
155
|
+
removeDevtoolsOnBuild?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Only activate the toolbar when the URL contains a specific query parameter.
|
|
158
|
+
* Useful for staging/production environments where you want opt-in debugging.
|
|
159
|
+
* @example requireUrlFlag: true, urlFlagName: 'debug' → toolbar only shows when URL has ?debug=true
|
|
160
|
+
* @default false
|
|
161
|
+
*/
|
|
162
|
+
requireUrlFlag?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Custom server RPC functions
|
|
165
|
+
*/
|
|
166
|
+
serverFunctions?: Partial<ServerFunctions>;
|
|
167
|
+
/**
|
|
168
|
+
* The URL query parameter name used when requireUrlFlag is true.
|
|
169
|
+
* @default 'devtools'
|
|
170
|
+
*/
|
|
171
|
+
urlFlagName?: string;
|
|
172
|
+
/**
|
|
173
|
+
* Initial panel width as a percentage of the viewport width (20–95).
|
|
174
|
+
* Applies when position is "left" or "right".
|
|
175
|
+
* @default 80
|
|
176
|
+
*/
|
|
177
|
+
width?: number;
|
|
140
178
|
}
|
|
141
179
|
/**
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
180
|
+
* Returns the Vite plugin array for the dev toolbar.
|
|
181
|
+
*
|
|
182
|
+
* Returns an empty array when `options.enabled === false`, so the plugin can be
|
|
183
|
+
* gated for CI/preview builds without removing it from `vite.config.ts`.
|
|
184
|
+
*/
|
|
185
|
+
declare const devToolbar: (options?: DevToolbarOptions) => Plugin[];
|
|
186
|
+
export { DevToolbarOptions, devToolbar };
|
package/dist/vite-plugin.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import{createRequire as O}from"node:module";import{normalizePath as R}from"vite";import{createServerRPCContext as N}from"./packem_shared/createServerRPCContext-C30tqEfQ.js";const M=O(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,y=e=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[p,f]=u.versions.node.split(".").map(Number);if(p>22||p===22&&f>=3||p===20&&f>=16)return u.getBuiltinModule(e)}return M(e)},S=y("node:fs"),x=y("node:path"),{fileURLToPath:I}=y("node:url"),P=()=>R(x.dirname(I(import.meta.url))),q=/\?.+$/,D=/\/dist\/|\/build\//,W=/\.[jt]sx$/,B=e=>e.replace(q,""),_="?__visulima-dev-toolbar-resource",b="virtual:visulima-dev-toolbar-options",j=`\0${b}`,m="virtual:visulima-dev-toolbar-path:",$="\0__visulima-dev-toolbar-empty",T=(e,p)=>typeof e!="number"||!Number.isFinite(e)?p:Math.min(95,Math.max(20,e)),U=(e={})=>{if(e.enabled===!1)return[];const p=P(),f=e.removeDevtoolsOnBuild??!0,C=e.injectSource?.enabled??!0;let v;const F={apply:"serve",config(){return{server:{watch:{ignored:["**/.devtoolbar/**"]}}}},configResolved(t){if(v=t,!e.appendTo){const o=new Set(t.plugins.map(i=>i.name));(o.has("tanstack-start-core:config")||o.has("tanstack-react-start:config"))&&(e.appendTo=/router\.tsx$/)}const n=/dev-toolbar[\\/]dist[\\/]|__visulima-dev-toolbar-resource/;for(const o of t.plugins){if(!o.name.includes("babel"))continue;const i=o.transform;if(!i)continue;const a=typeof i=="function"?i:typeof i=="object"&&"handler"in i?i.handler:void 0;if(typeof a!="function")continue;const s=function(c,r,...l){if(!n.test(r))return a.call(this,c,r,...l)};typeof i=="function"?o.transform=s:i.handler=s}},configureServer(t){N(t,e.serverFunctions,{editor:e.editor,readFile:e.readFile}),t.ws.on("connection",()=>{t.ws.send({event:"dev-toolbar:init",type:"custom"})}),t.middlewares.use("/__devtoolbar/events",async(n,o)=>{o.writeHead(200,{"Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/event-stream","X-Accel-Buffering":"no"});const i=(r,l)=>{o.write(`event: ${r}
|
|
2
|
+
data: ${JSON.stringify(l)}
|
|
3
|
+
|
|
4
|
+
`)};i("connected",{timestamp:Date.now()});const{watch:a}=await import("node:fs"),s=x.join(t.config.root,".devtoolbar","annotations.json");let c;try{c=a(s,{persistent:!1},r=>{r==="change"&&i("annotations.changed",{timestamp:Date.now()})}),c.on("error",()=>{})}catch{const{stat:r}=await import("node:fs/promises");let l=0;const h=setInterval(async()=>{try{const d=(await r(s)).mtimeMs;d!==l&&(l=d,i("annotations.changed",{timestamp:Date.now()}))}catch{}},2e3);n.on("close",()=>{clearInterval(h)});return}n.on("close",()=>{c?.close()})})},enforce:"pre",async load(t){if(t===j){const n=(e.customApps??[]).filter(o=>!o.component&&!o.init&&o.view?.type==="iframe").map(o=>({defaultOpen:o.defaultOpen,icon:o.icon,id:o.id,name:o.name,view:o.view}));return`export default ${JSON.stringify({apps:{a11y:e.apps?.a11y??!1,annotations:e.apps?.annotations??e.apps?.inspector??!1,assets:e.apps?.assets??!1,inspector:e.apps?.inspector??!1,moduleGraph:e.apps?.moduleGraph??!1,performance:e.apps?.performance??!1,seo:e.apps?.seo??!1,settings:e.apps?.settings??!0,tailwind:e.apps?.tailwind??!1,timeline:e.apps?.timeline??!1,viteConfig:e.apps?.viteConfig??!0},base:v.base,closeOnOutsideClick:e.closeOnOutsideClick??!0,customApps:n,defaultVisible:e.defaultVisible??!0,editor:e.editor??"",height:T(e.height,60),keybindings:e.keybindings??{},minimizePanelInactive:e.minimizePanelInactive??5e3,placement:e.placement??"bottom-center",position:e.position??"bottom",reduceMotion:e.reduceMotion??!1,requireUrlFlag:e.requireUrlFlag??!1,urlFlagName:e.urlFlagName??"devtools",width:T(e.width,80)})};`}if(t.endsWith(_)){const n=B(t);return this.addWatchFile(n),await S.promises.readFile(n,"utf8")}},name:"@visulima/dev-toolbar",resolveId(t){if(t===b)return j;if(t.startsWith(m))return`${t.replace(m,`${p}/`)}${_}`},transform(t,n,o){if(o?.ssr)return;const{appendTo:i}=e,a=n.split("?",2)[0];if(i&&a&&(typeof i=="string"&&a.endsWith(i)||i instanceof RegExp&&i.test(a)))return`import '${m}client/overlay.js';
|
|
5
|
+
${t}`},transformIndexHtml(){return e.appendTo?void 0:{html:"",tags:[{attrs:{src:`${v.base||"/"}@id/${m}client/overlay.js`,type:"module"},injectTo:"head-prepend",tag:"script"}]}}},k={apply(t,{command:n,mode:o}){return f&&(n!=="serve"||o==="production")},load(t){if(t===$)return"export default {};"},name:"@visulima/dev-toolbar:remove-on-build",resolveId(t){if(t===b||t.startsWith(m))return $}},w=new Map;return[F,{enforce:"pre",name:"@visulima/dev-toolbar:inject-source",async transform(t,n){if(!C||v.mode!=="development"||n.includes("node_modules")||n.includes("?raw")||D.test(n)||!W.test(n.split("?")[0]??""))return;const o=n.split("?")[0]??n,{readFile:i,stat:a}=await import("node:fs/promises");let s;try{const{mtimeMs:d}=await a(o);s=`${t.length}:${d}`;const g=w.get(n);if(g&&g.key===s)return g.result}catch{}let c;try{const d=await i(o,"utf8");d!==t&&(c=d)}catch{}const{addSourceToJsx:r}=await import("./packem_chunks/inject-source.js"),l=r(t,n,e.injectSource?.ignore,c),h=l?{code:l.code??t,map:l.map??void 0}:void 0;return s!==void 0&&w.set(n,{key:s,result:h}),h}},k]};export{U as devToolbar};
|
package/package.json
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/dev-toolbar",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.41",
|
|
4
4
|
"description": "Devtools is a set of tools for building advanced devtools for your application",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"
|
|
7
|
-
"
|
|
6
|
+
"dev-toolbar",
|
|
7
|
+
"visulima"
|
|
8
8
|
],
|
|
9
9
|
"homepage": "https://visulima.com/packages/dev-toolbar",
|
|
10
|
-
"bugs":
|
|
11
|
-
"url": "https://github.com/visulima/visulima/issues"
|
|
12
|
-
},
|
|
10
|
+
"bugs": "https://github.com/visulima/visulima/issues",
|
|
13
11
|
"repository": {
|
|
14
12
|
"type": "git",
|
|
15
13
|
"url": "git+https://github.com/visulima/visulima.git",
|
|
@@ -49,6 +47,10 @@
|
|
|
49
47
|
"types": "./dist/apps/a11y/index.d.ts",
|
|
50
48
|
"default": "./dist/apps/a11y/index.js"
|
|
51
49
|
},
|
|
50
|
+
"./apps/assets": {
|
|
51
|
+
"types": "./dist/apps/assets/index.d.ts",
|
|
52
|
+
"default": "./dist/apps/assets/index.js"
|
|
53
|
+
},
|
|
52
54
|
"./apps/inspector": {
|
|
53
55
|
"types": "./dist/apps/inspector/index.d.ts",
|
|
54
56
|
"default": "./dist/apps/inspector/index.js"
|
|
@@ -61,10 +63,6 @@
|
|
|
61
63
|
"types": "./dist/apps/module-graph/index.d.ts",
|
|
62
64
|
"default": "./dist/apps/module-graph/index.js"
|
|
63
65
|
},
|
|
64
|
-
"./apps/more": {
|
|
65
|
-
"types": "./dist/apps/more/index.d.ts",
|
|
66
|
-
"default": "./dist/apps/more/index.js"
|
|
67
|
-
},
|
|
68
66
|
"./apps/performance": {
|
|
69
67
|
"types": "./dist/apps/performance/index.d.ts",
|
|
70
68
|
"default": "./dist/apps/performance/index.js"
|
|
@@ -81,10 +79,18 @@
|
|
|
81
79
|
"types": "./dist/apps/timeline/index.d.ts",
|
|
82
80
|
"default": "./dist/apps/timeline/index.js"
|
|
83
81
|
},
|
|
82
|
+
"./apps/annotations": {
|
|
83
|
+
"types": "./dist/apps/annotations/index.d.ts",
|
|
84
|
+
"default": "./dist/apps/annotations/index.js"
|
|
85
|
+
},
|
|
84
86
|
"./apps/vite-config": {
|
|
85
87
|
"types": "./dist/apps/vite-config/index.d.ts",
|
|
86
88
|
"default": "./dist/apps/vite-config/index.js"
|
|
87
89
|
},
|
|
90
|
+
"./mcp": {
|
|
91
|
+
"types": "./dist/mcp/server.d.ts",
|
|
92
|
+
"default": "./dist/mcp/server.js"
|
|
93
|
+
},
|
|
88
94
|
"./toolbar": {
|
|
89
95
|
"types": "./dist/toolbar/index.d.ts",
|
|
90
96
|
"default": "./dist/toolbar/index.js"
|
|
@@ -95,29 +101,42 @@
|
|
|
95
101
|
},
|
|
96
102
|
"./package.json": "./package.json"
|
|
97
103
|
},
|
|
104
|
+
"bin": {
|
|
105
|
+
"visulima-dev-toolbar-mcp": "./bin/mcp.js"
|
|
106
|
+
},
|
|
98
107
|
"files": [
|
|
108
|
+
"bin",
|
|
99
109
|
"dist",
|
|
100
110
|
"README.md",
|
|
101
111
|
"CHANGELOG.md"
|
|
102
112
|
],
|
|
103
113
|
"dependencies": {
|
|
104
|
-
"@babel/generator": "^
|
|
105
|
-
"@babel/parser": "^
|
|
106
|
-
"@babel/traverse": "^
|
|
107
|
-
"@babel/types": "^7.29.0",
|
|
114
|
+
"@babel/generator": "^8.0.0",
|
|
115
|
+
"@babel/parser": "^8.0.0",
|
|
116
|
+
"@babel/traverse": "^8.0.0",
|
|
108
117
|
"@floating-ui/dom": "^1.7.6",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"launch-editor": "^2.13.1",
|
|
112
|
-
"lucide-static": "^0.576.0",
|
|
113
|
-
"preact": "^10.28.4",
|
|
114
|
-
"tailwind-merge": "^3.5.0"
|
|
118
|
+
"launch-editor": "2.14.1",
|
|
119
|
+
"preact": "^10.29.2"
|
|
115
120
|
},
|
|
116
121
|
"peerDependencies": {
|
|
117
|
-
"
|
|
122
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
123
|
+
"axe-core": "4.12.1",
|
|
124
|
+
"vite": "^8.0.11",
|
|
125
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
126
|
+
},
|
|
127
|
+
"peerDependenciesMeta": {
|
|
128
|
+
"@modelcontextprotocol/sdk": {
|
|
129
|
+
"optional": true
|
|
130
|
+
},
|
|
131
|
+
"axe-core": {
|
|
132
|
+
"optional": true
|
|
133
|
+
},
|
|
134
|
+
"zod": {
|
|
135
|
+
"optional": true
|
|
136
|
+
}
|
|
118
137
|
},
|
|
119
138
|
"engines": {
|
|
120
|
-
"node": "
|
|
139
|
+
"node": "^22.14.0 || >=24.10.0"
|
|
121
140
|
},
|
|
122
141
|
"publishConfig": {
|
|
123
142
|
"access": "public",
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
type Severity = "critical" | "minor" | "moderate" | "serious";
|
|
2
|
-
type Standard = "best-practice" | "wcag21aa" | "wcag22aa" | "wcag2a";
|
|
3
|
-
interface A11yNode {
|
|
4
|
-
html: string;
|
|
5
|
-
selector: string;
|
|
6
|
-
}
|
|
7
|
-
interface A11yIssue {
|
|
8
|
-
helpUrl: string;
|
|
9
|
-
id: string;
|
|
10
|
-
impact: Severity;
|
|
11
|
-
message: string;
|
|
12
|
-
nodes: A11yNode[];
|
|
13
|
-
wcagTags: string[];
|
|
14
|
-
}
|
|
15
|
-
interface A11yStoreState {
|
|
16
|
-
isScanning: boolean;
|
|
17
|
-
issues: A11yIssue[];
|
|
18
|
-
lastScan: string | undefined;
|
|
19
|
-
scanError: string | undefined;
|
|
20
|
-
showOverlays: boolean;
|
|
21
|
-
standard: Standard;
|
|
22
|
-
}
|
|
23
|
-
declare const SEVERITY_ORDER: Severity[];
|
|
24
|
-
type Listener = () => void;
|
|
25
|
-
declare class A11yStore {
|
|
26
|
-
private listeners;
|
|
27
|
-
private state;
|
|
28
|
-
constructor();
|
|
29
|
-
clearHighlights(): void;
|
|
30
|
-
getState(): Readonly<A11yStoreState>;
|
|
31
|
-
highlightIssue(issue: A11yIssue): void;
|
|
32
|
-
scan(disabledRules?: string[]): Promise<void>;
|
|
33
|
-
setShowOverlays(show: boolean): void;
|
|
34
|
-
setStandard(standard: Standard): void;
|
|
35
|
-
subscribe(listener: Listener): () => void;
|
|
36
|
-
private notify;
|
|
37
|
-
private persist;
|
|
38
|
-
private update;
|
|
39
|
-
}
|
|
40
|
-
declare const a11yStore: A11yStore;
|
|
41
|
-
export type { A11yIssue, A11yNode, A11yStoreState, Severity, Standard };
|
|
42
|
-
export { a11yStore, SEVERITY_ORDER };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** @jsxImportSource preact */
|
|
2
|
-
import type { ComponentChildren } from "preact";
|
|
3
|
-
import type { AppTooltipProps } from "../../types/app.d.ts";
|
|
4
|
-
/**
|
|
5
|
-
* Hover tooltip for the Accessibility app button.
|
|
6
|
-
* Shows a summary of scan results and quick action buttons.
|
|
7
|
-
* @param _props Tooltip props (unused; reads from a11yStore directly)
|
|
8
|
-
* @returns Rendered tooltip component
|
|
9
|
-
*/
|
|
10
|
-
declare const A11yTooltip: (_props: AppTooltipProps) => ComponentChildren;
|
|
11
|
-
export default A11yTooltip;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Start element inspection mode.
|
|
3
|
-
* Attaches crosshair cursor, hover highlight overlay, and a floating badge.
|
|
4
|
-
* Survives component unmounts — state lives at module level.
|
|
5
|
-
* @param onComplete Called when the user clicks an element (after cleanup).
|
|
6
|
-
* @param onCancel Called when the user cancels via badge button or Escape.
|
|
7
|
-
*/
|
|
8
|
-
export declare const startGlobalInspection: (onComplete: () => void, onCancel: () => void) => void;
|
|
9
|
-
/**
|
|
10
|
-
* Cancel any in-progress inspection and clean up all DOM side-effects.
|
|
11
|
-
*/
|
|
12
|
-
export declare const stopGlobalInspection: () => void;
|
package/dist/apps/more/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var p=Object.defineProperty;var s=(i,t)=>p(i,"name",{value:t,configurable:!0});import m from"lucide-static/icons/more-horizontal.svg?raw";import{addHookName as f}from"preact/devtools";import{useState as u,useEffect as b}from"preact/hooks";import g from"../../packem_shared/cn-DWLJYh3h.js";import{jsxs as o,jsx as r}from"preact/jsx-runtime";var h=Object.defineProperty,n=s((i,t)=>h(i,"name",{value:t,configurable:!0}),"n");const x=n(i=>{const[t,a]=f(u([]),"apps");b(()=>{const e=globalThis.__VISULIMA_DEVTOOLS__;if(!e)return;const l=(e.getApps()??[]).filter(c=>!["dev-toolbar:a11y","dev-toolbar:inspector","dev-toolbar:module-graph","dev-toolbar:more","dev-toolbar:performance","dev-toolbar:seo","dev-toolbar:settings","dev-toolbar:tailwind","dev-toolbar:timeline","dev-toolbar:vite-config"].includes(c.id));a(l)},[]);const d=n(e=>{globalThis.__VISULIMA_DEVTOOLS__?.openApp(e).catch(()=>{})},"openApp");return t.length===0?o("div",{class:"p-8 flex flex-col items-center justify-center min-h-48 gap-5 text-center select-none",children:[r("div",{class:"size-14 bg-primary/5 border border-primary/20 flex items-center justify-center",children:r("svg",{"aria-hidden":"true",class:"size-6 text-primary/40",fill:"none",stroke:"currentColor","stroke-width":"1.5",viewBox:"0 0 24 24",children:r("path",{d:"M12 6v6m0 0v6m0-6h6m-6 0H6","stroke-linecap":"round","stroke-linejoin":"round"})})}),o("div",{class:"space-y-1.5",children:[r("p",{class:"text-[0.8125rem] font-medium text-foreground/70",children:"No additional apps registered"}),r("p",{class:"text-[0.725rem] text-muted-foreground",children:"Register a custom app to see it here"}),r("pre",{class:"mt-3 text-[0.65rem] font-mono text-primary/70 bg-primary/5 border border-primary/15 px-3 py-2 text-left",children:`window.__VISULIMA_DEVTOOLS__
|
|
2
|
-
.registerApp({ id, name, icon })`})]})]}):o("div",{class:"p-5",children:[o("h2",{class:"text-[0.65rem] font-bold uppercase tracking-[0.1em] text-muted-foreground mb-3 flex items-center gap-1.5",children:[r("span",{"aria-hidden":"true",class:"text-primary/50",children:"//"}),"Additional Apps"]}),r("div",{class:"grid grid-cols-2 gap-2",children:t.map(e=>o("button",{class:g("flex items-center gap-3 p-3","border border-border bg-card hover:bg-foreground/4","text-left cursor-pointer transition-colors duration-150"),onClick:n(()=>d(e.id),"onClick"),title:e.name,type:"button",children:[r("span",{class:"size-5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase bg-foreground/8 text-foreground/70",children:e.name.slice(0,2)}),r("span",{class:"text-[0.8125rem] font-medium text-foreground truncate",children:e.name})]},e.id))})]})},"MoreApp"),O={component:x,icon:m,id:"dev-toolbar:more",name:"More"};export{O as default};
|