@flighthq/debug 0.4.0-next.1717.9d6a20b → 0.4.0-next.1725.752ca79
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/debug.d.ts.map +1 -1
- package/dist/debug.js +44 -6
- package/dist/debug.js.map +1 -1
- package/package.json +4 -4
- package/src/debug.test.ts +47 -0
package/dist/debug.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAElB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AASD,wBAAgB,WAAW,CAAC,OAAO,GAAE,QAAQ,CAAC,YAAY,CAAM,GAAG,IAAI,CA6CtE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAIhE;AAGD,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAOD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAE3G;AAID,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE1E"}
|
package/dist/debug.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addLogSink, clearLogChannelLevels, createConsoleLogSink, getLogLevel, removeLogSink, setLogChannelLevel, setLogLevel, } from '@flighthq/log/contract';
|
|
1
|
+
import { addLogSink, clearLogChannelLevel, clearLogChannelLevels, createConsoleLogSink, getLogChannelLevel, getLogLevel, removeLogSink, setLogChannelLevel, setLogLevel, } from '@flighthq/log/contract';
|
|
2
2
|
import { enableColorAdjustmentGuards, enableRenderRegistryGuards } from '@flighthq/render/contract';
|
|
3
3
|
import { LogLevel } from '@flighthq/types/contract';
|
|
4
4
|
// The one call that returns Flight to the zero-debug baseline: removes the sink enableDebug
|
|
@@ -29,11 +29,49 @@ export function enableDebug(options = {}) {
|
|
|
29
29
|
const subsystems = _resolveDebugSubsystems(options.subsystems);
|
|
30
30
|
const channels = _collectDebugChannels(subsystems, options.channels);
|
|
31
31
|
_savedGlobalLevel = getLogLevel();
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
const savedChannelLevels = new Map(channels.map((channel) => [channel, getLogChannelLevel(channel)]));
|
|
33
|
+
try {
|
|
34
|
+
_applyDebugLevels(level, channels);
|
|
35
|
+
_installDebugSink(options.sink ?? createConsoleLogSink());
|
|
36
|
+
for (const hooks of subsystems) {
|
|
37
|
+
_enabledSubsystems.push(hooks);
|
|
38
|
+
hooks.enableGuards?.();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
for (let index = _enabledSubsystems.length - 1; index >= 0; index--) {
|
|
43
|
+
try {
|
|
44
|
+
_enabledSubsystems[index].disableGuards?.();
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Keep unwinding; the original enable error owns this failed transaction.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
_enabledSubsystems.length = 0;
|
|
51
|
+
try {
|
|
52
|
+
_removeDebugSink();
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Keep restoring levels; the original enable error must not be masked.
|
|
56
|
+
}
|
|
57
|
+
for (const [channel, savedLevel] of savedChannelLevels) {
|
|
58
|
+
try {
|
|
59
|
+
if (savedLevel === null)
|
|
60
|
+
clearLogChannelLevel(channel);
|
|
61
|
+
else
|
|
62
|
+
setLogChannelLevel(channel, savedLevel);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Keep restoring the remaining levels; the original enable error must survive.
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
setLogLevel(_savedGlobalLevel);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// The original enable error remains the public failure even if rollback also fails.
|
|
73
|
+
}
|
|
74
|
+
throw error;
|
|
37
75
|
}
|
|
38
76
|
_enabled = true;
|
|
39
77
|
}
|
package/dist/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAQpG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,4FAA4F;AAC5F,6FAA6F;AAC7F,kGAAkG;AAClG,uFAAuF;AACvF,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,KAAK,MAAM,KAAK,IAAI,kBAAkB;QAAE,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;IAChE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED,qGAAqG;AACrG,sFAAsF;AACtF,0FAA0F;AAC1F,wGAAwG;AACxG,qGAAqG;AACrG,mGAAmG;AACnG,sBAAsB;AACtB,MAAM,UAAU,WAAW,CAAC,UAAkC,EAAE;IAC9D,IAAI,QAAQ;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC9C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErE,iBAAiB,GAAG,WAAW,EAAE,CAAC;IAClC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/debug",
|
|
3
|
-
"version": "0.4.0-next.
|
|
3
|
+
"version": "0.4.0-next.1725.752ca79",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/log": "0.4.0-next.
|
|
42
|
-
"@flighthq/render": "0.4.0-next.
|
|
43
|
-
"@flighthq/types": "0.4.0-next.
|
|
41
|
+
"@flighthq/log": "0.4.0-next.1725.752ca79",
|
|
42
|
+
"@flighthq/render": "0.4.0-next.1725.752ca79",
|
|
43
|
+
"@flighthq/types": "0.4.0-next.1725.752ca79"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/debug.test.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
getLogLevel,
|
|
7
7
|
getMemoryLogSinkEntries,
|
|
8
8
|
log,
|
|
9
|
+
setLogChannelLevel,
|
|
9
10
|
setLogLevel,
|
|
10
11
|
} from '@flighthq/log/contract';
|
|
11
12
|
import {
|
|
@@ -157,6 +158,52 @@ describe('enableDebug', () => {
|
|
|
157
158
|
log(LogLevel.Debug, 'once', 'render');
|
|
158
159
|
expect(readMemory(memory)).toHaveLength(1);
|
|
159
160
|
});
|
|
161
|
+
|
|
162
|
+
it('unwinds a partially enabled guard transaction without masking its original error', () => {
|
|
163
|
+
const memory = createMemoryLogSink(16);
|
|
164
|
+
const originalError = new Error('audio guard enable failed');
|
|
165
|
+
const rollbackError = new Error('input guard rollback failed');
|
|
166
|
+
const activeGuards = new Set<string>();
|
|
167
|
+
const rollbackOrder: string[] = [];
|
|
168
|
+
const hooks = (name: string, failEnable = false, failRollback = false) => ({
|
|
169
|
+
channels: [name],
|
|
170
|
+
disableGuards: (): void => {
|
|
171
|
+
activeGuards.delete(name);
|
|
172
|
+
rollbackOrder.push(name);
|
|
173
|
+
if (failRollback) throw rollbackError;
|
|
174
|
+
},
|
|
175
|
+
enableGuards: (): void => {
|
|
176
|
+
activeGuards.add(name);
|
|
177
|
+
if (failEnable) throw originalError;
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
registerDebugSubsystem('render', hooks('render'));
|
|
181
|
+
registerDebugSubsystem('input', hooks('input', false, true));
|
|
182
|
+
registerDebugSubsystem('audio', hooks('audio', true));
|
|
183
|
+
setLogLevel(LogLevel.Warn);
|
|
184
|
+
setLogChannelLevel('render', LogLevel.Error);
|
|
185
|
+
setLogChannelLevel('input', LogLevel.Info);
|
|
186
|
+
setLogChannelLevel('unrelated', LogLevel.Verbose);
|
|
187
|
+
|
|
188
|
+
let thrown: unknown;
|
|
189
|
+
try {
|
|
190
|
+
enableDebug({ subsystems: ['render', 'input', 'audio'], sink: memory.sink });
|
|
191
|
+
} catch (error) {
|
|
192
|
+
thrown = error;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
expect(thrown).toBe(originalError);
|
|
196
|
+
expect(isDebugEnabled()).toBe(false);
|
|
197
|
+
expect([...activeGuards]).toEqual([]);
|
|
198
|
+
expect(rollbackOrder).toEqual(['audio', 'input', 'render']);
|
|
199
|
+
expect(getLogLevel()).toBe(LogLevel.Warn);
|
|
200
|
+
expect(getLogChannelLevel('render')).toBe(LogLevel.Error);
|
|
201
|
+
expect(getLogChannelLevel('input')).toBe(LogLevel.Info);
|
|
202
|
+
expect(getLogChannelLevel('audio')).toBeNull();
|
|
203
|
+
expect(getLogChannelLevel('unrelated')).toBe(LogLevel.Verbose);
|
|
204
|
+
log(LogLevel.Error, 'after failed enable');
|
|
205
|
+
expect(readMemory(memory)).toEqual([]);
|
|
206
|
+
});
|
|
160
207
|
});
|
|
161
208
|
|
|
162
209
|
describe('enableFlightDiagnostics', () => {
|