{"version":3,"sources":["jsdelivr-header.js","/npm/homeassistant-ws@0.2.5/build/index.js"],"names":[],"mappings":"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","file":"/npm/homeassistant-ws@0.2.5/build/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/homeassistant-ws@0.2.5/build/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = __importDefault(require(\"events\"));\nvar isomorphic_ws_1 = __importDefault(require(\"isomorphic-ws\"));\nvar defaultOptions = {\n    protocol: 'ws',\n    host: 'localhost',\n    port: 8123,\n    path: '/api/websocket',\n    messageSerializer: function (outgoingMessage) { return JSON.stringify(outgoingMessage); },\n    messageParser: function (incomingMessage) {\n        return JSON.parse(incomingMessage.data);\n    },\n    // A method that returns a websocket instance. Can be overriden to use a custom behavior:\n    ws: function (opts) {\n        return new isomorphic_ws_1.default(opts.protocol + \"://\" + opts.host + \":\" + opts.port + opts.path);\n    },\n};\nvar command = function (commandArgs, client) { return __awaiter(void 0, void 0, void 0, function () {\n    return __generator(this, function (_a) {\n        return [2 /*return*/, new Promise(function (resolve, reject) {\n                var id = client.seq;\n                client.resultMap[id] = function (resultMessage) {\n                    if (resultMessage.success)\n                        resolve(resultMessage.result);\n                    else\n                        reject(new Error(resultMessage.error.message));\n                    // We won't need this callback again once we use it:\n                    delete client.resultMap[id];\n                };\n                client.ws.send(client.options.messageSerializer(__assign(__assign({}, commandArgs), { id: id })));\n                // Increment the shared message id sequence:\n                client.seq++;\n            })];\n    });\n}); };\nvar binaryResultTransform = function (result) {\n    return {\n        content_type: result.content_type,\n        content: Buffer.from(result.content, 'base64'),\n    };\n};\nvar messageHandler = function (client) {\n    return function (wsMessage) {\n        var message = client.options.messageParser(wsMessage);\n        // Emit an event for any message under a main 'message' listener:\n        client.emitter.emit('message', message);\n        // Emit an event for any message of any type:\n        if (message.type)\n            client.emitter.emit(message.type, message);\n        // Emit an event for event-type messages:\n        if (message.type === 'event' && message.event.event_type) {\n            client.emitter.emit(message.event.event_type, message.event);\n        }\n        // If this is a result message, match it with the results map on the client\n        // and call the matching function:\n        if (message.id && message.type === 'result') {\n            if (typeof client.resultMap[message.id] !== 'undefined') {\n                client.resultMap[message.id](message);\n            }\n        }\n    };\n};\nvar clientObject = function (client) {\n    return {\n        rawClient: client,\n        command: function (commandType, additionalArgs) {\n            if (additionalArgs === void 0) { additionalArgs = {}; }\n            return __awaiter(void 0, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    return [2 /*return*/, command(__assign({ type: commandType }, additionalArgs), client)];\n                });\n            });\n        },\n        getStates: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2 /*return*/, command({ type: 'get_states' }, client)];\n        }); }); },\n        getServices: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2 /*return*/, command({ type: 'get_services' }, client)];\n        }); }); },\n        getPanels: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2 /*return*/, command({ type: 'get_panels' }, client)];\n        }); }); },\n        getConfig: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2 /*return*/, command({ type: 'get_config' }, client)];\n        }); }); },\n        on: function (eventId, cb) {\n            client.emitter.on(eventId, cb);\n        },\n        callService: function (domain, service, additionalArgs, options) {\n            if (additionalArgs === void 0) { additionalArgs = {}; }\n            if (options === void 0) { options = {\n                returnResponse: false,\n            }; }\n            return __awaiter(this, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    return [2 /*return*/, command({\n                            type: 'call_service',\n                            domain: domain,\n                            service: service,\n                            service_data: additionalArgs,\n                            return_response: options === null || options === void 0 ? void 0 : options.returnResponse,\n                        }, client)];\n                });\n            });\n        },\n        getMediaPlayerThumbnail: function (entityId) {\n            return __awaiter(this, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    return [2 /*return*/, command({\n                            type: 'media_player_thumbnail',\n                            entity_id: entityId,\n                        }, client).then(binaryResultTransform)];\n                });\n            });\n        },\n        getCameraThumbnail: function (entityId) {\n            return __awaiter(this, void 0, void 0, function () {\n                return __generator(this, function (_a) {\n                    return [2 /*return*/, command({\n                            type: 'camera_thumbnail',\n                            entity_id: entityId,\n                        }, client).then(binaryResultTransform)];\n                });\n            });\n        },\n    };\n};\nvar connectAndAuthorize = function (client, resolveWith) { return __awaiter(void 0, void 0, void 0, function () {\n    return __generator(this, function (_a) {\n        return [2 /*return*/, new Promise(function (resolve, reject) {\n                client.ws.onmessage = messageHandler(client);\n                client.ws.onerror = function (err) {\n                    // Unlikely for a listener to exist at this stage, but just in case:\n                    client.emitter.emit('ws_error', err);\n                    reject(err);\n                };\n                // Pass-through onclose events to the client:\n                client.ws.onclose = function (event) {\n                    return client.emitter.emit('ws_close', event);\n                };\n                client.emitter.on('auth_ok', function () {\n                    // Immediately subscribe to all events, and return the client handle:\n                    command({ type: 'subscribe_events' }, client)\n                        .then(function () { return resolve(resolveWith); })\n                        .catch(function (err) { return reject(err); });\n                });\n                client.emitter.on('auth_invalid', function (msg) {\n                    return reject(new Error(msg.message));\n                });\n                client.emitter.on('auth_required', function () {\n                    // If auth is required, immediately reject the promise if no token was provided:\n                    if (!client.options.token) {\n                        reject(new Error('Homeassistant requires authentication, but token not provided in options'));\n                    }\n                    client.ws.send(client.options.messageSerializer({\n                        type: 'auth',\n                        access_token: client.options.token,\n                    }));\n                });\n            })];\n    });\n}); };\nfunction createClient(callerOptions) {\n    if (callerOptions === void 0) { callerOptions = {}; }\n    return __awaiter(this, void 0, void 0, function () {\n        var options, client;\n        return __generator(this, function (_a) {\n            options = __assign(__assign({}, defaultOptions), callerOptions);\n            client = {\n                seq: 1,\n                options: options,\n                resultMap: {},\n                emitter: new events_1.default(),\n                ws: options.ws(options),\n            };\n            return [2 /*return*/, connectAndAuthorize(client, clientObject(client))];\n        });\n    });\n}\nexports.default = createClient;\n"]}