feat(core): update session, security system and QR exchange

- Removed session creation and Lightning payment logic
- Refactored security system:
  * no more restrictions
  * all systems enabled on session creation
- Improved QR code exchange for mobile devices
This commit is contained in:
lockbitchat
2025-09-23 20:01:02 -04:00
parent 804b384271
commit 34094956b7
396 changed files with 126516 additions and 11881 deletions

7
node_modules/html5-qrcode/esm/camera/core-impl.d.ts generated vendored Normal file
View File

@@ -0,0 +1,7 @@
import { Camera, CameraRenderingOptions, RenderedCamera, RenderingCallbacks } from "./core";
export declare class CameraImpl implements Camera {
private readonly mediaStream;
private constructor();
render(parentElement: HTMLElement, options: CameraRenderingOptions, callbacks: RenderingCallbacks): Promise<RenderedCamera>;
static create(videoConstraints: MediaTrackConstraints): Promise<Camera>;
}

311
node_modules/html5-qrcode/esm/camera/core-impl.js generated vendored Normal file
View File

@@ -0,0 +1,311 @@
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var AbstractCameraCapability = (function () {
function AbstractCameraCapability(name, track) {
this.name = name;
this.track = track;
}
AbstractCameraCapability.prototype.isSupported = function () {
if (!this.track.getCapabilities) {
return false;
}
return this.name in this.track.getCapabilities();
};
AbstractCameraCapability.prototype.apply = function (value) {
var constraint = {};
constraint[this.name] = value;
var constraints = { advanced: [constraint] };
return this.track.applyConstraints(constraints);
};
AbstractCameraCapability.prototype.value = function () {
var settings = this.track.getSettings();
if (this.name in settings) {
var settingValue = settings[this.name];
return settingValue;
}
return null;
};
return AbstractCameraCapability;
}());
var AbstractRangeCameraCapability = (function (_super) {
__extends(AbstractRangeCameraCapability, _super);
function AbstractRangeCameraCapability(name, track) {
return _super.call(this, name, track) || this;
}
AbstractRangeCameraCapability.prototype.min = function () {
return this.getCapabilities().min;
};
AbstractRangeCameraCapability.prototype.max = function () {
return this.getCapabilities().max;
};
AbstractRangeCameraCapability.prototype.step = function () {
return this.getCapabilities().step;
};
AbstractRangeCameraCapability.prototype.apply = function (value) {
var constraint = {};
constraint[this.name] = value;
var constraints = { advanced: [constraint] };
return this.track.applyConstraints(constraints);
};
AbstractRangeCameraCapability.prototype.getCapabilities = function () {
this.failIfNotSupported();
var capabilities = this.track.getCapabilities();
var capability = capabilities[this.name];
return {
min: capability.min,
max: capability.max,
step: capability.step,
};
};
AbstractRangeCameraCapability.prototype.failIfNotSupported = function () {
if (!this.isSupported()) {
throw new Error("".concat(this.name, " capability not supported"));
}
};
return AbstractRangeCameraCapability;
}(AbstractCameraCapability));
var ZoomFeatureImpl = (function (_super) {
__extends(ZoomFeatureImpl, _super);
function ZoomFeatureImpl(track) {
return _super.call(this, "zoom", track) || this;
}
return ZoomFeatureImpl;
}(AbstractRangeCameraCapability));
var TorchFeatureImpl = (function (_super) {
__extends(TorchFeatureImpl, _super);
function TorchFeatureImpl(track) {
return _super.call(this, "torch", track) || this;
}
return TorchFeatureImpl;
}(AbstractCameraCapability));
var CameraCapabilitiesImpl = (function () {
function CameraCapabilitiesImpl(track) {
this.track = track;
}
CameraCapabilitiesImpl.prototype.zoomFeature = function () {
return new ZoomFeatureImpl(this.track);
};
CameraCapabilitiesImpl.prototype.torchFeature = function () {
return new TorchFeatureImpl(this.track);
};
return CameraCapabilitiesImpl;
}());
var RenderedCameraImpl = (function () {
function RenderedCameraImpl(parentElement, mediaStream, callbacks) {
this.isClosed = false;
this.parentElement = parentElement;
this.mediaStream = mediaStream;
this.callbacks = callbacks;
this.surface = this.createVideoElement(this.parentElement.clientWidth);
parentElement.append(this.surface);
}
RenderedCameraImpl.prototype.createVideoElement = function (width) {
var videoElement = document.createElement("video");
videoElement.style.width = "".concat(width, "px");
videoElement.style.display = "block";
videoElement.muted = true;
videoElement.setAttribute("muted", "true");
videoElement.playsInline = true;
return videoElement;
};
RenderedCameraImpl.prototype.setupSurface = function () {
var _this = this;
this.surface.onabort = function () {
throw "RenderedCameraImpl video surface onabort() called";
};
this.surface.onerror = function () {
throw "RenderedCameraImpl video surface onerror() called";
};
var onVideoStart = function () {
var videoWidth = _this.surface.clientWidth;
var videoHeight = _this.surface.clientHeight;
_this.callbacks.onRenderSurfaceReady(videoWidth, videoHeight);
_this.surface.removeEventListener("playing", onVideoStart);
};
this.surface.addEventListener("playing", onVideoStart);
this.surface.srcObject = this.mediaStream;
this.surface.play();
};
RenderedCameraImpl.create = function (parentElement, mediaStream, options, callbacks) {
return __awaiter(this, void 0, void 0, function () {
var renderedCamera, aspectRatioConstraint;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
renderedCamera = new RenderedCameraImpl(parentElement, mediaStream, callbacks);
if (!options.aspectRatio) return [3, 2];
aspectRatioConstraint = {
aspectRatio: options.aspectRatio
};
return [4, renderedCamera.getFirstTrackOrFail().applyConstraints(aspectRatioConstraint)];
case 1:
_a.sent();
_a.label = 2;
case 2:
renderedCamera.setupSurface();
return [2, renderedCamera];
}
});
});
};
RenderedCameraImpl.prototype.failIfClosed = function () {
if (this.isClosed) {
throw "The RenderedCamera has already been closed.";
}
};
RenderedCameraImpl.prototype.getFirstTrackOrFail = function () {
this.failIfClosed();
if (this.mediaStream.getVideoTracks().length === 0) {
throw "No video tracks found";
}
return this.mediaStream.getVideoTracks()[0];
};
RenderedCameraImpl.prototype.pause = function () {
this.failIfClosed();
this.surface.pause();
};
RenderedCameraImpl.prototype.resume = function (onResumeCallback) {
this.failIfClosed();
var $this = this;
var onVideoResume = function () {
setTimeout(onResumeCallback, 200);
$this.surface.removeEventListener("playing", onVideoResume);
};
this.surface.addEventListener("playing", onVideoResume);
this.surface.play();
};
RenderedCameraImpl.prototype.isPaused = function () {
this.failIfClosed();
return this.surface.paused;
};
RenderedCameraImpl.prototype.getSurface = function () {
this.failIfClosed();
return this.surface;
};
RenderedCameraImpl.prototype.getRunningTrackCapabilities = function () {
return this.getFirstTrackOrFail().getCapabilities();
};
RenderedCameraImpl.prototype.getRunningTrackSettings = function () {
return this.getFirstTrackOrFail().getSettings();
};
RenderedCameraImpl.prototype.applyVideoConstraints = function (constraints) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
if ("aspectRatio" in constraints) {
throw "Changing 'aspectRatio' in run-time is not yet supported.";
}
return [2, this.getFirstTrackOrFail().applyConstraints(constraints)];
});
});
};
RenderedCameraImpl.prototype.close = function () {
if (this.isClosed) {
return Promise.resolve();
}
var $this = this;
return new Promise(function (resolve, _) {
var tracks = $this.mediaStream.getVideoTracks();
var tracksToClose = tracks.length;
var tracksClosed = 0;
$this.mediaStream.getVideoTracks().forEach(function (videoTrack) {
$this.mediaStream.removeTrack(videoTrack);
videoTrack.stop();
++tracksClosed;
if (tracksClosed >= tracksToClose) {
$this.isClosed = true;
$this.parentElement.removeChild($this.surface);
resolve();
}
});
});
};
RenderedCameraImpl.prototype.getCapabilities = function () {
return new CameraCapabilitiesImpl(this.getFirstTrackOrFail());
};
return RenderedCameraImpl;
}());
var CameraImpl = (function () {
function CameraImpl(mediaStream) {
this.mediaStream = mediaStream;
}
CameraImpl.prototype.render = function (parentElement, options, callbacks) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, RenderedCameraImpl.create(parentElement, this.mediaStream, options, callbacks)];
});
});
};
CameraImpl.create = function (videoConstraints) {
return __awaiter(this, void 0, void 0, function () {
var constraints, mediaStream;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!navigator.mediaDevices) {
throw "navigator.mediaDevices not supported";
}
constraints = {
audio: false,
video: videoConstraints
};
return [4, navigator.mediaDevices.getUserMedia(constraints)];
case 1:
mediaStream = _a.sent();
return [2, new CameraImpl(mediaStream)];
}
});
});
};
return CameraImpl;
}());
export { CameraImpl };
//# sourceMappingURL=core-impl.js.map

