@rksan/mock-media-devices
Version:
WebAPI window.navigator.mediaDevices のモック
137 lines (136 loc) • 5.88 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _MockMediaStream_id, _MockMediaStream_tracks, _MockMediaStream_events;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockMediaStream = void 0;
const classes = __importStar(require("../classes"));
const utils_1 = require("../utils");
/**
*
* @export
* @class MockMediaStream
* @extends {EventTarget}
*/
class MockMediaStream extends EventTarget {
constructor() {
super();
_MockMediaStream_id.set(this, void 0);
_MockMediaStream_tracks.set(this, []);
_MockMediaStream_events.set(this, {
addtrack: [],
removetrack: [],
});
__classPrivateFieldSet(this, _MockMediaStream_id, (0, utils_1.getUUID)(), "f");
}
get active() {
return __classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((t) => t.enabled === true).length !== 0;
}
get id() {
return __classPrivateFieldGet(this, _MockMediaStream_id, "f");
}
// methods
addTrack(track) {
if (__classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((t) => t.id === track.id).length === 0) {
__classPrivateFieldGet(this, _MockMediaStream_tracks, "f").push(track);
const event = new classes.MockMediaStreamTrackEvent("addtrack", {
track,
});
this.dispatchEvent(event);
}
}
clone() {
return (0, utils_1.deepClone)(this);
}
getAudioTracks() {
return __classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((track) => track.kind === "audio");
}
getTrackById(id) {
return __classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((track) => track.id === id).pop();
}
/**
* @experimental
*/
getTracks() {
return __classPrivateFieldGet(this, _MockMediaStream_tracks, "f");
}
getVideoTracks() {
return __classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((track) => track.kind === "video");
}
removeTrack(track) {
__classPrivateFieldSet(this, _MockMediaStream_tracks, __classPrivateFieldGet(this, _MockMediaStream_tracks, "f").filter((t) => {
if (t.id !== track.id) {
const event = new classes.MockMediaStreamTrackEvent("removetrack", {
track,
});
this.dispatchEvent(event);
}
}), "f");
}
addEventListener(type, callback, options) {
if (callback)
__classPrivateFieldGet(this, _MockMediaStream_events, "f")[type].push(callback);
if (options)
console.log(options);
}
dispatchEvent(event) {
const type = event.type;
switch (type) {
case "addtrack":
case "removetrack": {
__classPrivateFieldGet(this, _MockMediaStream_events, "f")[type].forEach((callback) => {
if (typeof callback === "function") {
callback.call(this, event);
}
else {
callback.handleEvent.call(this, event);
}
});
return true;
}
default:
return false;
}
}
removeEventListener(type, callback, options) {
if (callback) {
__classPrivateFieldGet(this, _MockMediaStream_events, "f")[type] = __classPrivateFieldGet(this, _MockMediaStream_events, "f")[type].filter((cb) => cb === callback);
}
if (options)
console.log(options);
}
}
exports.MockMediaStream = MockMediaStream;
_MockMediaStream_id = new WeakMap(), _MockMediaStream_tracks = new WeakMap(), _MockMediaStream_events = new WeakMap();