Skip to content

chore(deps): bump tar and @mapbox/node-pre-gyp in /packages/server#159

Closed
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/npm_and_yarn/packages/server/multi-e46b564efd
Closed

chore(deps): bump tar and @mapbox/node-pre-gyp in /packages/server#159
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/npm_and_yarn/packages/server/multi-e46b564efd

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Feb 18, 2026

Bumps tar to 7.5.9 and updates ancestor dependency @mapbox/node-pre-gyp. These dependencies need to be updated together.

Updates tar from 6.1.11 to 7.5.9

Release notes

Sourced from tar's releases.

v6.1.13

6.1.13 (2022-12-07)

Dependencies

v6.1.12

6.1.12 (2022-10-31)

Bug Fixes

Documentation

Changelog

Sourced from tar's changelog.

Changelog

7.5

  • Added zstd compression support.
  • Consistent TOCTOU behavior in sync t.list
  • Only read from ustar block if not specified in Pax
  • Fix sync tar.list when file size reduces while reading
  • Sanitize absolute linkpaths properly
  • Prevent writing hardlink entries to the archive ahead of their file target

7.4

  • Deprecate onentry in favor of onReadEntry for clarity.

7.3

  • Add onWriteEntry option

7.2

  • DRY the command definitions into a single makeCommand method, and update the type signatures to more appropriately infer the return type from the options and arguments provided.

7.1

  • Update minipass to v7.1.0
  • Update the type definitions of write() and end() methods on Unpack and Parser classes to be compatible with the NodeJS.WritableStream type in the latest versions of @types/node.

7.0

  • Drop support for node <18
  • Rewrite in TypeScript, provide ESM and CommonJS hybrid interface
  • Add tree-shake friendly exports, like import('tar/create') and import('tar/read-entry') to get individual functions or classes.
  • Add chmod option that defaults to false, and deprecate noChmod. That is, reverse the default option regarding explicitly setting file system modes to match tar entry settings.
  • Add processUmask option to avoid having to call process.umask() when chmod: true (or noChmod: false) is set.

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by isaacs, a new releaser for tar since your current version.

Install script changes

This version adds prepare script that runs during installation. Review the package contents before updating.


Updates @mapbox/node-pre-gyp from 1.0.9 to 2.0.3

Release notes

Sourced from @​mapbox/node-pre-gyp's releases.

v2.0.3

v2.0.2

  • Support private ACL for S3 buckets #923

v2.0.1

v2.0.0

  • Supported Node versions are now stable versions of Node 18+. We will attempt to track the Node.js release schedule and will regularly retire support for versions that have reached EOL.
  • Fixed use of s3ForcePathStyle for installation #650
  • Upgraded to https-proxy-agent 7.0.5, nopt 8.0.0, semver 7.5.3, and tar 7.4.0
  • Replaced npmlog with consola
  • Removed rimraf and make-dir as dependencies

v2.0.0-rc.0

  • Supported Node versions are now stable versions of Node 18+. We will attempt to track the Node.js release schedule and will regularly retire support for versions that have reached EOL.
  • Fixed use of s3ForcePathStyle for installation #650
  • Upgraded to https-proxy-agent 7.0.5, nopt 8.0.0, semver 7.5.3, and tar 7.4.0
  • Replaced npmlog with consola
  • Removed rimraf and make-dir as dependencies
Changelog

Sourced from @​mapbox/node-pre-gyp's changelog.

2.0.3

2.0.2

  • Support private ACL for S3 buckets #923

2.0.1

2.0.0

  • Supported Node versions are now stable versions of Node 18+. We will attempt to track the Node.js release schedule and will regularly retire support for versions that have reached EOL.
  • Fixed use of s3ForcePathStyle for installation #650
  • Upgraded to https-proxy-agent 7.0.5, nopt 8.0.0, semver 7.5.3, and tar 7.4.0
  • Replaced npmlog with consola
  • Removed rimraf and make-dir as dependencies

1.0.11