File diff suppressed because one or more lines are too long

41
node_modules/html5-qrcode/esm/camera/core.d.ts generated vendored Normal file
View File

@@ -0,0 +1,41 @@
export interface CameraDevice {
id: string;
label: string;
}
export interface CameraCapability<T> {
isSupported(): boolean;
apply(value: T): Promise<void>;
value(): T | null;
}
export interface RangeCameraCapability extends CameraCapability<number> {
min(): number;
max(): number;
step(): number;
}
export interface BooleanCameraCapability extends CameraCapability<boolean> {
}
export interface CameraCapabilities {
zoomFeature(): RangeCameraCapability;
torchFeature(): BooleanCameraCapability;
}
export type OnRenderSurfaceReady = (viewfinderWidth: number, viewfinderHeight: number) => void;
export interface RenderingCallbacks {
onRenderSurfaceReady: OnRenderSurfaceReady;
}
export interface RenderedCamera {
getSurface(): HTMLVideoElement;
pause(): void;
resume(onResumeCallback: () => void): void;
isPaused(): boolean;
close(): Promise<void>;
getRunningTrackCapabilities(): MediaTrackCapabilities;
getRunningTrackSettings(): MediaTrackSettings;
applyVideoConstraints(constraints: MediaTrackConstraints): Promise<void>;
getCapabilities(): CameraCapabilities;
}
export interface CameraRenderingOptions {
aspectRatio?: number;
}
export interface Camera {
render(parentElement: HTMLElement, options: CameraRenderingOptions, callbacks: RenderingCallbacks): Promise<RenderedCamera>;
}

