ts-webcam
Version:
A production-grade TypeScript webcam library with callback-based APIs, flexible permission handling, and comprehensive device support
92 lines • 5.96 kB
JavaScript
// Error code enum for all webcam errors
export var WebcamErrorCode;
(function (WebcamErrorCode) {
// Permissions
WebcamErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
// Device Issues
WebcamErrorCode["DEVICE_NOT_FOUND"] = "DEVICE_NOT_FOUND";
WebcamErrorCode["DEVICE_BUSY"] = "DEVICE_BUSY";
WebcamErrorCode["DEVICES_ERROR"] = "DEVICES_ERROR";
WebcamErrorCode["OVERCONSTRAINED"] = "OVERCONSTRAINED";
// Configuration Issues
WebcamErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
WebcamErrorCode["VIDEO_ELEMENT_NOT_SET"] = "VIDEO_ELEMENT_NOT_SET";
WebcamErrorCode["INVALID_VIDEO_ELEMENT"] = "INVALID_VIDEO_ELEMENT";
// Stream & Resolution Issues
WebcamErrorCode["STREAM_FAILED"] = "STREAM_FAILED";
WebcamErrorCode["RESOLUTION_NOT_SUPPORTED"] = "RESOLUTION_NOT_SUPPORTED";
WebcamErrorCode["RESOLUTION_FAILED"] = "RESOLUTION_FAILED";
// Control Issues (Zoom, Torch, Focus)
WebcamErrorCode["ZOOM_NOT_SUPPORTED"] = "ZOOM_NOT_SUPPORTED";
WebcamErrorCode["TORCH_NOT_SUPPORTED"] = "TORCH_NOT_SUPPORTED";
WebcamErrorCode["FOCUS_NOT_SUPPORTED"] = "FOCUS_NOT_SUPPORTED";
WebcamErrorCode["CONTROL_ERROR"] = "CONTROL_ERROR";
// Capture Issues
WebcamErrorCode["CAPTURE_FAILED"] = "CAPTURE_FAILED";
WebcamErrorCode["CANVAS_ERROR"] = "CANVAS_ERROR";
// General
WebcamErrorCode["NOT_SUPPORTED"] = "NOT_SUPPORTED";
WebcamErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
})(WebcamErrorCode || (WebcamErrorCode = {}));
export class WebcamError extends Error {
constructor(message, code) {
super(message);
this.name = "WebcamError";
this.code = code;
}
}
/**
* Map WebcamErrorCode to user-friendly message (i18n-ready)
* @param error WebcamError
* @param locale (optional) locale string, e.g. 'th', 'en'
*/
export function getWebcamErrorMessage(error, locale = "th") {
var _a;
const messages = {
th: {
[]: "ไม่ได้รับอนุญาตให้เข้าถึงกล้องหรือไมโครโฟน",
[]: "ไม่พบอุปกรณ์กล้อง",
[]: "กล้องถูกใช้งานโดยแอปอื่น",
[]: "เกิดข้อผิดพลาดกับอุปกรณ์กล้อง",
[]: "การตั้งค่ากล้องไม่ถูกต้อง",
[]: "ไม่ได้ระบุ video element",
[]: "video element ไม่ถูกต้อง",
[]: "ไม่สามารถเปิดกล้องได้",
[]: "กล้องไม่สามารถตอบสนองความต้องการได้",
[]: "ความละเอียดนี้ไม่รองรับ",
[]: "เปลี่ยนความละเอียดไม่สำเร็จ",
[]: "กล้องนี้ไม่รองรับการซูม",
[]: "กล้องนี้ไม่รองรับแฟลช/torch",
[]: "กล้องนี้ไม่รองรับการโฟกัส",
[]: "ควบคุมกล้องล้มเหลว",
[]: "จับภาพล้มเหลว",
[]: "เกิดข้อผิดพลาดกับ canvas",
[]: "ฟีเจอร์นี้ไม่รองรับ",
[]: "เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ",
},
en: {
[]: "Camera or microphone access denied",
[]: "Camera device not found",
[]: "Camera is in use by another app",
[]: "Camera device error",
[]: "Invalid camera configuration",
[]: "Video element not set",
[]: "Invalid video element",
[]: "Failed to start camera",
[]: "Camera constraints not satisfied",
[]: "Resolution not supported",
[]: "Failed to change resolution",
[]: "Zoom not supported",
[]: "Torch/flash not supported",
[]: "Focus not supported",
[]: "Camera control failed",
[]: "Capture failed",
[]: "Canvas error",
[]: "Feature not supported",
[]: "Unknown error occurred",
},
};
const code = error.code || WebcamErrorCode.UNKNOWN_ERROR;
return ((_a = messages[locale]) === null || _a === void 0 ? void 0 : _a[code]) || messages["en"][code] || error.message || "Unknown error";
}
//# sourceMappingURL=errors.js.map