Closed Dr4Eyez closed 1 year ago
I have the exact same issue. Are you also using the v12 beta of the plugin?
@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?
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.
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.
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 (
I have similar logs as well
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.
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)
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
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
Me too. Recently upgraded to latest NodeJS version v18.17.1.
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!
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
Another thing that might be interesting, what other plugins are installed (if any) and what is the iOS version in use.
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: @.***>
Can some user experiencing this issue please go into the homebridge shell and post the output of the following command:
$ npm ls --depth=2
@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
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
@tsightler - i was wondering - I went one level deeper, as my homebridge context on my raspberry pi didn't return anything (see screenshot below)
@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
@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
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
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.
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!
@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.
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.
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.
@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
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 listing1.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! ❤️
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 listing1.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!
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.
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!
Hi Everyone. Can someone give guidance on how to manually upgrade? I am running Homebridge 1.6.1 on a windows pc. Thanks, KJ
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: @.***>
Any idea of when it will move out of beta and become available through the Homebridge interface? Thanks very much
Thx, working again
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.
Perfect, thank you…. works great
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!!!!!!
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.
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
Honesty Time