Skip to content

Claude/typescript latest features hb vpm - #87

Merged
veillette merged 3 commits into
mainfrom
claude/typescript-latest-features-HbVPM
Jun 6, 2026
Merged

Claude/typescript latest features hb vpm#87
veillette merged 3 commits into
mainfrom
claude/typescript-latest-features-HbVPM

Conversation

@veillette

Copy link
Copy Markdown
Collaborator

No description provided.

claude added 3 commits March 1, 2026 13:08
…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
@veillette
veillette merged commit b09060f into main Jun 6, 2026
3 checks passed
@veillette
veillette deleted the claude/typescript-latest-features-HbVPM branch June 6, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants