scandit-sdk
Version:
Scandit Barcode Scanner SDK for the Web
120 lines • 5.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMediaDeviceInfo = exports.fakeFullCompatibleBrowser = exports.fakeGetCameras = exports.wait = void 0;
var tslib_1 = require("tslib");
/* tslint:disable:no-implicit-dependencies */
var eventemitter3_1 = require("eventemitter3");
var sinon = tslib_1.__importStar(require("sinon"));
var __1 = require("..");
function wait(ms) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve) {
setTimeout(resolve, ms);
})];
});
});
}
exports.wait = wait;
function fakeGetCameras(cameraAmount, cameraTypes, cameraLabels) {
var _a, _b;
(_b = (_a = __1.CameraAccess.getCameras).restore) === null || _b === void 0 ? void 0 : _b.call(_a);
sinon.stub(__1.CameraAccess, "getCameras").resolves(
// tslint:disable-next-line:prefer-array-literal
Array.from(Array(cameraAmount), function (_, index) {
var _a, _b;
var cameraType = (_a = cameraTypes === null || cameraTypes === void 0 ? void 0 : cameraTypes[index]) !== null && _a !== void 0 ? _a : __1.Camera.Type.BACK;
return {
deviceId: (index + 1).toString(),
label: (_b = cameraLabels === null || cameraLabels === void 0 ? void 0 : cameraLabels[index]) !== null && _b !== void 0 ? _b : "Fake Camera Device (".concat(cameraType, ")"),
cameraType: cameraType,
};
}));
}
exports.fakeGetCameras = fakeGetCameras;
function fakeFullCompatibleBrowser(configureLibrary, cameraDevices) {
if (configureLibrary === void 0) { configureLibrary = true; }
if (cameraDevices === void 0) { cameraDevices = []; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var mediaStreamTrack, MediaDevicesEventEmitter, mediaDevicesEventEmitter;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
mediaStreamTrack = {
stop: sinon.stub(),
addEventListener: sinon.stub(),
removeEventListener: sinon.stub(),
applyConstraints: sinon.stub().resolves(),
getCapabilities: sinon.stub().returns({}),
getConstraints: sinon.stub().returns({}),
getSettings: function () {
return {
width: 4,
height: 4,
};
},
};
MediaDevicesEventEmitter = /** @class */ (function (_super) {
tslib_1.__extends(MediaDevicesEventEmitter, _super);
function MediaDevicesEventEmitter() {
return _super !== null && _super.apply(this, arguments) || this;
}
return MediaDevicesEventEmitter;
}(eventemitter3_1.EventEmitter));
mediaDevicesEventEmitter = new eventemitter3_1.EventEmitter();
Object.defineProperty(navigator, "mediaDevices", {
value: {
getUserMedia: function () {
return Promise.resolve({
getVideoTracks: function () {
return [mediaStreamTrack];
},
});
},
addEventListener: function (type, listener) {
// The native addEventListener implementation would check for listener unicity, approximate this
mediaDevicesEventEmitter.removeAllListeners(type);
mediaDevicesEventEmitter.on(type, listener);
},
dispatchEvent: function (event) {
mediaDevicesEventEmitter.emit(event.type);
return true;
},
},
configurable: true,
});
navigator.mediaDevices.enumerateDevices = function () {
return Promise.resolve(cameraDevices);
};
URL.createObjectURL = sinon.stub();
__1.BrowserHelper.checkBrowserCompatibility = function () {
return {
fullSupport: true,
scannerSupport: true,
missingFeatures: [],
};
};
if (!configureLibrary) return [3 /*break*/, 2];
return [4 /*yield*/, (0, __1.configure)("#".repeat(64))];
case 1:
_a.sent();
_a.label = 2;
case 2: return [2 /*return*/];
}
});
});
}
exports.fakeFullCompatibleBrowser = fakeFullCompatibleBrowser;
function createMediaDeviceInfo(deviceId, groupId, kind, label) {
return {
deviceId: deviceId,
groupId: groupId,
kind: kind,
label: label,
toJSON: function () {
return this;
},
};
}
exports.createMediaDeviceInfo = createMediaDeviceInfo;
//# sourceMappingURL=utility.js.map