From 18ef270cc2b312633c0aeab1db0d3b4217def011 Mon Sep 17 00:00:00 2001 From: Chris Zuber Date: Fri, 27 Feb 2026 13:22:53 -0800 Subject: [PATCH] Use DisposableStack for resource cleanup Introduce DisposableStack-based lifecycle management for the barcode scanner: createBarcodeScanner now accepts a `base` (DocumentOrShadowRoot) to find video elements by id and an optional `stack` to manage disposables. Internals now adopt/defer abort controllers, wake lock and media stream via a DisposableStack/AsyncDisposableStack, attach stack disposal on abort, and surface a disposable on the returned scanner object. index.js `start()` was converted to async and updated to use a DisposableStack for start/stop handling. CHANGELOG updated and package.json version bumped to 1.2.3 with dev dependency version bumps. --- CHANGELOG.md | 7 +++++ index.js | 13 +++++---- package-lock.json | 22 +++++++++------ package.json | 12 ++++----- scanner.js | 69 ++++++++++++++++++++++++++++++++--------------- 5 files changed, 80 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2f7638..9382298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [v1.2.3] - 2026-02-27 + +### Added +- Add a `DisposableStack` to clean-up +- Add support for passing a `base` (document or Shadow Root) to get `