dgreif / ring

Unofficial packages for Ring Doorbells, Cameras, Alarm System, and Smart Lighting
MIT License
1.23k stars 162 forks source link

Failed to activate stream #1286

Closed Dr4Eyez closed 1 year ago

Dr4Eyez commented 1 year ago

Streaming Issue

I can receive snapshot and notifications just fine but I am unable to get a livestream to work through the home app. It works fine on the ring app. I am fairly new to home bridge and I am not sure if I missed something while setting it up. Any help would be appreciated. Thank you.

Proposed Solution

The specific cause of the error could be related to incorrect data handling, data offsets, or indices during the cryptographic operations. However, I am unsure and am requesting help.

Environment

Homebridge

What operating system are you on?

Mac

Relevant log output

[8/9/2023, 12:22:17 AM] [Ring] Activating stream for Front Door (0.482s)
[8/9/2023, 12:22:17 AM] [Ring] WebSocket connected for Front Door
[8/9/2023, 12:22:18 AM] [Ring] iceConnectionStateChange: completed
[8/9/2023, 12:22:18 AM] [Ring] RangeError: offset is out of bounds
    at Uint8Array.set (<anonymous>)
    at Function.padStart (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:972:13)
    at Function.encodeSignature (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:940:22)
    at Function.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1575:54)
    at EcdsaProvider.onSign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1737:25)
    at EcdsaProvider.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:157:28)
    at SubtleCrypto.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:1405:39)
    at Function.create (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:2407:35)
    at Function.value [as createSelfSignedCertificateWithKey] (/usr/local/lib/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:108:18)
    at RTCDtlsTransport.setupCertificate (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:76:9)
[8/9/2023, 12:22:18 AM] [Ring] Failed to activate stream
[8/9/2023, 12:22:18 AM] [Ring] RangeError: offset is out of bounds
    at Uint8Array.set (<anonymous>)
    at Function.padStart (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:972:13)
    at Function.encodeSignature (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:940:22)
    at Function.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1575:54)
    at EcdsaProvider.onSign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1737:25)
    at EcdsaProvider.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:157:28)
    at SubtleCrypto.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:1405:39)
    at Function.create (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:2407:35)
    at Function.value [as createSelfSignedCertificateWithKey] (/usr/local/lib/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:108:18)
    at RTCDtlsTransport.setupCertificate (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:76:9)
[8/9/2023, 12:22:18 AM] [Ring] connectionStateChange: closed
[8/9/2023, 12:22:18 AM] [Ring] iceConnectionStateChange: closed
[8/9/2023, 12:22:18 AM] [Ring] Call ended before answered
[8/9/2023, 12:27:31 AM] [Homebridge UI] [homebridge-ring] Terminating child process...
[8/9/2023, 12:27:31 AM] [Homebridge UI] [homebridge-ring] Child process ended

Honesty Time

DerMuri commented 1 year ago

I have the exact same issue. Are you also using the v12 beta of the plugin?

Dr4Eyez commented 1 year ago

@DerMuri I am using homebridge-ring v11.8.1

I have the exact same issue. Are you also using the v12 beta of the plugin?

tsightler commented 1 year ago

This is a strange issue as it appears at first glance to be unrelated to any of the recent changes in ring-homebridge/ring-client-api, which is further confirmed by the fact that users are having it with v11.8.1 as well. It looks like some kind of dependency conflict with some downstream package as I'm not sure why the standalone dtls package is installed.

Unfortunately, I'm travelling this week and won't have any chance to dig into it until sometime early next week.

DerMuri commented 1 year ago

This is a strange issue as it appears at first glance to be unrelated to any of the recent changes in ring-homebridge/ring-client-api, which is further confirmed by the fact that users are having it with v11.8.1 as well. It looks like some kind of dependency conflict with some downstream package as I'm not sure why the standalone dtls package is installed.

Unfortunately, I'm travelling this week and won't have any chance to dig into it until sometime early next week.

No hurry. Thanks for addressing the issue.

Your work is much appreciated.

F-Kafka commented 1 year ago

FYI, I too am having this issue. It began when I updated to version 11.8.1. If it helps here's the log when opening a stream.

[11/08/2023, 09:11:27] [Ring] Preparing Live Stream for Front Door [11/08/2023, 09:11:27] [Ring] Stream Prepared for Front Door (0.379s) [11/08/2023, 09:11:28] [Ring] Activating stream for Front Door (0.467s) [11/08/2023, 09:11:30] [Ring] iceConnectionStateChange: completed [11/08/2023, 09:11:30] [Ring] RangeError: offset is out of bounds at Uint8Array.set () at Function.padStart (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:972:13) at Function.encodeSignature (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:940:22) at Function.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1575:54) at EcdsaProvider.onSign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1737:25) at EcdsaProvider.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:157:28) at SubtleCrypto.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:1405:39) at Function.create (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:2407:35) at Function.value [as createSelfSignedCertificateWithKey] (/usr/local/lib/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:108:18) at RTCDtlsTransport.setupCertificate (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:76:9) [11/08/2023, 09:11:30] [Ring] connectionStateChange: closed [11/08/2023, 09:11:30] [Ring] iceConnectionStateChange: closed [11/08/2023, 09:11:30] [Ring] Failed to activate stream [11/08/2023, 09:11:30] [Ring] RangeError: offset is out of bounds at Uint8Array.set () at Function.padStart (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:972:13) at Function.encodeSignature (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:940:22) at Function.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1575:54) at EcdsaProvider.onSign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1737:25) at EcdsaProvider.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:157:28) at SubtleCrypto.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:1405:39) at Function.create (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:2407:35) at Function.value [as createSelfSignedCertificateWithKey] (/usr/local/lib/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:108:18) at RTCDtlsTransport.setupCertificate (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:76:9)

teacherguy2020 commented 1 year ago

I have similar logs as well

dgreif commented 1 year ago

Seeing a lot of reports of this, including some in the Google Nest homebridge plugin. I agree with @tsightler that it's likely a dependency (or sub dependency) that changed, but I don't have any specific ideas on which one at this point.

I have not been able to reproduce this myself yet. For those who are experience it, could you provide the following info:

This should hopefully help us narrow down the cause.

DerMuri commented 1 year ago

Hi thanks for looking into it.

Nods.js: v18.17.1 Homebridge v1.6.1 Ring plugin is 12.0 beta I am using the Ring Video Doorbell (2nd generation)

F-Kafka commented 1 year ago

Thanks for investigating this.

Node.js version: 18.17.1 Homebridge version: 1.6.1 Homebridge Ring Plugin version: 11.8.1 Camera: Peephole Cam

shaileshck commented 1 year ago

Seeing a lot of reports of this, including some in the Google Nest homebridge plugin. I agree with @tsightler that it's likely a dependency (or sub dependency) that changed, but I don't have any specific ideas on which one at this point.

I have not been able to reproduce this myself yet. For those who are experience it, could you provide the following info:

  • Node.js version
  • homebridge-ring version
  • Camera model experiencing issues

This should hopefully help us narrow down the cause.

Node.js version: 18.17.1 Homebridge version: 1.6.1 Homebridge Ring Plugin version: v12.0 tried downgrading to 11.8.1 as well it’s same. Camera: Ring Doorbell Pro 1st Gen

Thanks

doncarajo commented 1 year ago

Me too. Recently upgraded to latest NodeJS version v18.17.1.

cebrakadabra commented 1 year ago

Seeing a lot of reports of this, including some in the Google Nest homebridge plugin. I agree with @tsightler that it's likely a dependency (or sub dependency) that changed, but I don't have any specific ideas on which one at this point.

I have not been able to reproduce this myself yet. For those who are experience it, could you provide the following info:

  • Node.js version
  • homebridge-ring version
  • Camera model experiencing issues

This should hopefully help us narrow down the cause.

Node.js version: v18.17.1 Homebridge version: 1.6.1 Homebridge ring plugin version: homebridge-ring v11.8.1 Ring Doorbell: Video Doorbell 3 Ring Stick up Cam(s): 3rd Gen

The iat (time issued) of the refresh token of the ring plugin was: 1687123720 (Sun Jun 18th 2023) - which i refreshed and re-enabled the account connection which for seconds "healed" all the stick up cams with a poster picture (stream placeholder) which I tried to then re-connect for the live-stream and this error came up in the logs:

[13/08/2023, 21:46:45] [Ring] Preparing Live Stream for Garden Tree
[13/08/2023, 21:46:46] [Ring] Stream Prepared for Garden Tree (0.399s)
[13/08/2023, 21:46:46] [Ring] Activating stream for Garden Tree (0.446s)
[13/08/2023, 21:46:47] [Ring] iceConnectionStateChange: completed
[13/08/2023, 21:46:47] [Ring] Failed to activate stream
[13/08/2023, 21:46:47] [Ring] RangeError: offset is out of bounds
    at Uint8Array.set (<anonymous>)
    at Function.padStart (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:972:13)
    at Function.encodeSignature (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:940:22)
    at Function.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1575:54)
    at EcdsaProvider.onSign (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/webcrypto/build/webcrypto.js:1737:25)
    at EcdsaProvider.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:157:28)
    at SubtleCrypto.sign (/usr/local/lib/node_modules/homebridge-ring/node_modules/webcrypto-core/build/webcrypto-core.js:1405:39)
    at Function.create (/usr/local/lib/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:2407:35)
    at Function.value [as createSelfSignedCertificateWithKey] (/usr/local/lib/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:108:18)
    at RTCDtlsTransport.setupCertificate (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:76:9)
    at ensureCert (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/peerConnection.ts:1293:34)
    at RTCPeerConnection.ensureCerts (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/peerConnection.ts:1301:7)
    at RTCPeerConnection.createAnswer (/usr/local/lib/node_modules/homebridge-ring/node_modules/werift/src/peerConnection.ts:1306:5)
    at WeriftPeerConnection.createAnswer (/usr/local/lib/node_modules/homebridge-ring/node_modules/ring-client-api/lib/streaming/peer-connection.js:121:24)
    at WebrtcConnection.handleMessage (/usr/local/lib/node_modules/homebridge-ring/node_modules/ring-client-api/lib/streaming/webrtc-connection.js:29:32)
[13/08/2023, 21:46:47] [Ring] connectionStateChange: closed
[13/08/2023, 21:46:47] [Ring] iceConnectionStateChange: closed

Hope this helps!

cebrakadabra commented 1 year ago

Let us know if you need assistance in testing: https://github.com/dgreif/ring/pull/1283

Shoutout to @tsightler and @dgreif ❤️

edit: I installed the beta12 version and now all snapshots are working on ring cameras - it loads longer for the livestream, but remains with the same error in a failed state - however the behavior seems to be improving

tsightler commented 1 year ago

Another thing that might be interesting, what other plugins are installed (if any) and what is the iOS version in use.

DerMuri commented 1 year ago
shaileshck commented 1 year ago

Running Homebridge on Rpi4 TVOS 17 and IOS 17 MacOS Ventura Same issue on all above versions. Developer as well public beta.

Attached plugin used.

On Mon, 14 Aug 2023 at 7:50 PM, DerMuri @.***> wrote:

  • Homebridge is running on macOS Monterey
  • The other plugins are: Homebridge Hue, Homebridge Xiaomi Fan
  • The issue appears regardless where I try to open the stream. I am on Sonoma beta, iOS 17 Beta, tvOS 17 beta. I haven't tested it on a non-beta OS, yet.

