Claude/typescript latest features hb vpm - #86
Merged
Conversation
…es, template literals, satisfies
- tsconfig: bump lib from ES2022 to ES2024 + ESNext.Disposable, enabling
Symbol.dispose and Promise.withResolvers type definitions
- webcam.ts: add withDispose() helper to adapt .close() APIs to Symbol.dispose;
use `using decoder = withDispose(new ImageDecoder(...))` in getAnimatedWebPInfo
so decoder.close() is guaranteed on early returns and exceptions; add
[Symbol.dispose] to WebcamRecorder as an alias to cleanup(); rewrite
stopRecording() and measureEmpiricalFrameRate() with Promise.withResolvers()
to flatten the guard clauses out of the Promise constructor
- PlottableProperty.ts: export isRecordPlottable / isLivePlottable type-guard
functions with explicit p is T predicates (TS 5.5 can infer these, but
explicit guards also make .filter(isRecordPlottable) produce RecordPlottable[])
- ConfigurableGraph.ts: replace inline "accessor" in x checks with the named
type guards from PlottableProperty
- OverlayToolsModel.ts: add VelocityUnit and AccelerationUnit template literal
types derived from CalibrationUnit; narrow velocityUnitProperty and
accelerationUnitProperty from TReadOnlyProperty<string> to the precise types
- brand.ts: switch from const Brand: TBrand = {} (widens literal types) to
const Brand = {} satisfies TBrand (validates shape while preserving literals)
https://claude.ai/code/session_014gWKu1ZSG9hxhwpFd776KV
…, toSorted
- VideoPlayerNode.ts: create a single AbortController for all video-element
event listeners (error, loadstart, loadedmetadata x2, durationchange,
ended, timeupdate) plus the document keydown listener; dispose() calls
listenerController.abort() instead of 8 individual removeEventListener calls
- AutoTrackerNode.ts: same pattern for the timeupdate/seeked pair; dispose()
now calls listenerController.abort() instead of two removeEventListener calls
- OpenCVTracker.ts: replace Object.assign(err, { cause: e }) with the native
Error constructor second-argument form: new Error(msg, { cause: e }) (ES2022)
- TrackingModel.ts: replace spread-then-sort with Array.toSorted() (ES2023),
and tracks[tracks.length - 1] with tracks.at(-1) (ES2022)
https://claude.ai/code/session_014gWKu1ZSG9hxhwpFd776KV
- AutoTrackerNode.ts: replace .then().catch() promise chain with an async IIFE so the tracker-init error path reads as a flat try/catch block. The floating- promise behaviour is preserved (fire-and-forget from a sync DragListener callback); the IIFE is just cleaner than nested callback chains. - AxisGestureHandler.ts / ZoomGestureHandler.ts: replace Array.from(map.values()) + two indexed reads with a single destructuring assignment directly from the MapIterator: `const [p0, p1] = activePointers.values()` (ES2024 iterator destructuring — no intermediate array allocation). - PlaybackControlsNode.ts: replace Array.from(speedMap.entries()).map(...) with [...speedMap].map(...); Map is iterable and spreads as [key, value][] pairs, making the intermediate Array.from redundant. https://claude.ai/code/session_014gWKu1ZSG9hxhwpFd776KV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.