UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

111 lines 4.91 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; const node_child_process_1 = require("node:child_process"); const node_path_1 = require("node:path"); const node_process_1 = __importDefault(require("node:process")); const commander_1 = require("commander"); const semver_1 = require("semver"); let homebridge; class HomebridgeUi { constructor(log, config) { this.log = log; node_process_1.default.env.UIX_CONFIG_PATH = homebridge.user.configPath(); node_process_1.default.env.UIX_STORAGE_PATH = homebridge.user.storagePath(); node_process_1.default.env.UIX_PLUGIN_NAME = config.name || 'homebridge-config-ui-x'; const program = new commander_1.Command(); program .allowUnknownOption() .allowExcessArguments() .option('-P, --plugin-path [path]', '', p => node_process_1.default.env.UIX_CUSTOM_PLUGIN_PATH = p) .option('-I, --insecure', '', () => node_process_1.default.env.UIX_INSECURE_MODE = '1') .option('-T, --no-timestamp', '', () => node_process_1.default.env.UIX_LOG_NO_TIMESTAMPS = '1') .parse(node_process_1.default.argv); if (!(0, semver_1.satisfies)(node_process_1.default.version, '>=18.15.0')) { const msg = `Node.js v18.15.0 higher is required. You may experience issues running this plugin running on ${node_process_1.default.version}.`; log.error(msg); log.warn(msg); } if (node_process_1.default.env.UIX_SERVICE_MODE === '1' && node_process_1.default.connected) { this.log('Running in service mode.'); } else if (config.standalone || node_process_1.default.env.UIX_SERVICE_MODE === '1' || (node_process_1.default.env.HOMEBRIDGE_CONFIG_UI === '1' && (0, semver_1.satisfies)(node_process_1.default.env.CONFIG_UI_VERSION, '>=3.5.5', { includePrerelease: true }))) { this.log.warn('*********** Homebridge Standalone Mode Is Deprecated **********'); this.log.warn('* Please swap to service mode using the hb-service command. *'); this.log.warn('* See https://homebridge.io/w/JUvQr for instructions on how to migrate. *'); this.log('Running in standalone mode.'); } else if (config.noFork) { this.noFork(); } else { this.fork(); } } fork() { const ui = (0, node_child_process_1.fork)((0, node_path_1.resolve)(__dirname, 'bin/fork'), null, { env: node_process_1.default.env, }); this.log('Spawning Homebridge UI with PID', ui.pid); ui.on('close', () => { node_process_1.default.kill(node_process_1.default.pid, 'SIGTERM'); }); ui.on('error', () => { }); } async noFork() { await Promise.resolve().then(() => __importStar(require('./main'))); } static serviceMode() { node_process_1.default.on('disconnect', () => { node_process_1.default.exit(); }); } accessories(callback) { const accessories = []; callback(accessories); } } module.exports = (api) => { homebridge = api; homebridge.registerPlatform('homebridge-config-ui-x', 'config', HomebridgeUi); if (node_process_1.default.env.UIX_SERVICE_MODE === '1' && node_process_1.default.connected) { HomebridgeUi.serviceMode(); } }; //# sourceMappingURL=index.js.map