— Reply to this email directly, view it on GitHub https://github.com/dgreif/ring/issues/1286#issuecomment-1677411409, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQFLWWHLZ2XQAKZ5RC6KZ5DXVIXZZANCNFSM6AAAAAA3JONFD4 . You are receiving this because you commented.Message ID: @.***>

tsightler commented 1 year ago

Can some user experiencing this issue please go into the homebridge shell and post the output of the following command:

$ npm ls --depth=2

cebrakadabra commented 1 year ago

@tsightler from cd /usr/local/lib/node_modules/npm

npm@9.6.7 /usr/local/lib/node_modules/npm
├── @isaacs/string-locale-compare@1.1.0
├─┬ @npmcli/arborist@6.2.9
│ ├── @isaacs/string-locale-compare@1.1.0 deduped
│ ├── @npmcli/fs@3.1.0 deduped
│ ├─┬ @npmcli/installed-package-contents@2.0.2
│ │ ├── npm-bundled@3.0.0
│ │ └── npm-normalize-package-bin@3.0.1 deduped
│ ├── @npmcli/map-workspaces@3.0.4 deduped
│ ├─┬ @npmcli/metavuln-calculator@5.0.1
│ │ ├── cacache@17.1.2 deduped
│ │ ├── json-parse-even-better-errors@3.0.0 deduped
│ │ ├── pacote@15.1.3 deduped
│ │ └── semver@7.5.1 deduped
│ ├── @npmcli/name-from-folder@2.0.0
│ ├── @npmcli/node-gyp@3.0.0
│ ├── @npmcli/package-json@3.1.0 deduped
│ ├─┬ @npmcli/query@3.0.0
│ │ └── postcss-selector-parser@6.0.13
│ ├── @npmcli/run-script@6.0.2 deduped
│ ├─┬ bin-links@4.0.1
│ │ ├── cmd-shim@6.0.1
│ │ ├── npm-normalize-package-bin@3.0.1 deduped
│ │ ├── read-cmd-shim@4.0.0
│ │ └── write-file-atomic@5.0.1 deduped
│ ├── cacache@17.1.2 deduped
│ ├── common-ancestor-path@1.0.1
│ ├── hosted-git-info@6.1.1 deduped
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ ├── json-stringify-nice@1.1.4
│ ├── minimatch@9.0.0 deduped
│ ├── nopt@7.1.0 deduped
│ ├── npm-install-checks@6.1.1 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ ├── npm-pick-manifest@8.0.1 deduped
│ ├── npm-registry-fetch@14.0.5 deduped
│ ├── npmlog@7.0.1 deduped
│ ├── pacote@15.1.3 deduped
│ ├── parse-conflict-json@3.0.1 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── promise-all-reject-late@1.0.1
│ ├── promise-call-limit@1.0.2
│ ├── read-package-json-fast@3.0.2 deduped
│ ├── semver@7.5.1 deduped
│ ├── ssri@10.0.4 deduped
│ ├── treeverse@3.0.0 deduped
│ └── walk-up-path@3.0.1
├─┬ @npmcli/config@6.1.7
│ ├── @npmcli/map-workspaces@3.0.4 deduped
│ ├── ini@4.1.0 deduped
│ ├── nopt@7.1.0 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── read-package-json-fast@3.0.2 deduped
│ ├── semver@7.5.1 deduped
│ └── walk-up-path@3.0.1 deduped
├── UNMET DEPENDENCY @npmcli/docs@^1.0.0
├── UNMET DEPENDENCY @npmcli/eslint-config@^4.0.0
├─┬ @npmcli/fs@3.1.0
│ └── semver@7.5.1 deduped
├─┬ @npmcli/git@4.0.4
│ ├── @npmcli/promise-spawn@6.0.2 deduped
│ ├── lru-cache@7.18.3
│ ├── npm-pick-manifest@8.0.1 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── promise-inflight@1.0.1
│ ├─┬ promise-retry@2.0.1
│ │ ├── err-code@2.0.3
│ │ └── retry@0.12.0
│ ├── semver@7.5.1 deduped
│ └── which@3.0.1 deduped
├─┬ @npmcli/map-workspaces@3.0.4
│ ├── @npmcli/name-from-folder@2.0.0 deduped
│ ├── glob@10.2.4 deduped
│ ├── minimatch@9.0.0 deduped
│ └── read-package-json-fast@3.0.2 deduped
├── UNMET DEPENDENCY @npmcli/mock-registry@^1.0.0
├─┬ @npmcli/package-json@3.1.0
│ ├── glob@10.2.4 deduped
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ ├─┬ normalize-package-data@5.0.0
│ │ ├── hosted-git-info@6.1.1 deduped
│ │ ├── is-core-module@2.12.0
│ │ ├── semver@7.5.1 deduped
│ │ └── validate-npm-package-license@3.0.4 deduped
│ └── npm-normalize-package-bin@3.0.1
├─┬ @npmcli/promise-spawn@6.0.2
│ └── which@3.0.1 deduped
├─┬ @npmcli/run-script@6.0.2
│ ├── @npmcli/node-gyp@3.0.0 deduped
│ ├── @npmcli/promise-spawn@6.0.2 deduped
│ ├── node-gyp@9.3.1 deduped
│ ├── read-package-json-fast@3.0.2 deduped
│ └── which@3.0.1 deduped
├── UNMET DEPENDENCY @npmcli/template-oss@4.14.1
├── abbrev@2.0.0
├── archy@1.0.0
├─┬ cacache@17.1.2
│ ├── @npmcli/fs@3.1.0 deduped
│ ├── fs-minipass@3.0.2 deduped
│ ├── glob@10.2.4 deduped
│ ├── lru-cache@7.18.3 deduped
│ ├─┬ minipass-collect@1.0.2
│ │ └── minipass@3.3.6
│ ├─┬ minipass-flush@1.0.5
│ │ └── minipass@3.3.6
│ ├── minipass-pipeline@1.2.4 deduped
│ ├── minipass@5.0.0 deduped
│ ├── p-map@4.0.0 deduped
│ ├── ssri@10.0.4 deduped
│ ├── tar@6.1.14 deduped
│ └─┬ unique-filename@3.0.0
│   └── unique-slug@4.0.0
├─┬ chalk@4.1.2
│ ├─┬ ansi-styles@4.3.0
│ │ └── color-convert@2.0.1
│ └─┬ supports-color@7.2.0
│   └── has-flag@4.0.0
├── ci-info@3.8.0
├─┬ cli-columns@4.0.0
│ ├─┬ string-width@4.2.3
│ │ ├── emoji-regex@8.0.0
│ │ ├── is-fullwidth-code-point@3.0.0
│ │ └── strip-ansi@6.0.1 deduped
│ └─┬ strip-ansi@6.0.1
│   └── ansi-regex@5.0.1
├─┬ cli-table3@0.6.3
│ ├── @colors/colors@1.5.0
│ └── string-width@4.2.3 deduped
├─┬ columnify@1.6.0
│ ├── strip-ansi@6.0.1 deduped
│ └─┬ wcwidth@1.0.1
│   └── defaults@1.0.4
├── fastest-levenshtein@1.0.16
├─┬ fs-minipass@3.0.2
│ └── minipass@5.0.0 deduped
├─┬ glob@10.2.4
│ ├─┬ foreground-child@3.1.1
│ │ ├── cross-spawn@7.0.3
│ │ └── signal-exit@4.0.2 deduped
│ ├─┬ jackspeak@2.2.0
│ │ ├── @isaacs/cliui@8.0.2
│ │ └── @pkgjs/parseargs@0.11.0
│ ├── minimatch@9.0.0 deduped
│ ├── minipass@5.0.0 deduped
│ └─┬ path-scurry@1.9.1
│   ├── lru-cache@9.1.1
│   └── minipass@5.0.0 deduped
├── graceful-fs@4.2.11
├─┬ hosted-git-info@6.1.1
│ └── lru-cache@7.18.3 deduped
├── ini@4.1.0
├─┬ init-package-json@5.0.0
│ ├── npm-package-arg@10.1.0 deduped
│ ├─┬ promzard@1.0.0
│ │ └── read@2.1.0 deduped
│ ├── read-package-json@6.0.3 deduped
│ ├── read@2.1.0 deduped
│ ├── semver@7.5.1 deduped
│ ├─┬ validate-npm-package-license@3.0.4
│ │ ├── spdx-correct@3.2.0
│ │ └── spdx-expression-parse@3.0.1
│ └── validate-npm-package-name@5.0.0 deduped
├─┬ is-cidr@4.0.2
│ └─┬ cidr-regex@3.1.1
│   └── ip-regex@4.3.0
├── json-parse-even-better-errors@3.0.0
├─┬ libnpmaccess@7.0.2
│ ├── npm-package-arg@10.1.0 deduped
│ └── npm-registry-fetch@14.0.5 deduped
├─┬ libnpmdiff@5.0.17
│ ├── @npmcli/arborist@6.2.9 deduped
│ ├─┬ @npmcli/disparity-colors@3.0.0
│ │ └── ansi-styles@4.3.0 deduped
│ ├── @npmcli/installed-package-contents@2.0.2 deduped
│ ├── binary-extensions@2.2.0
│ ├── diff@5.1.0
│ ├── minimatch@9.0.0 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ ├── pacote@15.1.3 deduped
│ └── tar@6.1.14 deduped
├─┬ libnpmexec@5.0.17
│ ├── @npmcli/arborist@6.2.9 deduped
│ ├── @npmcli/run-script@6.0.2 deduped
│ ├── chalk@4.1.2 deduped
│ ├── ci-info@3.8.0 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ ├── npmlog@7.0.1 deduped
│ ├── pacote@15.1.3 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── read-package-json-fast@3.0.2 deduped
│ ├── read@2.1.0 deduped
│ ├── semver@7.5.1 deduped
│ └── walk-up-path@3.0.1 deduped
├─┬ libnpmfund@4.0.17
│ └── @npmcli/arborist@6.2.9 deduped
├─┬ libnpmhook@9.0.3
│ ├── aproba@2.0.0
│ └── npm-registry-fetch@14.0.5 deduped
├─┬ libnpmorg@5.0.4
│ ├── aproba@2.0.0 deduped
│ └── npm-registry-fetch@14.0.5 deduped
├─┬ libnpmpack@5.0.17
│ ├── @npmcli/arborist@6.2.9 deduped
│ ├── @npmcli/run-script@6.0.2 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ └── pacote@15.1.3 deduped
├─┬ libnpmpublish@7.2.0
│ ├── ci-info@3.8.0 deduped
│ ├── normalize-package-data@5.0.0 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ ├── npm-registry-fetch@14.0.5 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── semver@7.5.1 deduped
│ ├─┬ sigstore@1.5.2
│ │ ├── @sigstore/protobuf-specs@0.1.0
│ │ ├── make-fetch-happen@11.1.1 deduped
│ │ └── tuf-js@1.1.6
│ └── ssri@10.0.4 deduped
├─┬ libnpmsearch@6.0.2
│ └── npm-registry-fetch@14.0.5 deduped
├─┬ libnpmteam@5.0.3
│ ├── aproba@2.0.0 deduped
│ └── npm-registry-fetch@14.0.5 deduped
├─┬ libnpmversion@4.0.2
│ ├── @npmcli/git@4.0.4 deduped
│ ├── @npmcli/run-script@6.0.2 deduped
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ ├── proc-log@3.0.0 deduped
│ └── semver@7.5.1 deduped
├── UNMET DEPENDENCY licensee@^10.0.0
├─┬ make-fetch-happen@11.1.1
│ ├─┬ agentkeepalive@4.3.0
│ │ ├── debug@4.3.4
│ │ ├── depd@2.0.0
│ │ └── humanize-ms@1.2.1
│ ├── cacache@17.1.2 deduped
│ ├── http-cache-semantics@4.1.1
│ ├─┬ http-proxy-agent@5.0.0
│ │ ├── @tootallnate/once@2.0.0
│ │ ├── agent-base@6.0.2
│ │ └── debug@4.3.4 deduped
│ ├─┬ https-proxy-agent@5.0.1
│ │ ├── agent-base@6.0.2 deduped
│ │ └── debug@4.3.4 deduped
│ ├── is-lambda@1.0.1
│ ├── lru-cache@7.18.3 deduped
│ ├─┬ minipass-fetch@3.0.3
│ │ ├── encoding@0.1.13
│ │ ├── minipass-sized@1.0.3
│ │ ├── minipass@5.0.0 deduped
│ │ └── minizlib@2.1.2 deduped
│ ├── minipass-flush@1.0.5 deduped
│ ├── minipass-pipeline@1.2.4 deduped
│ ├── minipass@5.0.0 deduped
│ ├── negotiator@0.6.3
│ ├── promise-retry@2.0.1 deduped
│ ├─┬ socks-proxy-agent@7.0.0
│ │ ├── agent-base@6.0.2 deduped
│ │ ├── debug@4.3.4 deduped
│ │ └── socks@2.7.1
│ └── ssri@10.0.4 deduped
├─┬ minimatch@9.0.0
│ └─┬ brace-expansion@2.0.1
│   └── balanced-match@1.0.2
├─┬ minipass-pipeline@1.2.4
│ └─┬ minipass@3.3.6
│   └── yallist@4.0.0 deduped
├── minipass@5.0.0
├── ms@2.1.3
├── UNMET DEPENDENCY nock@^13.3.0
├─┬ node-gyp@9.3.1
│ ├── env-paths@2.2.1
│ ├─┬ glob@7.2.3
│ │ ├── fs.realpath@1.0.0
│ │ ├── inflight@1.0.6
│ │ ├── inherits@2.0.4
│ │ ├── minimatch@3.1.2
│ │ ├── once@1.4.0
│ │ └── path-is-absolute@1.0.1
│ ├── graceful-fs@4.2.11 deduped
│ ├─┬ make-fetch-happen@10.2.1
│ │ ├── agentkeepalive@4.3.0 deduped
│ │ ├── cacache@16.1.3
│ │ ├── http-cache-semantics@4.1.1 deduped
│ │ ├── http-proxy-agent@5.0.0 deduped
│ │ ├── https-proxy-agent@5.0.1 deduped
│ │ ├── is-lambda@1.0.1 deduped
│ │ ├── lru-cache@7.18.3 deduped
│ │ ├── minipass-collect@1.0.2 deduped
│ │ ├── minipass-fetch@2.1.2
│ │ ├── minipass-flush@1.0.5 deduped
│ │ ├── minipass-pipeline@1.2.4 deduped
│ │ ├── minipass@3.3.6
│ │ ├── negotiator@0.6.3 deduped
│ │ ├── promise-retry@2.0.1 deduped
│ │ ├── socks-proxy-agent@7.0.0 deduped
│ │ └── ssri@9.0.1
│ ├─┬ nopt@6.0.0
│ │ └── abbrev@1.1.1
│ ├─┬ npmlog@6.0.2
│ │ ├── are-we-there-yet@3.0.1
│ │ ├── console-control-strings@1.1.0 deduped
│ │ ├── gauge@4.0.4
│ │ └── set-blocking@2.0.0 deduped
│ ├─┬ rimraf@3.0.2
│ │ └── glob@7.2.3
│ ├── semver@7.5.1 deduped
│ ├── tar@6.1.14 deduped
│ └─┬ which@2.0.2
│   └── isexe@2.0.0 deduped
├─┬ nopt@7.1.0
│ └── abbrev@2.0.0 deduped
├─┬ npm-audit-report@4.0.0
│ └── chalk@4.1.2 deduped
├─┬ npm-install-checks@6.1.1
│ └── semver@7.5.1 deduped
├─┬ npm-package-arg@10.1.0
│ ├── hosted-git-info@6.1.1 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── semver@7.5.1 deduped
│ └── validate-npm-package-name@5.0.0 deduped
├─┬ npm-packlist@7.0.4
│ └─┬ ignore-walk@6.0.3
│   └── minimatch@9.0.0 deduped
├─┬ npm-pick-manifest@8.0.1
│ ├── npm-install-checks@6.1.1 deduped
│ ├── npm-normalize-package-bin@3.0.1 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ └── semver@7.5.1 deduped
├─┬ npm-profile@7.0.1
│ ├── npm-registry-fetch@14.0.5 deduped
│ └── proc-log@3.0.0 deduped
├─┬ npm-registry-fetch@14.0.5
│ ├── make-fetch-happen@11.1.1 deduped
│ ├── minipass-fetch@3.0.3 deduped
│ ├─┬ minipass-json-stream@1.0.1
│ │ ├── jsonparse@1.3.1
│ │ └── minipass@3.3.6
│ ├── minipass@5.0.0 deduped
│ ├─┬ minizlib@2.1.2
│ │ ├── minipass@3.3.6
│ │ └── yallist@4.0.0 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ └── proc-log@3.0.0 deduped
├── npm-user-validate@2.0.0
├─┬ npmlog@7.0.1
│ ├─┬ are-we-there-yet@4.0.0
│ │ ├── delegates@1.0.0
│ │ └── readable-stream@4.4.0
│ ├── console-control-strings@1.1.0
│ ├─┬ gauge@5.0.1
│ │ ├── aproba@2.0.0 deduped
│ │ ├── color-support@1.1.3
│ │ ├── console-control-strings@1.1.0 deduped
│ │ ├── has-unicode@2.0.1
│ │ ├── signal-exit@4.0.2 deduped
│ │ ├── string-width@4.2.3 deduped
│ │ ├── strip-ansi@6.0.1 deduped
│ │ └── wide-align@1.1.5
│ └── set-blocking@2.0.0
├─┬ p-map@4.0.0
│ └─┬ aggregate-error@3.1.0
│   ├── clean-stack@2.2.0
│   └── indent-string@4.0.0
├─┬ pacote@15.1.3
│ ├── @npmcli/git@4.0.4 deduped
│ ├── @npmcli/installed-package-contents@2.0.2 deduped
│ ├── @npmcli/promise-spawn@6.0.2 deduped
│ ├── @npmcli/run-script@6.0.2 deduped
│ ├── cacache@17.1.2 deduped
│ ├── fs-minipass@3.0.2 deduped
│ ├── minipass@5.0.0 deduped
│ ├── npm-package-arg@10.1.0 deduped
│ ├── npm-packlist@7.0.4 deduped
│ ├── npm-pick-manifest@8.0.1 deduped
│ ├── npm-registry-fetch@14.0.5 deduped
│ ├── proc-log@3.0.0 deduped
│ ├── promise-retry@2.0.1 deduped
│ ├── read-package-json-fast@3.0.2 deduped
│ ├── read-package-json@6.0.3 deduped
│ ├── sigstore@1.5.2 deduped
│ ├── ssri@10.0.4 deduped
│ └── tar@6.1.14 deduped
├─┬ parse-conflict-json@3.0.1
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ ├── just-diff-apply@5.5.0
│ └── just-diff@6.0.2
├── proc-log@3.0.0
├── qrcode-terminal@0.12.0
├─┬ read-package-json-fast@3.0.2
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ └── npm-normalize-package-bin@3.0.1 deduped
├─┬ read-package-json@6.0.3
│ ├── glob@10.2.4 deduped
│ ├── json-parse-even-better-errors@3.0.0 deduped
│ ├── normalize-package-data@5.0.0 deduped
│ └── npm-normalize-package-bin@3.0.1 deduped
├─┬ read@2.1.0
│ └── mute-stream@1.0.0
├── UNMET DEPENDENCY remark-gfm@^3.0.1
├── UNMET DEPENDENCY remark-github@^11.2.4
├── UNMET DEPENDENCY remark@^14.0.2
├─┬ semver@7.5.1
│ └─┬ lru-cache@6.0.0
│   └── yallist@4.0.0 deduped
├── UNMET DEPENDENCY spawk@^1.7.1
├─┬ ssri@10.0.4
│ └── minipass@5.0.0 deduped
├── UNMET DEPENDENCY tap@^16.3.4
├─┬ tar@6.1.14
│ ├── chownr@2.0.0
│ ├─┬ fs-minipass@2.1.0
│ │ └── minipass@3.3.6
│ ├── minipass@5.0.0 deduped
│ ├── minizlib@2.1.2 deduped
│ ├── mkdirp@1.0.4
│ └── yallist@4.0.0
├── text-table@0.2.0
├── tiny-relative-date@1.3.0
├── treeverse@3.0.0
├─┬ validate-npm-package-name@5.0.0
│ └─┬ builtins@5.0.1
│   └── semver@7.5.1 deduped
├─┬ which@3.0.1
│ └── isexe@2.0.0
└─┬ write-file-atomic@5.0.1
  ├── imurmurhash@0.1.4
  └── signal-exit@4.0.2