1.0.10

  • Upgraded minimist to 1.2.6 to address dependabot alert CVE-2021-44906
Commits
Maintainer changes

This version was pushed to npm by mbx-npm-03-production, a new releaser for @​mapbox/node-pre-gyp since your current version.


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [tar](https://github.com/isaacs/node-tar) to 7.5.9 and updates ancestor dependency [@mapbox/node-pre-gyp](https://github.com/mapbox/node-pre-gyp). These dependencies need to be updated together.


Updates `tar` from 6.1.11 to 7.5.9
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v6.1.11...v7.5.9)

Updates `@mapbox/node-pre-gyp` from 1.0.9 to 2.0.3
- [Release notes](https://github.com/mapbox/node-pre-gyp/releases)
- [Changelog](https://github.com/mapbox/node-pre-gyp/blob/master/CHANGELOG.md)
- [Commits](mapbox/node-pre-gyp@v1.0.9...v2.0.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.9
  dependency-type: indirect
- dependency-name: "@mapbox/node-pre-gyp"
  dependency-version: 2.0.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Feb 18, 2026
LucasMaupin added a commit that referenced this pull request Mar 6, 2026
…dates

Regenerated packages/server/package-lock.json to ensure consistency
after merging 12 dependabot PRs (#146-#159).

Also apply stashed root/sdk package.json and package-lock.json changes.
@LucasMaupin
Copy link
Copy Markdown
Contributor

Merged into fix/code-review-improvements (#160) to consolidate all updates.

@LucasMaupin LucasMaupin closed this Mar 6, 2026
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot bot commented on behalf of github Mar 6, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot bot deleted the dependabot/npm_and_yarn/packages/server/multi-e46b564efd branch March 6, 2026 12:19
birme pushed a commit that referenced this pull request Mar 19, 2026
…t coverage (#160)

* chore(deps): bump brace-expansion in /packages/server

Bumps  and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together.

Updates `brace-expansion` from 1.1.11 to 1.1.12
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@1.1.11...v1.1.12)

Updates `brace-expansion` from 2.0.1 to 2.0.2
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
- dependency-name: brace-expansion
  dependency-version: 2.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump pbkdf2 from 3.1.2 to 3.1.5 in /packages/sdk

Bumps [pbkdf2](https://github.com/browserify/pbkdf2) from 3.1.2 to 3.1.5.
- [Changelog](https://github.com/browserify/pbkdf2/blob/master/CHANGELOG.md)
- [Commits](browserify/pbkdf2@v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: pbkdf2
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump serialize-javascript and mocha in /packages/server

Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) to 6.0.2 and updates ancestor dependency [mocha](https://github.com/mochajs/mocha). These dependencies need to be updated together.


Updates `serialize-javascript` from 6.0.0 to 6.0.2
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](yahoo/serialize-javascript@v6.0.0...v6.0.2)

Updates `mocha` from 10.0.0 to 10.8.2
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md)
- [Commits](mochajs/mocha@v10.0.0...v10.8.2)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 6.0.2
  dependency-type: indirect
- dependency-name: mocha
  dependency-version: 10.8.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump base-x from 3.0.9 to 3.0.11 in /packages/demo

Bumps [base-x](https://github.com/cryptocoinjs/base-x) from 3.0.9 to 3.0.11.
- [Commits](cryptocoinjs/base-x@v3.0.9...v3.0.11)

---
updated-dependencies:
- dependency-name: base-x
  dependency-version: 3.0.11
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump sha.js from 2.4.11 to 2.4.12 in /packages/sdk

Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12.
- [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md)
- [Commits](browserify/sha.js@v2.4.11...v2.4.12)

---
updated-dependencies:
- dependency-name: sha.js
  dependency-version: 2.4.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump cipher-base from 1.0.4 to 1.0.7 in /packages/sdk

Bumps [cipher-base](https://github.com/crypto-browserify/cipher-base) from 1.0.4 to 1.0.7.
- [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md)
- [Commits](browserify/cipher-base@v1.0.4...v1.0.7)

---
updated-dependencies:
- dependency-name: cipher-base
  dependency-version: 1.0.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump tmp from 0.2.1 to 0.2.5 in /packages/sdk

Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.1 to 0.2.5.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.2.1...v0.2.5)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump lodash from 4.17.21 to 4.17.23

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump semver in /packages/server

Bumps  and [semver](https://github.com/npm/node-semver). These dependencies needed to be updated together.

Updates `semver` from 6.3.0 to 6.3.1
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](npm/node-semver@v6.3.0...v6.3.1)

Updates `semver` from 7.3.5 to 7.7.3
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](npm/node-semver@v6.3.0...v6.3.1)

Updates `semver` from 5.7.1 to 5.7.2
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](npm/node-semver@v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 6.3.1
  dependency-type: indirect
- dependency-name: semver
  dependency-version: 7.7.3
  dependency-type: indirect
- dependency-name: semver
  dependency-version: 5.7.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump qs and body-parser in /packages/sdk

Bumps [qs](https://github.com/ljharb/qs) and [body-parser](https://github.com/expressjs/body-parser). These dependencies needed to be updated together.

Updates `qs` from 6.10.3 to 6.14.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.10.3...v6.14.2)

Updates `body-parser` from 1.20.0 to 1.20.4
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](expressjs/body-parser@1.20.0...1.20.4)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.2
  dependency-type: indirect
- dependency-name: body-parser
  dependency-version: 1.20.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump ajv and fastify in /packages/server

Bumps [ajv](https://github.com/ajv-validator/ajv) to 8.18.0 and updates ancestor dependency [fastify](https://github.com/fastify/fastify). These dependencies need to be updated together.


Updates `ajv` from 6.12.6 to 8.18.0
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](ajv-validator/ajv@v6.12.6...v8.18.0)

Updates `fastify` from 3.27.4 to 5.7.4
- [Release notes](https://github.com/fastify/fastify/releases)
- [Commits](fastify/fastify@v3.27.4...v5.7.4)

---
updated-dependencies:
- dependency-name: ajv
  dependency-version: 8.18.0
  dependency-type: indirect
- dependency-name: fastify
  dependency-version: 5.7.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump tar and @mapbox/node-pre-gyp in /packages/server

Bumps [tar](https://github.com/isaacs/node-tar) to 7.5.9 and updates ancestor dependency [@mapbox/node-pre-gyp](https://github.com/mapbox/node-pre-gyp). These dependencies need to be updated together.


Updates `tar` from 6.1.11 to 7.5.9
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v6.1.11...v7.5.9)

Updates `@mapbox/node-pre-gyp` from 1.0.9 to 2.0.3
- [Release notes](https://github.com/mapbox/node-pre-gyp/releases)
- [Changelog](https://github.com/mapbox/node-pre-gyp/blob/master/CHANGELOG.md)
- [Commits](mapbox/node-pre-gyp@v1.0.9...v2.0.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.9
  dependency-type: indirect
- dependency-name: "@mapbox/node-pre-gyp"
  dependency-version: 2.0.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(ci): upgrade GitHub Actions to v4

Upgrade actions/checkout and actions/setup-node from v1/v2 to v4
across all workflow files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sdk): null-safe regex match handling in util.ts

Replace unsafe destructured regex matches with named variables and
null guards to prevent runtime errors when patterns do not match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(server): ISmbProtocol interface, retry resilience, and SMB tests

- Extract ISmbProtocol interface for dependency injection and testability
- SmbProtocol implements ISmbProtocol
- Add withRetry() with exponential backoff for transient errors
- Add SmbEndpoint interface (typed endpoint response)
- Add authHeaders getter to centralise API key handling
- getEndpoints now returns SmbEndpoint[] and throws on non-OK (not silent [])
- deleteEndpoint now throws on non-OK (not silent false)
- Remove console.log before throws; include HTTP status in error messages
- broadcasterClient: throw on non-OK removeChannel response
- sfuWhipResource: use ISmbProtocol instead of concrete SmbProtocol
- Export ISmbProtocol from package index
- Add smbProtocol.spec.ts with 7 tests covering error paths and interface conformance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(server): modernise Fastify 5 plugin patterns and remove fetch polyfills

- Remove node-fetch and cross-fetch dependencies in favour of native fetch (Node 18+)
- Remove custom fetch fallback function in smbProtocol.ts
- Migrate whipFastifyApi.ts to async plugin signature (Fastify 5 pattern)
- Replace callback-based onRequest hook with async/throw error handling
- Migrate from fastify-cors to @fastify/cors with ES6 import
- Update server.listen() to object options API
- Upgrade fastify 3.x → 5.x and typescript 4.x → 5.x
- Add 4 test spec files covering WhipFastifyApi, WrtcWhipResource,
  RtmpWrtcWhipResource, and RtspWrtcWhipResource (66 tests, all passing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): regenerate package-lock.json after merging dependabot updates

Regenerated packages/server/package-lock.json to ensure consistency
after merging 12 dependabot PRs (#146-#159).

Also apply stashed root/sdk package.json and package-lock.json changes.

* feat(demo): redesign UI with dark sidebar layout and status indicators

Replace the new.css classless-framework demo with a custom dark-themed
interface inspired by broadcast tooling:

- Sidebar layout: 300px left panel with Connection and Capture cards,
  main area with video preview and resource list
- Status pill in header: Idle / Connecting… / Live with animated dot
- Share button: copies shareable endpoint URL to clipboard via
  navigator.clipboard, replacing the read-only URL input field
- Video placeholder: overlay icon + text hidden once a stream starts
- Resource cards: live dot, monospace URL, extension links with rel
  badges, Delete button — replaces the plain <details> elements
- Toast notifications: slide-up messages for stream start, delete,
  and clipboard copy results
- Self-contained CSS: removes CDN dependencies (new.css, xz.style
  Inter font), uses system font stack with CSS custom properties
- Responsive: collapses to single-column below 760px
- Preserves all existing functionality: URL param sync, channelId /
  b64json hidden params, ICE config, environment defaults

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(server): add missing undici-types peer dependency for @types/node v20

@types/node ^20 requires undici-types to be present in node_modules
for its fetch/worker_threads type declarations. Without it tsc fails
with TS2307 "Cannot find module 'undici-types'" during lerna bootstrap.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(demo): make video player fill content area, compact resources strip

- .video-area: flex: 1 so it fills remaining height instead of shrinking
- #ingest: height: 100%, removed max-height cap
- .resources-pane: fixed 160px height at bottom, tighter padding
- .section-header: margin-bottom 12px → 8px to fit compact pane

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(demo): prevent video overflow when stream is active

Use position: absolute; inset: 0 on #ingest instead of height: 100%.
A block-level video element with height: 100% doesn't reliably stay
within flex bounds once a real stream with natural dimensions loads.
Absolute positioning inside the already-constrained position: relative +
overflow: hidden .video-area container prevents any overflow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(demo): move Active Resources into sidebar below Capture

- Relocate .resources-pane from .content into .aside sidebar
- .resources-pane now uses flex: 1 to fill remaining sidebar height
- Video area loses border-bottom and occupies the full content column
- Tighten empty-state padding and icon size to suit the narrower panel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(server): register SDP content-type parsers at root server level

In Fastify 5, content-type parsing is resolved before plugin-scope
parsers are consulted. Parsers registered only inside whipFastifyApi
(a scoped plugin) were therefore invisible at parse time, causing
Fastify to throw FST_ERR_CTP_INVALID_MEDIA_TYPE (415) for every
incoming WHIP POST with Content-Type: application/sdp.

Fix: register application/sdp and application/trickle-ice-sdpfrag
parsers directly on the root FastifyInstance in WhipEndpoint so they
are available globally before any plugin scope is entered. The
plugin-level registrations remain for backwards compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove duplicate Fastify 5 content-type parsers and HEAD routes

- Remove duplicate application/sdp and application/trickle-ice-sdpfrag
  parsers from whipFastifyApi plugin (already registered at root level
  in whipEndpoint.ts to fix Fastify 5 scoping)
- Remove explicit HEAD route handlers for /whip/:type and
  /whip/:type/:resourceId — Fastify 5 auto-registers HEAD for every
  GET route, causing FST_ERR_DUPLICATED_ROUTE on startup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: health check initial delay, resilient destroy, revert docker IPV4_ADDR

- sfuWhipResource: delay first checkChannelHealth by 15s instead of
  calling immediately — the previous behaviour checked ICE state at
  t=0 when the ingest endpoint is still in 'new'/'checking' state,
  causing spurious FAILED detection and immediate session teardown
- sfuWhipResource: wrap destroy() SFU calls in try/catch so DELETE
  returns 200 instead of 500 when the SFU has already cleaned up
  (e.g. health check ran first); cancel the health timer before any
  async operations
- sfuWhipResource: replace forEach+async in health check and destroy
  with for..of so errors are catchable per-element
- docker-compose-sfu: revert IPV4_ADDR back to 127.0.0.1 — 0.0.0.0
  is an invalid ICE candidate address and causes browsers to discard
  all SFU candidates; Docker Desktop on macOS handles the UDP port
  mapping correctly with 127.0.0.1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sdk): replace Karma with mocha+ts-node to fix test suite

karma-typescript 5.5.4 fails to bundle CommonJS modules when TypeScript
target is "esnext", leaving `exports` undefined in the browser runner
(ReferenceError: exports is not defined at WHIPProtocol.js:2).

Switch @eyevinn/whip-web-client tests to mocha + ts-node (same pattern
as the server package). All six WHIPClient tests now run in Node.js:

- TS_NODE_COMPILER_OPTIONS forces "module":"commonjs" for ts-node
- spec/setup.js stubs RTCSessionDescription, RTCPeerConnection,
  MediaStream and MediaStreamTrack so ts-mockito can mock them and
  top-level spec fixtures can call `new RTCSessionDescription()`
- ts-node added as devDependency (was missing, needed by mocha --require)
- karma.conf.js retained but unused; test script updated

6 tests passing (was 0 — karma runner produced no results)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sdk): upgrade typedoc to 0.28.x for TypeScript 5 compatibility

typedoc@0.23.24 only supports TypeScript 4.6-4.9; upgrading to 0.28.17
which explicitly lists TypeScript 5.9.x in its peer dependencies, and
updating typedoc-theme-hierarchy to 6.0.0 which requires typedoc ^0.28.0.
This unblocks npm ci in CI environments.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(server): lazy-load @koush/wrtc to prevent native build in CI, suppress test logs, add job timeout

- Replace static `import { RTCPeerConnection } from "@koush/wrtc"` with a
  dynamic require() inside the constructor, guarded behind the pcFactory
  branch so the native binary is never loaded when a mock is injected.
- Add pcFactory parameter to WrtcWhipResource, RtspWrtcWhipResource and
  RtmpWrtcWhipResource constructors; update all three test subclasses to
  pass a factory instead of reassigning this.pc after super().
- Add spec/hooks.ts Mocha root hooks file that silences console.log
  during tests to prevent SDP/ICE payloads from polluting terminal output.
- Wire hooks.ts into the test script via --require spec/hooks.ts.
- Add timeout-minutes: 10 to the unit-tests CI job to prevent hung runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: null-safety in SDP parsing, connectionfailed event, and demo reconnect UI

- fix(server): guard optional chaining on all .at(0) SSRC/RTP lookups and
  skip media sections with no ssrcs to prevent runtime crashes on unexpected
  SDP shapes (sfuWhipResource.ts)
- fix(sdk): emit 'connectionfailed' event before destroy() so callers can
  react to peer-connection failure without polling; drop verbose SDP log in
  sendOffer()
- fix(demo): handle 'connectionfailed' by cleaning up card/status and
  showing a persistent toast with a Reconnect action that re-acquires media
  and creates a new WHIPClient; show video controls only while streaming;
  pass endpointUrl and clientOpts through ingest/createResourceCard so
  reconnection works correctly
- fix(demo): widen toast to 480px, add close button and action-button
  styles for persistent actionable toasts
- fix(docker-compose-sfu): set IPV4_ADDR to host machine IP (192.168.1.192)
  so SFU advertises reachable ICE candidates instead of loopback

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert(docker): restore docker-compose-sfu.yml to main state

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* docs: update README screenshot to hosted GitHub asset

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore(deps): bump lerna to 9.0.5 and fast-xml-parser to 4.5.4

Incorporates dependabot security fixes from PRs #161 and #162.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: remove lerna bootstrap postinstall script incompatible with v9

lerna bootstrap was removed in v7 and fully dropped in v9. Native
npm workspaces handle dependency installation automatically.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: add npm workspaces to replace lerna bootstrap in v9

lerna v9 no longer handles package installation via bootstrap.
Declaring workspaces lets npm ci hoist all sub-package deps
(including mocha) into the root node_modules.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: bump @types/node to ^22.0.0 for TypeScript 5 workspace compatibility

With npm workspaces, @types/node is hoisted from the root to all
packages. The previous @types/node@17 is incompatible with TS5's
generic Uint8Array and causes build failures in packages/server.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: replace @koush/wrtc with @roamhq/wrtc for Alpine/musl compatibility

@koush/wrtc ships glibc-compiled binaries (linked against ld-linux-x86-64.so.2)
that fail on Alpine Linux / musl libc environments with:
  Error loading shared library ld-linux-x86-64.so.2: No such file or directory

Replace with @roamhq/wrtc@^0.10.0 which is an actively maintained fork with
the same RTCPeerConnection API. Also update the Dockerfile to node:22-bookworm-slim
(Debian/glibc) to make the glibc requirement explicit and prevent accidental
base image changes to Alpine variants.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: replace remaining @koush/wrtc imports with @roamhq/wrtc

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: add skipLibCheck to suppress @roamhq/wrtc type declaration conflicts

* Revert "fix: add skipLibCheck to suppress @roamhq/wrtc type declaration conflicts"

This reverts commit b3aaf76.

* Revert "fix: replace remaining @koush/wrtc imports with @roamhq/wrtc"

This reverts commit ad9063e.

* Revert "fix: replace @koush/wrtc with @roamhq/wrtc for Alpine/musl compatibility"

This reverts commit e4a8cfd.

* chore: update gitignore with local yml

* chore: add OSC deployment scripts and static server

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(demo): add input:not([type]) selector to survive Parcel minification

Parcel's HTML minifier strips the redundant type="text" attribute from
<input> elements during production builds (type=text is the HTML default).
The CSS selector input[type="text"] only matches elements with the attribute
explicitly present, so the styles were silently discarded in the production
build while working fine in the Parcel dev server (which serves unminified HTML).

Fix: extend all three input rules to also include input:not([type]), which
matches inputs where Parcel has removed the type attribute. The checkbox
input retains type=checkbox and is correctly excluded by the :not([type])
selector.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert: restore root start script to lerna orchestration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(demo): add active resources panel, capture-type icons, and improved error handling

- Add active resource cards with camera/screen icons based on capture type
- Show Channel:<id> label when URL contains channelId param
- Add loading resource card while connecting; remove on failure
- Show player content immediately on connect attempt; hide on failure
- Show toast on connection failure
- Remove default WHIP endpoint URL; add .env.local support with sample
- Fix status pill and resource URL vertical centering (line-height: normal)
- Align footer height and idle button size to webrtc-player demo

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: point root start script to demo server for OSC deployment

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert: restore root start script to lerna orchestration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: point root start script to demo server for OSC deployment

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert: restore root start script to lerna orchestration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant