@devframes/hub 0.9.0-beta.1 → 0.9.0-beta.10
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/client/index.d.mts +125 -7
- package/dist/client/index.mjs +110 -7
- package/dist/constants.d.mts +12 -2
- package/dist/constants.mjs +14 -3
- package/dist/{context-Dz0j8Eyg.d.mts → context-D5TJIHwp.d.mts} +1 -1
- package/dist/{context-DPdojIW8.mjs → context-DzqMQ2mI.mjs} +5 -12
- package/dist/index-coDmWngQ.d.mts +5 -0
- package/dist/index.d.mts +4 -5
- package/dist/node/index.d.mts +2 -3
- package/dist/node/index.mjs +2 -2
- package/dist/node/initiate.d.mts +16 -9
- package/dist/node/initiate.mjs +5 -9
- package/dist/{commands-CAcTUSlj.d.mts → settings-DfrRa9Wf.d.mts} +40 -6
- package/dist/types/index.d.mts +4 -5
- package/package.json +3 -4
- package/dist/index-p4BktGvQ.d.mts +0 -6
- package/dist/settings-B1qJ47d5.d.mts +0 -13
package/dist/client/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { E as DevframeMessagesClient, x as DevframeMessageEntryInput } from "../context-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import "../index-p4BktGvQ.mjs";
|
|
1
|
+
import { E as DevframeMessagesClient, x as DevframeMessageEntryInput } from "../context-D5TJIHwp.mjs";
|
|
2
|
+
import { N as NavTarget, P as RemoteConnectionInfo, S as DevframeDockUserEntry, _ as DevframeDockEntry, a as DevframeCommandEntry, b as DevframeDockEntryIcon, g as DevframeDockEntriesGrouped, k as DevframeViewIframe, n as DevframeClientCommand, p as ClientScriptEntry, s as DevframeCommandKeybinding, t as DevframeDocksUserSettings } from "../settings-DfrRa9Wf.mjs";
|
|
3
|
+
import "../index-coDmWngQ.mjs";
|
|
5
4
|
import { DevframeClientRpcHost, DevframeConnection, DevframeConnectionStatus, DevframeRpcClient, DevframeRpcClientOptions, DevframeRpcContext, RpcClientEvents, RpcClientEvents as RpcClientEvents$1 } from "devframe/client";
|
|
6
5
|
import { EventEmitter } from "devframe/types";
|
|
7
6
|
import { SharedState } from "devframe/utils/shared-state";
|
|
@@ -135,9 +134,30 @@ interface DockPanelStorage {
|
|
|
135
134
|
top: number;
|
|
136
135
|
left: number;
|
|
137
136
|
position: 'left' | 'right' | 'bottom' | 'top';
|
|
138
|
-
open: boolean;
|
|
139
137
|
inactiveTimeout: number;
|
|
140
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Per-tab UI state of the dock panel, distinct from the browser-shared geometry
|
|
141
|
+
* in {@link DockPanelStorage}. A viewer persists this to `sessionStorage` so a
|
|
142
|
+
* reload (or the RPC auth handshake that follows one) restores the panel to
|
|
143
|
+
* exactly where the developer left it — which dock was open, and the
|
|
144
|
+
* address-bar route of that dock's iframe. Kept `sessionStorage`-scoped (not
|
|
145
|
+
* `localStorage`) because it is per-tab navigation state: two tabs open against
|
|
146
|
+
* the same dev server each keep their own selection rather than fighting over a
|
|
147
|
+
* shared one. Every field is serializable.
|
|
148
|
+
*/
|
|
149
|
+
interface DockSessionStorage {
|
|
150
|
+
/** Whether the dock panel is open. */
|
|
151
|
+
open: boolean;
|
|
152
|
+
/** The currently selected dock entry id, or `null` when nothing is open. */
|
|
153
|
+
selectedDockId: string | null;
|
|
154
|
+
/**
|
|
155
|
+
* The live address-bar URL of the selected iframe dock, restored as that
|
|
156
|
+
* iframe's boot `src` on the next load so the deep-linked route survives a
|
|
157
|
+
* reload. `null` when the selected dock has no iframe route to remember.
|
|
158
|
+
*/
|
|
159
|
+
selectedDockRoute: string | null;
|
|
160
|
+
}
|
|
141
161
|
type DockClientType = 'embedded' | 'standalone';
|
|
142
162
|
interface DocksContext extends DevframeRpcContext {
|
|
143
163
|
/**
|
|
@@ -197,16 +217,41 @@ interface WhenClauseContext {
|
|
|
197
217
|
type DevframeClientContext = DocksContext;
|
|
198
218
|
interface DocksPanelContext {
|
|
199
219
|
store: DockPanelStorage;
|
|
220
|
+
/**
|
|
221
|
+
* Per-tab session UI state — whether the panel is open, which dock is
|
|
222
|
+
* selected, and that dock's iframe route. Restored across reloads (and the
|
|
223
|
+
* auth handshake that follows one) by a viewer that persists it to
|
|
224
|
+
* `sessionStorage`.
|
|
225
|
+
*/
|
|
226
|
+
session: DockSessionStorage;
|
|
200
227
|
isDragging: boolean;
|
|
201
228
|
isResizing: boolean;
|
|
202
229
|
readonly isVertical: boolean;
|
|
230
|
+
/**
|
|
231
|
+
* Claim the persisted {@link DockSessionStorage.selectedDockRoute boot route} for a dock
|
|
232
|
+
* id, once. Returns the saved address-bar URL only for the dock that was
|
|
233
|
+
* selected before the last reload — and only on the first call for it — so a
|
|
234
|
+
* restored iframe boots deep-linked while a later switch to a different dock
|
|
235
|
+
* (whose live route isn't reflected in {@link DockSessionStorage.selectedDockRoute} yet)
|
|
236
|
+
* doesn't reuse the stale value. Returns `null` otherwise.
|
|
237
|
+
*/
|
|
238
|
+
consumeBootRoute?: (id: string) => string | null;
|
|
203
239
|
}
|
|
204
240
|
interface DocksEntriesContext {
|
|
205
241
|
selectedId: string | null;
|
|
242
|
+
selectedRoute: string | null;
|
|
206
243
|
readonly selected: DevframeDockEntry | null;
|
|
207
244
|
entries: DevframeDockEntry[];
|
|
208
245
|
entryToStateMap: Map<string, DockEntryState>;
|
|
209
246
|
groupedEntries: DevframeDockEntriesGrouped;
|
|
247
|
+
/**
|
|
248
|
+
* The resolved top-level category ordering — `DEFAULT_CATEGORIES_ORDER`,
|
|
249
|
+
* overridden by every installed devframe's own `dock.categoryOrder`
|
|
250
|
+
* (`ConnectionMeta.configs.dock.categoryOrder`), overridden again by the
|
|
251
|
+
* host page's own `createDevframeClientHost({ categoryOrder })`. Fixed
|
|
252
|
+
* for the life of the session — resolved once at boot.
|
|
253
|
+
*/
|
|
254
|
+
readonly categoryOrder: Record<string, number>;
|
|
210
255
|
settings: SharedState<DevframeDocksUserSettings>;
|
|
211
256
|
/**
|
|
212
257
|
* Get the state of a dock entry by its ID
|
|
@@ -339,6 +384,79 @@ declare function resolveDockUrl(url: string, connection: DevframeConnection): st
|
|
|
339
384
|
/** Resolve URL-backed dock icons while preserving Iconify names and data URLs. */
|
|
340
385
|
declare function resolveDockIcon(icon: DevframeDockEntryIcon, connection: DevframeConnection): DevframeDockEntryIcon;
|
|
341
386
|
//#endregion
|
|
387
|
+
//#region src/client/frame-location.d.ts
|
|
388
|
+
/**
|
|
389
|
+
* Live location tracking for an iframe dock.
|
|
390
|
+
*
|
|
391
|
+
* An iframe dock's address bar — and the route persisted from it into
|
|
392
|
+
* `DockSessionStorage.selectedDockRoute` — has to follow wherever the embedded
|
|
393
|
+
* app actually goes. The `load` event only covers whole-document navigations, so
|
|
394
|
+
* an SPA router moving between routes with `history.pushState()` leaves both
|
|
395
|
+
* showing the URL the frame booted with.
|
|
396
|
+
*
|
|
397
|
+
* {@link watchFrameLocation} closes that gap for a same-origin frame, reporting
|
|
398
|
+
* `location.href` on every navigation it can observe:
|
|
399
|
+
*
|
|
400
|
+
* - `popstate` / `hashchange` — back/forward and hash routing;
|
|
401
|
+
* - `history.pushState`/`replaceState`, wrapped in place (and restored on
|
|
402
|
+
* dispose) because those two fire no event of their own;
|
|
403
|
+
* - the [Navigation API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API)'s
|
|
404
|
+
* `currententrychange` where it exists, which reports post-commit and so also
|
|
405
|
+
* catches what a wrapper structurally cannot — a router holding a reference to
|
|
406
|
+
* `pushState` captured before this watch attached;
|
|
407
|
+
* - `load`, which also re-subscribes: a document navigation swaps the frame's
|
|
408
|
+
* `history`/`navigation` objects, so the previous subscription dies with them.
|
|
409
|
+
*
|
|
410
|
+
* These sources overlap deliberately rather than being chosen between, since a
|
|
411
|
+
* report is deduped against the last href — the cost of hearing the same
|
|
412
|
+
* navigation twice is nothing, and the cost of missing one is a stale route.
|
|
413
|
+
*
|
|
414
|
+
* A cross-origin frame reports nothing — its location is unreadable by design,
|
|
415
|
+
* so the caller keeps the last URL it knew.
|
|
416
|
+
*/
|
|
417
|
+
/** The minimal `history` surface the watcher wraps. Injectable for tests. */
|
|
418
|
+
interface FrameLocationHistory {
|
|
419
|
+
pushState: (...args: any[]) => void;
|
|
420
|
+
replaceState: (...args: any[]) => void;
|
|
421
|
+
}
|
|
422
|
+
/** The minimal frame-window surface the watcher reads and subscribes to. */
|
|
423
|
+
interface FrameLocationWindow {
|
|
424
|
+
readonly location: {
|
|
425
|
+
readonly href: string;
|
|
426
|
+
};
|
|
427
|
+
readonly history?: FrameLocationHistory;
|
|
428
|
+
/** Present only where the Navigation API ships. */
|
|
429
|
+
readonly navigation?: {
|
|
430
|
+
addEventListener: (type: 'currententrychange', listener: () => void) => void;
|
|
431
|
+
removeEventListener: (type: 'currententrychange', listener: () => void) => void;
|
|
432
|
+
};
|
|
433
|
+
addEventListener: (type: 'popstate' | 'hashchange', listener: () => void) => void;
|
|
434
|
+
removeEventListener: (type: 'popstate' | 'hashchange', listener: () => void) => void;
|
|
435
|
+
}
|
|
436
|
+
/** The minimal iframe surface the watcher needs. Injectable for tests. */
|
|
437
|
+
interface FrameLocationTarget {
|
|
438
|
+
readonly contentWindow: FrameLocationWindow | null;
|
|
439
|
+
addEventListener: (type: 'load', listener: () => void) => void;
|
|
440
|
+
removeEventListener: (type: 'load', listener: () => void) => void;
|
|
441
|
+
}
|
|
442
|
+
interface WatchFrameLocationOptions {
|
|
443
|
+
/** The live iframe whose location is tracked. */
|
|
444
|
+
iframe: FrameLocationTarget;
|
|
445
|
+
/** Called with the frame's `location.href` on each observed change. */
|
|
446
|
+
onChange: (href: string) => void;
|
|
447
|
+
/**
|
|
448
|
+
* The href the caller already shows, so an initial report is only made when
|
|
449
|
+
* the frame is somewhere else (a frame re-attached mid-session, say).
|
|
450
|
+
*/
|
|
451
|
+
initial?: string;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Track a frame's location until the returned disposer is called. Disposing
|
|
455
|
+
* detaches every listener and restores any wrapped `history` method, leaving the
|
|
456
|
+
* embedded page as it was found.
|
|
457
|
+
*/
|
|
458
|
+
declare function watchFrameLocation(options: WatchFrameLocationOptions): () => void;
|
|
459
|
+
//#endregion
|
|
342
460
|
//#region src/client/frame-nav.d.ts
|
|
343
461
|
/**
|
|
344
462
|
* Shared-iframe soft navigation — the viewer-side half of a host↔iframe
|
|
@@ -504,7 +622,7 @@ interface DevframeClientHostOptions {
|
|
|
504
622
|
*
|
|
505
623
|
* Keys are merged over `DEFAULT_CATEGORIES_ORDER`, so the host app only
|
|
506
624
|
* lists the categories it wants to move; any category absent from the map
|
|
507
|
-
* keeps its default weight
|
|
625
|
+
* keeps its default weight.
|
|
508
626
|
*
|
|
509
627
|
* @example
|
|
510
628
|
* ```ts
|
|
@@ -580,4 +698,4 @@ declare function parseRemoteConnection(input?: string): RemoteConnectionInfo | n
|
|
|
580
698
|
*/
|
|
581
699
|
declare function connectRemoteDevframe(options?: ConnectRemoteDevframeOptions): Promise<DevframeRpcClient>;
|
|
582
700
|
//#endregion
|
|
583
|
-
export { CLIENT_CONTEXT_KEY, CommandsContext, ConnectRemoteDevframeOptions, CreateDockRenderersContextOptions, DevframeClientContext, DevframeClientHost, DevframeClientHostOptions, type DevframeClientRpcHost, DockClientScriptContext, DockClientType, DockEntryState, DockEntryStateEvents, DockPanelStorage, DockRegistration, DockRenderer, DockRendererInstance, DockRendererManifest, DockRendererMountOptions, DockRendererMountResult, DockRenderersContext, DocksConnectionContext, DocksContext, DocksEntriesContext, DocksPanelContext, FRAME_NAV_CHANNEL, FRAME_NAV_VERSION, FrameNavClient, FrameNavClientOptions, FrameNavEnvelope, FrameNavFrameMessage, FrameNavHostMessage, FrameNavHostPayload, FrameNavListenTarget, FrameTab, MessagesClientOptions, type RpcClientEvents, WhenClauseContext, attachFrameNavClient, buildRemoteDevframeUrl, connectRemoteDevframe, createDevframeClientHost, createDockRenderersContext, createMessagesClient, getDevframeClientContext, parseRemoteConnection, resolveDockIcon, resolveDockUrl, setDevframeClientContext, stripRemoteConnectionFromUrl };
|
|
701
|
+
export { CLIENT_CONTEXT_KEY, CommandsContext, ConnectRemoteDevframeOptions, CreateDockRenderersContextOptions, DevframeClientContext, DevframeClientHost, DevframeClientHostOptions, type DevframeClientRpcHost, DockClientScriptContext, DockClientType, DockEntryState, DockEntryStateEvents, DockPanelStorage, DockRegistration, DockRenderer, DockRendererInstance, DockRendererManifest, DockRendererMountOptions, DockRendererMountResult, DockRenderersContext, DockSessionStorage, DocksConnectionContext, DocksContext, DocksEntriesContext, DocksPanelContext, FRAME_NAV_CHANNEL, FRAME_NAV_VERSION, FrameLocationHistory, FrameLocationTarget, FrameLocationWindow, FrameNavClient, FrameNavClientOptions, FrameNavEnvelope, FrameNavFrameMessage, FrameNavHostMessage, FrameNavHostPayload, FrameNavListenTarget, FrameTab, MessagesClientOptions, type RpcClientEvents, WatchFrameLocationOptions, WhenClauseContext, attachFrameNavClient, buildRemoteDevframeUrl, connectRemoteDevframe, createDevframeClientHost, createDockRenderersContext, createMessagesClient, getDevframeClientContext, parseRemoteConnection, resolveDockIcon, resolveDockUrl, setDevframeClientContext, stripRemoteConnectionFromUrl, watchFrameLocation };
|
package/dist/client/index.mjs
CHANGED
|
@@ -69,6 +69,88 @@ function resolveDockIcon(icon, connection) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
//#endregion
|
|
72
|
+
//#region src/client/frame-location.ts
|
|
73
|
+
/**
|
|
74
|
+
* Track a frame's location until the returned disposer is called. Disposing
|
|
75
|
+
* detaches every listener and restores any wrapped `history` method, leaving the
|
|
76
|
+
* embedded page as it was found.
|
|
77
|
+
*/
|
|
78
|
+
function watchFrameLocation(options) {
|
|
79
|
+
const { iframe, onChange } = options;
|
|
80
|
+
let lastReported = options.initial;
|
|
81
|
+
let detach;
|
|
82
|
+
let disposed = false;
|
|
83
|
+
/**
|
|
84
|
+
* The frame's window, or `null` when its location can't be read. Touching
|
|
85
|
+
* `location.href` is the cross-origin probe — it throws for a foreign
|
|
86
|
+
* document, where there is nothing to observe.
|
|
87
|
+
*/
|
|
88
|
+
function readableWindow() {
|
|
89
|
+
try {
|
|
90
|
+
const win = iframe.contentWindow;
|
|
91
|
+
return win && typeof win.location.href === "string" ? win : null;
|
|
92
|
+
} catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function report() {
|
|
97
|
+
const href = readableWindow()?.location.href;
|
|
98
|
+
if (!href || href === "about:blank" || href === lastReported) return;
|
|
99
|
+
lastReported = href;
|
|
100
|
+
onChange(href);
|
|
101
|
+
}
|
|
102
|
+
function subscribe() {
|
|
103
|
+
const win = readableWindow();
|
|
104
|
+
if (!win) return;
|
|
105
|
+
const listeners = [];
|
|
106
|
+
win.addEventListener("popstate", report);
|
|
107
|
+
win.addEventListener("hashchange", report);
|
|
108
|
+
listeners.push(() => {
|
|
109
|
+
win.removeEventListener("popstate", report);
|
|
110
|
+
win.removeEventListener("hashchange", report);
|
|
111
|
+
});
|
|
112
|
+
const { navigation, history } = win;
|
|
113
|
+
if (navigation) {
|
|
114
|
+
navigation.addEventListener("currententrychange", report);
|
|
115
|
+
listeners.push(() => navigation.removeEventListener("currententrychange", report));
|
|
116
|
+
}
|
|
117
|
+
if (history) {
|
|
118
|
+
const originals = {
|
|
119
|
+
pushState: history.pushState,
|
|
120
|
+
replaceState: history.replaceState
|
|
121
|
+
};
|
|
122
|
+
for (const method of ["pushState", "replaceState"]) history[method] = function(...args) {
|
|
123
|
+
originals[method].apply(this, args);
|
|
124
|
+
report();
|
|
125
|
+
};
|
|
126
|
+
listeners.push(() => {
|
|
127
|
+
history.pushState = originals.pushState;
|
|
128
|
+
history.replaceState = originals.replaceState;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
detach = () => {
|
|
132
|
+
for (const off of listeners) off();
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function onLoad() {
|
|
136
|
+
if (disposed) return;
|
|
137
|
+
detach?.();
|
|
138
|
+
detach = void 0;
|
|
139
|
+
subscribe();
|
|
140
|
+
report();
|
|
141
|
+
}
|
|
142
|
+
iframe.addEventListener("load", onLoad);
|
|
143
|
+
subscribe();
|
|
144
|
+
report();
|
|
145
|
+
return () => {
|
|
146
|
+
if (disposed) return;
|
|
147
|
+
disposed = true;
|
|
148
|
+
iframe.removeEventListener("load", onLoad);
|
|
149
|
+
detach?.();
|
|
150
|
+
detach = void 0;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
72
154
|
//#region src/client/frame-nav.ts
|
|
73
155
|
/**
|
|
74
156
|
* Shared-iframe soft navigation — the viewer-side half of a host↔iframe
|
|
@@ -445,6 +527,10 @@ async function createDevframeClientHost(options = {}) {
|
|
|
445
527
|
const clientDocks = /* @__PURE__ */ new Map();
|
|
446
528
|
const frameNavAdapters = /* @__PURE__ */ new Map();
|
|
447
529
|
const loadScriptsEnabled = options.loadClientScripts ?? true;
|
|
530
|
+
const categoryOrder = {
|
|
531
|
+
...DEFAULT_CATEGORIES_ORDER,
|
|
532
|
+
...options.categoryOrder
|
|
533
|
+
};
|
|
448
534
|
const panel = createPanelContext(clientType);
|
|
449
535
|
const docks = createDocksContext();
|
|
450
536
|
const commands = createCommandsContext();
|
|
@@ -458,7 +544,7 @@ async function createDevframeClientHost(options = {}) {
|
|
|
458
544
|
when: { get context() {
|
|
459
545
|
return {
|
|
460
546
|
clientType,
|
|
461
|
-
dockOpen: panel.
|
|
547
|
+
dockOpen: panel.session.open,
|
|
462
548
|
paletteOpen: commands.paletteOpen,
|
|
463
549
|
dockSelectedId: selectedId ?? ""
|
|
464
550
|
};
|
|
@@ -579,8 +665,12 @@ async function createDevframeClientHost(options = {}) {
|
|
|
579
665
|
}
|
|
580
666
|
}
|
|
581
667
|
docks.entries = entries;
|
|
582
|
-
docks.groupedEntries = groupByCategory(entries);
|
|
583
|
-
if (selectedId && !entryToStateMap.has(selectedId))
|
|
668
|
+
docks.groupedEntries = groupByCategory(entries, categoryOrder);
|
|
669
|
+
if (selectedId && !entryToStateMap.has(selectedId)) {
|
|
670
|
+
selectedId = null;
|
|
671
|
+
panel.session.selectedDockId = null;
|
|
672
|
+
panel.session.selectedDockRoute = null;
|
|
673
|
+
}
|
|
584
674
|
}
|
|
585
675
|
function createDocksContext() {
|
|
586
676
|
return {
|
|
@@ -590,12 +680,19 @@ async function createDevframeClientHost(options = {}) {
|
|
|
590
680
|
set selectedId(id) {
|
|
591
681
|
switchEntry(id);
|
|
592
682
|
},
|
|
683
|
+
get selectedRoute() {
|
|
684
|
+
return panel.session.selectedDockRoute;
|
|
685
|
+
},
|
|
686
|
+
set selectedRoute(route) {
|
|
687
|
+
panel.session.selectedDockRoute = route;
|
|
688
|
+
},
|
|
593
689
|
get selected() {
|
|
594
690
|
return selectedId && entryToStateMap.get(selectedId)?.entryMeta || null;
|
|
595
691
|
},
|
|
596
692
|
entries: [],
|
|
597
693
|
entryToStateMap,
|
|
598
694
|
groupedEntries: [],
|
|
695
|
+
categoryOrder,
|
|
599
696
|
settings,
|
|
600
697
|
getStateById: (id) => entryToStateMap.get(id),
|
|
601
698
|
switchEntry,
|
|
@@ -633,6 +730,8 @@ async function createDevframeClientHost(options = {}) {
|
|
|
633
730
|
if (next !== null && !entryToStateMap.has(next)) return false;
|
|
634
731
|
const previous = selectedId;
|
|
635
732
|
selectedId = next;
|
|
733
|
+
panel.session.selectedDockId = next;
|
|
734
|
+
if (next === null || entryToStateMap.get(next)?.entryMeta.type !== "iframe") panel.session.selectedDockRoute = null;
|
|
636
735
|
if (previous) entryToStateMap.get(previous)?.events.emit("entry:deactivated");
|
|
637
736
|
if (next) entryToStateMap.get(next)?.events.emit("entry:activated");
|
|
638
737
|
return true;
|
|
@@ -729,11 +828,15 @@ function createPanelContext(clientType) {
|
|
|
729
828
|
top: 0,
|
|
730
829
|
left: 0,
|
|
731
830
|
position: "right",
|
|
732
|
-
open: clientType === "standalone",
|
|
733
831
|
inactiveTimeout: 0
|
|
734
832
|
};
|
|
735
833
|
return {
|
|
736
834
|
store,
|
|
835
|
+
session: {
|
|
836
|
+
open: clientType === "standalone",
|
|
837
|
+
selectedDockId: null,
|
|
838
|
+
selectedDockRoute: null
|
|
839
|
+
},
|
|
737
840
|
isDragging: false,
|
|
738
841
|
isResizing: false,
|
|
739
842
|
get isVertical() {
|
|
@@ -741,7 +844,7 @@ function createPanelContext(clientType) {
|
|
|
741
844
|
}
|
|
742
845
|
};
|
|
743
846
|
}
|
|
744
|
-
function groupByCategory(entries) {
|
|
847
|
+
function groupByCategory(entries, categoryOrder) {
|
|
745
848
|
const groupsById = /* @__PURE__ */ new Map();
|
|
746
849
|
for (const entry of entries) if (entry.type === "group") groupsById.set(entry.id, entry);
|
|
747
850
|
const groups = /* @__PURE__ */ new Map();
|
|
@@ -755,7 +858,7 @@ function groupByCategory(entries) {
|
|
|
755
858
|
}
|
|
756
859
|
list.push(entry);
|
|
757
860
|
}
|
|
758
|
-
return [...groups.entries()].sort(([a], [b]) => (
|
|
861
|
+
return [...groups.entries()].sort(([a], [b]) => (categoryOrder[a] ?? 0) - (categoryOrder[b] ?? 0));
|
|
759
862
|
}
|
|
760
863
|
//#endregion
|
|
761
864
|
//#region src/client/remote.ts
|
|
@@ -864,4 +967,4 @@ async function connectRemoteDevframe(options = {}) {
|
|
|
864
967
|
});
|
|
865
968
|
}
|
|
866
969
|
//#endregion
|
|
867
|
-
export { CLIENT_CONTEXT_KEY, FRAME_NAV_CHANNEL, FRAME_NAV_VERSION, attachFrameNavClient, buildRemoteDevframeUrl, connectRemoteDevframe, createDevframeClientHost, createDockRenderersContext, createMessagesClient, getDevframeClientContext, parseRemoteConnection, resolveDockIcon, resolveDockUrl, setDevframeClientContext, stripRemoteConnectionFromUrl };
|
|
970
|
+
export { CLIENT_CONTEXT_KEY, FRAME_NAV_CHANNEL, FRAME_NAV_VERSION, attachFrameNavClient, buildRemoteDevframeUrl, connectRemoteDevframe, createDevframeClientHost, createDockRenderersContext, createMessagesClient, getDevframeClientContext, parseRemoteConnection, resolveDockIcon, resolveDockUrl, setDevframeClientContext, stripRemoteConnectionFromUrl, watchFrameLocation };
|
package/dist/constants.d.mts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
import { t as DevframeDocksUserSettings } from "./settings-
|
|
1
|
+
import { t as DevframeDocksUserSettings } from "./settings-DfrRa9Wf.mjs";
|
|
2
2
|
export * from "devframe/constants";
|
|
3
3
|
//#region src/constants.d.ts
|
|
4
|
+
/** Default mount base for a hub instance — one namespace, one catch-all. */
|
|
5
|
+
declare const DEVFRAMES_HUB_BASE = "/__devframes/";
|
|
6
|
+
/**
|
|
7
|
+
* Normalize a hub mount base to an absolute path with leading and trailing
|
|
8
|
+
* slashes (e.g. `devframes` → `/devframes/`), collapsing any doubled
|
|
9
|
+
* slashes the input introduced. The one implementation every hub-aware
|
|
10
|
+
* host (`@devframes/hub` itself, and the Vite/Nuxt/Next adapters) resolves
|
|
11
|
+
* `options.base` through.
|
|
12
|
+
*/
|
|
13
|
+
declare function normalizeHubBase(base: string): string;
|
|
4
14
|
/**
|
|
5
15
|
* The default ordering weight for each known dock category — lower sorts
|
|
6
16
|
* earlier. Downstream viewers (e.g. `@vitejs/devtools-kit`) import this as the
|
|
@@ -21,4 +31,4 @@ declare const DEFAULT_CATEGORIES_ORDER: Record<string, number>;
|
|
|
21
31
|
declare const DOCK_RENDERERS_STATE_KEY = "devframe:dock-renderers";
|
|
22
32
|
declare const DEFAULT_STATE_USER_SETTINGS: () => DevframeDocksUserSettings;
|
|
23
33
|
//#endregion
|
|
24
|
-
export { DEFAULT_CATEGORIES_ORDER, DEFAULT_STATE_USER_SETTINGS, DOCK_RENDERERS_STATE_KEY };
|
|
34
|
+
export { DEFAULT_CATEGORIES_ORDER, DEFAULT_STATE_USER_SETTINGS, DEVFRAMES_HUB_BASE, DOCK_RENDERERS_STATE_KEY, normalizeHubBase };
|
package/dist/constants.mjs
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
import { cleanDoubleSlashes, withLeadingSlash, withTrailingSlash } from "ufo";
|
|
1
2
|
export * from "devframe/constants";
|
|
2
3
|
//#region src/constants.ts
|
|
4
|
+
/** Default mount base for a hub instance — one namespace, one catch-all. */
|
|
5
|
+
const DEVFRAMES_HUB_BASE = "/__devframes/";
|
|
6
|
+
/**
|
|
7
|
+
* Normalize a hub mount base to an absolute path with leading and trailing
|
|
8
|
+
* slashes (e.g. `devframes` → `/devframes/`), collapsing any doubled
|
|
9
|
+
* slashes the input introduced. The one implementation every hub-aware
|
|
10
|
+
* host (`@devframes/hub` itself, and the Vite/Nuxt/Next adapters) resolves
|
|
11
|
+
* `options.base` through.
|
|
12
|
+
*/
|
|
13
|
+
function normalizeHubBase(base) {
|
|
14
|
+
return cleanDoubleSlashes(withTrailingSlash(withLeadingSlash(base)));
|
|
15
|
+
}
|
|
3
16
|
/**
|
|
4
17
|
* The default ordering weight for each known dock category — lower sorts
|
|
5
18
|
* earlier. Downstream viewers (e.g. `@vitejs/devtools-kit`) import this as the
|
|
@@ -34,9 +47,7 @@ const DEFAULT_STATE_USER_SETTINGS = () => ({
|
|
|
34
47
|
docksCategoriesHidden: [],
|
|
35
48
|
docksPinned: [],
|
|
36
49
|
docksCustomOrder: {},
|
|
37
|
-
showIframeAddressBar: false,
|
|
38
|
-
closeOnOutsideClick: false,
|
|
39
50
|
commandShortcuts: {}
|
|
40
51
|
});
|
|
41
52
|
//#endregion
|
|
42
|
-
export { DEFAULT_CATEGORIES_ORDER, DEFAULT_STATE_USER_SETTINGS, DOCK_RENDERERS_STATE_KEY };
|
|
53
|
+
export { DEFAULT_CATEGORIES_ORDER, DEFAULT_STATE_USER_SETTINGS, DEVFRAMES_HUB_BASE, DOCK_RENDERERS_STATE_KEY, normalizeHubBase };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as DevframeDockEntryIcon, k as DevframeViewIframe, l as DevframeCommandsHost, m as DevframeDockActivation, w as DevframeDocksHost } from "./settings-DfrRa9Wf.mjs";
|
|
2
2
|
import { CreateHostContextOptions } from "devframe/node";
|
|
3
3
|
import { DevframeDefinition, DevframeHost, DevframeNodeContext, EventEmitter } from "devframe/types";
|
|
4
4
|
import { ChildProcess } from "node:child_process";
|
|
@@ -3,25 +3,16 @@ import { DEFAULT_STATE_USER_SETTINGS } from "./constants.mjs";
|
|
|
3
3
|
import { t as buildRemoteConnectionUrl } from "./remote-url-KVXtKP47.mjs";
|
|
4
4
|
import { createEventEmitter } from "devframe/utils/events";
|
|
5
5
|
import { createHostContext, createStorage } from "devframe/node";
|
|
6
|
+
import { getInternalContext, resolveBasePath } from "devframe/node/hub-internals";
|
|
6
7
|
import { debounce } from "perfect-debounce";
|
|
7
8
|
import { coerceAgentPositionalArgs } from "devframe/internal";
|
|
8
|
-
import { defineDiagnostics } from "nostics";
|
|
9
|
-
import { colors } from "devframe/utils/colors";
|
|
10
|
-
import { ansiFormatter } from "nostics/formatters/ansi";
|
|
11
|
-
import { getInternalContext, resolveBasePath } from "devframe/node/hub-internals";
|
|
9
|
+
import { defineDiagnostics } from "devframe/utils/nostics";
|
|
12
10
|
import { join, resolve } from "pathe";
|
|
13
11
|
import { nanoid } from "devframe/utils/nanoid";
|
|
14
12
|
import process from "node:process";
|
|
15
|
-
//#region src/utils/diagnostics-reporter.ts
|
|
16
|
-
const formatAnsi = ansiFormatter(colors);
|
|
17
|
-
function hubReporter(d, { method = "warn" } = {}) {
|
|
18
|
-
console[method](formatAnsi(d));
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
13
|
//#region src/node/diagnostics.ts
|
|
22
14
|
const diagnostics = defineDiagnostics({
|
|
23
15
|
docsBase: "https://devfra.me/errors",
|
|
24
|
-
reporters: [hubReporter],
|
|
25
16
|
codes: {
|
|
26
17
|
DF8000: {
|
|
27
18
|
why: (p) => `Devframe id "${p.id}" collides with a reserved hub path — it cannot be mounted directly under the hub base.`,
|
|
@@ -920,7 +911,8 @@ async function installDevframe(ctx, d, options = {}) {
|
|
|
920
911
|
name: d.name,
|
|
921
912
|
base
|
|
922
913
|
});
|
|
923
|
-
|
|
914
|
+
const distSource = d.cli.distDir;
|
|
915
|
+
ctx.views.hostStatic(base, typeof distSource === "string" ? resolve(distSource) : distSource);
|
|
924
916
|
}
|
|
925
917
|
ctx.docks.register({
|
|
926
918
|
id,
|
|
@@ -1146,6 +1138,7 @@ async function createHubContext(options) {
|
|
|
1146
1138
|
docksSharedState.mutate(() => docks.values());
|
|
1147
1139
|
}, debounceMs);
|
|
1148
1140
|
docks.events.on("dock:entry:updated", refreshDocks);
|
|
1141
|
+
getInternalContext(context).onWsEndpointChange(refreshDocks);
|
|
1149
1142
|
docksSharedState.mutate(() => docks.values());
|
|
1150
1143
|
const activeDockSharedState = await context.rpc.sharedState.get("devframe:docks:active", { initialValue: { activation: null } });
|
|
1151
1144
|
docks.events.on("dock:activate", (activation) => {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import "./context-D5TJIHwp.mjs";
|
|
2
|
+
import "./settings-DfrRa9Wf.mjs";
|
|
3
|
+
import { RpcDefinitionsFilter, RpcDefinitionsToFunctions } from "devframe/rpc";
|
|
4
|
+
import { ConnectionMeta as ConnectionMeta$1, DevframeCapabilities, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeHost as DevframeHost$1, DevframeNodeRpcSession, DevframeRpcClientFunctions, DevframeRpcServerFunctions, DevframeRpcSharedStates, DevframeViewHost, EventEmitter as EventEmitter$1, EventUnsubscribe, EventsMap, RpcBroadcastOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost } from "devframe/types";
|
|
5
|
+
export { RpcStreamingHost as S, RpcFunctionsHost as _, DevframeHost$1 as a, RpcStreamingChannel as b, DevframeRpcServerFunctions as c, EventEmitter$1 as d, EventUnsubscribe as f, RpcDefinitionsToFunctions as g, RpcDefinitionsFilter as h, DevframeDiagnosticsLogger as i, DevframeRpcSharedStates as l, RpcBroadcastOptions as m, DevframeCapabilities as n, DevframeNodeRpcSession as o, EventsMap as p, DevframeDiagnosticsHost as r, DevframeRpcClientFunctions as s, ConnectionMeta$1 as t, DevframeViewHost as u, RpcSharedStateGetOptions as v, RpcStreamingChannelOptions as x, RpcSharedStateHost as y };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { C as DevframeMessageHandle, D as DevframeMessagesHost, E as DevframeMessagesClient, O as DevframeMessagesLevelShortcuts, S as DevframeMessageFilePosition, T as DevframeMessageShortcutInput, _ as DevframeMessageCommandAction, a as DevframeChildProcessExecuteOptions, b as DevframeMessageEntryFrom, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, g as DevframeMessageActivateAction, h as DevframeMessageAction, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost, n as DevframeHubContext, o as DevframeChildProcessOutput, p as DevframeTerminalStatus, s as DevframeChildProcessResult, t as CreateHubContextOptions, u as DevframePtyTerminalSession, v as DevframeMessageElementPosition, w as DevframeMessageLevel, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "./context-
|
|
2
|
-
import { A as
|
|
3
|
-
import { t as
|
|
4
|
-
import { C as RpcStreamingChannel, E as Thenable, S as RpcSharedStateHost, T as RpcStreamingHost, _ as RpcBroadcastOptions, a as DevframeDiagnosticsLogger, b as RpcFunctionsHost, c as DevframeRpcClientFunctions, d as DevframeViewHost, f as EntriesToObject, g as PartialWithoutId, h as EventsMap, i as DevframeDiagnosticsHost, l as DevframeRpcServerFunctions, m as EventUnsubscribe, n as DevframeCapabilities, o as DevframeHost, p as EventEmitter, r as DevframeDiagnosticsDefinition, s as DevframeNodeRpcSession, t as ConnectionMeta, u as DevframeRpcSharedStates, v as RpcDefinitionsFilter, w as RpcStreamingChannelOptions, x as RpcSharedStateGetOptions, y as RpcDefinitionsToFunctions } from "./index-p4BktGvQ.mjs";
|
|
1
|
+
import { C as DevframeMessageHandle, D as DevframeMessagesHost, E as DevframeMessagesClient, O as DevframeMessagesLevelShortcuts, S as DevframeMessageFilePosition, T as DevframeMessageShortcutInput, _ as DevframeMessageCommandAction, a as DevframeChildProcessExecuteOptions, b as DevframeMessageEntryFrom, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, g as DevframeMessageActivateAction, h as DevframeMessageAction, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost, n as DevframeHubContext, o as DevframeChildProcessOutput, p as DevframeTerminalStatus, s as DevframeChildProcessResult, t as CreateHubContextOptions, u as DevframePtyTerminalSession, v as DevframeMessageElementPosition, w as DevframeMessageLevel, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "./context-D5TJIHwp.mjs";
|
|
2
|
+
import { A as DevframeViewLauncher, C as DevframeDocksActiveState, D as DevframeViewCustomRender, E as DevframeViewBuiltin, F as RemoteDockOptions, M as FrameSubTabsConfig, N as NavTarget, O as DevframeViewGroup, P as RemoteConnectionInfo, S as DevframeDockUserEntry, T as DevframeViewAction, _ as DevframeDockEntry, a as DevframeCommandEntry, b as DevframeDockEntryIcon, c as DevframeCommandShortcutOverrides, d as DevframeServerCommandEntry, f as DevframeServerCommandInput, g as DevframeDockEntriesGrouped, h as DevframeDockBadgeVariant, i as DevframeCommandBase, j as DevframeViewLauncherStatus, k as DevframeViewIframe, l as DevframeCommandsHost, m as DevframeDockActivation, n as DevframeClientCommand, o as DevframeCommandHandle, p as ClientScriptEntry, r as DevframeCommandAgentOptions, s as DevframeCommandKeybinding, t as DevframeDocksUserSettings, u as DevframeCommandsHostEvents, v as DevframeDockEntryBase, w as DevframeDocksHost, x as DevframeDockEntryRegistry, y as DevframeDockEntryCategory } from "./settings-DfrRa9Wf.mjs";
|
|
3
|
+
import { S as RpcStreamingHost, _ as RpcFunctionsHost, a as DevframeHost, b as RpcStreamingChannel, c as DevframeRpcServerFunctions, d as EventEmitter, f as EventUnsubscribe, g as RpcDefinitionsToFunctions, h as RpcDefinitionsFilter, i as DevframeDiagnosticsLogger, l as DevframeRpcSharedStates, m as RpcBroadcastOptions, n as DevframeCapabilities, o as DevframeNodeRpcSession, p as EventsMap, r as DevframeDiagnosticsHost, s as DevframeRpcClientFunctions, t as ConnectionMeta, u as DevframeViewHost, v as RpcSharedStateGetOptions, x as RpcStreamingChannelOptions, y as RpcSharedStateHost } from "./index-coDmWngQ.mjs";
|
|
5
4
|
import { WhenContext, WhenExpression } from "devframe/utils/when";
|
|
6
5
|
//#region src/define.d.ts
|
|
7
6
|
declare const defineHubRpcFunction: <NAME extends string, TYPE extends import("devframe/rpc").RpcFunctionType, ARGS extends any[], RETURN = void, const AS extends import("devframe/rpc").RpcArgsSchema | undefined = undefined, const RS extends import("devframe/rpc").RpcReturnSchema | undefined = undefined>(definition: import("devframe/rpc").RpcFunctionDefinition<NAME, TYPE, ARGS, RETURN, AS, RS, DevframeHubContext>) => import("devframe/rpc").RpcFunctionDefinition<NAME, TYPE, ARGS, RETURN, AS, RS, DevframeHubContext>;
|
|
@@ -13,4 +12,4 @@ declare function defineDockEntry<const T extends DevframeDockUserEntry, const W
|
|
|
13
12
|
visibility?: WhenExpression<WhenContext, V>;
|
|
14
13
|
}): T;
|
|
15
14
|
//#endregion
|
|
16
|
-
export { type ClientScriptEntry, type ConnectionMeta, type CreateHubContextOptions, type DevframeCapabilities, type DevframeChildProcessExecuteOptions, type DevframeChildProcessOutput, type DevframeChildProcessResult, type DevframeChildProcessTerminalSession, type DevframeClientCommand, type DevframeCommandAgentOptions, type DevframeCommandBase, type DevframeCommandEntry, type DevframeCommandHandle, type DevframeCommandKeybinding, type DevframeCommandShortcutOverrides, type DevframeCommandsHost, type DevframeCommandsHostEvents, type
|
|
15
|
+
export { type ClientScriptEntry, type ConnectionMeta, type CreateHubContextOptions, type DevframeCapabilities, type DevframeChildProcessExecuteOptions, type DevframeChildProcessOutput, type DevframeChildProcessResult, type DevframeChildProcessTerminalSession, type DevframeClientCommand, type DevframeCommandAgentOptions, type DevframeCommandBase, type DevframeCommandEntry, type DevframeCommandHandle, type DevframeCommandKeybinding, type DevframeCommandShortcutOverrides, type DevframeCommandsHost, type DevframeCommandsHostEvents, type DevframeDiagnosticsHost, type DevframeDiagnosticsLogger, type DevframeDockActivation, type DevframeDockBadgeVariant, type DevframeDockEntriesGrouped, type DevframeDockEntry, type DevframeDockEntryBase, type DevframeDockEntryCategory, type DevframeDockEntryIcon, type DevframeDockEntryRegistry, type DevframeDockUserEntry, type DevframeDocksActiveState, type DevframeDocksHost, type DevframeDocksUserSettings, type DevframeHost, type DevframeHubContext, type DevframeMessageAction, type DevframeMessageActivateAction, type DevframeMessageCommandAction, type DevframeMessageElementPosition, type DevframeMessageEntry, type DevframeMessageEntryFrom, type DevframeMessageEntryInput, type DevframeMessageFilePosition, type DevframeMessageHandle, type DevframeMessageLevel, type DevframeMessageShortcutInput, type DevframeMessagesClient, type DevframeMessagesHost, type DevframeMessagesLevelShortcuts, type DevframeMessagesListDelta, type DevframeNodeRpcSession, type DevframePtyExecuteOptions, type DevframePtyTerminalSession, type DevframeRpcClientFunctions, type DevframeRpcServerFunctions, type DevframeRpcSharedStates, type DevframeServerCommandEntry, type DevframeServerCommandInput, type DevframeTerminalSession, type DevframeTerminalSessionBase, type DevframeTerminalStatus, type DevframeTerminalsHost, type DevframeViewAction, type DevframeViewBuiltin, type DevframeViewCustomRender, type DevframeViewGroup, type DevframeViewHost, type DevframeViewIframe, type DevframeViewLauncher, type DevframeViewLauncherStatus, type EventEmitter, type EventUnsubscribe, type EventsMap, type FrameSubTabsConfig, type NavTarget, type RemoteConnectionInfo, type RemoteDockOptions, type RpcBroadcastOptions, type RpcDefinitionsFilter, type RpcDefinitionsToFunctions, type RpcFunctionsHost, type RpcSharedStateGetOptions, type RpcSharedStateHost, type RpcStreamingChannel, type RpcStreamingChannelOptions, type RpcStreamingHost, defineCommand, defineDockEntry, defineHubRpcFunction };
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { C as DevframeMessageHandle, D as DevframeMessagesHost$1, T as DevframeMessageShortcutInput, a as DevframeChildProcessExecuteOptions, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, i as InstallDevframeOptions, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost$1, n as DevframeHubContext, r as createHubContext, t as CreateHubContextOptions, u as DevframePtyTerminalSession, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "../context-
|
|
2
|
-
import { S as
|
|
3
|
-
import { t as DevframeDocksUserSettings } from "../settings-B1qJ47d5.mjs";
|
|
1
|
+
import { C as DevframeMessageHandle, D as DevframeMessagesHost$1, T as DevframeMessageShortcutInput, a as DevframeChildProcessExecuteOptions, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, i as InstallDevframeOptions, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost$1, n as DevframeHubContext, r as createHubContext, t as CreateHubContextOptions, u as DevframePtyTerminalSession, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "../context-D5TJIHwp.mjs";
|
|
2
|
+
import { S as DevframeDockUserEntry, _ as DevframeDockEntry, d as DevframeServerCommandEntry, f as DevframeServerCommandInput, l as DevframeCommandsHost$1, o as DevframeCommandHandle, p as ClientScriptEntry, t as DevframeDocksUserSettings, w as DevframeDocksHost$1 } from "../settings-DfrRa9Wf.mjs";
|
|
4
3
|
import { RpcFunctionDefinitionAny } from "devframe/rpc";
|
|
5
4
|
import { SharedState } from "devframe/utils/shared-state";
|
|
6
5
|
//#region src/node/host-commands.d.ts
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { _ as DevframeCommandsHost, a as hubMessagesAdd, c as hubMessagesUpdate, d as hubTerminalsRestart, f as hubTerminalsTerminate, g as DevframeDocksHost, h as DevframeMessagesHost, i as hubDocksActivate, l as hubTerminalsRemove, m as DevframeTerminalsHost, n as builtinHubRpcDeclarations, o as hubMessagesClear, p as hubTerminalsWrite, r as hubCommandsExecute, s as hubMessagesRemove, t as createHubContext, u as hubTerminalsResize } from "../context-
|
|
1
|
+
import { _ as DevframeCommandsHost, a as hubMessagesAdd, c as hubMessagesUpdate, d as hubTerminalsRestart, f as hubTerminalsTerminate, g as DevframeDocksHost, h as DevframeMessagesHost, i as hubDocksActivate, l as hubTerminalsRemove, m as DevframeTerminalsHost, n as builtinHubRpcDeclarations, o as hubMessagesClear, p as hubTerminalsWrite, r as hubCommandsExecute, s as hubMessagesRemove, t as createHubContext, u as hubTerminalsResize } from "../context-DzqMQ2mI.mjs";
|
|
2
|
+
import "ufo";
|
|
2
3
|
import "pathe";
|
|
3
4
|
import "node:process";
|
|
4
5
|
import { builtinModules } from "node:module";
|
|
5
6
|
import "node:fs";
|
|
6
|
-
import "ufo";
|
|
7
7
|
import "node:url";
|
|
8
8
|
import assert from "node:assert";
|
|
9
9
|
import "node:path";
|
package/dist/node/initiate.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { i as InstallDevframeOptions, n as DevframeHubContext, t as CreateHubContextOptions } from "../context-
|
|
1
|
+
import { i as InstallDevframeOptions, n as DevframeHubContext, t as CreateHubContextOptions } from "../context-D5TJIHwp.mjs";
|
|
2
|
+
import { DEVFRAMES_HUB_BASE } from "../constants.mjs";
|
|
2
3
|
import { DevframeInstanceRecord } from "devframe/internal";
|
|
3
4
|
import { ConnectionMeta, DevframeDefinition, DevframeSseOptions, DevframeStorageScope, DevframeWsOptions, McpRouteOptions } from "devframe/types";
|
|
4
5
|
import { DevframeAuthHandler } from "devframe/node/auth";
|
|
@@ -15,8 +16,6 @@ interface HubDevframeEntry {
|
|
|
15
16
|
}
|
|
16
17
|
type Thenable<T> = T | Promise<T>;
|
|
17
18
|
type Arrayable<T> = T | readonly T[];
|
|
18
|
-
/** Default mount base for a hub instance — one namespace, one catch-all. */
|
|
19
|
-
declare const DEVFRAMES_HUB_BASE = "/__devframes/";
|
|
20
19
|
/**
|
|
21
20
|
* One dock-type → prebuilt renderer-module registration for
|
|
22
21
|
* {@link InitHubOptions.renderers}. The hub serves the module at
|
|
@@ -71,12 +70,22 @@ interface DevframeHubUi {
|
|
|
71
70
|
};
|
|
72
71
|
/**
|
|
73
72
|
* Extra UI-owned files the hub serves at `<base><key>`, each produced lazily
|
|
74
|
-
* from memory. Keys are base-relative paths
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
73
|
+
* from memory. Keys are base-relative paths; the content-type is inferred
|
|
74
|
+
* from the key's extension. A generic seam a viewer uses to publish
|
|
75
|
+
* arbitrary runtime documents without teaching the hub anything about
|
|
76
|
+
* their meaning.
|
|
78
77
|
*/
|
|
79
78
|
assets?: Record<string, () => string | Uint8Array>;
|
|
79
|
+
/**
|
|
80
|
+
* A setup hook run once during hub init with the hub context — the UI
|
|
81
|
+
* slot's chance to publish its own static, boot-time config through the
|
|
82
|
+
* generic `ctx.staticConfig` (serialized into `ConnectionMeta.configs`).
|
|
83
|
+
* The reference UI's `createUi()` uses it to set
|
|
84
|
+
* `ctx.staticConfig.ui = { branding, … }`, reaching every mounted frame and
|
|
85
|
+
* the standalone viewer through the one connection handshake they perform.
|
|
86
|
+
* The hub stays policy-free about what the UI writes.
|
|
87
|
+
*/
|
|
88
|
+
setup?: (ctx: DevframeHubContext) => void | Promise<void>;
|
|
80
89
|
}
|
|
81
90
|
type DevframesInput = Array<DevframeDefinition | HubDevframeEntry | Thenable<Arrayable<DevframeDefinition | HubDevframeEntry | null | undefined>> | (() => Thenable<Arrayable<DevframeDefinition | HubDevframeEntry | null | undefined>>)>;
|
|
82
91
|
interface InitHubOptions {
|
|
@@ -181,8 +190,6 @@ interface InitHubOptions {
|
|
|
181
190
|
* Expose the **aggregate** MCP endpoint at `<base>__mcp` — one
|
|
182
191
|
* Streamable-HTTP server over the shared context's whole tool registry
|
|
183
192
|
* (ids are already namespaced per plugin). Disabled by default.
|
|
184
|
-
*
|
|
185
|
-
* @experimental
|
|
186
193
|
*/
|
|
187
194
|
mcp?: boolean | McpRouteOptions;
|
|
188
195
|
/**
|
package/dist/node/initiate.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DOCK_RENDERERS_STATE_KEY } from "../constants.mjs";
|
|
2
|
-
import { t as createHubContext, v as diagnostics } from "../context-
|
|
1
|
+
import { DEVFRAMES_HUB_BASE, DOCK_RENDERERS_STATE_KEY, normalizeHubBase } from "../constants.mjs";
|
|
2
|
+
import { t as createHubContext, v as diagnostics } from "../context-DzqMQ2mI.mjs";
|
|
3
|
+
import { joinURL, withTrailingSlash, withoutLeadingSlash } from "ufo";
|
|
3
4
|
import { DEVFRAME_CONNECTION_META_FILENAME, DEVFRAME_DOCK_IMPORTS_FILENAME, DEVFRAME_MCP_ROUTE, DEVFRAME_WS_ROUTE } from "devframe/constants";
|
|
4
5
|
import { createH3DevframeHost, createInstanceShell, resolveInstanceRegister } from "devframe/internal";
|
|
5
6
|
import { resolve } from "pathe";
|
|
6
7
|
import process from "node:process";
|
|
7
8
|
import { existsSync } from "node:fs";
|
|
8
|
-
import { cleanDoubleSlashes, joinURL, withLeadingSlash, withTrailingSlash, withoutLeadingSlash } from "ufo";
|
|
9
9
|
import { readFile } from "node:fs/promises";
|
|
10
10
|
import { mountStaticHandler } from "devframe/utils/serve-static";
|
|
11
11
|
import { H3 } from "h3";
|
|
@@ -13,8 +13,6 @@ import { H3 } from "h3";
|
|
|
13
13
|
function normalizeDevframeEntry(entry) {
|
|
14
14
|
return "devframe" in entry ? entry : { devframe: entry };
|
|
15
15
|
}
|
|
16
|
-
/** Default mount base for a hub instance — one namespace, one catch-all. */
|
|
17
|
-
const DEVFRAMES_HUB_BASE = "/__devframes/";
|
|
18
16
|
/** Content-type for a UI asset key, inferred from its file extension. */
|
|
19
17
|
function assetContentType(key) {
|
|
20
18
|
if (key.endsWith(".json")) return "application/json; charset=utf-8";
|
|
@@ -45,9 +43,6 @@ function resolveDevframesInput(input) {
|
|
|
45
43
|
return (Array.isArray(resolved) ? resolved : [resolved]).filter((slot) => slot != null).map(normalizeDevframeEntry);
|
|
46
44
|
})).then((arrays) => arrays.flat());
|
|
47
45
|
}
|
|
48
|
-
function normalizeBase(base) {
|
|
49
|
-
return cleanDoubleSlashes(withTrailingSlash(withLeadingSlash(base)));
|
|
50
|
-
}
|
|
51
46
|
/**
|
|
52
47
|
* Validate the renderer-module registrations fail-fast: route-safe types
|
|
53
48
|
* (each becomes the `<base>__renderers/<type>.mjs` URL segment), one module
|
|
@@ -107,7 +102,7 @@ function renderClientImportsModule(ctx) {
|
|
|
107
102
|
* through {@link HubInstance.attach}.
|
|
108
103
|
*/
|
|
109
104
|
function initHub(options) {
|
|
110
|
-
const base =
|
|
105
|
+
const base = normalizeHubBase(options.base);
|
|
111
106
|
const baseNoSlash = base.slice(0, -1);
|
|
112
107
|
const app = new H3();
|
|
113
108
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -184,6 +179,7 @@ function initHub(options) {
|
|
|
184
179
|
});
|
|
185
180
|
}
|
|
186
181
|
await options.configure?.(ctx);
|
|
182
|
+
await options.ui?.setup?.(ctx);
|
|
187
183
|
if (rendererRegistrations.length > 0) {
|
|
188
184
|
const manifest = {};
|
|
189
185
|
for (const registration of rendererRegistrations) manifest[registration.type] = {
|
|
@@ -50,6 +50,8 @@ type DevframeDockEntryIcon = string | {
|
|
|
50
50
|
light: string;
|
|
51
51
|
dark: string;
|
|
52
52
|
};
|
|
53
|
+
/** Color for a dock-bar entry's {@link DevframeDockEntryBase.badge} — mirrors json-render's `TabDescriptor.badgeVariant`. */
|
|
54
|
+
type DevframeDockBadgeVariant = 'default' | 'info' | 'success' | 'warning' | 'danger';
|
|
53
55
|
interface DevframeDockEntryBase {
|
|
54
56
|
id: string;
|
|
55
57
|
title: string;
|
|
@@ -114,6 +116,11 @@ interface DevframeDockEntryBase {
|
|
|
114
116
|
* Badge text to display on the dock icon (e.g., unread count)
|
|
115
117
|
*/
|
|
116
118
|
badge?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Colors {@link badge}. Omitted (or `'default'`) keeps the existing neutral
|
|
121
|
+
* fill, so every pre-existing badge consumer keeps its current look.
|
|
122
|
+
*/
|
|
123
|
+
badgeVariant?: DevframeDockBadgeVariant;
|
|
117
124
|
/**
|
|
118
125
|
* Id of the group this entry belongs to. When set, hosts collapse this entry
|
|
119
126
|
* under the matching group's button instead of showing it directly on the
|
|
@@ -460,9 +467,6 @@ interface DevframeCommandBase {
|
|
|
460
467
|
* `when` clauses are evaluated client-side only and are **not** enforced for
|
|
461
468
|
* agent calls — opt in a `when`-gated command only if running it outside its
|
|
462
469
|
* UI context is safe.
|
|
463
|
-
*
|
|
464
|
-
* @experimental The agent-native surface is experimental and may change
|
|
465
|
-
* without a major version bump until it stabilizes.
|
|
466
470
|
*/
|
|
467
471
|
interface DevframeCommandAgentOptions {
|
|
468
472
|
/**
|
|
@@ -499,8 +503,6 @@ interface DevframeServerCommandInput extends DevframeCommandBase {
|
|
|
499
503
|
/**
|
|
500
504
|
* Opt this command in to the agent surface (`ctx.agent` → MCP). Requires a
|
|
501
505
|
* `handler`. See {@link DevframeCommandAgentOptions}.
|
|
502
|
-
*
|
|
503
|
-
* @experimental
|
|
504
506
|
*/
|
|
505
507
|
agent?: DevframeCommandAgentOptions;
|
|
506
508
|
/**
|
|
@@ -572,4 +574,36 @@ interface DevframeCommandShortcutOverrides {
|
|
|
572
574
|
[commandId: string]: DevframeCommandKeybinding[];
|
|
573
575
|
}
|
|
574
576
|
//#endregion
|
|
575
|
-
|
|
577
|
+
//#region src/types/settings.d.ts
|
|
578
|
+
/**
|
|
579
|
+
* Persisted per-user dock + command settings, synced over the
|
|
580
|
+
* `devframe:user-settings` shared state. The generic base carries the hub's
|
|
581
|
+
* own dock-registry and command model that every viewer shares; a viewer
|
|
582
|
+
* augments it with its own reference-UI toggles via declaration merging:
|
|
583
|
+
*
|
|
584
|
+
* ```ts
|
|
585
|
+
* declare module '@devframes/hub/types' {
|
|
586
|
+
* interface DevframeDocksUserSettings {
|
|
587
|
+
* myViewerToggle?: boolean
|
|
588
|
+
* }
|
|
589
|
+
* }
|
|
590
|
+
* ```
|
|
591
|
+
*
|
|
592
|
+
* Augmented fields are optional so the hub's `DEFAULT_STATE_USER_SETTINGS()`
|
|
593
|
+
* (which knows nothing about them) stays assignable — an absent value reads
|
|
594
|
+
* as the viewer's documented default.
|
|
595
|
+
*/
|
|
596
|
+
interface DevframeDocksUserSettings {
|
|
597
|
+
/** Ids of dock entries the user has hidden from the bar. */
|
|
598
|
+
docksHidden: string[];
|
|
599
|
+
/** Category ids the user has collapsed/hidden on the bar. */
|
|
600
|
+
docksCategoriesHidden: string[];
|
|
601
|
+
/** Ids of dock entries the user has pinned. */
|
|
602
|
+
docksPinned: string[];
|
|
603
|
+
/** Per-entry sort weight overriding the registry's default order. */
|
|
604
|
+
docksCustomOrder: Record<string, number>;
|
|
605
|
+
/** Per-command keybinding overrides (empty array = shortcut disabled). */
|
|
606
|
+
commandShortcuts: DevframeCommandShortcutOverrides;
|
|
607
|
+
}
|
|
608
|
+
//#endregion
|
|
609
|
+
export { DevframeViewLauncher as A, DevframeDocksActiveState as C, DevframeViewCustomRender as D, DevframeViewBuiltin as E, RemoteDockOptions as F, FrameSubTabsConfig as M, NavTarget as N, DevframeViewGroup as O, RemoteConnectionInfo as P, DevframeDockUserEntry as S, DevframeViewAction as T, DevframeDockEntry as _, DevframeCommandEntry as a, DevframeDockEntryIcon as b, DevframeCommandShortcutOverrides as c, DevframeServerCommandEntry as d, DevframeServerCommandInput as f, DevframeDockEntriesGrouped as g, DevframeDockBadgeVariant as h, DevframeCommandBase as i, DevframeViewLauncherStatus as j, DevframeViewIframe as k, DevframeCommandsHost as l, DevframeDockActivation as m, DevframeClientCommand as n, DevframeCommandHandle as o, ClientScriptEntry as p, DevframeCommandAgentOptions as r, DevframeCommandKeybinding as s, DevframeDocksUserSettings as t, DevframeCommandsHostEvents as u, DevframeDockEntryBase as v, DevframeDocksHost as w, DevframeDockEntryRegistry as x, DevframeDockEntryCategory as y };
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { C as DevframeMessageHandle, D as DevframeMessagesHost, E as DevframeMessagesClient, O as DevframeMessagesLevelShortcuts, S as DevframeMessageFilePosition, T as DevframeMessageShortcutInput, _ as DevframeMessageCommandAction, a as DevframeChildProcessExecuteOptions, b as DevframeMessageEntryFrom, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, g as DevframeMessageActivateAction, h as DevframeMessageAction, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost, n as DevframeHubContext, o as DevframeChildProcessOutput, p as DevframeTerminalStatus, s as DevframeChildProcessResult, t as CreateHubContextOptions, u as DevframePtyTerminalSession, v as DevframeMessageElementPosition, w as DevframeMessageLevel, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "../context-
|
|
2
|
-
import { A as
|
|
3
|
-
import { t as
|
|
4
|
-
|
|
5
|
-
export { ClientScriptEntry, type ConnectionMeta, type CreateHubContextOptions, type DevframeCapabilities, DevframeChildProcessExecuteOptions, DevframeChildProcessOutput, DevframeChildProcessResult, DevframeChildProcessTerminalSession, DevframeClientCommand, DevframeCommandAgentOptions, DevframeCommandBase, DevframeCommandEntry, DevframeCommandHandle, DevframeCommandKeybinding, DevframeCommandShortcutOverrides, DevframeCommandsHost, DevframeCommandsHostEvents, type DevframeDiagnosticsDefinition, type DevframeDiagnosticsHost, type DevframeDiagnosticsLogger, DevframeDockActivation, DevframeDockEntriesGrouped, DevframeDockEntry, DevframeDockEntryBase, DevframeDockEntryCategory, DevframeDockEntryIcon, DevframeDockEntryRegistry, DevframeDockUserEntry, DevframeDocksActiveState, DevframeDocksHost, DevframeDocksUserSettings, type DevframeHost, type DevframeHubContext, DevframeMessageAction, DevframeMessageActivateAction, DevframeMessageCommandAction, DevframeMessageElementPosition, DevframeMessageEntry, DevframeMessageEntryFrom, DevframeMessageEntryInput, DevframeMessageFilePosition, DevframeMessageHandle, DevframeMessageLevel, DevframeMessageShortcutInput, DevframeMessagesClient, DevframeMessagesHost, DevframeMessagesLevelShortcuts, DevframeMessagesListDelta, type DevframeNodeRpcSession, DevframePtyExecuteOptions, DevframePtyTerminalSession, type DevframeRpcClientFunctions, type DevframeRpcServerFunctions, type DevframeRpcSharedStates, DevframeServerCommandEntry, DevframeServerCommandInput, DevframeTerminalSession, DevframeTerminalSessionBase, DevframeTerminalStatus, DevframeTerminalsHost, DevframeViewAction, DevframeViewBuiltin, DevframeViewCustomRender, DevframeViewGroup, type DevframeViewHost, DevframeViewIframe, DevframeViewLauncher, DevframeViewLauncherStatus, type EntriesToObject, type EventEmitter, type EventUnsubscribe, type EventsMap, FrameSubTabsConfig, NavTarget, type PartialWithoutId, RemoteConnectionInfo, RemoteDockOptions, type RpcBroadcastOptions, type RpcDefinitionsFilter, type RpcDefinitionsToFunctions, type RpcFunctionsHost, type RpcSharedStateGetOptions, type RpcSharedStateHost, type RpcStreamingChannel, type RpcStreamingChannelOptions, type RpcStreamingHost, type Thenable };
|
|
1
|
+
import { C as DevframeMessageHandle, D as DevframeMessagesHost, E as DevframeMessagesClient, O as DevframeMessagesLevelShortcuts, S as DevframeMessageFilePosition, T as DevframeMessageShortcutInput, _ as DevframeMessageCommandAction, a as DevframeChildProcessExecuteOptions, b as DevframeMessageEntryFrom, c as DevframeChildProcessTerminalSession, d as DevframeTerminalSession, f as DevframeTerminalSessionBase, g as DevframeMessageActivateAction, h as DevframeMessageAction, k as DevframeMessagesListDelta, l as DevframePtyExecuteOptions, m as DevframeTerminalsHost, n as DevframeHubContext, o as DevframeChildProcessOutput, p as DevframeTerminalStatus, s as DevframeChildProcessResult, t as CreateHubContextOptions, u as DevframePtyTerminalSession, v as DevframeMessageElementPosition, w as DevframeMessageLevel, x as DevframeMessageEntryInput, y as DevframeMessageEntry } from "../context-D5TJIHwp.mjs";
|
|
2
|
+
import { A as DevframeViewLauncher, C as DevframeDocksActiveState, D as DevframeViewCustomRender, E as DevframeViewBuiltin, F as RemoteDockOptions, M as FrameSubTabsConfig, N as NavTarget, O as DevframeViewGroup, P as RemoteConnectionInfo, S as DevframeDockUserEntry, T as DevframeViewAction, _ as DevframeDockEntry, a as DevframeCommandEntry, b as DevframeDockEntryIcon, c as DevframeCommandShortcutOverrides, d as DevframeServerCommandEntry, f as DevframeServerCommandInput, g as DevframeDockEntriesGrouped, h as DevframeDockBadgeVariant, i as DevframeCommandBase, j as DevframeViewLauncherStatus, k as DevframeViewIframe, l as DevframeCommandsHost, m as DevframeDockActivation, n as DevframeClientCommand, o as DevframeCommandHandle, p as ClientScriptEntry, r as DevframeCommandAgentOptions, s as DevframeCommandKeybinding, t as DevframeDocksUserSettings, u as DevframeCommandsHostEvents, v as DevframeDockEntryBase, w as DevframeDocksHost, x as DevframeDockEntryRegistry, y as DevframeDockEntryCategory } from "../settings-DfrRa9Wf.mjs";
|
|
3
|
+
import { S as RpcStreamingHost, _ as RpcFunctionsHost, a as DevframeHost, b as RpcStreamingChannel, c as DevframeRpcServerFunctions, d as EventEmitter, f as EventUnsubscribe, g as RpcDefinitionsToFunctions, h as RpcDefinitionsFilter, i as DevframeDiagnosticsLogger, l as DevframeRpcSharedStates, m as RpcBroadcastOptions, n as DevframeCapabilities, o as DevframeNodeRpcSession, p as EventsMap, r as DevframeDiagnosticsHost, s as DevframeRpcClientFunctions, t as ConnectionMeta, u as DevframeViewHost, v as RpcSharedStateGetOptions, x as RpcStreamingChannelOptions, y as RpcSharedStateHost } from "../index-coDmWngQ.mjs";
|
|
4
|
+
export { ClientScriptEntry, type ConnectionMeta, type CreateHubContextOptions, type DevframeCapabilities, DevframeChildProcessExecuteOptions, DevframeChildProcessOutput, DevframeChildProcessResult, DevframeChildProcessTerminalSession, DevframeClientCommand, DevframeCommandAgentOptions, DevframeCommandBase, DevframeCommandEntry, DevframeCommandHandle, DevframeCommandKeybinding, DevframeCommandShortcutOverrides, DevframeCommandsHost, DevframeCommandsHostEvents, type DevframeDiagnosticsHost, type DevframeDiagnosticsLogger, DevframeDockActivation, DevframeDockBadgeVariant, DevframeDockEntriesGrouped, DevframeDockEntry, DevframeDockEntryBase, DevframeDockEntryCategory, DevframeDockEntryIcon, DevframeDockEntryRegistry, DevframeDockUserEntry, DevframeDocksActiveState, DevframeDocksHost, DevframeDocksUserSettings, type DevframeHost, type DevframeHubContext, DevframeMessageAction, DevframeMessageActivateAction, DevframeMessageCommandAction, DevframeMessageElementPosition, DevframeMessageEntry, DevframeMessageEntryFrom, DevframeMessageEntryInput, DevframeMessageFilePosition, DevframeMessageHandle, DevframeMessageLevel, DevframeMessageShortcutInput, DevframeMessagesClient, DevframeMessagesHost, DevframeMessagesLevelShortcuts, DevframeMessagesListDelta, type DevframeNodeRpcSession, DevframePtyExecuteOptions, DevframePtyTerminalSession, type DevframeRpcClientFunctions, type DevframeRpcServerFunctions, type DevframeRpcSharedStates, DevframeServerCommandEntry, DevframeServerCommandInput, DevframeTerminalSession, DevframeTerminalSessionBase, DevframeTerminalStatus, DevframeTerminalsHost, DevframeViewAction, DevframeViewBuiltin, DevframeViewCustomRender, DevframeViewGroup, type DevframeViewHost, DevframeViewIframe, DevframeViewLauncher, DevframeViewLauncherStatus, type EventEmitter, type EventUnsubscribe, type EventsMap, FrameSubTabsConfig, NavTarget, RemoteConnectionInfo, RemoteDockOptions, type RpcBroadcastOptions, type RpcDefinitionsFilter, type RpcDefinitionsToFunctions, type RpcFunctionsHost, type RpcSharedStateGetOptions, type RpcSharedStateHost, type RpcStreamingChannel, type RpcStreamingChannelOptions, type RpcStreamingHost };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devframes/hub",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.9.0-beta.
|
|
4
|
+
"version": "0.9.0-beta.10",
|
|
5
5
|
"description": "Hub layer that orchestrates devframe docks, terminals, messages, and commands on any host.",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -34,13 +34,12 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"devframe": "0.9.0-beta.
|
|
37
|
+
"devframe": "0.9.0-beta.10"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@standard-schema/spec": "^1.1.0",
|
|
41
41
|
"destr": "^2.0.5",
|
|
42
42
|
"h3": "^2.0.1-rc.26",
|
|
43
|
-
"nostics": "^1.2.0",
|
|
44
43
|
"pathe": "^2.0.3",
|
|
45
44
|
"perfect-debounce": "^2.1.0",
|
|
46
45
|
"tinyexec": "^1.3.0",
|
|
@@ -53,7 +52,7 @@
|
|
|
53
52
|
"mlly": "^1.8.2",
|
|
54
53
|
"tsdown": "^0.22.14",
|
|
55
54
|
"valibot": "^1.4.2",
|
|
56
|
-
"devframe": "0.9.0-beta.
|
|
55
|
+
"devframe": "0.9.0-beta.10"
|
|
57
56
|
},
|
|
58
57
|
"scripts": {
|
|
59
58
|
"build": "tsdown",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import "./context-Dz0j8Eyg.mjs";
|
|
2
|
-
import "./commands-CAcTUSlj.mjs";
|
|
3
|
-
import "./settings-B1qJ47d5.mjs";
|
|
4
|
-
import { RpcDefinitionsFilter, RpcDefinitionsToFunctions } from "devframe/rpc";
|
|
5
|
-
import { ConnectionMeta as ConnectionMeta$1, DevframeCapabilities, DevframeDiagnosticsDefinition, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeHost as DevframeHost$1, DevframeNodeRpcSession, DevframeRpcClientFunctions, DevframeRpcServerFunctions, DevframeRpcSharedStates, DevframeViewHost, EntriesToObject, EventEmitter as EventEmitter$1, EventUnsubscribe, EventsMap, PartialWithoutId, RpcBroadcastOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, Thenable } from "devframe/types";
|
|
6
|
-
export { RpcStreamingChannel as C, Thenable as E, RpcSharedStateHost as S, RpcStreamingHost as T, RpcBroadcastOptions as _, DevframeDiagnosticsLogger as a, RpcFunctionsHost as b, DevframeRpcClientFunctions as c, DevframeViewHost as d, EntriesToObject as f, PartialWithoutId as g, EventsMap as h, DevframeDiagnosticsHost as i, DevframeRpcServerFunctions as l, EventUnsubscribe as m, DevframeCapabilities as n, DevframeHost$1 as o, EventEmitter$1 as p, DevframeDiagnosticsDefinition as r, DevframeNodeRpcSession as s, ConnectionMeta$1 as t, DevframeRpcSharedStates as u, RpcDefinitionsFilter as v, RpcStreamingChannelOptions as w, RpcSharedStateGetOptions as x, RpcDefinitionsToFunctions as y };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { s as DevframeCommandShortcutOverrides } from "./commands-CAcTUSlj.mjs";
|
|
2
|
-
//#region src/types/settings.d.ts
|
|
3
|
-
interface DevframeDocksUserSettings {
|
|
4
|
-
docksHidden: string[];
|
|
5
|
-
docksCategoriesHidden: string[];
|
|
6
|
-
docksPinned: string[];
|
|
7
|
-
docksCustomOrder: Record<string, number>;
|
|
8
|
-
showIframeAddressBar: boolean;
|
|
9
|
-
closeOnOutsideClick: boolean;
|
|
10
|
-
commandShortcuts: DevframeCommandShortcutOverrides;
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
13
|
-
export { DevframeDocksUserSettings as t };
|