@streetui/devtools 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/index.cjs +422 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +396 -0
- package/dist/index.d.ts +396 -0
- package/dist/index.js +385 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { ApplicationGraph } from '@streetui/graph';
|
|
2
|
+
import { CompiledApplication } from '@streetui/compiler';
|
|
3
|
+
import { SignalKind, ResourceStatus, ReadonlySignal } from '@streetui/state';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* StreetUI DevTools — graph inspector and debug utilities.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface InspectedNode {
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
key: string | undefined;
|
|
13
|
+
props: Record<string, unknown>;
|
|
14
|
+
eventTypes: string[];
|
|
15
|
+
stateBindings: string[];
|
|
16
|
+
children: InspectedNode[];
|
|
17
|
+
depth: number;
|
|
18
|
+
}
|
|
19
|
+
declare function inspectGraph(graph: ApplicationGraph): InspectedNode;
|
|
20
|
+
/** Print a human-readable tree of the graph to a string. */
|
|
21
|
+
declare function printGraph(graph: ApplicationGraph): string;
|
|
22
|
+
/** Print compilation diagnostics to a string. */
|
|
23
|
+
declare function printDiagnostics(compiled: CompiledApplication): string;
|
|
24
|
+
/** Returns node counts per type. */
|
|
25
|
+
declare function nodeTypeStats(graph: ApplicationGraph): Record<string, number>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* DevTools foundation (v0.6, Phase 18). A single read-only entry point that
|
|
29
|
+
* aggregates everything an eventual DevTools UI would need — application
|
|
30
|
+
* identity, the graph tree, signal bindings, page/route surface, node
|
|
31
|
+
* statistics, and diagnostics — WITHOUT introducing a second representation of
|
|
32
|
+
* the graph. It reuses `inspectGraph`/`nodeTypeStats` from the inspector and
|
|
33
|
+
* reads `CompiledApplication` metadata directly. This is a foundation, not a
|
|
34
|
+
* UI: it returns plain data so a UI (or a test, or a CLI command) can render it.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/** Stable identity of a compiled application. */
|
|
38
|
+
interface ApplicationIdentity {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly version: string;
|
|
41
|
+
/** Epoch millis the application was compiled. */
|
|
42
|
+
readonly compiledAt: number;
|
|
43
|
+
}
|
|
44
|
+
/** A page node reachable as a direct child of the application root. */
|
|
45
|
+
interface InspectedPage {
|
|
46
|
+
readonly id: string;
|
|
47
|
+
/** The page key when one was supplied in the DSL. */
|
|
48
|
+
readonly key: string | undefined;
|
|
49
|
+
}
|
|
50
|
+
/** Compilation diagnostics summarised for display. */
|
|
51
|
+
interface DiagnosticsSummary {
|
|
52
|
+
readonly errors: number;
|
|
53
|
+
readonly warnings: number;
|
|
54
|
+
readonly messages: string[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Cheap, count-only performance snapshot (v0.7 §20). These are structural
|
|
58
|
+
* counts derived from a single graph walk — NOT timings and NOT a profiler.
|
|
59
|
+
* They let a DevTools panel or a CI check spot the shapes that correlate with
|
|
60
|
+
* slow apps (very large graphs, deep trees, big lists, many subscriptions)
|
|
61
|
+
* without measuring anything at runtime.
|
|
62
|
+
*/
|
|
63
|
+
interface PerfSnapshot {
|
|
64
|
+
/** Total GraphNodes in the tree (root included). */
|
|
65
|
+
readonly totalNodes: number;
|
|
66
|
+
/** Maximum nesting depth (root = 0). */
|
|
67
|
+
readonly maxDepth: number;
|
|
68
|
+
/** Total event handler registrations across all nodes. */
|
|
69
|
+
readonly eventHandlers: number;
|
|
70
|
+
/** Total signal→prop bindings across all nodes. */
|
|
71
|
+
readonly stateBindings: number;
|
|
72
|
+
/** Distinct signals referenced anywhere in the graph. */
|
|
73
|
+
readonly distinctSignals: number;
|
|
74
|
+
/** Largest single-node child count (a proxy for the biggest list/section). */
|
|
75
|
+
readonly largestChildCount: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The complete read-only snapshot of a compiled application. Everything here is
|
|
79
|
+
* derived from the single `CompiledApplication` graph — no state is duplicated.
|
|
80
|
+
*/
|
|
81
|
+
interface ApplicationInspection {
|
|
82
|
+
readonly identity: ApplicationIdentity;
|
|
83
|
+
readonly graph: InspectedNode;
|
|
84
|
+
/** Count of nodes per DSL type (e.g. `{ section: 2, button: 3 }`). */
|
|
85
|
+
readonly nodeStats: Record<string, number>;
|
|
86
|
+
/** Unique signal ids bound anywhere in the graph, sorted. */
|
|
87
|
+
readonly signals: string[];
|
|
88
|
+
/** Page nodes directly under the root — the app's top-level route surface. */
|
|
89
|
+
readonly pages: InspectedPage[];
|
|
90
|
+
readonly diagnostics: DiagnosticsSummary;
|
|
91
|
+
/** Cheap structural performance counters (v0.7 §20). */
|
|
92
|
+
readonly perf: PerfSnapshot;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build the full inspection snapshot for a compiled application. Pure and
|
|
96
|
+
* side-effect free — safe to call in a server, a test, or a DevTools panel.
|
|
97
|
+
*/
|
|
98
|
+
declare function inspectApplication(compiled: CompiledApplication): ApplicationInspection;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Dev-only performance diagnostics (v0.7 §21).
|
|
102
|
+
*
|
|
103
|
+
* A pure, cheap, count-based check that flags graph *shapes* known to correlate
|
|
104
|
+
* with slow apps — very large graphs, deep trees, oversized lists/sections, and
|
|
105
|
+
* heavy reactive fan-out. It is NOT wired into mount/render and adds ZERO cost
|
|
106
|
+
* to the runtime hot path; a developer (or a CLI command, or a test) calls it
|
|
107
|
+
* explicitly. Thresholds are advisory and overridable.
|
|
108
|
+
*
|
|
109
|
+
* This intentionally reuses the counts already produced by `inspectApplication`
|
|
110
|
+
* — it introduces no second graph walk of its own beyond reading that snapshot.
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
interface PerfThresholds {
|
|
114
|
+
/** Warn when the graph exceeds this many nodes. */
|
|
115
|
+
readonly maxNodes: number;
|
|
116
|
+
/** Warn when nesting depth exceeds this. */
|
|
117
|
+
readonly maxDepth: number;
|
|
118
|
+
/** Warn when any single node has more than this many children (big list). */
|
|
119
|
+
readonly maxChildCount: number;
|
|
120
|
+
/** Warn when distinct signals exceed this (reactive fan-out). */
|
|
121
|
+
readonly maxSignals: number;
|
|
122
|
+
}
|
|
123
|
+
declare const DEFAULT_PERF_THRESHOLDS: PerfThresholds;
|
|
124
|
+
type PerfDiagnosticCode = 'large-graph' | 'deep-tree' | 'large-list' | 'high-signal-fanout';
|
|
125
|
+
interface PerfDiagnostic {
|
|
126
|
+
readonly code: PerfDiagnosticCode;
|
|
127
|
+
readonly message: string;
|
|
128
|
+
/** The observed count that tripped the threshold. */
|
|
129
|
+
readonly observed: number;
|
|
130
|
+
/** The threshold it exceeded. */
|
|
131
|
+
readonly threshold: number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Return advisory performance diagnostics for a compiled application. An empty
|
|
135
|
+
* array means nothing tripped a threshold. Never throws; never mutates.
|
|
136
|
+
*/
|
|
137
|
+
declare function diagnosePerformance(compiled: CompiledApplication, thresholds?: Partial<PerfThresholds>): PerfDiagnostic[];
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Reactive-surface inspection for DevTools.
|
|
141
|
+
*
|
|
142
|
+
* These functions turn the framework's live objects — signals, resources,
|
|
143
|
+
* router, forms, context, i18n — into plain, read-only snapshots suitable for a
|
|
144
|
+
* DevTools panel. They never mutate anything and never subscribe; each call is a
|
|
145
|
+
* one-shot `peek`. Sensitive-by-default surfaces (resource payloads, form field
|
|
146
|
+
* values) are omitted unless the caller explicitly opts in, so a panel cannot
|
|
147
|
+
* accidentally display tokens, passwords, or private data.
|
|
148
|
+
*
|
|
149
|
+
* Router/forms/context/i18n are described by *structural* interfaces rather than
|
|
150
|
+
* imported types, so DevTools stays decoupled from those packages (no extra
|
|
151
|
+
* dependencies) while still inspecting them when present.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
interface SignalInspection {
|
|
155
|
+
/** Whether the signal is writable or a derived computation. */
|
|
156
|
+
readonly kind: SignalKind;
|
|
157
|
+
/** The current value (redacted if requested). */
|
|
158
|
+
readonly value: unknown;
|
|
159
|
+
/** Live observer count when the signal exposes it, else undefined. */
|
|
160
|
+
readonly observerCount: number | undefined;
|
|
161
|
+
}
|
|
162
|
+
interface InspectSignalOptions {
|
|
163
|
+
/**
|
|
164
|
+
* Redact the value: `true` replaces it with `'[redacted]'`; a function maps
|
|
165
|
+
* the raw value to whatever should be shown. Use for signals that may hold
|
|
166
|
+
* sensitive data. Omitted → the value is shown as-is.
|
|
167
|
+
*/
|
|
168
|
+
readonly redact?: boolean | ((value: unknown) => unknown);
|
|
169
|
+
}
|
|
170
|
+
/** Snapshot a signal's kind, current value, and observer count. Read-only. */
|
|
171
|
+
declare function inspectSignal(source: ReadonlySignal<unknown>, options?: InspectSignalOptions): SignalInspection;
|
|
172
|
+
/** The read-only slice of a resource this module needs. */
|
|
173
|
+
interface ResourceLike {
|
|
174
|
+
readonly status: ReadonlySignal<ResourceStatus>;
|
|
175
|
+
readonly data: ReadonlySignal<unknown>;
|
|
176
|
+
readonly error: ReadonlySignal<unknown>;
|
|
177
|
+
readonly loading: ReadonlySignal<boolean>;
|
|
178
|
+
readonly isRefetching: ReadonlySignal<boolean>;
|
|
179
|
+
}
|
|
180
|
+
interface ResourceInspection {
|
|
181
|
+
readonly status: ResourceStatus;
|
|
182
|
+
readonly loading: boolean;
|
|
183
|
+
readonly isRefetching: boolean;
|
|
184
|
+
readonly hasData: boolean;
|
|
185
|
+
readonly hasError: boolean;
|
|
186
|
+
/** The error's constructor name (safe — no message/payload). */
|
|
187
|
+
readonly errorName: string | undefined;
|
|
188
|
+
/** The error message — only present when `includeData` is set. */
|
|
189
|
+
readonly errorMessage?: string;
|
|
190
|
+
/** The loaded value — only present when `includeData` is set. */
|
|
191
|
+
readonly data?: unknown;
|
|
192
|
+
}
|
|
193
|
+
interface InspectResourceOptions {
|
|
194
|
+
/**
|
|
195
|
+
* Include the loaded `data` and the error `message`. Off by default because a
|
|
196
|
+
* resource payload commonly carries user or secret data.
|
|
197
|
+
*/
|
|
198
|
+
readonly includeData?: boolean;
|
|
199
|
+
}
|
|
200
|
+
/** Snapshot a resource's lifecycle. Payload/message hidden unless opted in. */
|
|
201
|
+
declare function inspectResource(resource: ResourceLike, options?: InspectResourceOptions): ResourceInspection;
|
|
202
|
+
interface RouteMatchLike {
|
|
203
|
+
readonly path: string;
|
|
204
|
+
readonly pattern: string;
|
|
205
|
+
readonly params: Readonly<Record<string, string>>;
|
|
206
|
+
readonly query: URLSearchParams;
|
|
207
|
+
readonly isFallback?: boolean;
|
|
208
|
+
}
|
|
209
|
+
interface RouterLike {
|
|
210
|
+
readonly currentRoute: ReadonlySignal<RouteMatchLike>;
|
|
211
|
+
}
|
|
212
|
+
interface RouterInspection {
|
|
213
|
+
readonly path: string;
|
|
214
|
+
readonly pattern: string;
|
|
215
|
+
readonly params: Record<string, string>;
|
|
216
|
+
readonly query: Record<string, string>;
|
|
217
|
+
readonly isFallback: boolean;
|
|
218
|
+
}
|
|
219
|
+
/** Snapshot the router's current route. Read-only. */
|
|
220
|
+
declare function inspectRouter(router: RouterLike): RouterInspection;
|
|
221
|
+
interface FormLike {
|
|
222
|
+
readonly values: ReadonlySignal<Record<string, unknown>>;
|
|
223
|
+
readonly errors: ReadonlySignal<Record<string, string | undefined>>;
|
|
224
|
+
readonly touched: ReadonlySignal<Record<string, boolean | undefined>>;
|
|
225
|
+
readonly dirty: ReadonlySignal<boolean>;
|
|
226
|
+
readonly valid: ReadonlySignal<boolean>;
|
|
227
|
+
readonly status: ReadonlySignal<string>;
|
|
228
|
+
}
|
|
229
|
+
interface FormInspection {
|
|
230
|
+
readonly fields: string[];
|
|
231
|
+
/** Per-field validation messages (safe — not the entered values). */
|
|
232
|
+
readonly errors: Record<string, string>;
|
|
233
|
+
readonly touched: Record<string, boolean>;
|
|
234
|
+
readonly dirty: boolean;
|
|
235
|
+
readonly valid: boolean;
|
|
236
|
+
readonly status: string;
|
|
237
|
+
/** Entered field values — only present when `includeValues` is set. */
|
|
238
|
+
readonly values?: Record<string, unknown>;
|
|
239
|
+
}
|
|
240
|
+
interface InspectFormOptions {
|
|
241
|
+
/**
|
|
242
|
+
* Include the entered field `values`. Off by default because form fields
|
|
243
|
+
* frequently hold passwords or other secrets.
|
|
244
|
+
*/
|
|
245
|
+
readonly includeValues?: boolean;
|
|
246
|
+
}
|
|
247
|
+
/** Snapshot form validation state. Entered values hidden unless opted in. */
|
|
248
|
+
declare function inspectForm(form: FormLike, options?: InspectFormOptions): FormInspection;
|
|
249
|
+
interface ContextLike {
|
|
250
|
+
readonly id: symbol;
|
|
251
|
+
hasProvider(): boolean;
|
|
252
|
+
}
|
|
253
|
+
interface ContextInspection {
|
|
254
|
+
/** The context's descriptive label (from its Symbol). */
|
|
255
|
+
readonly description: string;
|
|
256
|
+
/** Whether a provider is currently active. */
|
|
257
|
+
readonly hasProvider: boolean;
|
|
258
|
+
}
|
|
259
|
+
/** Snapshot a context's identity and provider presence. No value dumped. */
|
|
260
|
+
declare function inspectContext(context: ContextLike): ContextInspection;
|
|
261
|
+
interface I18nLike {
|
|
262
|
+
readonly locale: ReadonlySignal<string>;
|
|
263
|
+
readonly locales: ReadonlyArray<string>;
|
|
264
|
+
has(key: string): boolean;
|
|
265
|
+
}
|
|
266
|
+
interface I18nInspection {
|
|
267
|
+
readonly locale: string;
|
|
268
|
+
readonly locales: string[];
|
|
269
|
+
/** Of the probed keys, those with no translation in the active/fallback locale. */
|
|
270
|
+
readonly missingKeys?: string[];
|
|
271
|
+
}
|
|
272
|
+
interface InspectI18nOptions {
|
|
273
|
+
/** Keys to probe for presence; any absent ones are reported as missing. */
|
|
274
|
+
readonly checkKeys?: readonly string[];
|
|
275
|
+
}
|
|
276
|
+
/** Snapshot i18n locale state and (optionally) missing translation keys. */
|
|
277
|
+
declare function inspectI18n(i18n: I18nLike, options?: InspectI18nOptions): I18nInspection;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* DevTools session & panels — the first real StreetUI DevTools surface.
|
|
281
|
+
*
|
|
282
|
+
* This is a *headless* DevTools layer: it composes the existing read-only
|
|
283
|
+
* inspection functions (`inspectApplication`, `diagnosePerformance`, and the
|
|
284
|
+
* reactive inspectors) into the panels a DevTools UI shows — Application, Graph,
|
|
285
|
+
* Signals, Router, Resources, Forms, Context, i18n, and Performance — and
|
|
286
|
+
* returns them as plain data plus a text formatter. Any host (a browser panel, a
|
|
287
|
+
* CLI command, a test) can render that data.
|
|
288
|
+
*
|
|
289
|
+
* Design constraints honoured here:
|
|
290
|
+
* - No second graph and no second reactive system — everything is derived from
|
|
291
|
+
* the one `CompiledApplication` and the app's own live signals.
|
|
292
|
+
* - Explicit activation: nothing in the runtime imports this. A session only
|
|
293
|
+
* exists once dev code calls `createDevTools`, so production pays no cost.
|
|
294
|
+
* - Live updates use a simple explicit `refresh()` — DevTools never subscribes
|
|
295
|
+
* to or instruments the reactive graph.
|
|
296
|
+
* - Sensitive surfaces (resource payloads, form values) stay hidden unless the
|
|
297
|
+
* caller opts in per the underlying inspectors.
|
|
298
|
+
*/
|
|
299
|
+
|
|
300
|
+
interface ApplicationPanel {
|
|
301
|
+
readonly identity: ApplicationIdentity;
|
|
302
|
+
readonly nodeCount: number;
|
|
303
|
+
readonly maxDepth: number;
|
|
304
|
+
readonly pages: readonly InspectedPage[];
|
|
305
|
+
readonly signalCount: number;
|
|
306
|
+
readonly eventHandlers: number;
|
|
307
|
+
readonly stateBindings: number;
|
|
308
|
+
readonly errors: number;
|
|
309
|
+
readonly warnings: number;
|
|
310
|
+
}
|
|
311
|
+
interface SignalsPanel {
|
|
312
|
+
/** Distinct signal ids referenced anywhere in the graph (structural). */
|
|
313
|
+
readonly boundSignalIds: readonly string[];
|
|
314
|
+
/** Live inspections for signals the app registered with DevTools, by label. */
|
|
315
|
+
readonly live: Readonly<Record<string, SignalInspection>>;
|
|
316
|
+
}
|
|
317
|
+
interface PerformancePanel {
|
|
318
|
+
readonly snapshot: ApplicationInspection['perf'];
|
|
319
|
+
readonly diagnostics: readonly PerfDiagnostic[];
|
|
320
|
+
}
|
|
321
|
+
/** All panels captured at one `refresh()`. */
|
|
322
|
+
interface DevToolsSnapshot {
|
|
323
|
+
readonly application: ApplicationPanel;
|
|
324
|
+
readonly graph: InspectedNode;
|
|
325
|
+
readonly signals: SignalsPanel;
|
|
326
|
+
readonly performance: PerformancePanel;
|
|
327
|
+
readonly router?: RouterInspection;
|
|
328
|
+
readonly resources?: Readonly<Record<string, ResourceInspection>>;
|
|
329
|
+
readonly forms?: Readonly<Record<string, FormInspection>>;
|
|
330
|
+
readonly contexts?: Readonly<Record<string, ContextInspection>>;
|
|
331
|
+
readonly i18n?: I18nInspection;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* The app's own live reactive objects, handed to DevTools explicitly so it can
|
|
335
|
+
* inspect them. The compiled graph knows signal *ids* but not the live `Signal`
|
|
336
|
+
* instances, so the app registers whichever surfaces it wants visible. Every
|
|
337
|
+
* field is optional — a session works with none of them (structure-only).
|
|
338
|
+
*/
|
|
339
|
+
interface DevToolsSources {
|
|
340
|
+
/** Live signals to inspect, keyed by a human label shown in the panel. */
|
|
341
|
+
readonly signals?: Readonly<Record<string, ReadonlySignal<unknown>>>;
|
|
342
|
+
/** Live resources to inspect, keyed by label. */
|
|
343
|
+
readonly resources?: Readonly<Record<string, ResourceLike>>;
|
|
344
|
+
/** The app router, if any. */
|
|
345
|
+
readonly router?: RouterLike;
|
|
346
|
+
/** Live forms to inspect, keyed by label. */
|
|
347
|
+
readonly forms?: Readonly<Record<string, FormLike>>;
|
|
348
|
+
/** Live contexts to inspect, keyed by label. */
|
|
349
|
+
readonly contexts?: Readonly<Record<string, ContextLike>>;
|
|
350
|
+
/** The app i18n instance, if any. */
|
|
351
|
+
readonly i18n?: I18nLike;
|
|
352
|
+
}
|
|
353
|
+
interface DevToolsOptions {
|
|
354
|
+
/** Thresholds forwarded to `diagnosePerformance`. */
|
|
355
|
+
readonly perfThresholds?: PerfThresholds;
|
|
356
|
+
/**
|
|
357
|
+
* Redact live signal values by default (passed to `inspectSignal`). Use in
|
|
358
|
+
* shared or recorded sessions so values never reach the panel. Off by default.
|
|
359
|
+
*/
|
|
360
|
+
readonly redactSignals?: boolean | ((value: unknown) => unknown);
|
|
361
|
+
/** i18n keys to probe for missing translations, forwarded to `inspectI18n`. */
|
|
362
|
+
readonly i18nCheckKeys?: readonly string[];
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* A headless DevTools session over one compiled application.
|
|
366
|
+
*
|
|
367
|
+
* The session holds the compiled app plus the app's registered live sources and
|
|
368
|
+
* produces an immutable {@link DevToolsSnapshot} on demand. Live values are read
|
|
369
|
+
* only when `refresh()` is called (explicit-refresh protocol, §7): the session
|
|
370
|
+
* never subscribes to signals or instruments the reactive graph, so it adds no
|
|
371
|
+
* cost to the running app between refreshes.
|
|
372
|
+
*/
|
|
373
|
+
interface DevToolsSession {
|
|
374
|
+
/** The most recent snapshot. Recomputed by `refresh()`. */
|
|
375
|
+
readonly snapshot: DevToolsSnapshot;
|
|
376
|
+
/**
|
|
377
|
+
* Recompute every panel from the current live state and return the new
|
|
378
|
+
* snapshot. This is the only way values change — DevTools pulls, it never
|
|
379
|
+
* gets pushed to.
|
|
380
|
+
*/
|
|
381
|
+
refresh(): DevToolsSnapshot;
|
|
382
|
+
/**
|
|
383
|
+
* Find a node in the graph by id and return that subtree, or `undefined`.
|
|
384
|
+
* Backs a UI tree inspector's node-selection (§8) without a second graph.
|
|
385
|
+
*/
|
|
386
|
+
selectNode(id: string): InspectedNode | undefined;
|
|
387
|
+
/** Render the current snapshot as a plain-text report (for CLI/tests/logs). */
|
|
388
|
+
format(): string;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Create a DevTools session. Nothing in the runtime calls this — a session only
|
|
392
|
+
* exists once dev code opts in, so production never pays for it.
|
|
393
|
+
*/
|
|
394
|
+
declare function createDevTools(compiled: CompiledApplication, sources?: DevToolsSources, options?: DevToolsOptions): DevToolsSession;
|
|
395
|
+
|
|
396
|
+
export { type ApplicationIdentity, type ApplicationInspection, type ApplicationPanel, type ContextInspection, type ContextLike, DEFAULT_PERF_THRESHOLDS, type DevToolsOptions, type DevToolsSession, type DevToolsSnapshot, type DevToolsSources, type DiagnosticsSummary, type FormInspection, type FormLike, type I18nInspection, type I18nLike, type InspectFormOptions, type InspectI18nOptions, type InspectResourceOptions, type InspectSignalOptions, type InspectedNode, type InspectedPage, type PerfDiagnostic, type PerfDiagnosticCode, type PerfSnapshot, type PerfThresholds, type PerformancePanel, type ResourceInspection, type ResourceLike, type RouteMatchLike, type RouterInspection, type RouterLike, type SignalInspection, type SignalsPanel, createDevTools, diagnosePerformance, inspectApplication, inspectContext, inspectForm, inspectGraph, inspectI18n, inspectResource, inspectRouter, inspectSignal, nodeTypeStats, printDiagnostics, printGraph };
|