@nubisco/openbridge 0.39.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  [![CI](https://github.com/nubisco/openbridge/actions/workflows/ci.yml/badge.svg)](https://github.com/nubisco/openbridge/actions/workflows/ci.yml)
14
14
  [![GitHub release](https://img.shields.io/github/v/release/nubisco/openbridge)](https://github.com/nubisco/openbridge/releases)
15
15
  [![npm](https://img.shields.io/npm/v/%40nubisco%2Fopenbridge)](https://www.npmjs.com/package/@nubisco/openbridge)
16
- [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-339933)](https://nodejs.org/)
16
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D22.23.4-339933)](https://nodejs.org/)
17
17
  [![pnpm](https://img.shields.io/badge/pnpm-9-f69220)](https://pnpm.io/)
18
18
  [![license](https://img.shields.io/github/license/nubisco/openbridge)](LICENSE)
19
19
  [![CLA](https://img.shields.io/badge/CLA-required-0A7F5A)](docs/CLA-INDIVIDUAL.md)
@@ -67,7 +67,7 @@ Three ways to install. Full details, including system and network requirements,
67
67
 
68
68
  ### Install from npm
69
69
 
70
- **Requirements:** Node.js 20 or newer.
70
+ **Requirements:** Node.js 22.23.4 or newer. Node 20 is end of life and no longer gets security fixes, and earlier Node 22 releases are affected by the October 2026 Node.js security release.
71
71
 
72
72
  ```bash
73
73
  npm install -g @nubisco/openbridge
@@ -85,7 +85,7 @@ State lives in `~/.openbridge` (config, plugins, HomeKit pairing), following the
85
85
 
86
86
  ### Run with Docker
87
87
 
88
- For servers and NAS boxes. There is no image to pull: the [`docker-compose.yml`](docker-compose.yml) in this repository runs a stock `node:22-alpine` container that installs `@nubisco/openbridge` from npm into a volume on first boot, which is also what the in-app updater replaces.
88
+ For servers and NAS boxes. There is no image to pull: the [`docker-compose.yml`](docker-compose.yml) in this repository runs a stock `node:22.23.4-alpine` container that installs `@nubisco/openbridge` from npm into a volume on first boot, which is also what the in-app updater replaces.
89
89
 
90
90
  ```bash
91
91
  curl -O https://raw.githubusercontent.com/nubisco/openbridge/master/docker-compose.yml
@@ -96,7 +96,7 @@ The first start spends a minute or two installing before the dashboard answers o
96
96
 
97
97
  ### Install from source
98
98
 
99
- **Requirements:** Node.js 20+, pnpm 9+, roughly 1 GB of free disk (`node_modules` lands around 720 MB).
99
+ **Requirements:** Node.js 22.23.4+, pnpm 9+, roughly 1 GB of free disk (`node_modules` lands around 720 MB).
100
100
 
101
101
  ```bash
102
102
  # Install dependencies
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node-version.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/node-version.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { readFileSync } from 'fs';
3
+ import { MINIMUM_NODE_VERSION, nodeVersionWarning } from '../node-version.js';
4
+ describe('nodeVersionWarning', () => {
5
+ it.each(['v20.19.0', 'v22.0.0', 'v22.23.3', 'v21.9.9', 'v18.20.4'])('warns on %s', (version) => {
6
+ const warning = nodeVersionWarning(version);
7
+ expect(warning).toContain(version);
8
+ expect(warning).toContain(MINIMUM_NODE_VERSION);
9
+ // The message must say why, not only that the version is old.
10
+ expect(warning).toMatch(/end of life/);
11
+ expect(warning).toMatch(/security release/);
12
+ });
13
+ it.each(['v22.23.4', 'v22.23.10', 'v22.24.0', 'v23.0.0', 'v24.0.0', 'v26.1.2'])('accepts %s', (version) => {
14
+ expect(nodeVersionWarning(version)).toBeNull();
15
+ });
16
+ it('stays quiet on a version string it cannot read', () => {
17
+ expect(nodeVersionWarning('nightly')).toBeNull();
18
+ });
19
+ it('matches engines.node in the published package.json', () => {
20
+ const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
21
+ expect(pkg.engines.node).toBe(`>=${MINIMUM_NODE_VERSION}`);
22
+ });
23
+ });
24
+ //# sourceMappingURL=node-version.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version.test.js","sourceRoot":"","sources":["../../src/__tests__/node-version.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;QAC7F,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;QAC/C,8DAA8D;QAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACtC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;QACxG,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5F,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,oBAAoB,EAAE,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { OPENBRIDGE_VERSION } from './version.js';
3
+ import { nodeVersionWarning } from './node-version.js';
3
4
  // Argument handling runs before anything else: `openbridge --help` must never
4
5
  // start a daemon or publish a HAP bridge on the local network as a side effect.
5
6
  const argv = process.argv.slice(2);
@@ -47,6 +48,9 @@ function parsePort() {
47
48
  const { Daemon } = await import('./daemon.js');
48
49
  const { Logger } = await import('@nubisco/openbridge-logger');
49
50
  const log = Logger.create('system');
51
+ const nodeWarning = nodeVersionWarning(process.version);
52
+ if (nodeWarning)
53
+ log.warn(nodeWarning);
50
54
  // Prevent plugin errors from crashing the daemon
51
55
  process.on('uncaughtException', (err) => {
52
56
  log.error(`Uncaught exception: ${err?.message ?? err}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,cAAc,kBAAkB;;;;;;;;;;;;;;;;;;;mDAmBK,CAAC,CAAA;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;AAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAE7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEnC,iDAAiD;AACjD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA;AACF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,GAAG,CAAC,KAAK,CAAC,wBAAwB,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAChG,CAAC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAChD,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,cAAc,kBAAkB;;;;;;;;;;;;;;;;;;;mDAmBK,CAAC,CAAA;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mFAAmF;AACnF,qFAAqF;AACrF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;AAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAE7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEnC,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACvD,IAAI,WAAW;IAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AAEtC,iDAAiD;AACjD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA;AACF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,GAAG,CAAC,KAAK,CAAC,wBAAwB,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAChG,CAAC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAChD,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The oldest Node.js release OpenBridge supports, kept in step with `engines.node`
3
+ * in every published package.json.
4
+ *
5
+ * Node 20 reached end of life in April 2026 and gets no security fixes. Node 22
6
+ * releases before 22.23.4 are affected by the October 2026 Node.js security
7
+ * release. A home bridge listens on the local network, so running it on either
8
+ * leaves known holes open.
9
+ */
10
+ export declare const MINIMUM_NODE_VERSION = "22.23.4";
11
+ /**
12
+ * Returns the warning to log when `version` (in `process.version` form) is older
13
+ * than MINIMUM_NODE_VERSION, or null when it is supported or cannot be read.
14
+ *
15
+ * This warns rather than refusing to start. npm treats `engines` as advice, so a
16
+ * Docker volume or a global install can be updated onto an older Node, and a
17
+ * daemon that then refused to start would take the bridge, the dashboard and
18
+ * the in-app rollback down with it.
19
+ */
20
+ export declare function nodeVersionWarning(version: string): string | null;
21
+ //# sourceMappingURL=node-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version.d.ts","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAQ7C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBjE"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The oldest Node.js release OpenBridge supports, kept in step with `engines.node`
3
+ * in every published package.json.
4
+ *
5
+ * Node 20 reached end of life in April 2026 and gets no security fixes. Node 22
6
+ * releases before 22.23.4 are affected by the October 2026 Node.js security
7
+ * release. A home bridge listens on the local network, so running it on either
8
+ * leaves known holes open.
9
+ */
10
+ export const MINIMUM_NODE_VERSION = '22.23.4';
11
+ function parse(version) {
12
+ const match = /^v?(\d+)\.(\d+)\.(\d+)/.exec(version.trim());
13
+ if (!match)
14
+ return null;
15
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
16
+ }
17
+ /**
18
+ * Returns the warning to log when `version` (in `process.version` form) is older
19
+ * than MINIMUM_NODE_VERSION, or null when it is supported or cannot be read.
20
+ *
21
+ * This warns rather than refusing to start. npm treats `engines` as advice, so a
22
+ * Docker volume or a global install can be updated onto an older Node, and a
23
+ * daemon that then refused to start would take the bridge, the dashboard and
24
+ * the in-app rollback down with it.
25
+ */
26
+ export function nodeVersionWarning(version) {
27
+ const current = parse(version);
28
+ const minimum = parse(MINIMUM_NODE_VERSION);
29
+ if (!current || !minimum)
30
+ return null;
31
+ for (let i = 0; i < 3; i++) {
32
+ if (current[i] > minimum[i])
33
+ return null;
34
+ if (current[i] < minimum[i]) {
35
+ return (`Node.js ${version} is older than ${MINIMUM_NODE_VERSION}, the oldest release OpenBridge supports. ` +
36
+ 'Node 20 is end of life and gets no security fixes, and Node 22 releases before 22.23.4 are ' +
37
+ 'affected by the October 2026 Node.js security release. OpenBridge will keep running, but ' +
38
+ `upgrade Node.js to ${MINIMUM_NODE_VERSION} or newer (under Docker, raise the image tag).`);
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ //# sourceMappingURL=node-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version.js","sourceRoot":"","sources":["../src/node-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAE7C,SAAS,KAAK,CAAC,OAAe;IAC5B,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,CACL,WAAW,OAAO,kBAAkB,oBAAoB,4CAA4C;gBACpG,6FAA6F;gBAC7F,2FAA2F;gBAC3F,sBAAsB,oBAAoB,gDAAgD,CAC3F,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nubisco/openbridge",
3
- "version": "0.39.1",
3
+ "version": "1.0.0",
4
4
  "description": "Local-first home automation bridge for developers. Plugin-based, TypeScript-first, Homebridge-compatible.",
5
5
  "author": "José Silva <jose@nubisco.io>",
6
6
  "license": "MIT",
@@ -40,7 +40,7 @@
40
40
  "LICENSE"
41
41
  ],
42
42
  "engines": {
43
- "node": ">=20"
43
+ "node": ">=22.23.4"
44
44
  },
45
45
  "publishConfig": {
46
46
  "access": "public"
@@ -53,10 +53,10 @@
53
53
  "hap-nodejs": "^0.14.3",
54
54
  "qrcode-terminal": "^0.12.0",
55
55
  "systeminformation": "^5.33.16",
56
- "@nubisco/openbridge-compatibility-homebridge": "0.39.1",
57
- "@nubisco/openbridge-core": "0.39.1",
58
- "@nubisco/openbridge-config": "0.39.1",
59
- "@nubisco/openbridge-logger": "0.39.1"
56
+ "@nubisco/openbridge-compatibility-homebridge": "1.0.0",
57
+ "@nubisco/openbridge-config": "1.0.0",
58
+ "@nubisco/openbridge-core": "1.0.0",
59
+ "@nubisco/openbridge-logger": "1.0.0"
60
60
  },
61
61
  "optionalDependencies": {
62
62
  "node-pty": "^1.1.0"