2
node_modules/html5-qrcode/esm/camera/core.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=core.js.map

1
node_modules/html5-qrcode/esm/camera/core.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/camera/core.ts"],"names":[],"mappings":""}

6
node_modules/html5-qrcode/esm/camera/factories.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import { Camera } from "./core";
export declare class CameraFactory {
static failIfNotSupported(): Promise<CameraFactory>;
private constructor();
create(videoConstraints: MediaTrackConstraints): Promise<Camera>;
}

61
node_modules/html5-qrcode/esm/camera/factories.js generated vendored Normal file
View File

@@ -0,0 +1,61 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
import { CameraImpl } from "./core-impl";
var CameraFactory = (function () {
function CameraFactory() {
}
CameraFactory.failIfNotSupported = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!navigator.mediaDevices) {
throw "navigator.mediaDevices not supported";
}
return [2, new CameraFactory()];
});
});
};
CameraFactory.prototype.create = function (videoConstraints) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2, CameraImpl.create(videoConstraints)];
});
});
};
return CameraFactory;
}());
export { CameraFactory };
//# sourceMappingURL=factories.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../src/camera/factories.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;IAcI;IAAqC,CAAC;IARlB,gCAAkB,GAAtC;;;gBACI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;oBACzB,MAAM,sCAAsC,CAAC;iBAChD;gBAED,WAAO,IAAI,aAAa,EAAE,EAAC;;;KAC9B;IAKY,8BAAM,GAAnB,UAAoB,gBAAuC;;;gBAEvD,WAAO,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC;;;KAC9C;IACL,oBAAC;AAAD,CAAC,AArBD,IAqBC"}

View File

@@ -0,0 +1,3 @@
export declare class CameraPermissions {
static hasPermissions(): Promise<boolean>;
}

62
node_modules/html5-qrcode/esm/camera/permissions.js generated vendored Normal file
View File

