UNPKG

@swan-admin/swan-ai-measurements

Version:
64 lines (63 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const socket_io_client_1 = require("socket.io-client"); const constants_js_1 = require("./constants.js"); const utils_js_1 = require("./utils.js"); const enum_js_1 = require("./enum.js"); class PoseDetection { #socketRef = null; #accessKey; #urlType; #token; constructor(accessKey, urlType = enum_js_1.URLType.PROD, token) { this.#accessKey = accessKey; this.#urlType = urlType; this.#token = token; } connect() { return new Promise((resolve, reject) => { this.#socketRef = (0, socket_io_client_1.io)((0, utils_js_1.getUrl)({ urlName: constants_js_1.APP_POSE_DETECTION_WEBSOCKET_URL, urlType: this.#urlType }), { extraHeaders: { ...(this.#accessKey ? { "X-Api-Key": this.#accessKey } : {}), ...(this.#token ? { Authorization: `Bearer ${this.#token}` } : {}), }, }); this.#socketRef.on("connect", () => { const socketId = this.#socketRef?.id; if (socketId) { resolve(socketId); } else { reject("Failed to obtain socket ID."); } }); this.#socketRef.on("connect_error", (err) => { reject(err); }); }); } videoEmit({ image, scanId }) { if (!this.#socketRef) { throw new Error("Socket is not connected"); } this.#socketRef.emit("video", { image, user_unique_key: scanId, }); } disconnect() { this.#socketRef?.disconnect(); } poseStatus(callBack) { if (!this.#socketRef) { throw new Error("Socket is not connected"); } this.#socketRef.on("pose_status", (data) => { callBack?.(data); }); } connected() { return !!this.#socketRef?.connected; } } exports.default = PoseDetection;