tsightler commented 1 year ago

Thanks @cebrakadabra I need to see the dependencies from the context of homebridge, which is why I asked for the output from homebridge shell (for example, open a shell from the Homebridge UI). What you posted appears to be from a standard OS shell (I'm not sure what install method you used for Homebridge). I would expect it to list the homebridge plugins, and their dependencies, like this:

homebridge@ /var/lib/homebridge
├─┬ homebridge-google-nest-sdm@1.1.14
│ ├─┬ @google-cloud/pubsub@2.19.4
│ │ ├── @google-cloud/paginator@3.0.7
│ │ ├── @google-cloud/precise-date@2.0.4
│ │ ├── @google-cloud/projectify@2.1.1
│ │ ├── @google-cloud/promisify@2.0.4
│ │ ├── @opentelemetry/api@1.4.1
│ │ ├── @opentelemetry/semantic-conventions@1.14.0
│ │ ├── @types/duplexify@3.6.1
│ │ ├── @types/long@4.0.2
│ │ ├── arrify@2.0.1
│ │ ├── extend@3.0.2
│ │ ├── google-auth-library@7.14.1
│ │ ├── google-gax@2.30.3
│ │ ├── is-stream-ended@0.1.4
│ │ ├── lodash.snakecase@4.1.1
│ │ └── p-defer@3.0.0
│ ├─┬ axios@1.4.0
│ │ ├── follow-redirects@1.15.2
│ │ ├── form-data@4.0.0
│ │ └── proxy-from-env@1.1.0
│ ├─┬ ffmpeg-for-homebridge@0.1.0
│ │ ├── detect-libc@2.0.1
│ │ ├── dotenv@16.3.1
│ │ ├── mkdirp@1.0.4
│ │ ├── simple-get@4.0.1
│ │ └── tar@6.1.15
│ ├─┬ googleapis@87.0.0
│ │ ├── google-auth-library@7.14.1 deduped
│ │ └── googleapis-common@5.1.0
│ ├── ip@1.1.8
│ ├── lodash@4.17.21
│ ├─┬ pick-port@1.0.1
│ │ └── debug@4.3.4
│ ├── systeminformation@5.18.4
│ └─┬ werift@0.14.4
│   ├── @fidm/x509@1.2.1
│   ├── @minhducsun2002/leb128@0.2.0
│   ├── @peculiar/webcrypto@1.4.3
│   ├── @peculiar/x509@1.9.3
│   ├── @shinyoshiaki/ebml-builder@0.0.1
│   ├── aes-js@3.1.2
│   ├── binary-data@0.6.0
│   ├── buffer-crc32@0.2.13
│   ├── date-fns@2.30.0
│   ├── debug@4.3.4 deduped
│   ├── elliptic@6.5.4
│   ├── int64-buffer@1.0.1
│   ├── ip@1.1.8 deduped
│   ├── jspack@0.0.4
│   ├── lodash@4.17.21 deduped
│   ├── nano-time@1.0.0
│   ├── p-cancelable@2.1.1
│   ├── rx.mini@1.3.1
│   ├── turbo-crc32@1.0.1
│   ├── tweetnacl@1.0.3
│   └── uuid@8.3.2
├─┬ homebridge-ring@11.8.1
│ ├─┬ @homebridge/camera-utils@2.2.0
│ │ ├── execa@5.1.1
│ │ ├── ffmpeg-for-homebridge@0.1.4
│ │ ├── pick-port@1.0.1
│ │ ├── rxjs@7.8.1
│ │ └── systeminformation@5.18.10
│ ├── @homebridge/plugin-ui-utils@0.0.19
│ └─┬ ring-client-api@11.8.1
│   ├── @eneris/push-receiver@3.1.4
│   ├── @homebridge/camera-utils@2.2.0 deduped
│   ├── @peculiar/asn1-schema@2.3.6
│   ├── @peculiar/webcrypto@1.4.3
│   ├── @types/socket.io-client@1.4.36
│   ├── colors@1.4.0
│   ├── debug@4.3.4
│   ├── got@11.8.6
│   ├── json-bigint@1.0.0
│   ├── msw@1.2.3
│   ├── rxjs@7.8.1 deduped
│   ├── socket.io-client@2.5.0
│   ├── systeminformation@5.18.10 deduped
│   ├── uuid@9.0.0
│   ├── webcrypto-core@1.7.7
│   ├── werift@0.18.5
│   └── ws@8.13.0
└─┬ homebridge@1.6.1
  ├─┬ chalk@4.1.2
  │ ├── ansi-styles@4.3.0
  │ └── supports-color@7.2.0
  ├── commander@5.1.0
  ├─┬ fs-extra@10.1.0
  │ ├── graceful-fs@4.2.11
  │ ├── jsonfile@6.1.0
  │ └── universalify@2.0.0
  ├─┬ hap-nodejs@0.11.1
  │ ├── @homebridge/ciao@1.1.7
  │ ├── @homebridge/dbus-native@0.5.1
  │ ├── bonjour-hap@3.6.4
  │ ├── debug@4.3.4
  │ ├── fast-srp-hap@2.0.4
  │ ├── futoin-hkdf@1.4.3
  │ ├── node-persist@0.0.11
  │ ├── source-map-support@0.5.21 deduped
  │ ├── tslib@2.5.0
  │ └── tweetnacl@1.0.3
  ├── qrcode-terminal@0.12.0
  ├─┬ semver@7.5.1
  │ └── lru-cache@6.0.0
  └─┬ source-map-support@0.5.21
    ├── buffer-from@1.1.2
    └── source-map@0.6.1
cebrakadabra commented 1 year ago

@tsightler - i was wondering - I went one level deeper, as my homebridge context on my raspberry pi didn't return anything (see screenshot below)

Screenshot 2023-08-14 at 8 46 54 PM
tsightler commented 1 year ago

@cebrakadabra What install method did you use for Homebridge? I'm thinking the above looks like the OS image install? I'm not sure where it keeps its runtime npm packagets. I had assumed running in a Homebridge shell would just work regardless of install method, but perhaps not as I'm still really new to the Homebridge architecture itself. When you first start the shell does it not show the plugin path? Like for me this is what it looks like when I start the shell:

Homebridge Terminal

Node.js Version: v18.16.0 Node.js Path: /opt/homebridge/bin/node Plugin Path: /var/lib/homebridge/node_modules

cebrakadabra commented 1 year ago

@tsightler it doesn't unfortunately right away - this is a pre-installed image on a raspberry pi bought like 2yrs ago. However I ran find / -type d -name 'node_modules' to see if I can find any other than my node_modules mentioned before and i did end up finding all my plugins in:

cd /usr/local/lib/node_modules

drwxr-xr-x 11 root root 4096 Aug 13 22:15 .
drwxr-xr-x  5 root root 4096 Aug  8 15:27 ..
drwxr-xr-x  2 root root 4096 May 30  2022 .bin
drwxr-xr-x  4 root root 4096 Aug 10 00:02 corepack
drwxr-xr-x  5 root root 4096 Jun 18 15:06 homebridge
drwxr-xr-x  5 root root 4096 Aug 10 00:07 homebridge-config-ui-x
drwxr-xr-x  6 root root 4096 Nov 27  2022 homebridge-dyson-pure-cool
drwxr-xr-x  4 root root 4096 Aug  9  2021 homebridge-platform-wemo
drwxr-xr-x  6 root root 4096 Aug 13 22:15 homebridge-ring
drwxr-xr-x  4 root root 4096 Jul 15  2021 homebridge-sonos
drwxr-xr-x  7 root root 4096 Aug 10 00:02 npm

So I ran npm ls --depth=2 from that directory with led to more promising results - here are the deps for homebridge-ring: I can print you any others, but it's such a large output, I did not want to clutter here.

homebridge-ring@12.0.0-beta.0 /usr/local/lib/node_modules/homebridge-ring
├─┬ @homebridge/camera-utils@2.2.0
│ ├─┬ execa@5.1.1
│ │ ├── cross-spawn@7.0.3
│ │ ├── get-stream@6.0.1
│ │ ├── human-signals@2.1.0
│ │ ├── is-stream@2.0.1
│ │ ├── merge-stream@2.0.0
│ │ ├── npm-run-path@4.0.1
│ │ ├── onetime@5.1.2
│ │ ├── signal-exit@3.0.7
│ │ └── strip-final-newline@2.0.0
│ ├─┬ ffmpeg-for-homebridge@0.1.4
│ │ ├── detect-libc@2.0.2
│ │ ├── dotenv@16.3.1
│ │ ├── simple-get@4.0.1
│ │ └── tar@6.1.15
│ ├─┬ pick-port@1.0.1
│ │ └── debug@4.3.4 deduped
│ ├─┬ rxjs@7.8.1
│ │ └── tslib@2.6.1
│ └── systeminformation@5.18.15
├── @homebridge/plugin-ui-utils@0.0.19
├── UNMET DEPENDENCY concurrently@^8.2.0
├── UNMET DEPENDENCY eslint-config-shared@*
├── UNMET DEPENDENCY homebridge-ui@*
├── UNMET DEPENDENCY homebridge@1.6.1
├── UNMET DEPENDENCY nodemon@^3.0.1
├─┬ ring-client-api@12.0.0-beta.0
│ ├─┬ @eneris/push-receiver@3.1.4
│ │ ├── axios@1.4.0
│ │ ├── http_ece@1.1.0
│ │ ├── long@5.2.3
│ │ └── protobufjs@7.2.4
│ ├── @homebridge/camera-utils@2.2.0 deduped
│ ├─┬ @peculiar/asn1-schema@2.3.6
│ │ ├── asn1js@3.0.5
│ │ ├── pvtsutils@1.3.3
│ │ └── tslib@2.6.1 deduped
│ ├─┬ @peculiar/webcrypto@1.4.3
│ │ ├── @peculiar/asn1-schema@2.3.6 deduped
│ │ ├── @peculiar/json-schema@1.1.12
│ │ ├── pvtsutils@1.3.3 deduped
│ │ ├── tslib@2.6.1 deduped
│ │ └── webcrypto-core@1.7.7 deduped
│ ├── @types/socket.io-client@1.4.36
│ ├── colors@1.4.0
│ ├─┬ debug@4.3.4
│ │ └── ms@2.1.2
│ ├─┬ got@11.8.6
│ │ ├── @sindresorhus/is@4.6.0
│ │ ├── @szmarczak/http-timer@4.0.6
│ │ ├── @types/cacheable-request@6.0.3
│ │ ├── @types/responselike@1.0.0
│ │ ├── cacheable-lookup@5.0.4
│ │ ├── cacheable-request@7.0.4
│ │ ├── decompress-response@6.0.0
│ │ ├── http2-wrapper@1.0.3
│ │ ├── lowercase-keys@2.0.0
│ │ ├── p-cancelable@2.1.1 deduped
│ │ └── responselike@2.0.1
│ ├─┬ json-bigint@1.0.0
│ │ └── bignumber.js@9.1.1
│ ├─┬ msw@1.2.3
│ │ ├── @mswjs/cookies@0.2.2
│ │ ├── @mswjs/interceptors@0.17.9
│ │ ├── @open-draft/until@1.0.3
│ │ ├── @types/cookie@0.4.1
│ │ ├── @types/js-levenshtein@1.1.1
│ │ ├── chalk@4.1.1
│ │ ├── chokidar@3.5.3
│ │ ├── cookie@0.4.2
│ │ ├── graphql@16.7.1
│ │ ├── headers-polyfill@3.1.2
│ │ ├── inquirer@8.2.6
│ │ ├── is-node-process@1.2.0
│ │ ├── js-levenshtein@1.1.6
│ │ ├── node-fetch@2.6.12
│ │ ├── outvariant@1.4.0
│ │ ├── path-to-regexp@6.2.1
│ │ ├── strict-event-emitter@0.4.6
│ │ ├── type-fest@2.19.0
│ │ ├── UNMET OPTIONAL DEPENDENCY typescript@>= 4.4.x <= 5.1.x
│ │ └── yargs@17.7.2
│ ├── rxjs@7.8.1 deduped
│ ├─┬ socket.io-client@2.5.0
│ │ ├── backo2@1.0.2
│ │ ├── component-bind@1.0.0
│ │ ├── component-emitter@1.3.0
│ │ ├── debug@3.1.0
│ │ ├── engine.io-client@3.5.3
│ │ ├── has-binary2@1.0.3
│ │ ├── indexof@0.0.1
│ │ ├── parseqs@0.0.6
│ │ ├── parseuri@0.0.6
│ │ ├── socket.io-parser@3.3.3
│ │ └── to-array@0.1.4
│ ├── systeminformation@5.18.15 deduped
│ ├── uuid@9.0.0
│ ├─┬ webcrypto-core@1.7.7
│ │ ├── @peculiar/asn1-schema@2.3.6 deduped
│ │ ├── @peculiar/json-schema@1.1.12 deduped
│ │ ├── asn1js@3.0.5 deduped
│ │ ├── pvtsutils@1.3.3 deduped
│ │ └── tslib@2.6.1 deduped
│ ├── werift@0.18.5 deduped
│ └─┬ ws@8.13.0
│   ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│   └── UNMET OPTIONAL DEPENDENCY utf-8-validate@>=5.0.2
├── UNMET DEPENDENCY tsconfig@*
├── UNMET DEPENDENCY typescript@5.1.6
└─┬ werift@0.18.5
  ├─┬ @fidm/x509@1.2.1
  │ ├── @fidm/asn1@1.0.4
  │ └── tweetnacl@1.0.3 deduped
  ├── @minhducsun2002/leb128@1.0.0
  ├── @peculiar/webcrypto@1.4.3 deduped
  ├─┬ @peculiar/x509@1.9.3
  │ ├── @peculiar/asn1-cms@2.3.6
  │ ├── @peculiar/asn1-csr@2.3.6
  │ ├── @peculiar/asn1-ecc@2.3.6
  │ ├── @peculiar/asn1-pkcs9@2.3.6
  │ ├── @peculiar/asn1-rsa@2.3.6
  │ ├── @peculiar/asn1-schema@2.3.6 deduped
  │ ├── @peculiar/asn1-x509@2.3.6
  │ ├── pvtsutils@1.3.3 deduped
  │ ├── reflect-metadata@0.1.13
  │ ├── tslib@2.6.1 deduped
  │ └── tsyringe@4.8.0
  ├─┬ @shinyoshiaki/ebml-builder@0.0.1
  │ └── lodash.memoize@4.1.2
  ├── aes-js@3.1.2
  ├─┬ binary-data@0.6.0
  │ ├── generate-function@2.3.1
  │ └── is-plain-object@2.0.4
  ├── buffer-crc32@0.2.13
  ├─┬ date-fns@2.30.0
  │ └── @babel/runtime@7.22.10
  ├── debug@4.3.4 deduped
  ├─┬ elliptic@6.5.4
  │ ├── bn.js@4.12.0
  │ ├── brorand@1.1.0
  │ ├── hash.js@1.1.7
  │ ├── hmac-drbg@1.0.1
  │ ├── inherits@2.0.4
  │ ├── minimalistic-assert@1.0.1
  │ └── minimalistic-crypto-utils@1.0.1
  ├── int64-buffer@1.0.1
  ├── ip@1.1.8
  ├── jspack@0.0.4
  ├── lodash@4.17.21
  ├─┬ nano-time@1.0.0
  │ └── big-integer@1.6.51
  ├── p-cancelable@2.1.1
  ├── rx.mini@1.4.0
  ├── turbo-crc32@1.0.1
  ├── tweetnacl@1.0.3
  └── uuid@9.0.0 deduped
ruudbol commented 1 year ago

same here

pi@homebridge:/usr/local/lib/node_modules $ ls -lrt total 44 drwxr-xr-x 4 root root 4096 Jul 27 2022 homebridge-toon-platform drwxr-xr-x 2 root root 4096 Jul 27 2022 @hommiepeter73 drwxr-xr-x 3 root root 4096 Mar 7 21:38 @milo526 drwxr-xr-x 6 root root 4096 Aug 12 10:40 homebridge-hue drwxr-xr-x 5 root root 4096 Aug 12 10:44 homebridge-config-ui-x drwxr-xr-x 4 root root 4096 Aug 12 11:00 corepack drwxr-xr-x 7 root root 4096 Aug 12 11:00 npm drwxr-xr-x 5 root root 4096 Aug 12 11:03 homebridge drwxr-xr-x 5 root root 4096 Aug 12 21:04 homebridge-kaku-ics2000 drwxr-xr-x 3 root root 4096 Aug 14 12:49 @0x5e drwxr-xr-x 6 root root 4096 Aug 14 20:10 homebridge-ring

/usr/local/lib ├─┬ homebridge-ring@11.8.1 extraneous │ ├─┬ @babel/runtime@7.22.10 extraneous │ │ └── regenerator-runtime@0.14.0 deduped │ ├─┬ @eneris/push-receiver@3.1.4 extraneous │ │ ├── axios@1.4.0 deduped │ │ ├── http_ece@1.1.0 deduped │ │ ├── long@5.2.3 deduped │ │ └── protobufjs@7.2.4 deduped │ ├── @fidm/asn1@1.0.4 extraneous │ ├─┬ @fidm/x509@1.2.1 extraneous │ │ ├── @fidm/asn1@1.0.4 deduped │ │ └── tweetnacl@1.0.3 deduped │ ├─┬ @homebridge/camera-utils@2.2.0 extraneous │ │ ├── execa@5.1.1 deduped │ │ ├── ffmpeg-for-homebridge@0.1.4 deduped │ │ ├── pick-port@1.0.1 deduped │ │ ├── rxjs@7.8.1 deduped │ │ └── systeminformation@5.18.15 deduped │ ├── @homebridge/plugin-ui-utils@0.0.19 extraneous │ ├── @minhducsun2002/leb128@1.0.0 extraneous │ ├─┬ @mswjs/cookies@0.2.2 extraneous │ │ ├── @types/set-cookie-parser@2.4.3 deduped │ │ └── set-cookie-parser@2.6.0 deduped │ ├─┬ @mswjs/interceptors@0.17.9 extraneous │ │ ├── @open-draft/until@1.0.3 deduped │ │ ├── @types/debug@4.1.8 deduped │ │ ├── @xmldom/xmldom@0.8.10 deduped │ │ ├── debug@4.3.4 deduped │ │ ├── headers-polyfill@3.1.2 deduped │ │ ├── outvariant@1.4.0 deduped │ │ ├── strict-event-emitter@0.2.8 extraneous │ │ └── web-encoding@1.1.5 deduped │ ├── @open-draft/until@1.0.3 extraneous │ ├─┬ @peculiar/asn1-cms@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509-attr@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-csr@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-ecc@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-pfx@2.3.6 extraneous │ │ ├── @peculiar/asn1-cms@2.3.6 deduped │ │ ├── @peculiar/asn1-pkcs8@2.3.6 deduped │ │ ├── @peculiar/asn1-rsa@2.3.6 deduped │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-pkcs8@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-pkcs9@2.3.6 extraneous │ │ ├── @peculiar/asn1-cms@2.3.6 deduped │ │ ├── @peculiar/asn1-pfx@2.3.6 deduped │ │ ├── @peculiar/asn1-pkcs8@2.3.6 deduped │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509-attr@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-rsa@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-schema@2.3.6 extraneous │ │ ├── asn1js@3.0.5 deduped │ │ ├── pvtsutils@1.3.3 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-x509-attr@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/asn1-x509@2.3.6 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── asn1js@3.0.5 deduped │ │ ├── ipaddr.js@2.1.0 deduped │ │ ├── pvtsutils@1.3.3 deduped │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/json-schema@1.1.12 extraneous │ │ └── tslib@2.6.1 deduped │ ├─┬ @peculiar/webcrypto@1.4.3 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/json-schema@1.1.12 deduped │ │ ├── pvtsutils@1.3.3 deduped │ │ ├── tslib@2.6.1 deduped │ │ └── webcrypto-core@1.7.7 deduped │ ├─┬ @peculiar/x509@1.9.3 extraneous │ │ ├── @peculiar/asn1-cms@2.3.6 deduped │ │ ├── @peculiar/asn1-csr@2.3.6 deduped │ │ ├── @peculiar/asn1-ecc@2.3.6 deduped │ │ ├── @peculiar/asn1-pkcs9@2.3.6 deduped │ │ ├── @peculiar/asn1-rsa@2.3.6 deduped │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/asn1-x509@2.3.6 deduped │ │ ├── pvtsutils@1.3.3 deduped │ │ ├── reflect-metadata@0.1.13 deduped │ │ ├── tslib@2.6.1 deduped │ │ └── tsyringe@4.8.0 deduped │ ├── @protobufjs/aspromise@1.1.2 extraneous │ ├── @protobufjs/base64@1.1.2 extraneous │ ├── @protobufjs/codegen@2.0.4 extraneous │ ├── @protobufjs/eventemitter@1.1.0 extraneous │ ├─┬ @protobufjs/fetch@1.1.0 extraneous │ │ ├── @protobufjs/aspromise@1.1.2 deduped │ │ └── @protobufjs/inquire@1.1.0 deduped │ ├── @protobufjs/float@1.0.2 extraneous │ ├── @protobufjs/inquire@1.1.0 extraneous │ ├── @protobufjs/path@1.1.2 extraneous │ ├── @protobufjs/pool@1.1.0 extraneous │ ├── @protobufjs/utf8@1.1.0 extraneous │ ├─┬ @shinyoshiaki/ebml-builder@0.0.1 extraneous │ │ └── lodash.memoize@4.1.2 deduped │ ├── @sindresorhus/is@4.6.0 extraneous │ ├─┬ @szmarczak/http-timer@4.0.6 extraneous │ │ └── defer-to-connect@2.0.1 deduped │ ├─┬ @types/cacheable-request@6.0.3 extraneous │ │ ├── @types/http-cache-semantics@4.0.1 deduped │ │ ├── @types/keyv@3.1.4 deduped │ │ ├── @types/node@20.5.0 deduped │ │ └── @types/responselike@1.0.0 deduped │ ├── @types/cookie@0.4.1 extraneous │ ├─┬ @types/debug@4.1.8 extraneous │ │ └── @types/ms@0.7.31 deduped │ ├── @types/http-cache-semantics@4.0.1 extraneous │ ├── @types/js-levenshtein@1.1.1 extraneous │ ├─┬ @types/keyv@3.1.4 extraneous │ │ └── @types/node@20.5.0 deduped │ ├── @types/ms@0.7.31 extraneous │ ├── @types/node@20.5.0 extraneous │ ├─┬ @types/responselike@1.0.0 extraneous │ │ └── @types/node@20.5.0 deduped │ ├─┬ @types/set-cookie-parser@2.4.3 extraneous │ │ └── @types/node@20.5.0 deduped │ ├── @types/socket.io-client@1.4.36 extraneous │ ├── @xmldom/xmldom@0.8.10 extraneous │ ├── @zxing/text-encoding@0.9.0 extraneous │ ├── aes-js@3.1.2 extraneous │ ├── after@0.8.2 extraneous │ ├─┬ ansi-escapes@4.3.2 extraneous │ │ └── type-fest@0.21.3 extraneous │ ├── ansi-regex@5.0.1 extraneous │ ├─┬ ansi-styles@4.3.0 extraneous │ │ └── color-convert@2.0.1 deduped │ ├─┬ anymatch@3.1.3 extraneous │ │ ├── normalize-path@3.0.0 deduped │ │ └── picomatch@2.3.1 deduped │ ├── arraybuffer.slice@0.0.7 extraneous │ ├─┬ asn1js@3.0.5 extraneous │ │ ├── pvtsutils@1.3.3 deduped │ │ ├── pvutils@1.1.3 deduped │ │ └── tslib@2.6.1 deduped │ ├── asynckit@0.4.0 extraneous │ ├── available-typed-arrays@1.0.5 extraneous │ ├─┬ axios@1.4.0 extraneous │ │ ├── follow-redirects@1.15.2 deduped │ │ ├── form-data@4.0.0 deduped │ │ └── proxy-from-env@1.1.0 deduped │ ├── backo2@1.0.2 extraneous │ ├── base64-arraybuffer@0.1.4 extraneous │ ├── base64-js@1.5.1 extraneous │ ├── big-integer@1.6.51 extraneous │ ├── bignumber.js@9.1.1 extraneous │ ├─┬ binary-data@0.6.0 extraneous │ │ ├── generate-function@2.3.1 deduped │ │ └── is-plain-object@2.0.4 deduped │ ├── binary-extensions@2.2.0 extraneous │ ├─┬ bl@4.1.0 extraneous │ │ ├── buffer@5.7.1 deduped │ │ ├── inherits@2.0.4 deduped │ │ └── readable-stream@3.6.2 deduped │ ├── blob@0.0.5 extraneous │ ├── bn.js@4.12.0 extraneous │ ├─┬ braces@3.0.2 extraneous │ │ └── fill-range@7.0.1 deduped │ ├── brorand@1.1.0 extraneous │ ├── buffer-crc32@0.2.13 extraneous │ ├─┬ buffer@5.7.1 extraneous │ │ ├── base64-js@1.5.1 deduped │ │ └── ieee754@1.2.1 deduped │ ├── cacheable-lookup@5.0.4 extraneous │ ├─┬ cacheable-request@7.0.4 extraneous │ │ ├── clone-response@1.0.3 deduped │ │ ├── get-stream@5.2.0 extraneous │ │ ├── http-cache-semantics@4.1.1 deduped │ │ ├── keyv@4.5.3 deduped │ │ ├── lowercase-keys@2.0.0 deduped │ │ ├── normalize-url@6.1.0 deduped │ │ └── responselike@2.0.1 deduped │ ├─┬ call-bind@1.0.2 extraneous │ │ ├── function-bind@1.1.1 deduped │ │ └── get-intrinsic@1.2.1 deduped │ ├─┬ chalk@4.1.1 extraneous │ │ ├── ansi-styles@4.3.0 deduped │ │ └── supports-color@7.2.0 deduped │ ├── chardet@0.7.0 extraneous │ ├─┬ chokidar@3.5.3 extraneous │ │ ├── anymatch@3.1.3 deduped │ │ ├── braces@3.0.2 deduped │ │ ├── UNMET OPTIONAL DEPENDENCY fsevents@~2.3.2 │ │ ├── glob-parent@5.1.2 deduped │ │ ├── is-binary-path@2.1.0 deduped │ │ ├── is-glob@4.0.3 deduped │ │ ├── normalize-path@3.0.0 deduped │ │ └── readdirp@3.6.0 deduped │ ├── chownr@2.0.0 extraneous │ ├─┬ cli-cursor@3.1.0 extraneous │ │ └── restore-cursor@3.1.0 deduped │ ├── cli-spinners@2.9.0 extraneous │ ├── cli-width@3.0.0 extraneous │ ├─┬ cliui@8.0.1 extraneous │ │ ├── string-width@4.2.3 deduped │ │ ├── strip-ansi@6.0.1 deduped │ │ └── wrap-ansi@7.0.0 extraneous │ ├─┬ clone-response@1.0.3 extraneous │ │ └── mimic-response@1.0.1 deduped │ ├── clone@1.0.4 extraneous │ ├─┬ color-convert@2.0.1 extraneous │ │ └── color-name@1.1.4 deduped │ ├── color-name@1.1.4 extraneous │ ├── colors@1.4.0 extraneous │ ├─┬ combined-stream@1.0.8 extraneous │ │ └── delayed-stream@1.0.0 deduped │ ├── component-bind@1.0.0 extraneous │ ├── component-emitter@1.3.0 extraneous │ ├── component-inherit@0.0.3 extraneous │ ├── cookie@0.4.2 extraneous │ ├─┬ cross-spawn@7.0.3 extraneous │ │ ├── path-key@3.1.1 deduped │ │ ├── shebang-command@2.0.0 deduped │ │ └── which@2.0.2 deduped │ ├─┬ date-fns@2.30.0 extraneous │ │ └── @babel/runtime@7.22.10 deduped │ ├─┬ debug@4.3.4 extraneous │ │ └── ms@2.1.2 deduped │ ├─┬ decompress-response@6.0.0 extraneous │ │ └── mimic-response@3.1.0 extraneous │ ├─┬ defaults@1.0.4 extraneous │ │ └── clone@1.0.4 deduped │ ├── defer-to-connect@2.0.1 extraneous │ ├── delayed-stream@1.0.0 extraneous │ ├── detect-libc@2.0.2 extraneous │ ├── dotenv@16.3.1 extraneous │ ├─┬ elliptic@6.5.4 extraneous │ │ ├── bn.js@4.12.0 deduped │ │ ├── brorand@1.1.0 deduped │ │ ├── hash.js@1.1.7 deduped │ │ ├── hmac-drbg@1.0.1 deduped │ │ ├── inherits@2.0.4 deduped │ │ ├── minimalistic-assert@1.0.1 deduped │ │ └── minimalistic-crypto-utils@1.0.1 deduped │ ├── emoji-regex@8.0.0 extraneous │ ├─┬ end-of-stream@1.4.4 extraneous │ │ └── once@1.4.0 deduped │ ├─┬ engine.io-client@3.5.3 extraneous │ │ ├── component-emitter@1.3.0 deduped │ │ ├── component-inherit@0.0.3 deduped │ │ ├── debug@3.1.0 extraneous │ │ ├── engine.io-parser@2.2.1 deduped │ │ ├── has-cors@1.1.0 deduped │ │ ├── indexof@0.0.1 deduped │ │ ├── ms@2.0.0 extraneous │ │ ├── parseqs@0.0.6 deduped │ │ ├── parseuri@0.0.6 deduped │ │ ├── ws@7.4.6 extraneous │ │ ├── xmlhttprequest-ssl@1.6.3 deduped │ │ └── yeast@0.1.2 deduped │ ├─┬ engine.io-parser@2.2.1 extraneous │ │ ├── after@0.8.2 deduped │ │ ├── arraybuffer.slice@0.0.7 deduped │ │ ├── base64-arraybuffer@0.1.4 deduped │ │ ├── blob@0.0.5 deduped │ │ └── has-binary2@1.0.3 deduped │ ├── escalade@3.1.1 extraneous │ ├── escape-string-regexp@1.0.5 extraneous │ ├── events@3.3.0 extraneous │ ├─┬ execa@5.1.1 extraneous │ │ ├── cross-spawn@7.0.3 deduped │ │ ├── get-stream@6.0.1 deduped │ │ ├── human-signals@2.1.0 deduped │ │ ├── is-stream@2.0.1 deduped │ │ ├── merge-stream@2.0.0 deduped │ │ ├── npm-run-path@4.0.1 deduped │ │ ├── onetime@5.1.2 deduped │ │ ├── signal-exit@3.0.7 deduped │ │ └── strip-final-newline@2.0.0 deduped │ ├─┬ external-editor@3.1.0 extraneous │ │ ├── chardet@0.7.0 deduped │ │ ├── iconv-lite@0.4.24 deduped │ │ └── tmp@0.0.33 deduped │ ├─┬ ffmpeg-for-homebridge@0.1.4 extraneous │ │ ├── detect-libc@2.0.2 deduped │ │ ├── dotenv@16.3.1 deduped │ │ ├── simple-get@4.0.1 deduped │ │ └── tar@6.1.15 deduped │ ├─┬ figures@3.2.0 extraneous │ │ └── escape-string-regexp@1.0.5 deduped │ ├─┬ fill-range@7.0.1 extraneous │ │ └── to-regex-range@5.0.1 deduped │ ├── follow-redirects@1.15.2 extraneous │ ├─┬ for-each@0.3.3 extraneous │ │ └── is-callable@1.2.7 deduped │ ├─┬ form-data@4.0.0 extraneous │ │ ├── asynckit@0.4.0 deduped │ │ ├── combined-stream@1.0.8 deduped │ │ └── mime-types@2.1.35 deduped │ ├─┬ fs-minipass@2.1.0 extraneous │ │ └── minipass@3.3.6 extraneous │ ├── function-bind@1.1.1 extraneous │ ├─┬ generate-function@2.3.1 extraneous │ │ └── is-property@1.0.2 deduped │ ├── get-caller-file@2.0.5 extraneous │ ├─┬ get-intrinsic@1.2.1 extraneous │ │ ├── function-bind@1.1.1 deduped │ │ ├── has-proto@1.0.1 deduped │ │ ├── has-symbols@1.0.3 deduped │ │ └── has@1.0.3 deduped │ ├── get-stream@6.0.1 extraneous │ ├─┬ glob-parent@5.1.2 extraneous │ │ └── is-glob@4.0.3 deduped │ ├─┬ gopd@1.0.1 extraneous │ │ └── get-intrinsic@1.2.1 deduped │ ├─┬ got@11.8.6 extraneous │ │ ├── @sindresorhus/is@4.6.0 deduped │ │ ├── @szmarczak/http-timer@4.0.6 deduped │ │ ├── @types/cacheable-request@6.0.3 deduped │ │ ├── @types/responselike@1.0.0 deduped │ │ ├── cacheable-lookup@5.0.4 deduped │ │ ├── cacheable-request@7.0.4 deduped │ │ ├── decompress-response@6.0.0 deduped │ │ ├── http2-wrapper@1.0.3 deduped │ │ ├── lowercase-keys@2.0.0 deduped │ │ ├── p-cancelable@2.1.1 deduped │ │ └── responselike@2.0.1 deduped │ ├── graphql@16.7.1 extraneous │ ├─┬ has-binary2@1.0.3 extraneous │ │ └── isarray@2.0.1 deduped │ ├── has-cors@1.1.0 extraneous │ ├── has-flag@4.0.0 extraneous │ ├── has-proto@1.0.1 extraneous │ ├── has-symbols@1.0.3 extraneous │ ├─┬ has-tostringtag@1.0.0 extraneous │ │ └── has-symbols@1.0.3 deduped │ ├─┬ has@1.0.3 extraneous │ │ └── function-bind@1.1.1 deduped │ ├─┬ hash.js@1.1.7 extraneous │ │ ├── inherits@2.0.4 deduped │ │ └── minimalistic-assert@1.0.1 deduped │ ├── headers-polyfill@3.1.2 extraneous │ ├─┬ hmac-drbg@1.0.1 extraneous │ │ ├── hash.js@1.1.7 deduped │ │ ├── minimalistic-assert@1.0.1 deduped │ │ └── minimalistic-crypto-utils@1.0.1 deduped │ ├─┬ http_ece@1.1.0 extraneous │ │ └── urlsafe-base64@1.0.0 deduped │ ├── http-cache-semantics@4.1.1 extraneous │ ├─┬ http2-wrapper@1.0.3 extraneous │ │ ├── quick-lru@5.1.1 deduped │ │ └── resolve-alpn@1.2.1 deduped │ ├── human-signals@2.1.0 extraneous │ ├─┬ iconv-lite@0.4.24 extraneous │ │ └── safer-buffer@2.1.2 deduped │ ├── ieee754@1.2.1 extraneous │ ├── indexof@0.0.1 extraneous │ ├── inherits@2.0.4 extraneous │ ├─┬ inquirer@8.2.6 extraneous │ │ ├── ansi-escapes@4.3.2 deduped │ │ ├── chalk@4.1.1 deduped │ │ ├── cli-cursor@3.1.0 deduped │ │ ├── cli-width@3.0.0 deduped │ │ ├── external-editor@3.1.0 deduped │ │ ├── figures@3.2.0 deduped │ │ ├── lodash@4.17.21 deduped │ │ ├── mute-stream@0.0.8 deduped │ │ ├── ora@5.4.1 deduped │ │ ├── run-async@2.4.1 deduped │ │ ├── rxjs@7.8.1 deduped │ │ ├── string-width@4.2.3 deduped │ │ ├── strip-ansi@6.0.1 deduped │ │ ├── through@2.3.8 deduped │ │ └── wrap-ansi@6.2.0 deduped │ ├── int64-buffer@1.0.1 extraneous │ ├── ip@1.1.8 extraneous │ ├── ipaddr.js@2.1.0 extraneous │ ├─┬ is-arguments@1.1.1 extraneous │ │ ├── call-bind@1.0.2 deduped │ │ └── has-tostringtag@1.0.0 deduped │ ├─┬ is-binary-path@2.1.0 extraneous │ │ └── binary-extensions@2.2.0 deduped │ ├── is-callable@1.2.7 extraneous │ ├── is-extglob@2.1.1 extraneous │ ├── is-fullwidth-code-point@3.0.0 extraneous │ ├─┬ is-generator-function@1.0.10 extraneous │ │ └── has-tostringtag@1.0.0 deduped │ ├─┬ is-glob@4.0.3 extraneous │ │ └── is-extglob@2.1.1 deduped │ ├── is-interactive@1.0.0 extraneous │ ├── is-node-process@1.2.0 extraneous │ ├── is-number@7.0.0 extraneous │ ├─┬ is-plain-object@2.0.4 extraneous │ │ └── isobject@3.0.1 deduped │ ├── is-property@1.0.2 extraneous │ ├── is-stream@2.0.1 extraneous │ ├─┬ is-typed-array@1.1.12 extraneous │ │ └── which-typed-array@1.1.11 deduped │ ├── is-unicode-supported@0.1.0 extraneous │ ├── isarray@2.0.1 extraneous │ ├── isexe@2.0.0 extraneous │ ├── isobject@3.0.1 extraneous │ ├── js-levenshtein@1.1.6 extraneous │ ├─┬ json-bigint@1.0.0 extraneous │ │ └── bignumber.js@9.1.1 deduped │ ├── json-buffer@3.0.1 extraneous │ ├── jspack@0.0.4 extraneous │ ├─┬ keyv@4.5.3 extraneous │ │ └── json-buffer@3.0.1 deduped │ ├── lodash.memoize@4.1.2 extraneous │ ├── lodash@4.17.21 extraneous │ ├─┬ log-symbols@4.1.0 extraneous │ │ ├── chalk@4.1.1 deduped │ │ └── is-unicode-supported@0.1.0 deduped │ ├── long@5.2.3 extraneous │ ├── lowercase-keys@2.0.0 extraneous │ ├── merge-stream@2.0.0 extraneous │ ├── mime-db@1.52.0 extraneous │ ├─┬ mime-types@2.1.35 extraneous │ │ └── mime-db@1.52.0 deduped │ ├── mimic-fn@2.1.0 extraneous │ ├── mimic-response@1.0.1 extraneous │ ├── minimalistic-assert@1.0.1 extraneous │ ├── minimalistic-crypto-utils@1.0.1 extraneous │ ├── minipass@5.0.0 extraneous │ ├─┬ minizlib@2.1.2 extraneous │ │ ├── minipass@3.3.6 extraneous │ │ └── yallist@4.0.0 deduped │ ├── mkdirp@1.0.4 extraneous │ ├── ms@2.1.2 extraneous │ ├─┬ msw@1.2.3 extraneous │ │ ├── @mswjs/cookies@0.2.2 deduped │ │ ├── @mswjs/interceptors@0.17.9 deduped │ │ ├── @open-draft/until@1.0.3 deduped │ │ ├── @types/cookie@0.4.1 deduped │ │ ├── @types/js-levenshtein@1.1.1 deduped │ │ ├── chalk@4.1.1 deduped │ │ ├── chokidar@3.5.3 deduped │ │ ├── cookie@0.4.2 deduped │ │ ├── graphql@16.7.1 deduped │ │ ├── headers-polyfill@3.1.2 deduped │ │ ├── inquirer@8.2.6 deduped │ │ ├── is-node-process@1.2.0 deduped │ │ ├── js-levenshtein@1.1.6 deduped │ │ ├── node-fetch@2.6.12 deduped │ │ ├── outvariant@1.4.0 deduped │ │ ├── path-to-regexp@6.2.1 deduped │ │ ├── strict-event-emitter@0.4.6 deduped │ │ ├── type-fest@2.19.0 deduped │ │ ├── UNMET OPTIONAL DEPENDENCY typescript@>= 4.4.x <= 5.1.x │ │ └── yargs@17.7.2 deduped │ ├── mute-stream@0.0.8 extraneous │ ├─┬ nano-time@1.0.0 extraneous │ │ └── big-integer@1.6.51 deduped │ ├─┬ node-fetch@2.6.12 extraneous │ │ ├── UNMET OPTIONAL DEPENDENCY encoding@^0.1.0 │ │ └── whatwg-url@5.0.0 deduped │ ├── normalize-path@3.0.0 extraneous │ ├── normalize-url@6.1.0 extraneous │ ├─┬ npm-run-path@4.0.1 extraneous │ │ └── path-key@3.1.1 deduped │ ├─┬ once@1.4.0 extraneous │ │ └── wrappy@1.0.2 deduped │ ├─┬ onetime@5.1.2 extraneous │ │ └── mimic-fn@2.1.0 deduped │ ├─┬ ora@5.4.1 extraneous │ │ ├── bl@4.1.0 deduped │ │ ├── chalk@4.1.1 deduped │ │ ├── cli-cursor@3.1.0 deduped │ │ ├── cli-spinners@2.9.0 deduped │ │ ├── is-interactive@1.0.0 deduped │ │ ├── is-unicode-supported@0.1.0 deduped │ │ ├── log-symbols@4.1.0 deduped │ │ ├── strip-ansi@6.0.1 deduped │ │ └── wcwidth@1.0.1 deduped │ ├── os-tmpdir@1.0.2 extraneous │ ├── outvariant@1.4.0 extraneous │ ├── p-cancelable@2.1.1 extraneous │ ├── parseqs@0.0.6 extraneous │ ├── parseuri@0.0.6 extraneous │ ├── path-key@3.1.1 extraneous │ ├── path-to-regexp@6.2.1 extraneous │ ├─┬ pick-port@1.0.1 extraneous │ │ └── debug@4.3.4 deduped │ ├── picomatch@2.3.1 extraneous │ ├─┬ protobufjs@7.2.4 extraneous │ │ ├── @protobufjs/aspromise@1.1.2 deduped │ │ ├── @protobufjs/base64@1.1.2 deduped │ │ ├── @protobufjs/codegen@2.0.4 deduped │ │ ├── @protobufjs/eventemitter@1.1.0 deduped │ │ ├── @protobufjs/fetch@1.1.0 deduped │ │ ├── @protobufjs/float@1.0.2 deduped │ │ ├── @protobufjs/inquire@1.1.0 deduped │ │ ├── @protobufjs/path@1.1.2 deduped │ │ ├── @protobufjs/pool@1.1.0 deduped │ │ ├── @protobufjs/utf8@1.1.0 deduped │ │ ├── @types/node@20.5.0 deduped │ │ └── long@5.2.3 deduped │ ├── proxy-from-env@1.1.0 extraneous │ ├─┬ pump@3.0.0 extraneous │ │ ├── end-of-stream@1.4.4 deduped │ │ └── once@1.4.0 deduped │ ├─┬ pvtsutils@1.3.3 extraneous │ │ └── tslib@2.6.1 deduped │ ├── pvutils@1.1.3 extraneous │ ├── quick-lru@5.1.1 extraneous │ ├─┬ readable-stream@3.6.2 extraneous │ │ ├── inherits@2.0.4 deduped │ │ ├── string_decoder@1.3.0 deduped │ │ └── util-deprecate@1.0.2 deduped │ ├─┬ readdirp@3.6.0 extraneous │ │ └── picomatch@2.3.1 deduped │ ├── reflect-metadata@0.1.13 extraneous │ ├── regenerator-runtime@0.14.0 extraneous │ ├── require-directory@2.1.1 extraneous │ ├── resolve-alpn@1.2.1 extraneous │ ├─┬ responselike@2.0.1 extraneous │ │ └── lowercase-keys@2.0.0 deduped │ ├─┬ restore-cursor@3.1.0 extraneous │ │ ├── onetime@5.1.2 deduped │ │ └── signal-exit@3.0.7 deduped │ ├─┬ ring-client-api@11.8.1 extraneous │ │ ├── @eneris/push-receiver@3.1.4 deduped │ │ ├── @homebridge/camera-utils@2.2.0 deduped │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/webcrypto@1.4.3 deduped │ │ ├── @types/socket.io-client@1.4.36 deduped │ │ ├── colors@1.4.0 deduped │ │ ├── debug@4.3.4 deduped │ │ ├── got@11.8.6 deduped │ │ ├── json-bigint@1.0.0 deduped │ │ ├── msw@1.2.3 deduped │ │ ├── rxjs@7.8.1 deduped │ │ ├── socket.io-client@2.5.0 deduped │ │ ├── systeminformation@5.18.15 deduped │ │ ├── uuid@9.0.0 deduped │ │ ├── webcrypto-core@1.7.7 deduped │ │ ├── werift@0.18.5 deduped │ │ └── ws@8.13.0 deduped │ ├── run-async@2.4.1 extraneous │ ├── rx.mini@1.4.0 extraneous │ ├─┬ rxjs@7.8.1 extraneous │ │ └── tslib@2.6.1 deduped │ ├── safe-buffer@5.2.1 extraneous │ ├── safer-buffer@2.1.2 extraneous │ ├── set-cookie-parser@2.6.0 extraneous │ ├─┬ shebang-command@2.0.0 extraneous │ │ └── shebang-regex@3.0.0 deduped │ ├── shebang-regex@3.0.0 extraneous │ ├── signal-exit@3.0.7 extraneous │ ├── simple-concat@1.0.1 extraneous │ ├─┬ simple-get@4.0.1 extraneous │ │ ├── decompress-response@6.0.0 deduped │ │ ├── once@1.4.0 deduped │ │ └── simple-concat@1.0.1 deduped │ ├─┬ socket.io-client@2.5.0 extraneous │ │ ├── backo2@1.0.2 deduped │ │ ├── component-bind@1.0.0 deduped │ │ ├── component-emitter@1.3.0 deduped │ │ ├── debug@3.1.0 extraneous │ │ ├── engine.io-client@3.5.3 deduped │ │ ├── has-binary2@1.0.3 deduped │ │ ├── indexof@0.0.1 deduped │ │ ├── ms@2.0.0 extraneous │ │ ├── parseqs@0.0.6 deduped │ │ ├── parseuri@0.0.6 deduped │ │ ├── socket.io-parser@3.3.3 deduped │ │ └── to-array@0.1.4 deduped │ ├─┬ socket.io-parser@3.3.3 extraneous │ │ ├── component-emitter@1.3.0 deduped │ │ ├── debug@3.1.0 extraneous │ │ ├── isarray@2.0.1 deduped │ │ └── ms@2.0.0 extraneous │ ├── strict-event-emitter@0.4.6 extraneous │ ├─┬ string_decoder@1.3.0 extraneous │ │ └── safe-buffer@5.2.1 deduped │ ├─┬ string-width@4.2.3 extraneous │ │ ├── emoji-regex@8.0.0 deduped │ │ ├── is-fullwidth-code-point@3.0.0 deduped │ │ └── strip-ansi@6.0.1 deduped │ ├─┬ strip-ansi@6.0.1 extraneous │ │ └── ansi-regex@5.0.1 deduped │ ├── strip-final-newline@2.0.0 extraneous │ ├─┬ supports-color@7.2.0 extraneous │ │ └── has-flag@4.0.0 deduped │ ├── systeminformation@5.18.15 extraneous │ ├─┬ tar@6.1.15 extraneous │ │ ├── chownr@2.0.0 deduped │ │ ├── fs-minipass@2.1.0 deduped │ │ ├── minipass@5.0.0 deduped │ │ ├── minizlib@2.1.2 deduped │ │ ├── mkdirp@1.0.4 deduped │ │ └── yallist@4.0.0 deduped │ ├── through@2.3.8 extraneous │ ├─┬ tmp@0.0.33 extraneous │ │ └── os-tmpdir@1.0.2 deduped │ ├── to-array@0.1.4 extraneous │ ├─┬ to-regex-range@5.0.1 extraneous │ │ └── is-number@7.0.0 deduped │ ├── tr46@0.0.3 extraneous │ ├── tslib@2.6.1 extraneous │ ├─┬ tsyringe@4.8.0 extraneous │ │ └── tslib@1.14.1 extraneous │ ├── turbo-crc32@1.0.1 extraneous │ ├── tweetnacl@1.0.3 extraneous │ ├── type-fest@2.19.0 extraneous │ ├── urlsafe-base64@1.0.0 extraneous │ ├── util-deprecate@1.0.2 extraneous │ ├─┬ util@0.12.5 extraneous │ │ ├── inherits@2.0.4 deduped │ │ ├── is-arguments@1.1.1 deduped │ │ ├── is-generator-function@1.0.10 deduped │ │ ├── is-typed-array@1.1.12 deduped │ │ └── which-typed-array@1.1.11 deduped │ ├── uuid@9.0.0 extraneous │ ├─┬ wcwidth@1.0.1 extraneous │ │ └── defaults@1.0.4 deduped │ ├─┬ web-encoding@1.1.5 extraneous │ │ ├── @zxing/text-encoding@0.9.0 deduped │ │ └── util@0.12.5 deduped │ ├─┬ webcrypto-core@1.7.7 extraneous │ │ ├── @peculiar/asn1-schema@2.3.6 deduped │ │ ├── @peculiar/json-schema@1.1.12 deduped │ │ ├── asn1js@3.0.5 deduped │ │ ├── pvtsutils@1.3.3 deduped │ │ └── tslib@2.6.1 deduped │ ├── webidl-conversions@3.0.1 extraneous │ ├─┬ werift@0.18.5 extraneous │ │ ├── @fidm/x509@1.2.1 deduped │ │ ├── @minhducsun2002/leb128@1.0.0 deduped │ │ ├── @peculiar/webcrypto@1.4.3 deduped │ │ ├── @peculiar/x509@1.9.3 deduped │ │ ├── @shinyoshiaki/ebml-builder@0.0.1 deduped │ │ ├── aes-js@3.1.2 deduped │ │ ├── binary-data@0.6.0 deduped │ │ ├── buffer-crc32@0.2.13 deduped │ │ ├── date-fns@2.30.0 deduped │ │ ├── debug@4.3.4 deduped │ │ ├── elliptic@6.5.4 deduped │ │ ├── int64-buffer@1.0.1 deduped │ │ ├── ip@1.1.8 deduped │ │ ├── jspack@0.0.4 deduped │ │ ├── lodash@4.17.21 deduped │ │ ├── nano-time@1.0.0 deduped │ │ ├── p-cancelable@2.1.1 deduped │ │ ├── rx.mini@1.4.0 deduped │ │ ├── turbo-crc32@1.0.1 deduped │ │ ├── tweetnacl@1.0.3 deduped │ │ └── uuid@9.0.0 deduped │ ├─┬ whatwg-url@5.0.0 extraneous │ │ ├── tr46@0.0.3 deduped │ │ └── webidl-conversions@3.0.1 deduped │ ├─┬ which-typed-array@1.1.11 extraneous │ │ ├── available-typed-arrays@1.0.5 deduped │ │ ├── call-bind@1.0.2 deduped │ │ ├── for-each@0.3.3 deduped │ │ ├── gopd@1.0.1 deduped │ │ └── has-tostringtag@1.0.0 deduped │ ├─┬ which@2.0.2 extraneous │ │ └── isexe@2.0.0 deduped │ ├─┬ wrap-ansi@6.2.0 extraneous │ │ ├── ansi-styles@4.3.0 deduped │ │ ├── string-width@4.2.3 deduped │ │ └── strip-ansi@6.0.1 deduped │ ├── wrappy@1.0.2 extraneous │ ├─┬ ws@8.13.0 extraneous │ │ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1 │ │ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@>=5.0.2 │ ├── xmlhttprequest-ssl@1.6.3 extraneous │ ├── y18n@5.0.8 extraneous │ ├── yallist@4.0.0 extraneous │ ├── yargs-parser@21.1.1 extraneous │ ├─┬ yargs@17.7.2 extraneous │ │ ├── cliui@8.0.1 deduped │ │ ├── escalade@3.1.1 deduped │ │ ├── get-caller-file@2.0.5 deduped │ │ ├── require-directory@2.1.1 deduped │ │ ├── string-width@4.2.3 deduped │ │ ├── y18n@5.0.8 deduped │ │ └── yargs-parser@21.1.1 deduped │ └── yeast@0.1.2 extraneous ├─┬ homebridge-toon-platform@0.9.7 extraneous

tsightler commented 1 year ago

Thanks everyone that has provided npm output. I have hidden them for now to make the thread more readable but they were extremely useful. Going through the details the only difference I could find between my working setup and the non-working ones was the version of pvtsutils. My working setup was using 1.3.2 while the broken ones above have 1.3.3, and sure enough, updating my version to 1.3.3 reproduces the issue.

Also, v1.3.3 was updated 8 days ago and a very similar issue with the padStart function has already been reported on the pvtsutils project page: https://github.com/PeculiarVentures/pvtsutils/issues/12

Manually reverting the package back to pvtsutils v1.3.2 solves the issue which is the workaround for now.

dgreif commented 1 year ago

Thank you for the thorough investigation work @tsightler!

I just released 12.0.0-beta.1, which should "pin" the pvtsutils version to 1.3.2. I say "should" because I'm seeing some funky behavior with npm workspaces locally, but the actual install doesn't use workspaces. Let us know if the beta version works for y'all!

cebrakadabra commented 1 year ago

@dgreif appreciate the effort and release! - I tried and it didn't update it within homebridge-ring my pvtsutils is still set to 1.3.3 as part of the package.json within the node_modules of homebridge-ring

Unfortunately the npm install log disappears to quickly in the homebridge ui to tell. It might only will do so, if I'd remove homebridge-ring completely and re-install.

tsightler commented 1 year ago

One of the most confusing things for me is that I just did my Homebridge install fresh last night and I only received pvtsutils 1.3.2, even though 1.3.3 was available. I had to manually update to 1.3.3 to get it.

dgreif commented 1 year ago

Thanks for the quick response @cebrakadabra. Give 12.0.0-beta.2 a try 🤞.

For context, it looks like there is an npm bug where it doesn't respect the override field after a dep has already been installed 😞. I switched to listing 1.3.2 as a direct dependency, which seems to fix it on my end, but curious how it goes for other users.

dgreif commented 1 year ago

@tsightler npm can be weird that way. It has a local cache that it checks first, so if you had previously installed 1.3.2, it would see that and say "this version satisfies my needs" and just use that. I'm guessing that's what happened

cebrakadabra commented 1 year ago

Thanks for the quick response @cebrakadabra. Give 12.0.0-beta.2 a try 🤞.

For context, it looks like there is an npm bug where it doesn't respect the override field after a dep has already been installed 😞. I switched to listing 1.3.2 as a direct dependency, which seems to fix it on my end, but curious how it goes for other users.

@dgreif @tsightler

1) Using 12.0.0-beta.2 2) restarted the homebridge server 3) confirming i see 1.3.2 4) and a working live stream 🥳