@@ -0,0 +1,62 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var CameraPermissions = (function () {
function CameraPermissions() {
}
CameraPermissions.hasPermissions = function () {
return __awaiter(this, void 0, void 0, function () {
var devices, _i, devices_1, device;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, navigator.mediaDevices.enumerateDevices()];
case 1:
devices = _a.sent();
for (_i = 0, devices_1 = devices; _i < devices_1.length; _i++) {
device = devices_1[_i];
if (device.kind === "videoinput" && device.label) {
return [2, true];
}
}
return [2, false];
}
});
});
};
return CameraPermissions;
}());
export { CameraPermissions };
//# sourceMappingURL=permissions.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/camera/permissions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYC;IAAA;IAqBD,CAAC;IAfuB,gCAAc,GAAlC;;;;;4BAIgB,WAAM,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAA;;wBAAzD,OAAO,GAAG,SAA+C;wBAC7D,WAA4B,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;4BAAnB,MAAM;4BAGf,IAAG,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE;gCAC/C,WAAO,IAAI,EAAC;6BACb;yBACF;wBAED,WAAO,KAAK,EAAC;;;;KACd;IACL,wBAAC;AAAD,CAAC,AArBA,IAqBA"}

8
node_modules/html5-qrcode/esm/camera/retriever.d.ts generated vendored Normal file
View File

@@ -0,0 +1,8 @@
import { CameraDevice } from "./core";
export declare class CameraRetriever {
static retrieve(): Promise<Array<CameraDevice>>;
private static rejectWithError;
private static isHttpsOrLocalhost;
private static getCamerasFromMediaDevices;
private static getCamerasFromMediaStreamTrack;
}

124
node_modules/html5-qrcode/esm/camera/retriever.js generated vendored Normal file
View File

@@ -0,0 +1,124 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
import { Html5QrcodeStrings } from "../strings";
var CameraRetriever = (function () {
function CameraRetriever() {
}
CameraRetriever.retrieve = function () {
if (navigator.mediaDevices) {
return CameraRetriever.getCamerasFromMediaDevices();
}
var mst = MediaStreamTrack;
if (MediaStreamTrack && mst.getSources) {
return CameraRetriever.getCamerasFromMediaStreamTrack();
}
return CameraRetriever.rejectWithError();
};
CameraRetriever.rejectWithError = function () {
var errorMessage = Html5QrcodeStrings.unableToQuerySupportedDevices();
if (!CameraRetriever.isHttpsOrLocalhost()) {
errorMessage = Html5QrcodeStrings.insecureContextCameraQueryError();
}
return Promise.reject(errorMessage);
};
CameraRetriever.isHttpsOrLocalhost = function () {
if (location.protocol === "https:") {
return true;
}
var host = location.host.split(":")[0];
return host === "127.0.0.1" || host === "localhost";
};
CameraRetriever.getCamerasFromMediaDevices = function () {
return __awaiter(this, void 0, void 0, function () {
var closeActiveStreams, mediaStream, devices, results, _i, devices_1, device;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
closeActiveStreams = function (stream) {
var tracks = stream.getVideoTracks();
for (var _i = 0, tracks_1 = tracks; _i < tracks_1.length; _i++) {
var track = tracks_1[_i];
track.enabled = false;
track.stop();
stream.removeTrack(track);
}
};
return [4, navigator.mediaDevices.getUserMedia({ audio: false, video: true })];
case 1:
mediaStream = _a.sent();
return [4, navigator.mediaDevices.enumerateDevices()];
case 2:
devices = _a.sent();
results = [];
for (_i = 0, devices_1 = devices; _i < devices_1.length; _i++) {
device = devices_1[_i];
if (device.kind === "videoinput") {
results.push({
id: device.deviceId,
label: device.label
});
}
}
closeActiveStreams(mediaStream);
return [2, results];
}
});
});
};
CameraRetriever.getCamerasFromMediaStreamTrack = function () {
return new Promise(function (resolve, _) {
var callback = function (sourceInfos) {
var results = [];
for (var _i = 0, sourceInfos_1 = sourceInfos; _i < sourceInfos_1.length; _i++) {
var sourceInfo = sourceInfos_1[_i];
if (sourceInfo.kind === "video") {
results.push({
id: sourceInfo.id,
label: sourceInfo.label
});
}
}
resolve(results);
};
var mst = MediaStreamTrack;
mst.getSources(callback);
});
};
return CameraRetriever;
}());
export { CameraRetriever };
//# sourceMappingURL=retriever.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"retriever.js","sourceRoot":"","sources":["../../../src/camera/retriever.ts"],"names":[],"mappings":"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"}