homebridge 2.0.0-alpha.3 → 2.0.0-alpha.5
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 +16 -17
- package/bin/homebridge +8 -6
- package/config-sample.json +3 -3
- package/{lib → dist}/api.d.ts +23 -40
- package/dist/api.d.ts.map +1 -0
- package/{lib → dist}/api.js +38 -64
- package/dist/api.js.map +1 -0
- package/{lib → dist}/bridgeService.d.ts +10 -9
- package/dist/bridgeService.d.ts.map +1 -0
- package/{lib → dist}/bridgeService.js +79 -121
- package/dist/bridgeService.js.map +1 -0
- package/{lib → dist}/childBridgeFork.d.ts +4 -3
- package/dist/childBridgeFork.d.ts.map +1 -0
- package/{lib → dist}/childBridgeFork.js +38 -41
- package/dist/childBridgeFork.js.map +1 -0
- package/{lib → dist}/childBridgeService.d.ts +8 -7
- package/dist/childBridgeService.d.ts.map +1 -0
- package/{lib → dist}/childBridgeService.js +54 -55
- package/dist/childBridgeService.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +89 -0
- package/dist/cli.js.map +1 -0
- package/{lib → dist}/externalPortService.d.ts +2 -2
- package/{lib → dist}/externalPortService.d.ts.map +1 -1
- package/{lib → dist}/externalPortService.js +4 -9
- package/dist/externalPortService.js.map +1 -0
- package/{lib → dist}/index.d.ts +29 -29
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/{lib → dist}/ipcService.d.ts +2 -5
- package/dist/ipcService.d.ts.map +1 -0
- package/{lib → dist}/ipcService.js +12 -12
- package/dist/ipcService.js.map +1 -0
- package/{lib → dist}/logger.d.ts +6 -6
- package/dist/logger.d.ts.map +1 -0
- package/{lib → dist}/logger.js +19 -28
- package/dist/logger.js.map +1 -0
- package/{lib → dist}/platformAccessory.d.ts +7 -6
- package/dist/platformAccessory.d.ts.map +1 -0
- package/{lib → dist}/platformAccessory.js +12 -16
- package/dist/platformAccessory.js.map +1 -0
- package/{lib → dist}/plugin.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -0
- package/{lib → dist}/plugin.js +36 -45
- package/dist/plugin.js.map +1 -0
- package/{lib → dist}/pluginManager.d.ts +3 -3
- package/dist/pluginManager.d.ts.map +1 -0
- package/{lib → dist}/pluginManager.js +72 -78
- package/dist/pluginManager.js.map +1 -0
- package/dist/server.d.ts.map +1 -0
- package/{lib → dist}/server.js +89 -116
- package/dist/server.js.map +1 -0
- package/{lib → dist}/storageService.d.ts.map +1 -1
- package/dist/storageService.js +41 -0
- package/dist/storageService.js.map +1 -0
- package/{lib → dist}/user.d.ts.map +1 -1
- package/dist/user.js +29 -0
- package/dist/user.js.map +1 -0
- package/{lib → dist}/util/mac.d.ts +1 -0
- package/dist/util/mac.d.ts.map +1 -0
- package/dist/util/mac.js +14 -0
- package/dist/util/mac.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +42 -42
- package/lib/api.d.ts.map +0 -1
- package/lib/api.js.map +0 -1
- package/lib/bridgeService.d.ts.map +0 -1
- package/lib/bridgeService.js.map +0 -1
- package/lib/childBridgeFork.d.ts.map +0 -1
- package/lib/childBridgeFork.js.map +0 -1
- package/lib/childBridgeService.d.ts.map +0 -1
- package/lib/childBridgeService.js.map +0 -1
- package/lib/cli.d.ts +0 -4
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -115
- package/lib/cli.js.map +0 -1
- package/lib/externalPortService.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -72
- package/lib/index.js.map +0 -1
- package/lib/ipcService.d.ts.map +0 -1
- package/lib/ipcService.js.map +0 -1
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js.map +0 -1
- package/lib/platformAccessory.d.ts.map +0 -1
- package/lib/platformAccessory.js.map +0 -1
- package/lib/plugin.d.ts.map +0 -1
- package/lib/plugin.js.map +0 -1
- package/lib/pluginManager.d.ts.map +0 -1
- package/lib/pluginManager.js.map +0 -1
- package/lib/server.d.ts.map +0 -1
- package/lib/server.js.map +0 -1
- package/lib/storageService.js +0 -70
- package/lib/storageService.js.map +0 -1
- package/lib/user.js +0 -36
- package/lib/user.js.map +0 -1
- package/lib/util/mac.d.ts.map +0 -1
- package/lib/util/mac.js +0 -20
- package/lib/util/mac.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -21
- package/lib/version.js.map +0 -1
- /package/{lib → dist}/server.d.ts +0 -0
- /package/{lib → dist}/storageService.d.ts +0 -0
- /package/{lib → dist}/user.d.ts +0 -0
- /package/{lib → dist}/version.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,iBAAiB;IAChC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IACvC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAGD,0BAAkB,YAAY;IAC5B;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,EAAE,OAAO;IAET;;OAEG;IACH,IAAI,SAAS;CACd;AAED,qBAAa,MAAM;IAgBf,OAAO,CAAC,OAAO;IAfjB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAGzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiD;IAG9E,OAAO,CAAC,YAAY,CAAqC;gBAG/C,OAAO,GAAE,iBAAsB;IAuDzC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAYV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC5B,QAAQ,IAAI,IAAI;IAKvB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAoFzB,OAAO,CAAC,eAAe;IAoGvB,OAAO,CAAC,aAAa;IA4FrB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiCjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoClC,OAAO,CAAC,cAAc;CAqBvB"}
|
package/{lib → dist}/server.js
RENAMED
|
@@ -1,46 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.Server = exports.ServerStatus = void 0;
|
|
30
|
-
const fs_1 = __importDefault(require("fs"));
|
|
31
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
32
|
-
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
33
|
-
const api_1 = require("./api");
|
|
34
|
-
const bridgeService_1 = require("./bridgeService");
|
|
35
|
-
const childBridgeService_1 = require("./childBridgeService");
|
|
36
|
-
const externalPortService_1 = require("./externalPortService");
|
|
37
|
-
const ipcService_1 = require("./ipcService");
|
|
38
|
-
const logger_1 = require("./logger");
|
|
39
|
-
const pluginManager_1 = require("./pluginManager");
|
|
40
|
-
const user_1 = require("./user");
|
|
41
|
-
const mac = __importStar(require("./util/mac"));
|
|
42
|
-
const log = logger_1.Logger.internal;
|
|
43
|
-
var ServerStatus;
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import qrcode from 'qrcode-terminal';
|
|
5
|
+
import { HomebridgeAPI } from './api.js';
|
|
6
|
+
import { BridgeService } from './bridgeService.js';
|
|
7
|
+
import { ChildBridgeService } from './childBridgeService.js';
|
|
8
|
+
import { ExternalPortService } from './externalPortService.js';
|
|
9
|
+
import { IpcService } from './ipcService.js';
|
|
10
|
+
import { Logger } from './logger.js';
|
|
11
|
+
import { PluginManager } from './pluginManager.js';
|
|
12
|
+
import { User } from './user.js';
|
|
13
|
+
import { validMacAddress } from './util/mac.js';
|
|
14
|
+
const log = Logger.internal;
|
|
15
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
16
|
+
export var ServerStatus;
|
|
44
17
|
(function (ServerStatus) {
|
|
45
18
|
/**
|
|
46
19
|
* When the server is starting up
|
|
@@ -54,8 +27,8 @@ var ServerStatus;
|
|
|
54
27
|
* When the server is shutting down
|
|
55
28
|
*/
|
|
56
29
|
ServerStatus["DOWN"] = "down";
|
|
57
|
-
})(ServerStatus || (
|
|
58
|
-
class Server {
|
|
30
|
+
})(ServerStatus || (ServerStatus = {}));
|
|
31
|
+
export class Server {
|
|
59
32
|
options;
|
|
60
33
|
api;
|
|
61
34
|
pluginManager;
|
|
@@ -71,9 +44,9 @@ class Server {
|
|
|
71
44
|
this.options = options;
|
|
72
45
|
this.config = Server.loadConfig();
|
|
73
46
|
// object we feed to Plugins and BridgeService
|
|
74
|
-
this.api = new
|
|
75
|
-
this.ipcService = new
|
|
76
|
-
this.externalPortService = new
|
|
47
|
+
this.api = new HomebridgeAPI();
|
|
48
|
+
this.ipcService = new IpcService();
|
|
49
|
+
this.externalPortService = new ExternalPortService(this.config.ports);
|
|
77
50
|
// set status to pending
|
|
78
51
|
this.setServerStatus("pending" /* ServerStatus.PENDING */);
|
|
79
52
|
// create new plugin manager
|
|
@@ -83,15 +56,15 @@ class Server {
|
|
|
83
56
|
customPluginPath: options.customPluginPath,
|
|
84
57
|
strictPluginResolution: options.strictPluginResolution,
|
|
85
58
|
};
|
|
86
|
-
this.pluginManager = new
|
|
59
|
+
this.pluginManager = new PluginManager(this.api, pluginManagerOptions);
|
|
87
60
|
// create new bridge service
|
|
88
61
|
const bridgeConfig = {
|
|
89
|
-
cachedAccessoriesDir:
|
|
90
|
-
cachedAccessoriesItemName:
|
|
62
|
+
cachedAccessoriesDir: User.cachedAccessoryPath(),
|
|
63
|
+
cachedAccessoriesItemName: 'cachedAccessories',
|
|
91
64
|
};
|
|
92
65
|
// shallow copy the homebridge options to the bridge options object
|
|
93
66
|
Object.assign(bridgeConfig, this.options);
|
|
94
|
-
this.bridgeService = new
|
|
67
|
+
this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, bridgeConfig, this.config.bridge, this.config);
|
|
95
68
|
// watch bridge events to check when server is online
|
|
96
69
|
this.bridgeService.bridge.on("advertised" /* AccessoryEventTypes.ADVERTISED */, () => {
|
|
97
70
|
this.setServerStatus("ok" /* ServerStatus.OK */);
|
|
@@ -156,14 +129,14 @@ class Server {
|
|
|
156
129
|
}
|
|
157
130
|
static loadConfig() {
|
|
158
131
|
// Look for the configuration file
|
|
159
|
-
const configPath =
|
|
132
|
+
const configPath = User.configPath();
|
|
160
133
|
const defaultBridge = {
|
|
161
|
-
name:
|
|
162
|
-
username:
|
|
163
|
-
pin:
|
|
134
|
+
name: 'Homebridge',
|
|
135
|
+
username: 'CC:22:3D:E3:CE:30',
|
|
136
|
+
pin: '031-45-154',
|
|
164
137
|
};
|
|
165
|
-
if (!
|
|
166
|
-
log.warn(
|
|
138
|
+
if (!fs.existsSync(configPath)) {
|
|
139
|
+
log.warn('config.json (%s) not found.', configPath);
|
|
167
140
|
return {
|
|
168
141
|
bridge: defaultBridge,
|
|
169
142
|
accessories: [],
|
|
@@ -172,23 +145,23 @@ class Server {
|
|
|
172
145
|
}
|
|
173
146
|
let config;
|
|
174
147
|
try {
|
|
175
|
-
config = JSON.parse(
|
|
148
|
+
config = JSON.parse(fs.readFileSync(configPath, { encoding: 'utf8' }));
|
|
176
149
|
}
|
|
177
|
-
catch (
|
|
178
|
-
log.error(
|
|
179
|
-
log.error(
|
|
180
|
-
log.error(
|
|
181
|
-
throw
|
|
150
|
+
catch (error) {
|
|
151
|
+
log.error('There was a problem reading your config.json file.');
|
|
152
|
+
log.error('Please try pasting your config.json file here to validate it: https://jsonlint.com');
|
|
153
|
+
log.error('');
|
|
154
|
+
throw error;
|
|
182
155
|
}
|
|
183
156
|
if (config.ports !== undefined) {
|
|
184
157
|
if (config.ports.start && config.ports.end) {
|
|
185
158
|
if (config.ports.start > config.ports.end) {
|
|
186
|
-
log.error(
|
|
159
|
+
log.error('Invalid port pool configuration. End should be greater than or equal to start.');
|
|
187
160
|
config.ports = undefined;
|
|
188
161
|
}
|
|
189
162
|
}
|
|
190
163
|
else {
|
|
191
|
-
log.error(
|
|
164
|
+
log.error('Invalid configuration for \'ports\'. Missing \'start\' and \'end\' properties! Ignoring it!');
|
|
192
165
|
config.ports = undefined;
|
|
193
166
|
}
|
|
194
167
|
}
|
|
@@ -198,20 +171,20 @@ class Server {
|
|
|
198
171
|
bridge.pin = bridge.pin || defaultBridge.pin;
|
|
199
172
|
config.bridge = bridge;
|
|
200
173
|
const username = config.bridge.username;
|
|
201
|
-
if (!
|
|
174
|
+
if (!validMacAddress(username)) {
|
|
202
175
|
throw new Error(`Not a valid username: ${username}. Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
|
|
203
176
|
}
|
|
204
177
|
config.accessories = config.accessories || [];
|
|
205
178
|
config.platforms = config.platforms || [];
|
|
206
179
|
if (!Array.isArray(config.accessories)) {
|
|
207
|
-
log.error(
|
|
180
|
+
log.error('Value provided for accessories must be an array[]');
|
|
208
181
|
config.accessories = [];
|
|
209
182
|
}
|
|
210
183
|
if (!Array.isArray(config.platforms)) {
|
|
211
|
-
log.error(
|
|
184
|
+
log.error('Value provided for platforms must be an array[]');
|
|
212
185
|
config.platforms = [];
|
|
213
186
|
}
|
|
214
|
-
log.info(
|
|
187
|
+
log.info('Loaded config.json with %s accessories and %s platforms.', config.accessories.length, config.platforms.length);
|
|
215
188
|
if (config.bridge.advertiser) {
|
|
216
189
|
if (![
|
|
217
190
|
"bonjour-hap" /* MDNSAdvertiser.BONJOUR */,
|
|
@@ -220,7 +193,7 @@ class Server {
|
|
|
220
193
|
"resolved" /* MDNSAdvertiser.RESOLVED */,
|
|
221
194
|
].includes(config.bridge.advertiser)) {
|
|
222
195
|
config.bridge.advertiser = undefined;
|
|
223
|
-
log.error(
|
|
196
|
+
log.error('Value provided in bridge.advertiser is not valid, reverting to platform default.');
|
|
224
197
|
}
|
|
225
198
|
}
|
|
226
199
|
else {
|
|
@@ -229,17 +202,17 @@ class Server {
|
|
|
229
202
|
return config;
|
|
230
203
|
}
|
|
231
204
|
loadAccessories() {
|
|
232
|
-
log.info(
|
|
205
|
+
log.info(`Loading ${this.config.accessories.length} accessories...`);
|
|
233
206
|
this.config.accessories.forEach((accessoryConfig, index) => {
|
|
234
207
|
if (!accessoryConfig.accessory) {
|
|
235
|
-
log.warn(
|
|
236
|
-
|
|
208
|
+
log.warn('Your config.json contains an illegal accessory configuration object at position %d. '
|
|
209
|
+
+ 'Missing property \'accessory\'. Skipping entry...', index + 1); // we rather count from 1 for the normal people?
|
|
237
210
|
return;
|
|
238
211
|
}
|
|
239
212
|
const accessoryIdentifier = accessoryConfig.accessory;
|
|
240
213
|
const displayName = accessoryConfig.name;
|
|
241
214
|
if (!displayName) {
|
|
242
|
-
log.warn(
|
|
215
|
+
log.warn('Could not load accessory %s at position %d as it is missing the required \'name\' property!', accessoryIdentifier, index + 1);
|
|
243
216
|
return;
|
|
244
217
|
}
|
|
245
218
|
let plugin;
|
|
@@ -264,8 +237,8 @@ class Server {
|
|
|
264
237
|
log.error(error); // error message contains more information and full stack trace
|
|
265
238
|
return;
|
|
266
239
|
}
|
|
267
|
-
const logger =
|
|
268
|
-
logger(
|
|
240
|
+
const logger = Logger.withPrefix(displayName);
|
|
241
|
+
logger('Initializing %s accessory...', accessoryIdentifier);
|
|
269
242
|
if (accessoryConfig._bridge) {
|
|
270
243
|
// ensure the username is always uppercase
|
|
271
244
|
accessoryConfig._bridge.username = accessoryConfig._bridge.username.toUpperCase();
|
|
@@ -283,7 +256,7 @@ class Server {
|
|
|
283
256
|
}
|
|
284
257
|
else {
|
|
285
258
|
logger(`Initializing child bridge ${accessoryConfig._bridge.username}`);
|
|
286
|
-
childBridge = new
|
|
259
|
+
childBridge = new ChildBridgeService("accessory" /* PluginType.ACCESSORY */, accessoryIdentifier, plugin, accessoryConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
|
|
287
260
|
this.childBridges.set(accessoryConfig._bridge.username, childBridge);
|
|
288
261
|
}
|
|
289
262
|
// add config to child bridge service
|
|
@@ -291,29 +264,28 @@ class Server {
|
|
|
291
264
|
return;
|
|
292
265
|
}
|
|
293
266
|
const accessoryInstance = new constructor(logger, accessoryConfig, this.api);
|
|
294
|
-
//pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
|
|
267
|
+
// pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
|
|
295
268
|
const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, accessoryIdentifier, accessoryConfig.uuid_base);
|
|
296
269
|
if (accessory) {
|
|
297
270
|
try {
|
|
298
271
|
this.bridgeService.bridge.addBridgedAccessory(accessory);
|
|
299
272
|
}
|
|
300
|
-
catch (
|
|
301
|
-
logger.error(`Error loading the accessory "${accessoryIdentifier}" from "${plugin.getPluginIdentifier()}" requested in your config.json:`,
|
|
302
|
-
return;
|
|
273
|
+
catch (error) {
|
|
274
|
+
logger.error(`Error loading the accessory "${accessoryIdentifier}" from "${plugin.getPluginIdentifier()}" requested in your config.json:`, error.message);
|
|
303
275
|
}
|
|
304
276
|
}
|
|
305
277
|
else {
|
|
306
|
-
logger.info(
|
|
278
|
+
logger.info('Accessory %s returned empty set of services; not adding it to the bridge.', accessoryIdentifier);
|
|
307
279
|
}
|
|
308
280
|
});
|
|
309
281
|
}
|
|
310
282
|
loadPlatforms() {
|
|
311
|
-
log.info(
|
|
283
|
+
log.info(`Loading ${this.config.platforms.length} platforms...`);
|
|
312
284
|
const promises = [];
|
|
313
285
|
this.config.platforms.forEach((platformConfig, index) => {
|
|
314
286
|
if (!platformConfig.platform) {
|
|
315
|
-
log.warn(
|
|
316
|
-
|
|
287
|
+
log.warn('Your config.json contains an illegal platform configuration object at position %d. '
|
|
288
|
+
+ 'Missing property \'platform\'. Skipping entry...', index + 1); // we rather count from 1 for the normal people?
|
|
317
289
|
return;
|
|
318
290
|
}
|
|
319
291
|
const platformIdentifier = platformConfig.platform;
|
|
@@ -321,7 +293,7 @@ class Server {
|
|
|
321
293
|
let plugin;
|
|
322
294
|
let constructor;
|
|
323
295
|
// do not load homebridge-config-ui-x when running in service mode
|
|
324
|
-
if (platformIdentifier ===
|
|
296
|
+
if (platformIdentifier === 'config' && process.env.UIX_SERVICE_MODE === '1') {
|
|
325
297
|
return;
|
|
326
298
|
}
|
|
327
299
|
try {
|
|
@@ -344,8 +316,8 @@ class Server {
|
|
|
344
316
|
log.error(error); // error message contains more information and full stack trace
|
|
345
317
|
return;
|
|
346
318
|
}
|
|
347
|
-
const logger =
|
|
348
|
-
logger(
|
|
319
|
+
const logger = Logger.withPrefix(displayName);
|
|
320
|
+
logger('Initializing %s platform...', platformIdentifier);
|
|
349
321
|
if (platformConfig._bridge) {
|
|
350
322
|
// ensure the username is always uppercase
|
|
351
323
|
platformConfig._bridge.username = platformConfig._bridge.username.toUpperCase();
|
|
@@ -357,17 +329,17 @@ class Server {
|
|
|
357
329
|
return;
|
|
358
330
|
}
|
|
359
331
|
logger(`Initializing child bridge ${platformConfig._bridge.username}`);
|
|
360
|
-
const childBridge = new
|
|
332
|
+
const childBridge = new ChildBridgeService("platform" /* PluginType.PLATFORM */, platformIdentifier, plugin, platformConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
|
|
361
333
|
this.childBridges.set(platformConfig._bridge.username, childBridge);
|
|
362
334
|
// add config to child bridge service
|
|
363
335
|
childBridge.addConfig(platformConfig);
|
|
364
336
|
return;
|
|
365
337
|
}
|
|
366
338
|
const platform = new constructor(logger, platformConfig, this.api);
|
|
367
|
-
if (
|
|
339
|
+
if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
|
|
368
340
|
plugin.assignDynamicPlatform(platformIdentifier, platform);
|
|
369
341
|
}
|
|
370
|
-
else if (
|
|
342
|
+
else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
|
|
371
343
|
promises.push(this.bridgeService.loadPlatformAccessories(plugin, platform, platformIdentifier, logger));
|
|
372
344
|
}
|
|
373
345
|
else {
|
|
@@ -381,26 +353,26 @@ class Server {
|
|
|
381
353
|
* Validate an external bridge config
|
|
382
354
|
*/
|
|
383
355
|
validateChildBridgeConfig(type, identifier, bridgeConfig) {
|
|
384
|
-
if (!
|
|
385
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
386
|
-
`not a valid username in _bridge.username: "${bridgeConfig.username}". Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
|
|
356
|
+
if (!validMacAddress(bridgeConfig.username)) {
|
|
357
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
358
|
+
+ `not a valid username in _bridge.username: "${bridgeConfig.username}". Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
|
|
387
359
|
}
|
|
388
360
|
if (this.childBridges.has(bridgeConfig.username)) {
|
|
389
361
|
const childBridge = this.childBridges.get(bridgeConfig.username);
|
|
390
362
|
if (type === "platform" /* PluginType.PLATFORM */) {
|
|
391
363
|
// only a single platform can exist on one child bridge
|
|
392
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
393
|
-
`Duplicate username found in _bridge.username: "${bridgeConfig.username}". Each platform child bridge must have it's own unique username.`);
|
|
364
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
365
|
+
+ `Duplicate username found in _bridge.username: "${bridgeConfig.username}". Each platform child bridge must have it's own unique username.`);
|
|
394
366
|
}
|
|
395
367
|
else if (childBridge?.identifier !== identifier) {
|
|
396
368
|
// only accessories of the same type can be added to the same child bridge
|
|
397
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
398
|
-
`Duplicate username found in _bridge.username: "${bridgeConfig.username}". You can only group accessories of the same type in a child bridge.`);
|
|
369
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
370
|
+
+ `Duplicate username found in _bridge.username: "${bridgeConfig.username}". You can only group accessories of the same type in a child bridge.`);
|
|
399
371
|
}
|
|
400
372
|
}
|
|
401
373
|
if (bridgeConfig.username === this.config.bridge.username.toUpperCase()) {
|
|
402
|
-
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
403
|
-
`Username found in _bridge.username: "${bridgeConfig.username}" is the same as the main bridge. Each child bridge platform/accessory must have it's own unique username.`);
|
|
374
|
+
throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - `
|
|
375
|
+
+ `Username found in _bridge.username: "${bridgeConfig.username}" is the same as the main bridge. Each child bridge platform/accessory must have it's own unique username.`);
|
|
404
376
|
}
|
|
405
377
|
}
|
|
406
378
|
/**
|
|
@@ -411,21 +383,21 @@ class Server {
|
|
|
411
383
|
this.ipcService.start();
|
|
412
384
|
// handle restart child bridge event
|
|
413
385
|
this.ipcService.on("restartChildBridge" /* IpcIncomingEvent.RESTART_CHILD_BRIDGE */, (username) => {
|
|
414
|
-
if (typeof username ===
|
|
386
|
+
if (typeof username === 'string') {
|
|
415
387
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
416
388
|
childBridge?.restartChildBridge();
|
|
417
389
|
}
|
|
418
390
|
});
|
|
419
391
|
// handle stop child bridge event
|
|
420
392
|
this.ipcService.on("stopChildBridge" /* IpcIncomingEvent.STOP_CHILD_BRIDGE */, (username) => {
|
|
421
|
-
if (typeof username ===
|
|
393
|
+
if (typeof username === 'string') {
|
|
422
394
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
423
395
|
childBridge?.stopChildBridge();
|
|
424
396
|
}
|
|
425
397
|
});
|
|
426
398
|
// handle start child bridge event
|
|
427
399
|
this.ipcService.on("startChildBridge" /* IpcIncomingEvent.START_CHILD_BRIDGE */, (username) => {
|
|
428
|
-
if (typeof username ===
|
|
400
|
+
if (typeof username === 'string') {
|
|
429
401
|
const childBridge = this.childBridges.get(username.toUpperCase());
|
|
430
402
|
childBridge?.startChildBridge();
|
|
431
403
|
}
|
|
@@ -435,23 +407,24 @@ class Server {
|
|
|
435
407
|
});
|
|
436
408
|
}
|
|
437
409
|
printSetupInfo(pin) {
|
|
438
|
-
console
|
|
410
|
+
/* eslint-disable no-console */
|
|
411
|
+
console.log('Setup Payload:');
|
|
439
412
|
console.log(this.bridgeService.bridge.setupURI());
|
|
440
413
|
if (!this.options.hideQRCode) {
|
|
441
|
-
console.log(
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
console.log(
|
|
414
|
+
console.log('Scan this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
415
|
+
qrcode.setErrorLevel('M'); // HAP specifies level M or higher for ECC
|
|
416
|
+
qrcode.generate(this.bridgeService.bridge.setupURI());
|
|
417
|
+
console.log('Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
445
418
|
}
|
|
446
419
|
else {
|
|
447
|
-
console.log(
|
|
420
|
+
console.log('Enter this code with your HomeKit app on your iOS device to pair with Homebridge:');
|
|
448
421
|
}
|
|
449
|
-
console.log(
|
|
450
|
-
console.log(
|
|
451
|
-
console.log(
|
|
452
|
-
console.log(
|
|
453
|
-
console.log(
|
|
422
|
+
console.log(chalk.black.bgWhite(' '));
|
|
423
|
+
console.log(chalk.black.bgWhite(' ┌────────────┐ '));
|
|
424
|
+
console.log(chalk.black.bgWhite(` │ ${pin} │ `));
|
|
425
|
+
console.log(chalk.black.bgWhite(' └────────────┘ '));
|
|
426
|
+
console.log(chalk.black.bgWhite(' '));
|
|
427
|
+
/* eslint-enable no-console */
|
|
454
428
|
}
|
|
455
429
|
}
|
|
456
|
-
exports.Server = Server;
|
|
457
430
|
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageService.d.ts","sourceRoot":"","sources":["../src/storageService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storageService.d.ts","sourceRoot":"","sources":["../src/storageService.ts"],"names":[],"mappings":"AAIA,qBAAa,cAAc;IAEhB,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;IAGvB,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAUpC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUrD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;IAIxE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAI7D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG9C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
export class StorageService {
|
|
4
|
+
baseDirectory;
|
|
5
|
+
constructor(baseDirectory) {
|
|
6
|
+
this.baseDirectory = baseDirectory;
|
|
7
|
+
}
|
|
8
|
+
initSync() {
|
|
9
|
+
return fs.ensureDirSync(this.baseDirectory);
|
|
10
|
+
}
|
|
11
|
+
getItemSync(itemName) {
|
|
12
|
+
const filePath = path.resolve(this.baseDirectory, itemName);
|
|
13
|
+
if (!fs.pathExistsSync(filePath)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return fs.readJsonSync(filePath);
|
|
17
|
+
}
|
|
18
|
+
async getItem(itemName) {
|
|
19
|
+
const filePath = path.resolve(this.baseDirectory, itemName);
|
|
20
|
+
if (!await fs.pathExists(filePath)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return await fs.readJson(filePath);
|
|
24
|
+
}
|
|
25
|
+
setItemSync(itemName, data) {
|
|
26
|
+
return fs.writeJsonSync(path.resolve(this.baseDirectory, itemName), data);
|
|
27
|
+
}
|
|
28
|
+
setItem(itemName, data) {
|
|
29
|
+
return fs.writeJson(path.resolve(this.baseDirectory, itemName), data);
|
|
30
|
+
}
|
|
31
|
+
copyItem(srcItemName, destItemName) {
|
|
32
|
+
return fs.copyFile(path.resolve(this.baseDirectory, srcItemName), path.resolve(this.baseDirectory, destItemName));
|
|
33
|
+
}
|
|
34
|
+
copyItemSync(srcItemName, destItemName) {
|
|
35
|
+
return fs.copyFileSync(path.resolve(this.baseDirectory, srcItemName), path.resolve(this.baseDirectory, destItemName));
|
|
36
|
+
}
|
|
37
|
+
removeItemSync(itemName) {
|
|
38
|
+
return fs.removeSync(path.resolve(this.baseDirectory, itemName));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=storageService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageService.js","sourceRoot":"","sources":["../src/storageService.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,MAAM,OAAO,cAAc;IAEhB;IADT,YACS,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAC3B,CAAC;IAEG,QAAQ;QACb,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;IAEM,WAAW,CAAI,QAAgB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAE3D,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAI,QAAgB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAE3D,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,IAAmC;QACtE,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3E,CAAC;IAEM,OAAO,CAAC,QAAgB,EAAE,IAAmC;QAClE,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IACvE,CAAC;IAEM,QAAQ,CAAC,WAAmB,EAAE,YAAoB;QACvD,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IACnH,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,YAAoB;QAC3D,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IACvH,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;IAClE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAQ;IACzC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAQ;IAEtC,MAAM,CAAC,UAAU,IAAI,MAAM;IAI3B,MAAM,CAAC,WAAW,IAAI,MAAM;IAI5B,MAAM,CAAC,mBAAmB,IAAI,MAAM;IAIpC,MAAM,CAAC,WAAW,IAAI,MAAM;WAMd,cAAc,CAAC,GAAG,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI;CAOrE"}
|
package/dist/user.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Manages user settings and storage locations.
|
|
5
|
+
*/
|
|
6
|
+
export class User {
|
|
7
|
+
static customStoragePath;
|
|
8
|
+
static storageAccessed = false;
|
|
9
|
+
static configPath() {
|
|
10
|
+
return path.join(User.storagePath(), 'config.json');
|
|
11
|
+
}
|
|
12
|
+
static persistPath() {
|
|
13
|
+
return path.join(User.storagePath(), 'persist'); // hap-nodejs data is stored here
|
|
14
|
+
}
|
|
15
|
+
static cachedAccessoryPath() {
|
|
16
|
+
return path.join(User.storagePath(), 'accessories');
|
|
17
|
+
}
|
|
18
|
+
static storagePath() {
|
|
19
|
+
User.storageAccessed = true;
|
|
20
|
+
return User.customStoragePath ? User.customStoragePath : path.join(os.homedir(), '.homebridge');
|
|
21
|
+
}
|
|
22
|
+
static setStoragePath(...storagePathSegments) {
|
|
23
|
+
if (User.storageAccessed) {
|
|
24
|
+
throw new Error('Storage path was already accessed and cannot be changed anymore. Try initializing your custom storage path earlier!');
|
|
25
|
+
}
|
|
26
|
+
User.customStoragePath = path.resolve(...storagePathSegments);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=user.js.map
|
package/dist/user.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B;;GAEG;AACH,MAAM,OAAO,IAAI;IACP,MAAM,CAAC,iBAAiB,CAAS;IACjC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAA;IAEtC,MAAM,CAAC,UAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAA,CAAC,iCAAiC;IACnF,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAE3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAA;IACjG,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAAG,mBAA6B;QAC3D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qHAAqH,CAAC,CAAA;QACxI,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAA;IAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mac.d.ts","sourceRoot":"","sources":["../../src/util/mac.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMzC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,GAAG,UAAU,CAOzF"}
|
package/dist/util/mac.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* global NodeJS */
|
|
2
|
+
import crypto from 'node:crypto';
|
|
3
|
+
const validMac = /^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/;
|
|
4
|
+
export function validMacAddress(address) {
|
|
5
|
+
return validMac.test(address);
|
|
6
|
+
}
|
|
7
|
+
export function generate(data) {
|
|
8
|
+
const sha1sum = crypto.createHash('sha1');
|
|
9
|
+
sha1sum.update(data);
|
|
10
|
+
const s = sha1sum.digest('hex');
|
|
11
|
+
let i = 0;
|
|
12
|
+
return 'xx:xx:xx:xx:xx:xx'.replace(/x/g, () => s[i++]).toUpperCase();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mac.js","sourceRoot":"","sources":["../../src/util/mac.ts"],"names":[],"mappings":"AAAA,mBAAmB;AAInB,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AAInD,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAoD;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAE/B,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,UAAU,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = dirname(__filename);
|
|
6
|
+
function loadPackageJson() {
|
|
7
|
+
const packageJSONPath = join(__dirname, '../package.json');
|
|
8
|
+
return JSON.parse(fs.readFileSync(packageJSONPath, { encoding: 'utf8' }));
|
|
9
|
+
}
|
|
10
|
+
export default function getVersion() {
|
|
11
|
+
return loadPackageJson().version;
|
|
12
|
+
}
|
|
13
|
+
export function getRequiredNodeVersion() {
|
|
14
|
+
return loadPackageJson().engines.node;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,SAAS,eAAe;IACtB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,OAAO,eAAe,EAAE,CAAC,OAAO,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAe,EAAE,CAAC,OAAO,CAAC,IAAI,CAAA;AACvC,CAAC"}
|