node-red-contrib-home-assistant-websocket
Version:
Node-RED integration with Home Assistant through websocket and REST API
56 lines (55 loc) • 2.19 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createControllerDependencies = createControllerDependencies;
exports.createExposeAsControllerDependences = createExposeAsControllerDependences;
const ClientEvents_1 = __importDefault(require("../events/ClientEvents"));
const JSONataService_1 = __importDefault(require("../services/JSONataService"));
const NodeRedContextService_1 = __importDefault(require("../services/NodeRedContextService"));
const TypedInputService_1 = __importDefault(require("../services/TypedInputService"));
const EventStatus_1 = __importDefault(require("../status/EventStatus"));
/**
* Create some of the dependencies needed for a BaseNode controller.
* @param node The node to create the controller for.
* @param homeAssistant The home assistant instance to use.
* @returns The dependencies needed for a BaseNode controller.
*/
function createControllerDependencies(node, homeAssistant) {
const jsonataService = new JSONataService_1.default({
homeAssistant,
node,
});
const nodeRedContextService = new NodeRedContextService_1.default(node);
const typedInputService = new TypedInputService_1.default({
nodeConfig: node.config,
context: nodeRedContextService,
jsonata: jsonataService,
});
return {
homeAssistant,
jsonataService,
nodeRedContextService,
typedInputService,
};
}
function createExposeAsControllerDependences({ exposeAsConfigNode, homeAssistant, node, serverConfigNode, }) {
const controllerDeps = createControllerDependencies(node, homeAssistant);
const clientEvents = new ClientEvents_1.default({
node,
emitter: homeAssistant.eventBus,
});
const status = new EventStatus_1.default({
clientEvents,
config: serverConfigNode.config,
exposeAsEntityConfigNode: exposeAsConfigNode,
node,
});
return {
...controllerDeps,
clientEvents,
exposeAsConfigNode,
status,
};
}
;