Thank you! ❤️

DerMuri commented 1 year ago

Thanks for the quick response @cebrakadabra. Give 12.0.0-beta.2 a try 🤞.

For context, it looks like there is an npm bug where it doesn't respect the override field after a dep has already been installed 😞. I switched to listing 1.3.2 as a direct dependency, which seems to fix it on my end, but curious how it goes for other users.

It works! Thanks so much!

F-Kafka commented 1 year ago

Thanks everyone for contributing and working on this. I can confirm upgrading to 12.0 beta 2 installed pvtsutils 1.3.2 & resolved the problem.

reesek commented 1 year ago

Thank you all SO much for your amazing help with this! I can also confirm that v12.0.0-beta.2 resolved the issues with live streaming!

kjp10480 commented 1 year ago

Hi Everyone. Can someone give guidance on how to manually upgrade? I am running Homebridge 1.6.1 on a windows pc. Thanks, KJ

shaileshck commented 1 year ago

Thank you so much beta 2 works and resolved live streaming issue.

Sent from Outlook for iOShttps://aka.ms/o0ukef


From: reesek @.> Sent: Tuesday, August 15, 2023 11:09 PM To: dgreif/ring @.> Cc: shaileshck @.>; Comment @.> Subject: Re: [dgreif/ring] Failed to activate stream (Issue #1286)

Thank you all SO much for your amazing help with this! I can also confirm that v12.0.0-beta.2 resolved the issues with live streaming!

— Reply to this email directly, view it on GitHubhttps://github.com/dgreif/ring/issues/1286#issuecomment-1679344999, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQFLWWCSVPXZLKNTLL4UG7DXVOX4LANCNFSM6AAAAAA3JONFD4. You are receiving this because you commented.Message ID: @.***>

teacherguy2020 commented 1 year ago

Any idea of when it will move out of beta and become available through the Homebridge interface? Thanks very much

ruudbol commented 1 year ago

Thx, working again

tsightler commented 1 year ago

Any idea of when it will move out of beta and become available through the Homebridge interface? Thanks very much

The beta should be installable via the Homebridge UI even now, that's how I did it. Just select install alternate version and select the v12.0.0-beta.2 version from the drop down list.

teacherguy2020 commented 1 year ago

Perfect, thank you…. works great

kjp10480 commented 1 year ago

Any idea of when it will move out of beta and become available through the Homebridge interface? Thanks very much

The beta should be installable via the Homebridge UI even now, that's how I did it. Just select install alternate version and select the v12.0.0-beta.2 version from the drop down list.

Thank you!!!!!!

dgreif commented 1 year ago

Looks like all positive feedback flowing in, so I'm going to go ahead and close + lock this issue. I'll probably cut an official release in the next week or so.