@zerotal/devtools 1.8.1 → 1.9.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/CHANGELOG.md +10 -0
- package/api-surface.md +0 -10
- package/package.json +3 -3
- package/src/DevtoolsInjectionMiddleware.ts +3 -0
- package/src/redaction.ts +2 -0
- package/src/tracing.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,16 @@ follows the Zerotal monorepo's unified versioning.
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [1.9.0] — 2026-08-29
|
|
12
|
+
|
|
13
|
+
### Documented
|
|
14
|
+
|
|
15
|
+
- **Every promised export is documented.** The `docs-coverage` gate reads `maturity: stable` as a
|
|
16
|
+
promise about a package's exports, and measures how much of that promise is written down. It
|
|
17
|
+
was 798 gaps across the suite; it is now zero. This package's share is covered on its own
|
|
18
|
+
pages — types named, options shapes described, and the decisions behind them recorded where
|
|
19
|
+
somebody looking for them will find them.
|
|
20
|
+
|
|
11
21
|
## [1.8.1] — 2026-08-26
|
|
12
22
|
|
|
13
23
|
### Fixed
|
package/api-surface.md
CHANGED
|
@@ -45,10 +45,6 @@ class TraceStore = {
|
|
|
45
45
|
subscribe: (fn: Subscriber) => () => void
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
const traceSink = TraceSink
|
|
49
|
-
|
|
50
|
-
function attributeBindings = (sql: string, count: number) => Array<string | undefined>
|
|
51
|
-
|
|
52
48
|
function DevtoolsConfig = (options?: Partial<DevtoolsConfigShape>) => DevtoolsConfigShape
|
|
53
49
|
|
|
54
50
|
function devtoolsEnabled = () => boolean
|
|
@@ -61,10 +57,6 @@ function redactCacheKey = (key: string, options?: RedactionOptions) => string
|
|
|
61
57
|
|
|
62
58
|
function redactValue = (value: unknown, options?: RedactionOptions) => unknown
|
|
63
59
|
|
|
64
|
-
function startDevtoolsStream = () => () => void
|
|
65
|
-
|
|
66
|
-
function traceChannels = () => TraceChannelDescriptor[]
|
|
67
|
-
|
|
68
60
|
function traceStore = () => TraceStore
|
|
69
61
|
|
|
70
62
|
interface AuthInfo = {
|
|
@@ -94,8 +86,6 @@ interface DevtoolsConfigShape = {
|
|
|
94
86
|
redact: RedactionOptions
|
|
95
87
|
}
|
|
96
88
|
|
|
97
|
-
interface DevtoolsInjectionOptions = {}
|
|
98
|
-
|
|
99
89
|
interface DevtoolsPanelPlugin = {
|
|
100
90
|
badge?: () => number | string | undefined
|
|
101
91
|
id: string
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerotal/devtools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"maturity": "stable",
|
|
6
6
|
"private": false,
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"typecheck": "tsc --noEmit"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@zerotal/core": "1.
|
|
34
|
+
"@zerotal/core": "1.9.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"typescript": "^5.8.0",
|
|
38
|
-
"@zerotal/orm": "1.
|
|
38
|
+
"@zerotal/orm": "1.9.0"
|
|
39
39
|
},
|
|
40
40
|
"description": "In-browser developer tools for Zerotal — request traces, an inspector panel, and an extensible tab registry.",
|
|
41
41
|
"keywords": [
|
|
@@ -43,6 +43,7 @@ async function _buildDashboardJs(): Promise<string> {
|
|
|
43
43
|
return _dashboardJs;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
/** @internal */
|
|
46
47
|
export interface DevtoolsInjectionOptions {
|
|
47
48
|
// reserved for future use
|
|
48
49
|
}
|
|
@@ -102,6 +103,8 @@ const SSE_HEARTBEAT_MS = 25_000;
|
|
|
102
103
|
* built the one the app's config asks for.
|
|
103
104
|
*
|
|
104
105
|
* @returns A disposer that unsubscribes and closes connected clients.
|
|
106
|
+
*
|
|
107
|
+
* @internal
|
|
105
108
|
*/
|
|
106
109
|
export function startDevtoolsStream(): () => void {
|
|
107
110
|
const unsubscribe = traceStore().subscribe((trace) => {
|
package/src/redaction.ts
CHANGED
|
@@ -247,6 +247,8 @@ export function redactBindings(
|
|
|
247
247
|
* `SET col = ?`, and `WHERE col <op> ?` (including `IN (?, ?)`, where every
|
|
248
248
|
* placeholder belongs to the same column). Returns `undefined` at any position it
|
|
249
249
|
* cannot attribute.
|
|
250
|
+
*
|
|
251
|
+
* @internal
|
|
250
252
|
*/
|
|
251
253
|
export function attributeBindings(sql: string, count: number): Array<string | undefined> {
|
|
252
254
|
const out: Array<string | undefined> = new Array(count).fill(undefined);
|
package/src/tracing.ts
CHANGED
|
@@ -99,6 +99,8 @@ const _channels = new Map<string, TraceChannelDescriptor>();
|
|
|
99
99
|
*
|
|
100
100
|
* A `hidden` channel is left out: its entries are still recorded and still reach
|
|
101
101
|
* the panel on the trace, but whatever renders them is not this generic row list.
|
|
102
|
+
*
|
|
103
|
+
* @internal
|
|
102
104
|
*/
|
|
103
105
|
export function traceChannels(): TraceChannelDescriptor[] {
|
|
104
106
|
return [...(_channels.values() as Iterable<TraceChannelDescriptor>)]
|
|
@@ -199,6 +201,7 @@ export interface TraceSink {
|
|
|
199
201
|
// nothing: by the time a panel draws a row, the unredacted copy has already been
|
|
200
202
|
// streamed to the browser and written to `.zerotal/devtools.sqlite`, where it
|
|
201
203
|
// sits for a day. The sink is the last point where "not recorded" is still true.
|
|
204
|
+
/** @internal */
|
|
202
205
|
export const traceSink: TraceSink = {
|
|
203
206
|
channel(descriptor: TraceChannelDescriptor): void {
|
|
204
207
|
_channels.set(descriptor.id, descriptor);
|