@ethlete/query-devtools 1.0.0-next.14 → 1.0.0-next.15
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 +16 -0
- package/fesm2022/ethlete-query-devtools-lazy.mjs +11 -4
- package/fesm2022/ethlete-query-devtools-lazy.mjs.map +1 -1
- package/fesm2022/ethlete-query-devtools-toggle.mjs +6 -6
- package/fesm2022/ethlete-query-devtools-toggle.mjs.map +1 -1
- package/fesm2022/ethlete-query-devtools.mjs +651 -621
- package/fesm2022/ethlete-query-devtools.mjs.map +1 -1
- package/package.json +4 -5
- package/types/ethlete-query-devtools-toggle.d.ts +3 -4
- package/types/ethlete-query-devtools.d.ts +8 -667
|
@@ -1,177 +1,9 @@
|
|
|
1
|
-
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, WritableSignal, OnInit } from '@angular/core';
|
|
3
1
|
import * as _ethlete_query from '@ethlete/query';
|
|
4
|
-
import {
|
|
2
|
+
import { QueryRefreshCause, QueryRepositoryEntryDestroyedCause, Query, QueryRepositoryCacheEntry, HttpRequestRetryState, HttpRequestLoadingProgressState, AnyQueryBatchItemResult, QueryRepository, QueryKeyLockState, QueryClient, AnyQueryStack, AnyPagedQueryStack, QuerySequence, AnyQueryBatch, AnyBearerAuthProvider, WebSocketDevtoolsHandle, WebSocketDevtoolsMessage, QuerySequenceStatus, AnyQuerySnapshot } from '@ethlete/query';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { OnInit } from '@angular/core';
|
|
5
5
|
import { ResizeEdge, DragMoveEvent, ResizeMoveEvent } from '@ethlete/core';
|
|
6
|
-
|
|
7
|
-
type AboutRow = {
|
|
8
|
-
label: string;
|
|
9
|
-
value: string;
|
|
10
|
-
};
|
|
11
|
-
type AboutGroup = {
|
|
12
|
-
title: string;
|
|
13
|
-
rows: AboutRow[];
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* What is running: the loaded `@ethlete/*` versions, the Angular version and whatever the app handed to
|
|
17
|
-
* `provideQueryDevtools({ about })`. A section rather than a tab body, so it can be shown anywhere.
|
|
18
|
-
*/
|
|
19
|
-
declare class QueryDevtoolsAboutComponent {
|
|
20
|
-
private hostEl;
|
|
21
|
-
protected readonly groups: AboutGroup[];
|
|
22
|
-
protected copied: {
|
|
23
|
-
value: _angular_core.Signal<boolean>;
|
|
24
|
-
mark: (next: boolean) => void;
|
|
25
|
-
clear: () => void;
|
|
26
|
-
};
|
|
27
|
-
protected copy(): void;
|
|
28
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsAboutComponent, never>;
|
|
29
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsAboutComponent, "et-query-devtools-about", never, {}, {}, never, never, true, never>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Which of a node's four pasteable forms a copy action asks for. */
|
|
33
|
-
type QueryDevtoolsCopyPayload = 'value' | 'key' | 'path' | 'entry';
|
|
34
|
-
|
|
35
|
-
/** A JSON value's kind as the value explorer (and its per-node override menu) categorizes it. */
|
|
36
|
-
type JsonKind = 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'array' | 'object';
|
|
37
|
-
type JsonEntry = {
|
|
38
|
-
k: string;
|
|
39
|
-
v: unknown;
|
|
40
|
-
};
|
|
41
|
-
/** A folded slice of a container's entries, rendered as its own collapsible row. */
|
|
42
|
-
type JsonChunk = {
|
|
43
|
-
start: number;
|
|
44
|
-
end: number;
|
|
45
|
-
label: string;
|
|
46
|
-
};
|
|
47
|
-
declare const kindOf: (value: unknown) => JsonKind;
|
|
48
|
-
/**
|
|
49
|
-
* A recursive, collapsible, searchable JSON tree used by the query devtools value explorer. Renders
|
|
50
|
-
* the *transformed* value the app actually sees (post `transformResponse`). Self-recurses via its
|
|
51
|
-
* own selector - both for child entries and for the folded slices of an oversized container, which
|
|
52
|
-
* re-enter as the same component with a `chunk` window over the same value.
|
|
53
|
-
*/
|
|
54
|
-
declare class QueryDevtoolsJsonComponent {
|
|
55
|
-
private hostEl;
|
|
56
|
-
value: _angular_core.InputSignal<unknown>;
|
|
57
|
-
nodeKey: _angular_core.InputSignal<string | null>;
|
|
58
|
-
depth: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
59
|
-
/** Lowercased search term; when set, the containers holding a match auto-expand and matches are highlighted. */
|
|
60
|
-
search: _angular_core.InputSignal<string>;
|
|
61
|
-
/**
|
|
62
|
-
* When set, this node is not the value itself but a folded window over its entries. It shares the
|
|
63
|
-
* container's `path` so a child's persisted expansion does not depend on where the slice borders land.
|
|
64
|
-
*/
|
|
65
|
-
chunk: _angular_core.InputSignal<JsonChunk | null>;
|
|
66
|
-
/** Full path of this node from the explorer root, used as the key for persisted expansion. */
|
|
67
|
-
path: _angular_core.InputSignal<string>;
|
|
68
|
-
/** Persisted paths explicitly expanded (overrides the depth default). */
|
|
69
|
-
expandedPaths: _angular_core.InputSignal<ReadonlySet<string> | null>;
|
|
70
|
-
/** Persisted paths explicitly collapsed (overrides the depth default). */
|
|
71
|
-
collapsedPaths: _angular_core.InputSignal<ReadonlySet<string> | null>;
|
|
72
|
-
/** When provided, expansion is externally persisted via this callback instead of local state. */
|
|
73
|
-
toggleFn: _angular_core.InputSignal<((path: string, expand: boolean) => void) | null>;
|
|
74
|
-
/** Same node as {@link path}, but as the array-of-steps an override op targets rather than a display key. */
|
|
75
|
-
jsonPath: _angular_core.InputSignal<JsonPath>;
|
|
76
|
-
/** The kind of the container holding this node, so its override menu can offer "duplicate this item". */
|
|
77
|
-
parentKind: _angular_core.InputSignal<JsonKind | null>;
|
|
78
|
-
/** When provided, every node renders an override menu that arms/clears ops through it. */
|
|
79
|
-
overrides: _angular_core.InputSignal<QueryDevtoolsOverridesRecorder | null>;
|
|
80
|
-
/**
|
|
81
|
-
* The declared type of each field, keyed by its path with array indices as `*` (`items.*.id`) - as
|
|
82
|
-
* {@link QueryDevtoolsSchemaSeed} produces it. A node with an entry labels itself with it.
|
|
83
|
-
*/
|
|
84
|
-
annotations: _angular_core.InputSignal<ReadonlyMap<string, string> | null>;
|
|
85
|
-
/** The containers above this node, so a search does not unfold a value that holds itself again. */
|
|
86
|
-
ancestors: _angular_core.InputSignal<readonly unknown[]>;
|
|
87
|
-
protected kind: _angular_core.Signal<JsonKind>;
|
|
88
|
-
private exotic;
|
|
89
|
-
/** One annotation covers every element of an array, so the lookup path forgets which index this is. */
|
|
90
|
-
private shapePath;
|
|
91
|
-
protected annotation: _angular_core.Signal<string | null>;
|
|
92
|
-
protected annotationTitle: _angular_core.Signal<string>;
|
|
93
|
-
/**
|
|
94
|
-
* A `Date` is object-typed but has nothing to expand into, so it renders as a leaf. A resolved
|
|
95
|
-
* header provider is the other way round: a function that does expand.
|
|
96
|
-
*/
|
|
97
|
-
protected isContainer: _angular_core.Signal<boolean>;
|
|
98
|
-
/** The entries this node covers: the container's own, or just the window a chunk stands for. */
|
|
99
|
-
ownEntries: _angular_core.Signal<JsonEntry[]>;
|
|
100
|
-
protected childChunks: _angular_core.Signal<JsonChunk[]>;
|
|
101
|
-
/** Entries rendered as rows - empty while they are folded into slices instead. */
|
|
102
|
-
protected visibleEntries: _angular_core.Signal<JsonEntry[]>;
|
|
103
|
-
/** Slices carry their window in the key so siblings persist independently of the container. */
|
|
104
|
-
private togglePath;
|
|
105
|
-
private defaultExpanded;
|
|
106
|
-
private localExpanded;
|
|
107
|
-
private expanded;
|
|
108
|
-
protected childAncestors: _angular_core.Signal<unknown[]>;
|
|
109
|
-
private hasHit;
|
|
110
|
-
protected effectiveExpanded: _angular_core.Signal<boolean>;
|
|
111
|
-
/** What the last copy put on the clipboard, or `null` once the tick has expired. */
|
|
112
|
-
protected copied: {
|
|
113
|
-
value: _angular_core.Signal<QueryDevtoolsCopyPayload | null>;
|
|
114
|
-
mark: (next: QueryDevtoolsCopyPayload | null) => void;
|
|
115
|
-
clear: () => void;
|
|
116
|
-
};
|
|
117
|
-
/**
|
|
118
|
-
* Whether this node has an address of its own to copy. An explorer root has no key, and a folded
|
|
119
|
-
* slice stands for a range of entries rather than one path - neither can name itself.
|
|
120
|
-
*/
|
|
121
|
-
protected addressable: _angular_core.Signal<boolean>;
|
|
122
|
-
private valueLabel;
|
|
123
|
-
/**
|
|
124
|
-
* Doubles as the button's `title` and its `aria-label`, and names what landed while the tick is up -
|
|
125
|
-
* a bare `✓` stopped being unambiguous once the menu put four payloads behind one control.
|
|
126
|
-
*/
|
|
127
|
-
protected copyLabel: _angular_core.Signal<string>;
|
|
128
|
-
protected preview: _angular_core.Signal<string>;
|
|
129
|
-
protected display: _angular_core.Signal<string>;
|
|
130
|
-
protected keyHit: _angular_core.Signal<boolean>;
|
|
131
|
-
protected valueHit: _angular_core.Signal<boolean>;
|
|
132
|
-
constructor();
|
|
133
|
-
protected childPath(key: string): string;
|
|
134
|
-
protected childJsonPath(key: string): JsonPath;
|
|
135
|
-
protected toggle(): void;
|
|
136
|
-
/**
|
|
137
|
-
* Writes one of the node's four pasteable forms. All of them go through here so the tick stays a
|
|
138
|
-
* single readout of what actually landed.
|
|
139
|
-
*/
|
|
140
|
-
protected copy(payload: QueryDevtoolsCopyPayload): void;
|
|
141
|
-
/**
|
|
142
|
-
* Containers copy their whole subtree as JSON, slices only the entries they cover; leaves copy
|
|
143
|
-
* something pasteable - a raw string without the display quotes, so an id or url can go straight
|
|
144
|
-
* into a search box. `null` for a subtree that cannot be serialized at all.
|
|
145
|
-
*/
|
|
146
|
-
private copyTextFor;
|
|
147
|
-
/** An exotic container copies the entries the tree shows, not the private fields `JSON.stringify` finds. */
|
|
148
|
-
private copyableValue;
|
|
149
|
-
private chunkValue;
|
|
150
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsJsonComponent, never>;
|
|
151
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsJsonComponent, "et-query-devtools-json", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "nodeKey": { "alias": "nodeKey"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "chunk": { "alias": "chunk"; "required": false; "isSignal": true; }; "path": { "alias": "path"; "required": false; "isSignal": true; }; "expandedPaths": { "alias": "expandedPaths"; "required": false; "isSignal": true; }; "collapsedPaths": { "alias": "collapsedPaths"; "required": false; "isSignal": true; }; "toggleFn": { "alias": "toggleFn"; "required": false; "isSignal": true; }; "jsonPath": { "alias": "jsonPath"; "required": false; "isSignal": true; }; "parentKind": { "alias": "parentKind"; "required": false; "isSignal": true; }; "overrides": { "alias": "overrides"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "ancestors": { "alias": "ancestors"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* The value explorer's tree chrome, as a styles-only component the tree mounts itself - a session that
|
|
156
|
-
* never opens a JSON view does not inject it.
|
|
157
|
-
*
|
|
158
|
-
* @internal
|
|
159
|
-
*/
|
|
160
|
-
declare class QueryDevtoolsJsonStylesComponent {
|
|
161
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsJsonStylesComponent, never>;
|
|
162
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsJsonStylesComponent, "et-query-devtools-json-styles", never, {}, {}, never, never, true, never>;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* A copy confirmation that falls back to `idle` once {@link QUERY_DEVTOOLS_COPIED_RESET_MS} pass; each
|
|
167
|
-
* `mark` restarts the countdown. Create it in an injection context.
|
|
168
|
-
*/
|
|
169
|
-
declare const createQueryDevtoolsCopiedTick: <T>(idle: T) => {
|
|
170
|
-
value: _angular_core.Signal<T>;
|
|
171
|
-
mark: (next: T) => void;
|
|
172
|
-
clear: () => void;
|
|
173
|
-
};
|
|
174
|
-
type QueryDevtoolsCopiedTick<T> = ReturnType<typeof createQueryDevtoolsCopiedTick<T>>;
|
|
6
|
+
import { QueryDevtoolsStats, QueryDevtoolsStatsHandle, QueryDevtoolsEntry, QueryDevtoolsRun, QueryDevtoolsFormHandle, QueryDevtoolsFeature } from '@ethlete/query/devtools-contract';
|
|
175
7
|
|
|
176
8
|
/** Whether a path exists only in the newer value, only in the older one, or in both with a new value. */
|
|
177
9
|
type QueryDevtoolsDiffKind = 'added' | 'removed' | 'changed';
|
|
@@ -379,27 +211,6 @@ type CacheRow = {
|
|
|
379
211
|
bytes: number;
|
|
380
212
|
isEstimatedBytes: boolean;
|
|
381
213
|
};
|
|
382
|
-
/** A repository the panel found, together with the client name/base URL it was registered under. */
|
|
383
|
-
type RepositoryInfo = {
|
|
384
|
-
repository: QueryRepository;
|
|
385
|
-
name: string;
|
|
386
|
-
baseUrl: string;
|
|
387
|
-
client: QueryClient | null;
|
|
388
|
-
};
|
|
389
|
-
/** One client's cache, as the Cache tab lists it - every entry measured, with the client's poll states. */
|
|
390
|
-
type CacheView = {
|
|
391
|
-
name: string;
|
|
392
|
-
baseUrl: string;
|
|
393
|
-
repository: QueryRepository;
|
|
394
|
-
rows: CacheRow[];
|
|
395
|
-
bytes: number;
|
|
396
|
-
isEstimatedBytes: boolean;
|
|
397
|
-
unused: number;
|
|
398
|
-
pollStates: Record<string, QueryKeyLockState>;
|
|
399
|
-
client: QueryClient | null;
|
|
400
|
-
/** The entries this client has lost since the panel was loaded, newest first. */
|
|
401
|
-
dropped: DroppedCacheEntry[];
|
|
402
|
-
};
|
|
403
214
|
/** What each tab holds, as its badge reports it: how many entries, and how many of them are failing. */
|
|
404
215
|
type TabBadge = {
|
|
405
216
|
count: number;
|
|
@@ -407,452 +218,6 @@ type TabBadge = {
|
|
|
407
218
|
errorNoun?: string;
|
|
408
219
|
};
|
|
409
220
|
|
|
410
|
-
/**
|
|
411
|
-
* Everything a tab or the shared detail drawer reads from - or writes back into - the always-mounted
|
|
412
|
-
* `<et-query-devtools>` panel: cross-tab registries, the JIT editor, copy/export actions, the value
|
|
413
|
-
* explorer and pane sizing. A tab component only ever exists while it is the active one, so anything a
|
|
414
|
-
* tab needs to survive being switched away from (a drawer's own selection, the persisted panel chrome)
|
|
415
|
-
* has to live here instead of on the tab itself. Every member below is named and shaped exactly like the
|
|
416
|
-
* panel's own field/method it stands in for.
|
|
417
|
-
*
|
|
418
|
-
* @see injectQueryDevtoolsHost
|
|
419
|
-
*/
|
|
420
|
-
type QueryDevtoolsHost = {
|
|
421
|
-
selectTab(tab: DevtoolsTab): void;
|
|
422
|
-
/** Jumps to the Queries tab with this query selected - the Events tab is a way in, not a dead end. */
|
|
423
|
-
selectQuery(id: string): void;
|
|
424
|
-
/** Jumps to the Forms tab with this form selected. */
|
|
425
|
-
selectForm(id: string): void;
|
|
426
|
-
queryEntries: Signal<QueryDevtoolsEntry[]>;
|
|
427
|
-
stackEntries: Signal<QueryDevtoolsEntry[]>;
|
|
428
|
-
sequenceEntries: Signal<QueryDevtoolsEntry[]>;
|
|
429
|
-
batchEntries: Signal<QueryDevtoolsEntry[]>;
|
|
430
|
-
formEntries: Signal<QueryDevtoolsEntry[]>;
|
|
431
|
-
authEntries: Signal<QueryDevtoolsEntry[]>;
|
|
432
|
-
wsEntries: Signal<QueryDevtoolsEntry[]>;
|
|
433
|
-
repositories: Signal<RepositoryInfo[]>;
|
|
434
|
-
/**
|
|
435
|
-
* The cache per client, with every entry's size measured. Reading each response inside the computed is
|
|
436
|
-
* what keeps the totals current: a cache mutation bumps `cacheVersion`, but a response landing in an
|
|
437
|
-
* entry that is already there does not.
|
|
438
|
-
*/
|
|
439
|
-
cacheView: Signal<CacheView[]>;
|
|
440
|
-
refetchCacheEntry(entry: QueryRepositoryCacheEntry): void;
|
|
441
|
-
evictCacheEntry(repository: QueryRepository, key: string): void;
|
|
442
|
-
/** Drops every entry of one client, consumers included - the cold-start check that does not need a reload. */
|
|
443
|
-
evictAllCacheEntries(repository: QueryRepository): void;
|
|
444
|
-
toggleCacheValue(clientName: string, key: string): void;
|
|
445
|
-
isCacheValueExpanded(clientName: string, key: string): boolean;
|
|
446
|
-
cacheFreshness(entry: QueryRepositoryCacheEntry): string;
|
|
447
|
-
cacheSync(entry: QueryRepositoryCacheEntry, pollStates: Record<string, unknown>): string;
|
|
448
|
-
cachePersistence(entry: QueryRepositoryCacheEntry): string;
|
|
449
|
-
/** How many responses this client has on disk, which is usually more than it has in memory. */
|
|
450
|
-
persistedCount(client: QueryClient): number;
|
|
451
|
-
clearPersistedQueries(client: QueryClient): void;
|
|
452
|
-
/** The features of the client behind a cache tab card, or `null` for a client without any. */
|
|
453
|
-
clientFeatures(client: QueryClient | null | undefined): QueryDevtoolsFeature[] | null;
|
|
454
|
-
/**
|
|
455
|
-
* Every Web Lock held or queued across this origin, decoded, or `null` in a browser without the Web
|
|
456
|
-
* Locks API. Empty while the Locks tab has not read its first snapshot - it polls, because Web Locks
|
|
457
|
-
* has no change event to listen to.
|
|
458
|
-
*/
|
|
459
|
-
lockRows: Signal<DevtoolsLockRow[] | null>;
|
|
460
|
-
/** Where this tab stands on one lock, as a chip: whether it holds it, waits for it, or is not in it. */
|
|
461
|
-
lockStanding(row: DevtoolsLockRow): QueryDevtoolsChip;
|
|
462
|
-
/** Unique client names present across queries and auth providers, for the Queries/Timeline pickers. */
|
|
463
|
-
clientNames: Signal<string[]>;
|
|
464
|
-
/** What each tab holds - also drives the tab bar's own badges, so it lives here rather than per-tab. */
|
|
465
|
-
tabBadges: Signal<Record<DevtoolsTab, TabBadge>>;
|
|
466
|
-
/**
|
|
467
|
-
* Every client the Faults tab can arm, with the fault it currently carries. Also feeds the
|
|
468
|
-
* cross-tab "Faults armed" banner and the session export, so it lives here rather than on the tab.
|
|
469
|
-
*/
|
|
470
|
-
faultClients: Signal<{
|
|
471
|
-
name: string;
|
|
472
|
-
baseUrl: string;
|
|
473
|
-
fault: QueryDevtoolsFault;
|
|
474
|
-
armed: boolean;
|
|
475
|
-
}[]>;
|
|
476
|
-
/**
|
|
477
|
-
* The queries in scope before the Queries tab's own search box and status chips narrow them further:
|
|
478
|
-
* either the picked client's, or exactly the inspected element's. Also what the Timeline tab scopes
|
|
479
|
-
* its runs to, which is why this lives here rather than on the Queries tab alone.
|
|
480
|
-
*/
|
|
481
|
-
scopedQueries: Signal<QueryDevtoolsEntry[]>;
|
|
482
|
-
/** 1-second tick driving every countdown/freshness readout across tabs. */
|
|
483
|
-
clock: Signal<number>;
|
|
484
|
-
findQuery(id: string | null): QueryDevtoolsSelection | null;
|
|
485
|
-
eventQueryId(event: EventLogItem): string | null;
|
|
486
|
-
queryLinkFor(entry: QueryDevtoolsEntry | undefined, query?: AnyQuery): QueryLink;
|
|
487
|
-
asStack(entry: QueryDevtoolsEntry): AnyQueryStack;
|
|
488
|
-
asPagedStack(entry: QueryDevtoolsEntry): AnyPagedQueryStack;
|
|
489
|
-
asSequence(entry: QueryDevtoolsEntry): QuerySequence<unknown[]>;
|
|
490
|
-
asBatch(entry: QueryDevtoolsEntry): AnyQueryBatch;
|
|
491
|
-
asAuth(entry: QueryDevtoolsEntry): AnyBearerAuthProvider;
|
|
492
|
-
asWs(entry: QueryDevtoolsEntry): WebSocketDevtoolsHandle;
|
|
493
|
-
asForm(entry: QueryDevtoolsEntry): QueryDevtoolsFormHandle;
|
|
494
|
-
authTokenPayload(auth: AnyBearerAuthProvider): Record<string, unknown> | null;
|
|
495
|
-
authQueryKeys(auth: AnyBearerAuthProvider): string[];
|
|
496
|
-
/** The access-token expiry the app acts on, plus the lifetime the panel has armed over it. */
|
|
497
|
-
authTokenLifetime(entry: QueryDevtoolsEntry): QueryDevtoolsTokenLifetime;
|
|
498
|
-
/** The multi-tab leadership chip, or `null` for a provider without `withBearerAuthMultiTabSync`. */
|
|
499
|
-
authLeadership(auth: AnyBearerAuthProvider): QueryDevtoolsChip | null;
|
|
500
|
-
queryStatus(query: AnyQuery): 'idle' | 'loading' | 'success' | 'error';
|
|
501
|
-
isStale(query: AnyQuery): boolean;
|
|
502
|
-
/** Whether an entry is showing an armed response override or a devtools-faulted outcome. */
|
|
503
|
-
isTampered(entry: QueryDevtoolsEntry): boolean;
|
|
504
|
-
/** Whether armed response overrides are stored and replayed on the next load. */
|
|
505
|
-
overridesPersist(): boolean;
|
|
506
|
-
toggleOverridesPersist(): void;
|
|
507
|
-
/** Where they are kept, named for a title or a hint (`sessionStorage`, `localStorage`, `not kept`). */
|
|
508
|
-
overridesScopeLabel(): string;
|
|
509
|
-
/** Puts the panel's layout, filters, pins and stored overrides back to defaults, keeping the settings. */
|
|
510
|
-
resetDevtools(): void;
|
|
511
|
-
requestProgress(query: AnyQuery): RequestProgress | null;
|
|
512
|
-
retryCause(status: number): string;
|
|
513
|
-
requestUrl(query: AnyQuery): string | null;
|
|
514
|
-
requestPath(url: string): string;
|
|
515
|
-
queryArgs(query: AnyQuery): unknown;
|
|
516
|
-
/**
|
|
517
|
-
* The headers the query's last run sent, or - before it has run - the ones its args and its client
|
|
518
|
-
* resolve to now. `null` when there are none, or while a header provider cannot resolve yet.
|
|
519
|
-
*/
|
|
520
|
-
requestHeaders(query: AnyQuery): Record<string, string> | null;
|
|
521
|
-
routeSegments(entry: QueryDevtoolsEntry | undefined, query: AnyQuery): RouteSegment[];
|
|
522
|
-
queryActivity(entry: QueryDevtoolsEntry): QueryActivity;
|
|
523
|
-
linkActivity(link: QueryLink): QueryActivity;
|
|
524
|
-
stackActivity(stack: AnyQueryStack | AnyPagedQueryStack): QueryActivity;
|
|
525
|
-
sequenceActivity(sequence: QuerySequence<unknown[]>): QueryActivity;
|
|
526
|
-
queriesForStack(stack: AnyQueryStack | AnyPagedQueryStack): QueryLink[];
|
|
527
|
-
queriesForSequence(sequence: QuerySequence<unknown[]>): QueryLink[];
|
|
528
|
-
/**
|
|
529
|
-
* The queries a form feeds, discovered from the reads its `value()` recorded while their args were
|
|
530
|
-
* built - so a form that nothing consumes yet reads as exactly that.
|
|
531
|
-
*/
|
|
532
|
-
queriesDrivenByForm(entry: QueryDevtoolsEntry): QueryLink[];
|
|
533
|
-
sequenceStepStatus(sequence: QuerySequence<unknown[]>, index: number): QuerySequenceStatus;
|
|
534
|
-
stepSnapshot(sequence: QuerySequence<unknown[]>, index: number): AnyQuerySnapshot | null;
|
|
535
|
-
/** Whether a sequence step's in/out detail (`<entryId>:<stepIndex>`) is expanded - persisted. */
|
|
536
|
-
isStepExpanded(entryId: string, index: number): boolean;
|
|
537
|
-
toggleStep(entryId: string, index: number): void;
|
|
538
|
-
/** A batch's route with its path params left as `:name` - a batch fills them in per item, not once. */
|
|
539
|
-
batchRouteSegments(entry: QueryDevtoolsEntry): RouteSegment[];
|
|
540
|
-
/**
|
|
541
|
-
* The batch entry that created a query, or `null` for a query no batch did. What lets the Queries list
|
|
542
|
-
* fold a bulk run's items under one row instead of listing whatever it has in flight.
|
|
543
|
-
*/
|
|
544
|
-
batchOf(entry: QueryDevtoolsEntry): QueryDevtoolsEntry | null;
|
|
545
|
-
/**
|
|
546
|
-
* The item queries a batch has in flight. Only those: a batch destroys each item's query the moment
|
|
547
|
-
* that item settles, so a settled item is read from {@link batchItems} instead.
|
|
548
|
-
*/
|
|
549
|
-
queriesForBatch(entry: QueryDevtoolsEntry): QueryLink[];
|
|
550
|
-
/** A batch's settled items, failures first and capped - see {@link BatchItemView}. */
|
|
551
|
-
batchItems(entry: QueryDevtoolsEntry): BatchItemView;
|
|
552
|
-
/**
|
|
553
|
-
* The registry entry of one of a batch's items, or `null` once it has fallen out of the batch's capped
|
|
554
|
-
* tombstone tail - which is what makes an item row openable only while its query is still kept.
|
|
555
|
-
*/
|
|
556
|
-
batchItemQueryId(entry: QueryDevtoolsEntry, index: number): string | null;
|
|
557
|
-
/** An item's throughput line (`12.4 items/s · ~8s left`), or `null` before there is a rate to show. */
|
|
558
|
-
batchThroughput(batch: AnyQueryBatch): string | null;
|
|
559
|
-
/** Whether a batch item's args/response detail (`<entryId>:<itemIndex>`) is expanded - persisted. */
|
|
560
|
-
isBatchItemExpanded(entryId: string, index: number): boolean;
|
|
561
|
-
toggleBatchItem(entryId: string, index: number): void;
|
|
562
|
-
/** Keys of the Queries-list groups of identical rows the user opened - persisted. */
|
|
563
|
-
expandedQueryGroups: Signal<ReadonlySet<string>>;
|
|
564
|
-
toggleQueryGroup(key: string): void;
|
|
565
|
-
expandQueryGroup(key: string): void;
|
|
566
|
-
/** Which way the Queries list sorts by last-executed time - persisted. */
|
|
567
|
-
queryRecentFirst: WritableSignal<boolean>;
|
|
568
|
-
/** Whether the Queries list is arranged as a tree of route paths instead of a flat list - persisted. */
|
|
569
|
-
queryTreeView: WritableSignal<boolean>;
|
|
570
|
-
/** The path folders the user closed. Collapsed, not expanded - a tree opens open. */
|
|
571
|
-
collapsedQueryPaths: Signal<ReadonlySet<string>>;
|
|
572
|
-
toggleQueryPath(key: string): void;
|
|
573
|
-
/** The element a query was created in, or `null` for one created outside a component/directive. */
|
|
574
|
-
locatableElement(entry: QueryDevtoolsEntry): HTMLElement | null;
|
|
575
|
-
locateQuery(entry: QueryDevtoolsEntry): void;
|
|
576
|
-
locateState: Signal<'idle' | 'located' | 'offscreen'>;
|
|
577
|
-
resetStats(entry: QueryDevtoolsEntry): void;
|
|
578
|
-
executeQuery(selection: QueryDevtoolsSelection, allowCache: boolean): void;
|
|
579
|
-
resetQuery(query: AnyQuery): void;
|
|
580
|
-
formatDuration(ms: number | null): string;
|
|
581
|
-
formatBytes(bytes: number): string;
|
|
582
|
-
formatTransferred(bytes: number, isEstimated: boolean): string;
|
|
583
|
-
formatSpeed(bytesPerSecond: number): string;
|
|
584
|
-
formatPercent(percentage: number): string;
|
|
585
|
-
formatCountdown(ms: number | null): string;
|
|
586
|
-
formatTime(timestamp: number | null): string;
|
|
587
|
-
gqlDocument(doc: string): string;
|
|
588
|
-
inlineValue(value: unknown): string;
|
|
589
|
-
featureLabel(type: string): string;
|
|
590
|
-
featureSummary(feature: QueryDevtoolsFeature): string;
|
|
591
|
-
detailTab: WritableSignal<DetailTab>;
|
|
592
|
-
editorMode: WritableSignal<'none' | 'response' | 'args'>;
|
|
593
|
-
responseDraft: WritableSignal<string>;
|
|
594
|
-
argsDraft: WritableSignal<string>;
|
|
595
|
-
/** The text the currently open editor was seeded with - not a signal, see the field's own doc. */
|
|
596
|
-
editorSeed: string;
|
|
597
|
-
editError: Signal<string | null>;
|
|
598
|
-
openResponseEditor(query: AnyQuery): void;
|
|
599
|
-
openArgsEditor(selection: QueryDevtoolsSelection): void;
|
|
600
|
-
applyResponse(query: AnyQuery): void;
|
|
601
|
-
applyArgs(query: AnyQuery): void;
|
|
602
|
-
cancelEditor(): void;
|
|
603
|
-
forceLoading(query: AnyQuery): void;
|
|
604
|
-
forceError(query: AnyQuery): void;
|
|
605
|
-
forceEmpty(query: AnyQuery): void;
|
|
606
|
-
clearForced(query: AnyQuery): void;
|
|
607
|
-
diffRunIndex: WritableSignal<number | null>;
|
|
608
|
-
/** The run the diff compares against, or `null` to derive it - see the panel's own field. */
|
|
609
|
-
diffBaseRunIndex: WritableSignal<number | null>;
|
|
610
|
-
toggleRunDiff(entry: QueryDevtoolsEntry, run: QueryDevtoolsRun): void;
|
|
611
|
-
/** Which end of the open diff a run is, or `null` if it is not one of the two. */
|
|
612
|
-
diffRunRole(entry: QueryDevtoolsEntry, run: QueryDevtoolsRun): 'base' | 'compare' | null;
|
|
613
|
-
responseDiff(entry: QueryDevtoolsEntry): {
|
|
614
|
-
before: QueryDevtoolsRun;
|
|
615
|
-
after: QueryDevtoolsRun;
|
|
616
|
-
diff: QueryDevtoolsDiff;
|
|
617
|
-
} | null;
|
|
618
|
-
canDiffRun(entry: QueryDevtoolsEntry, run: QueryDevtoolsRun): boolean;
|
|
619
|
-
queryRuns(entry: QueryDevtoolsEntry): QueryDevtoolsRun[];
|
|
620
|
-
runStatus(run: QueryDevtoolsRun): string;
|
|
621
|
-
/** How many bodies a query retains, which is what bounds how far back a diff can reach. */
|
|
622
|
-
retainedResponseCount: Signal<number>;
|
|
623
|
-
/** Moves the whole response diff one run older or newer, from the diff header. */
|
|
624
|
-
canStepRunDiff(entry: QueryDevtoolsEntry, older: boolean): boolean;
|
|
625
|
-
stepRunDiff(entry: QueryDevtoolsEntry, older: boolean): void;
|
|
626
|
-
errorRunIndex: WritableSignal<number | null>;
|
|
627
|
-
toggleRunError(run: QueryDevtoolsRun): void;
|
|
628
|
-
pickedRunError(entry: QueryDevtoolsEntry): {
|
|
629
|
-
run: QueryDevtoolsRun;
|
|
630
|
-
error: QueryDevtoolsRunError;
|
|
631
|
-
} | null;
|
|
632
|
-
copiedReport: QueryDevtoolsCopiedTick<boolean>;
|
|
633
|
-
copiedInsomnia: QueryDevtoolsCopiedTick<boolean>;
|
|
634
|
-
copiedCurl: QueryDevtoolsCopiedTick<boolean>;
|
|
635
|
-
copiedGql: QueryDevtoolsCopiedTick<boolean>;
|
|
636
|
-
copiedRoute: QueryDevtoolsCopiedTick<boolean>;
|
|
637
|
-
copyReport(entry: QueryDevtoolsEntry, query: AnyQuery): void;
|
|
638
|
-
copyInsomniaRequest(entry: QueryDevtoolsEntry, query: AnyQuery): void;
|
|
639
|
-
copyCurlRequest(entry: QueryDevtoolsEntry, query: AnyQuery): void;
|
|
640
|
-
copyGqlDocument(doc: string): void;
|
|
641
|
-
/** The absolute URL of the last request, or the rendered route for a query that has not run. */
|
|
642
|
-
copyableRoute(entry: QueryDevtoolsEntry, query: AnyQuery): string;
|
|
643
|
-
copyableRouteTitle(entry: QueryDevtoolsEntry, query: AnyQuery): string;
|
|
644
|
-
copyRoute(entry: QueryDevtoolsEntry, query: AnyQuery): void;
|
|
645
|
-
refreshesFor(entryId: string): {
|
|
646
|
-
id: number;
|
|
647
|
-
timestamp: number;
|
|
648
|
-
label: string;
|
|
649
|
-
}[];
|
|
650
|
-
/** What asked for a refresh, on one line - shared by the drawer's "Refetched by" and the Events tab. */
|
|
651
|
-
causeLabel(cause: QueryRefreshCause): string;
|
|
652
|
-
formsDrivingQuery(entry: QueryDevtoolsEntry): QueryDevtoolsEntry[];
|
|
653
|
-
/** Shared value-explorer search term, read (and set) from every drawer's Data sub-tab. */
|
|
654
|
-
jsonSearch: WritableSignal<string>;
|
|
655
|
-
jsonSearchTerm: Signal<string>;
|
|
656
|
-
jsonExpandedPaths: Signal<ReadonlySet<string>>;
|
|
657
|
-
jsonCollapsedPaths: Signal<ReadonlySet<string>>;
|
|
658
|
-
toggleJsonPath(path: string, expand: boolean): void;
|
|
659
|
-
selectedClientName: WritableSignal<string | null>;
|
|
660
|
-
selectedQueryId: WritableSignal<string | null>;
|
|
661
|
-
selectedQuery: Signal<{
|
|
662
|
-
entry: QueryDevtoolsEntry;
|
|
663
|
-
query: AnyQuery;
|
|
664
|
-
} | null>;
|
|
665
|
-
queryFilter: WritableSignal<string>;
|
|
666
|
-
queryFacets: WritableSignal<ReadonlySet<QueryListFacet>>;
|
|
667
|
-
/** The entry ids sorted to the top of the Queries list. Persisted apart from the rest - see the panel. */
|
|
668
|
-
pinnedQueryIds: Signal<ReadonlySet<string>>;
|
|
669
|
-
isQueryPinned(entry: QueryDevtoolsEntry): boolean;
|
|
670
|
-
toggleQueryPin(entry: QueryDevtoolsEntry): void;
|
|
671
|
-
/** When set (via inspect), the Queries list is filtered to exactly these entry ids. */
|
|
672
|
-
inspectFilterIds: WritableSignal<string[] | null>;
|
|
673
|
-
selectClient(name: string | null): void;
|
|
674
|
-
clearInspectFilter(): void;
|
|
675
|
-
toggleFacet(facet: QueryListFacet): void;
|
|
676
|
-
/** Drops the search term and the status chips, keeping the client / inspection scope. */
|
|
677
|
-
clearQueryFilters(): void;
|
|
678
|
-
/**
|
|
679
|
-
* Downloads the given queries (already scoped/filtered by the caller) as one Insomnia collection,
|
|
680
|
-
* filed into a folder per query client.
|
|
681
|
-
*/
|
|
682
|
-
downloadInsomniaCollection(items: {
|
|
683
|
-
entry: QueryDevtoolsEntry;
|
|
684
|
-
query: AnyQuery;
|
|
685
|
-
}[], clientLabel: string | null): void;
|
|
686
|
-
/** Downloads a file a tab generated. The panel does it because the panel owns the download injector. */
|
|
687
|
-
downloadTextFile(file: {
|
|
688
|
-
name: string;
|
|
689
|
-
content: string;
|
|
690
|
-
type: string;
|
|
691
|
-
}): void;
|
|
692
|
-
stackSelectedQueryId: WritableSignal<string | null>;
|
|
693
|
-
stackSelectedQuery: Signal<{
|
|
694
|
-
entry: QueryDevtoolsEntry;
|
|
695
|
-
query: AnyQuery;
|
|
696
|
-
} | null>;
|
|
697
|
-
sequenceSelectedQueryId: WritableSignal<string | null>;
|
|
698
|
-
sequenceSelectedQuery: Signal<{
|
|
699
|
-
entry: QueryDevtoolsEntry;
|
|
700
|
-
query: AnyQuery;
|
|
701
|
-
} | null>;
|
|
702
|
-
batchSelectedQueryId: WritableSignal<string | null>;
|
|
703
|
-
batchSelectedQuery: Signal<{
|
|
704
|
-
entry: QueryDevtoolsEntry;
|
|
705
|
-
query: AnyQuery;
|
|
706
|
-
} | null>;
|
|
707
|
-
eventSelectedQueryId: WritableSignal<string | null>;
|
|
708
|
-
eventSelectedQuery: Signal<{
|
|
709
|
-
entry: QueryDevtoolsEntry;
|
|
710
|
-
query: AnyQuery;
|
|
711
|
-
} | null>;
|
|
712
|
-
formSelectedQueryId: WritableSignal<string | null>;
|
|
713
|
-
formSelectedQuery: Signal<{
|
|
714
|
-
entry: QueryDevtoolsEntry;
|
|
715
|
-
query: AnyQuery;
|
|
716
|
-
} | null>;
|
|
717
|
-
/** The form whose detail the Forms tab has expanded - persisted. */
|
|
718
|
-
selectedFormId: WritableSignal<string | null>;
|
|
719
|
-
/** The rolling event log - persisted only in the sense that it survives a tab switch, not a reload. */
|
|
720
|
-
eventLog: WritableSignal<EventLogItem[]>;
|
|
721
|
-
/** The client (by base URL) the event log is scoped to, or `null` for all of them - persisted. */
|
|
722
|
-
eventClient: WritableSignal<string | null>;
|
|
723
|
-
/** Whether the event log is narrowed to failures - persisted. */
|
|
724
|
-
eventErrorsOnly: WritableSignal<boolean>;
|
|
725
|
-
/** Free-text narrowing of every socket's message log - persisted. */
|
|
726
|
-
socketFilter: WritableSignal<string>;
|
|
727
|
-
socketMessages(ws: WebSocketDevtoolsHandle): WebSocketDevtoolsMessage[];
|
|
728
|
-
socketDirectionLabel(message: WebSocketDevtoolsMessage): string;
|
|
729
|
-
emitSocketMessage(options: {
|
|
730
|
-
entry: QueryDevtoolsEntry;
|
|
731
|
-
event: string;
|
|
732
|
-
data: string;
|
|
733
|
-
}): void;
|
|
734
|
-
/** The message an emit box last failed with, if this is the socket it failed on. */
|
|
735
|
-
socketEmitErrorFor(entryId: string): string | null;
|
|
736
|
-
timelineSelectedQueryId: WritableSignal<string | null>;
|
|
737
|
-
timelineSelectedQuery: Signal<{
|
|
738
|
-
entry: QueryDevtoolsEntry;
|
|
739
|
-
query: AnyQuery;
|
|
740
|
-
} | null>;
|
|
741
|
-
/**
|
|
742
|
-
* The type annotations of each seeded mock body, by mock id. A mock only stores the *name* it was
|
|
743
|
-
* seeded from, and a body seeded from an inline schema has none, so this is the only thing that can
|
|
744
|
-
* label such a body - and it has to outlive the Mocks tab being switched away from.
|
|
745
|
-
*/
|
|
746
|
-
seededTypes: WritableSignal<Record<string, ReadonlyMap<string, string>>>;
|
|
747
|
-
paneAxis: Signal<PaneAxis>;
|
|
748
|
-
listWidth: Signal<number | null>;
|
|
749
|
-
drawerWidth: Signal<number | null>;
|
|
750
|
-
listHeight: Signal<number | null>;
|
|
751
|
-
drawerHeight: Signal<number | null>;
|
|
752
|
-
startPaneResize(event: PointerEvent, target: {
|
|
753
|
-
pane: PaneTarget;
|
|
754
|
-
container: HTMLElement;
|
|
755
|
-
}): void;
|
|
756
|
-
resetPaneSize(pane: PaneTarget): void;
|
|
757
|
-
};
|
|
758
|
-
|
|
759
|
-
type ScopeKey = 'viewState' | 'pins' | 'overrides' | 'mocks' | 'armedMocks' | 'armedFaults' | 'authSessions';
|
|
760
|
-
type ScopeRow = {
|
|
761
|
-
key: ScopeKey;
|
|
762
|
-
label: string;
|
|
763
|
-
/** What is kept, and what `none` costs - the one thing a scope picker cannot show on its own. */
|
|
764
|
-
hint: string;
|
|
765
|
-
/**
|
|
766
|
-
* What to say on the scopes that let this state outlive the page that armed it - a picker cannot show
|
|
767
|
-
* that an app is about to start lying to itself before anyone opens the panel.
|
|
768
|
-
*/
|
|
769
|
-
warn?: {
|
|
770
|
-
scopes: QueryDevtoolsStorageScope[];
|
|
771
|
-
text: string;
|
|
772
|
-
};
|
|
773
|
-
};
|
|
774
|
-
type LimitKey = 'maxEvents' | 'maxDroppedCacheEntries';
|
|
775
|
-
type LimitRow = {
|
|
776
|
-
key: LimitKey;
|
|
777
|
-
label: string;
|
|
778
|
-
min: number;
|
|
779
|
-
max: number;
|
|
780
|
-
step: number;
|
|
781
|
-
hint: string;
|
|
782
|
-
};
|
|
783
|
-
/**
|
|
784
|
-
* Every panel-wide switch in one place - the storage each kind of state uses, the limits the panel would
|
|
785
|
-
* otherwise hold as constants, and the toggles their own tabs also carry.
|
|
786
|
-
*/
|
|
787
|
-
declare class QueryDevtoolsSettingsComponent {
|
|
788
|
-
private document;
|
|
789
|
-
protected host: QueryDevtoolsHost;
|
|
790
|
-
protected readonly SCOPE_ROWS: ScopeRow[];
|
|
791
|
-
protected readonly SCOPES: {
|
|
792
|
-
value: QueryDevtoolsStorageScope;
|
|
793
|
-
label: string;
|
|
794
|
-
}[];
|
|
795
|
-
protected readonly INDEXED_DB_TITLE = "Unavailable: these are read synchronously - view state before the first render, overrides before the first fetch - and IndexedDB cannot answer in time. Only the mock library could tolerate an async store, and it is not wired to one yet.";
|
|
796
|
-
protected readonly LIMIT_ROWS: LimitRow[];
|
|
797
|
-
protected readonly ARM_ALL_MOCKS: () => void;
|
|
798
|
-
protected readonly DISARM_ALL_MOCKS: () => void;
|
|
799
|
-
protected readonly DISARM_ALL_FAULTS: (clientName?: string) => void;
|
|
800
|
-
/** What queries actually retain, which is the application's value unless this panel raised it. */
|
|
801
|
-
protected responseHistory: _angular_core.Signal<number>;
|
|
802
|
-
protected mockCount: _angular_core.Signal<number>;
|
|
803
|
-
protected sessionCount: _angular_core.Signal<number>;
|
|
804
|
-
protected armedMockCount: _angular_core.Signal<number>;
|
|
805
|
-
protected armedFaultCount: _angular_core.Signal<number>;
|
|
806
|
-
/** The same keys the Events tab's own picker offers - see {@link queryDevtoolsEventClients}. */
|
|
807
|
-
protected eventClients: _angular_core.Signal<string[]>;
|
|
808
|
-
protected resetConfirming: _angular_core.WritableSignal<boolean>;
|
|
809
|
-
protected readonly FORGET_SESSIONS: () => void;
|
|
810
|
-
/** The backends the application declared, or an empty list - the card renders only for a declared one. */
|
|
811
|
-
protected apiEnvs: _angular_core.Signal<QueryDevtoolsApiEnvSwitch[]>;
|
|
812
|
-
/** The env id (or typed URL) a switch's key holds, or `null` while the application picks for itself. */
|
|
813
|
-
protected apiEnvValue(apiSwitch: QueryDevtoolsApiEnvSwitch): string | null;
|
|
814
|
-
/** The env a switch falls back to with nothing stored, described for the default button. */
|
|
815
|
-
protected apiEnvFallback(apiSwitch: QueryDevtoolsApiEnvSwitch): {
|
|
816
|
-
label: string;
|
|
817
|
-
production: boolean;
|
|
818
|
-
};
|
|
819
|
-
/** Whether the pick in force - the stored env, or the fallback behind an unwritten key - is production. */
|
|
820
|
-
protected apiEnvIsProduction(apiSwitch: QueryDevtoolsApiEnvSwitch): boolean;
|
|
821
|
-
/** A stored value no declared env carries, which is a URL somebody typed in below. */
|
|
822
|
-
protected apiEnvCustomUrl(apiSwitch: QueryDevtoolsApiEnvSwitch): string;
|
|
823
|
-
/** Writes the application's own key and reloads - it is read before Angular boots, so nothing else can. */
|
|
824
|
-
protected pickApiEnv(apiSwitch: QueryDevtoolsApiEnvSwitch, value: string | null): void;
|
|
825
|
-
protected setCustomApiUrl(apiSwitch: QueryDevtoolsApiEnvSwitch, value: string): void;
|
|
826
|
-
protected settings(): _ethlete_query.QueryDevtoolsSettings;
|
|
827
|
-
protected scopeOf(key: ScopeKey): QueryDevtoolsStorageScope;
|
|
828
|
-
protected limitOf(key: LimitKey): number;
|
|
829
|
-
/** What the picked scope means beyond where the state is kept, or `null` while it means nothing extra. */
|
|
830
|
-
protected warningFor(row: ScopeRow, scope: QueryDevtoolsStorageScope): string | null;
|
|
831
|
-
/** Why one scope is not on offer for a row, for the button's title, or `null` while it is. */
|
|
832
|
-
protected unavailableReason(row: ScopeRow, scope: QueryDevtoolsStorageScope): "Unavailable outside a development build: live access and refresh tokens, and the credentials you typed in, must not outlive this tab on a deployed origin. The vault keeps nothing here unless you pick Session, which keeps it for as long as the tab." | null;
|
|
833
|
-
protected setScope(key: ScopeKey, scope: QueryDevtoolsStorageScope): void;
|
|
834
|
-
protected setLimit(key: LimitKey, value: string): void;
|
|
835
|
-
protected setResponseHistory(value: string): void;
|
|
836
|
-
/** Hands retention back to `provideQueryDevtools({ responseHistory })`. */
|
|
837
|
-
protected clearResponseHistory(): void;
|
|
838
|
-
protected reset(): void;
|
|
839
|
-
protected toggleGoneQueries(): void;
|
|
840
|
-
protected showsGoneQueries(): boolean;
|
|
841
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsSettingsComponent, never>;
|
|
842
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsSettingsComponent, "et-query-devtools-settings", never, {}, {}, never, never, true, never>;
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
/**
|
|
846
|
-
* The waterfall's grid, axis and bars, as a styles-only component the panel mounts when the Timeline tab
|
|
847
|
-
* is first opened.
|
|
848
|
-
*
|
|
849
|
-
* @internal
|
|
850
|
-
*/
|
|
851
|
-
declare class QueryDevtoolsTimelineStylesComponent {
|
|
852
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QueryDevtoolsTimelineStylesComponent, never>;
|
|
853
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QueryDevtoolsTimelineStylesComponent, "et-query-devtools-timeline-styles", never, {}, {}, never, never, true, never>;
|
|
854
|
-
}
|
|
855
|
-
|
|
856
221
|
type DevtoolsDock = 'bottom' | 'top' | 'left' | 'right' | 'float';
|
|
857
222
|
type DevtoolsLayout = DevtoolsDock | 'popout';
|
|
858
223
|
type FloatRect = {
|
|
@@ -900,24 +265,6 @@ type PersistedState = {
|
|
|
900
265
|
jsonExpanded?: string[];
|
|
901
266
|
jsonCollapsed?: string[];
|
|
902
267
|
};
|
|
903
|
-
type ViewportSize = {
|
|
904
|
-
width: number;
|
|
905
|
-
height: number;
|
|
906
|
-
};
|
|
907
|
-
/**
|
|
908
|
-
* The loosest a float may sit: shoved off an edge with only {@link FLOAT_PEEK} left, which is what a
|
|
909
|
-
* drag and a parked panel are held to. **North is never a parking edge** - the title bar is the only
|
|
910
|
-
* thing that drags the panel back, so it may never be the part that leaves.
|
|
911
|
-
*/
|
|
912
|
-
declare const clampFloatToPeek: (rect: FloatRect, viewport: ViewportSize) => FloatRect;
|
|
913
|
-
declare const settledFloatRect: (rect: FloatRect, viewport: ViewportSize) => {
|
|
914
|
-
rect: FloatRect;
|
|
915
|
-
collapsed: boolean;
|
|
916
|
-
};
|
|
917
|
-
declare const resizedFloatRect: (base: FloatRect, { move, viewport }: {
|
|
918
|
-
move: ResizeMoveEvent;
|
|
919
|
-
viewport: ViewportSize;
|
|
920
|
-
}) => FloatRect;
|
|
921
268
|
/**
|
|
922
269
|
* A floating, dockable panel that inspects the live state of the signals-first `@ethlete/query`
|
|
923
270
|
* system: queries, stacks, sequences, bearer auth providers, the repository cache and a rolling
|
|
@@ -1197,11 +544,6 @@ declare class QueryDevtoolsComponent implements OnInit {
|
|
|
1197
544
|
private lockSnapshot;
|
|
1198
545
|
lockRows: _angular_core.Signal<DevtoolsLockRow[] | null>;
|
|
1199
546
|
protected inspectActive: _angular_core.WritableSignal<boolean>;
|
|
1200
|
-
/** @internal */
|
|
1201
|
-
inspectHover: _angular_core.WritableSignal<{
|
|
1202
|
-
rect: DOMRect;
|
|
1203
|
-
entries: QueryDevtoolsEntry[];
|
|
1204
|
-
} | null>;
|
|
1205
547
|
protected locatedRect: _angular_core.WritableSignal<DOMRect | null>;
|
|
1206
548
|
locateState: _angular_core.WritableSignal<"idle" | "located" | "offscreen">;
|
|
1207
549
|
private locate$;
|
|
@@ -1230,7 +572,7 @@ declare class QueryDevtoolsComponent implements OnInit {
|
|
|
1230
572
|
faultClients: _angular_core.Signal<{
|
|
1231
573
|
name: string;
|
|
1232
574
|
baseUrl: string;
|
|
1233
|
-
fault: _ethlete_query
|
|
575
|
+
fault: _ethlete_query.ɵQueryDevtoolsFault;
|
|
1234
576
|
armed: boolean;
|
|
1235
577
|
}[]>;
|
|
1236
578
|
protected armedFaultClients: _angular_core.Signal<string[] | null>;
|
|
@@ -1478,7 +820,7 @@ declare class QueryDevtoolsComponent implements OnInit {
|
|
|
1478
820
|
*/
|
|
1479
821
|
pickedRunError(entry: QueryDevtoolsEntry): {
|
|
1480
822
|
run: QueryDevtoolsRun;
|
|
1481
|
-
error: _ethlete_query
|
|
823
|
+
error: _ethlete_query.ɵQueryDevtoolsRunError;
|
|
1482
824
|
} | null;
|
|
1483
825
|
selectQuery(id: string): void;
|
|
1484
826
|
inlineValue(value: unknown): string;
|
|
@@ -1662,7 +1004,6 @@ declare class QueryDevtoolsComponent implements OnInit {
|
|
|
1662
1004
|
declare const QUERY_DEVTOOLS_IMPORTS: readonly [typeof QueryDevtoolsComponent];
|
|
1663
1005
|
|
|
1664
1006
|
/** The version of `@ethlete/query-devtools` this build was cut from. */
|
|
1665
|
-
declare const QUERY_DEVTOOLS_VERSION = "1.0.0-next.
|
|
1007
|
+
declare const QUERY_DEVTOOLS_VERSION = "1.0.0-next.15";
|
|
1666
1008
|
|
|
1667
|
-
export { QUERY_DEVTOOLS_IMPORTS, QUERY_DEVTOOLS_VERSION,
|
|
1668
|
-
export type { JsonKind };
|
|
1009
|
+
export { QUERY_DEVTOOLS_IMPORTS, QUERY_DEVTOOLS_VERSION, QueryDevtoolsComponent };
|