1609 lines
56 KiB
JavaScript
1609 lines
56 KiB
JavaScript
|
var __create = Object.create;
|
||
|
var __defProp = Object.defineProperty;
|
||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||
|
var __getProtoOf = Object.getPrototypeOf;
|
||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
||
|
var __commonJS = (cb, mod) => function __require() {
|
||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||
|
};
|
||
|
var __copyProps = (to, from, except, desc) => {
|
||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||
|
for (let key of __getOwnPropNames(from))
|
||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||
|
}
|
||
|
return to;
|
||
|
};
|
||
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||
|
// If the importer is in node compatibility mode or this is not an ESM
|
||
|
// file that has been converted to a CommonJS file using a Babel-
|
||
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
||
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
||
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||
|
mod
|
||
|
));
|
||
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||
|
|
||
|
// ../../node_modules/tseep/lib/types.js
|
||
|
var require_types = __commonJS({
|
||
|
"../../node_modules/tseep/lib/types.js"(exports2) {
|
||
|
"use strict";
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/task-collection/utils.js
|
||
|
var require_utils = __commonJS({
|
||
|
"../../node_modules/tseep/lib/task-collection/utils.js"(exports2) {
|
||
|
"use strict";
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
exports2._fast_remove_single = void 0;
|
||
|
function _fast_remove_single(arr, index) {
|
||
|
if (index === -1)
|
||
|
return;
|
||
|
if (index === 0)
|
||
|
arr.shift();
|
||
|
else if (index === arr.length - 1)
|
||
|
arr.length = arr.length - 1;
|
||
|
else
|
||
|
arr.splice(index, 1);
|
||
|
}
|
||
|
exports2._fast_remove_single = _fast_remove_single;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/task-collection/bake-collection.js
|
||
|
var require_bake_collection = __commonJS({
|
||
|
"../../node_modules/tseep/lib/task-collection/bake-collection.js"(exports, module) {
|
||
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.bakeCollectionVariadic = exports.bakeCollectionAwait = exports.bakeCollection = exports.BAKED_EMPTY_FUNC = void 0;
|
||
|
exports.BAKED_EMPTY_FUNC = function() {
|
||
|
};
|
||
|
var FORLOOP_FALLBACK = 1500;
|
||
|
function generateArgsDefCode(numArgs) {
|
||
|
var argsDefCode2 = "";
|
||
|
if (numArgs === 0)
|
||
|
return argsDefCode2;
|
||
|
for (var i = 0; i < numArgs - 1; ++i) {
|
||
|
argsDefCode2 += "arg" + String(i) + ", ";
|
||
|
}
|
||
|
argsDefCode2 += "arg" + String(numArgs - 1);
|
||
|
return argsDefCode2;
|
||
|
}
|
||
|
function generateBodyPartsCode(argsDefCode2, collectionLength) {
|
||
|
var funcDefCode2 = "", funcCallCode2 = "";
|
||
|
for (var i = 0; i < collectionLength; ++i) {
|
||
|
funcDefCode2 += "var f".concat(i, " = collection[").concat(i, "];\n");
|
||
|
funcCallCode2 += "f".concat(i, "(").concat(argsDefCode2, ")\n");
|
||
|
}
|
||
|
return { funcDefCode: funcDefCode2, funcCallCode: funcCallCode2 };
|
||
|
}
|
||
|
function generateBodyPartsVariadicCode(collectionLength) {
|
||
|
var funcDefCode2 = "", funcCallCode2 = "";
|
||
|
for (var i = 0; i < collectionLength; ++i) {
|
||
|
funcDefCode2 += "var f".concat(i, " = collection[").concat(i, "];\n");
|
||
|
funcCallCode2 += "f".concat(i, ".apply(undefined, arguments)\n");
|
||
|
}
|
||
|
return { funcDefCode: funcDefCode2, funcCallCode: funcCallCode2 };
|
||
|
}
|
||
|
function bakeCollection(collection, fixedArgsNum) {
|
||
|
if (collection.length === 0)
|
||
|
return exports.BAKED_EMPTY_FUNC;
|
||
|
else if (collection.length === 1)
|
||
|
return collection[0];
|
||
|
var funcFactoryCode;
|
||
|
if (collection.length < FORLOOP_FALLBACK) {
|
||
|
var argsDefCode = generateArgsDefCode(fixedArgsNum);
|
||
|
var _a = generateBodyPartsCode(argsDefCode, collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
|
||
|
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function(").concat(argsDefCode, ") {\n ").concat(funcCallCode, "\n });\n })");
|
||
|
} else {
|
||
|
var argsDefCode = generateArgsDefCode(fixedArgsNum);
|
||
|
if (collection.length % 10 === 0) {
|
||
|
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 10) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n collection[i+3](").concat(argsDefCode, ");\n collection[i+4](").concat(argsDefCode, ");\n collection[i+5](").concat(argsDefCode, ");\n collection[i+6](").concat(argsDefCode, ");\n collection[i+7](").concat(argsDefCode, ");\n collection[i+8](").concat(argsDefCode, ");\n collection[i+9](").concat(argsDefCode, ");\n }\n });\n })");
|
||
|
} else if (collection.length % 4 === 0) {
|
||
|
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 4) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n collection[i+3](").concat(argsDefCode, ");\n }\n });\n })");
|
||
|
} else if (collection.length % 3 === 0) {
|
||
|
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 3) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n }\n });\n })");
|
||
|
} else {
|
||
|
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; ++i) {\n collection[i](").concat(argsDefCode, ");\n }\n });\n })");
|
||
|
}
|
||
|
}
|
||
|
{
|
||
|
var bakeCollection_1 = void 0;
|
||
|
var fixedArgsNum_1 = void 0;
|
||
|
var bakeCollectionVariadic_1 = void 0;
|
||
|
var bakeCollectionAwait_1 = void 0;
|
||
|
var funcFactory = eval(funcFactoryCode);
|
||
|
return funcFactory(collection);
|
||
|
}
|
||
|
}
|
||
|
exports.bakeCollection = bakeCollection;
|
||
|
function bakeCollectionAwait(collection, fixedArgsNum) {
|
||
|
if (collection.length === 0)
|
||
|
return exports.BAKED_EMPTY_FUNC;
|
||
|
else if (collection.length === 1)
|
||
|
return collection[0];
|
||
|
var funcFactoryCode;
|
||
|
if (collection.length < FORLOOP_FALLBACK) {
|
||
|
var argsDefCode = generateArgsDefCode(fixedArgsNum);
|
||
|
var _a = generateBodyPartsCode(argsDefCode, collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
|
||
|
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function(").concat(argsDefCode, ") {\n return Promise.all([ ").concat(funcCallCode, " ]);\n });\n })");
|
||
|
} else {
|
||
|
var argsDefCode = generateArgsDefCode(fixedArgsNum);
|
||
|
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n var promises = Array(collection.length);\n for (var i = 0; i < collection.length; ++i) {\n promises[i] = collection[i](").concat(argsDefCode, ");\n }\n return Promise.all(promises);\n });\n })");
|
||
|
}
|
||
|
{
|
||
|
var bakeCollection_2 = void 0;
|
||
|
var fixedArgsNum_2 = void 0;
|
||
|
var bakeCollectionVariadic_2 = void 0;
|
||
|
var bakeCollectionAwait_2 = void 0;
|
||
|
var funcFactory = eval(funcFactoryCode);
|
||
|
return funcFactory(collection);
|
||
|
}
|
||
|
}
|
||
|
exports.bakeCollectionAwait = bakeCollectionAwait;
|
||
|
function bakeCollectionVariadic(collection) {
|
||
|
if (collection.length === 0)
|
||
|
return exports.BAKED_EMPTY_FUNC;
|
||
|
else if (collection.length === 1)
|
||
|
return collection[0];
|
||
|
var funcFactoryCode;
|
||
|
if (collection.length < FORLOOP_FALLBACK) {
|
||
|
var _a = generateBodyPartsVariadicCode(collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
|
||
|
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function() {\n ").concat(funcCallCode, "\n });\n })");
|
||
|
} else {
|
||
|
funcFactoryCode = "(function(collection) {\n return (function() {\n for (var i = 0; i < collection.length; ++i) {\n collection[i].apply(undefined, arguments);\n }\n });\n })";
|
||
|
}
|
||
|
{
|
||
|
var bakeCollection_3 = void 0;
|
||
|
var fixedArgsNum = void 0;
|
||
|
var bakeCollectionVariadic_3 = void 0;
|
||
|
var bakeCollectionAwait_3 = void 0;
|
||
|
var funcFactory = eval(funcFactoryCode);
|
||
|
return funcFactory(collection);
|
||
|
}
|
||
|
}
|
||
|
exports.bakeCollectionVariadic = bakeCollectionVariadic;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/task-collection/task-collection.js
|
||
|
var require_task_collection = __commonJS({
|
||
|
"../../node_modules/tseep/lib/task-collection/task-collection.js"(exports2) {
|
||
|
"use strict";
|
||
|
var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) {
|
||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
|
if (ar || !(i in from)) {
|
||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
|
ar[i] = from[i];
|
||
|
}
|
||
|
}
|
||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||
|
};
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
exports2.TaskCollection = void 0;
|
||
|
var utils_1 = require_utils();
|
||
|
var bake_collection_1 = require_bake_collection();
|
||
|
function push_norebuild(a, b) {
|
||
|
var len = this.length;
|
||
|
if (len > 1) {
|
||
|
if (b) {
|
||
|
var _a2;
|
||
|
(_a2 = this._tasks).push.apply(_a2, arguments);
|
||
|
this.length += arguments.length;
|
||
|
} else {
|
||
|
this._tasks.push(a);
|
||
|
this.length++;
|
||
|
}
|
||
|
} else {
|
||
|
if (b) {
|
||
|
if (len === 1) {
|
||
|
var newAr = Array(1 + arguments.length);
|
||
|
newAr.push(newAr);
|
||
|
newAr.push.apply(newAr, arguments);
|
||
|
this._tasks = newAr;
|
||
|
} else {
|
||
|
var newAr = Array(arguments.length);
|
||
|
newAr.push.apply(newAr, arguments);
|
||
|
this._tasks = newAr;
|
||
|
}
|
||
|
this.length += arguments.length;
|
||
|
} else {
|
||
|
if (len === 1)
|
||
|
this._tasks = [this._tasks, a];
|
||
|
else
|
||
|
this._tasks = a;
|
||
|
this.length++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
function push_rebuild(a, b) {
|
||
|
var len = this.length;
|
||
|
if (len > 1) {
|
||
|
if (b) {
|
||
|
var _a2;
|
||
|
(_a2 = this._tasks).push.apply(_a2, arguments);
|
||
|
this.length += arguments.length;
|
||
|
} else {
|
||
|
this._tasks.push(a);
|
||
|
this.length++;
|
||
|
}
|
||
|
} else {
|
||
|
if (b) {
|
||
|
if (len === 1) {
|
||
|
var newAr = Array(1 + arguments.length);
|
||
|
newAr.push(newAr);
|
||
|
newAr.push.apply(newAr, arguments);
|
||
|
this._tasks = newAr;
|
||
|
} else {
|
||
|
var newAr = Array(arguments.length);
|
||
|
newAr.push.apply(newAr, arguments);
|
||
|
this._tasks = newAr;
|
||
|
}
|
||
|
this.length += arguments.length;
|
||
|
} else {
|
||
|
if (len === 1)
|
||
|
this._tasks = [this._tasks, a];
|
||
|
else
|
||
|
this._tasks = a;
|
||
|
this.length++;
|
||
|
}
|
||
|
}
|
||
|
if (this.firstEmitBuildStrategy)
|
||
|
this.call = rebuild_on_first_call;
|
||
|
else
|
||
|
this.rebuild();
|
||
|
}
|
||
|
function removeLast_norebuild(a) {
|
||
|
if (this.length === 0)
|
||
|
return;
|
||
|
if (this.length === 1) {
|
||
|
if (this._tasks === a) {
|
||
|
this.length = 0;
|
||
|
}
|
||
|
} else {
|
||
|
(0, utils_1._fast_remove_single)(this._tasks, this._tasks.lastIndexOf(a));
|
||
|
if (this._tasks.length === 1) {
|
||
|
this._tasks = this._tasks[0];
|
||
|
this.length = 1;
|
||
|
} else
|
||
|
this.length = this._tasks.length;
|
||
|
}
|
||
|
}
|
||
|
function removeLast_rebuild(a) {
|
||
|
if (this.length === 0)
|
||
|
return;
|
||
|
if (this.length === 1) {
|
||
|
if (this._tasks === a) {
|
||
|
this.length = 0;
|
||
|
}
|
||
|
if (this.firstEmitBuildStrategy) {
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
return;
|
||
|
} else {
|
||
|
this.rebuild();
|
||
|
return;
|
||
|
}
|
||
|
} else {
|
||
|
(0, utils_1._fast_remove_single)(this._tasks, this._tasks.lastIndexOf(a));
|
||
|
if (this._tasks.length === 1) {
|
||
|
this._tasks = this._tasks[0];
|
||
|
this.length = 1;
|
||
|
} else
|
||
|
this.length = this._tasks.length;
|
||
|
}
|
||
|
if (this.firstEmitBuildStrategy)
|
||
|
this.call = rebuild_on_first_call;
|
||
|
else
|
||
|
this.rebuild();
|
||
|
}
|
||
|
function insert_norebuild(index) {
|
||
|
var _b;
|
||
|
var func = [];
|
||
|
for (var _i = 1; _i < arguments.length; _i++) {
|
||
|
func[_i - 1] = arguments[_i];
|
||
|
}
|
||
|
if (this.length === 0) {
|
||
|
this._tasks = func;
|
||
|
this.length = 1;
|
||
|
} else if (this.length === 1) {
|
||
|
func.unshift(this._tasks);
|
||
|
this._tasks = func;
|
||
|
this.length = this._tasks.length;
|
||
|
} else {
|
||
|
(_b = this._tasks).splice.apply(_b, __spreadArray([index, 0], func, false));
|
||
|
this.length = this._tasks.length;
|
||
|
}
|
||
|
}
|
||
|
function insert_rebuild(index) {
|
||
|
var _b;
|
||
|
var func = [];
|
||
|
for (var _i = 1; _i < arguments.length; _i++) {
|
||
|
func[_i - 1] = arguments[_i];
|
||
|
}
|
||
|
if (this.length === 0) {
|
||
|
this._tasks = func;
|
||
|
this.length = 1;
|
||
|
} else if (this.length === 1) {
|
||
|
func.unshift(this._tasks);
|
||
|
this._tasks = func;
|
||
|
this.length = this._tasks.length;
|
||
|
} else {
|
||
|
(_b = this._tasks).splice.apply(_b, __spreadArray([index, 0], func, false));
|
||
|
this.length = this._tasks.length;
|
||
|
}
|
||
|
if (this.firstEmitBuildStrategy)
|
||
|
this.call = rebuild_on_first_call;
|
||
|
else
|
||
|
this.rebuild();
|
||
|
}
|
||
|
function rebuild_noawait() {
|
||
|
if (this.length === 0)
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
else if (this.length === 1)
|
||
|
this.call = this._tasks;
|
||
|
else
|
||
|
this.call = (0, bake_collection_1.bakeCollection)(this._tasks, this.argsNum);
|
||
|
}
|
||
|
function rebuild_await() {
|
||
|
if (this.length === 0)
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
else if (this.length === 1)
|
||
|
this.call = this._tasks;
|
||
|
else
|
||
|
this.call = (0, bake_collection_1.bakeCollectionAwait)(this._tasks, this.argsNum);
|
||
|
}
|
||
|
function rebuild_on_first_call() {
|
||
|
this.rebuild();
|
||
|
this.call.apply(void 0, arguments);
|
||
|
}
|
||
|
var TaskCollection = (
|
||
|
/** @class */
|
||
|
/* @__PURE__ */ function() {
|
||
|
function TaskCollection2(argsNum, autoRebuild, initialTasks, awaitTasks) {
|
||
|
if (autoRebuild === void 0) {
|
||
|
autoRebuild = true;
|
||
|
}
|
||
|
if (initialTasks === void 0) {
|
||
|
initialTasks = null;
|
||
|
}
|
||
|
if (awaitTasks === void 0) {
|
||
|
awaitTasks = false;
|
||
|
}
|
||
|
this.awaitTasks = awaitTasks;
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
this.argsNum = argsNum;
|
||
|
this.firstEmitBuildStrategy = true;
|
||
|
if (awaitTasks)
|
||
|
this.rebuild = rebuild_await.bind(this);
|
||
|
else
|
||
|
this.rebuild = rebuild_noawait.bind(this);
|
||
|
this.setAutoRebuild(autoRebuild);
|
||
|
if (initialTasks) {
|
||
|
if (typeof initialTasks === "function") {
|
||
|
this._tasks = initialTasks;
|
||
|
this.length = 1;
|
||
|
} else {
|
||
|
this._tasks = initialTasks;
|
||
|
this.length = initialTasks.length;
|
||
|
}
|
||
|
} else {
|
||
|
this._tasks = null;
|
||
|
this.length = 0;
|
||
|
}
|
||
|
if (autoRebuild)
|
||
|
this.rebuild();
|
||
|
}
|
||
|
return TaskCollection2;
|
||
|
}()
|
||
|
);
|
||
|
exports2.TaskCollection = TaskCollection;
|
||
|
function fastClear() {
|
||
|
this._tasks = null;
|
||
|
this.length = 0;
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
}
|
||
|
function clear() {
|
||
|
this._tasks = null;
|
||
|
this.length = 0;
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
}
|
||
|
function growArgsNum(argsNum) {
|
||
|
if (this.argsNum < argsNum) {
|
||
|
this.argsNum = argsNum;
|
||
|
if (this.firstEmitBuildStrategy)
|
||
|
this.call = rebuild_on_first_call;
|
||
|
else
|
||
|
this.rebuild();
|
||
|
}
|
||
|
}
|
||
|
function setAutoRebuild(newVal) {
|
||
|
if (newVal) {
|
||
|
this.push = push_rebuild.bind(this);
|
||
|
this.insert = insert_rebuild.bind(this);
|
||
|
this.removeLast = removeLast_rebuild.bind(this);
|
||
|
} else {
|
||
|
this.push = push_norebuild.bind(this);
|
||
|
this.insert = insert_norebuild.bind(this);
|
||
|
this.removeLast = removeLast_norebuild.bind(this);
|
||
|
}
|
||
|
}
|
||
|
function tasksAsArray() {
|
||
|
if (this.length === 0)
|
||
|
return [];
|
||
|
if (this.length === 1)
|
||
|
return [this._tasks];
|
||
|
return this._tasks;
|
||
|
}
|
||
|
function setTasks(tasks) {
|
||
|
if (tasks.length === 0) {
|
||
|
this.length = 0;
|
||
|
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
|
||
|
} else if (tasks.length === 1) {
|
||
|
this.length = 1;
|
||
|
this.call = tasks[0];
|
||
|
this._tasks = tasks[0];
|
||
|
} else {
|
||
|
this.length = tasks.length;
|
||
|
this._tasks = tasks;
|
||
|
if (this.firstEmitBuildStrategy)
|
||
|
this.call = rebuild_on_first_call;
|
||
|
else
|
||
|
this.rebuild();
|
||
|
}
|
||
|
}
|
||
|
TaskCollection.prototype.fastClear = fastClear;
|
||
|
TaskCollection.prototype.clear = clear;
|
||
|
TaskCollection.prototype.growArgsNum = growArgsNum;
|
||
|
TaskCollection.prototype.setAutoRebuild = setAutoRebuild;
|
||
|
TaskCollection.prototype.tasksAsArray = tasksAsArray;
|
||
|
TaskCollection.prototype.setTasks = setTasks;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/task-collection/index.js
|
||
|
var require_task_collection2 = __commonJS({
|
||
|
"../../node_modules/tseep/lib/task-collection/index.js"(exports2) {
|
||
|
"use strict";
|
||
|
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
|
if (k2 === void 0) 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 === void 0) k2 = k;
|
||
|
o[k2] = m[k];
|
||
|
});
|
||
|
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
|
||
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
||
|
};
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
__exportStar(require_task_collection(), exports2);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/utils.js
|
||
|
var require_utils2 = __commonJS({
|
||
|
"../../node_modules/tseep/lib/utils.js"(exports2) {
|
||
|
"use strict";
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
exports2.nullObj = void 0;
|
||
|
function nullObj() {
|
||
|
var x = {};
|
||
|
x.__proto__ = null;
|
||
|
return x;
|
||
|
}
|
||
|
exports2.nullObj = nullObj;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/ee.js
|
||
|
var require_ee = __commonJS({
|
||
|
"../../node_modules/tseep/lib/ee.js"(exports2) {
|
||
|
"use strict";
|
||
|
var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) {
|
||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
||
|
if (ar || !(i in from)) {
|
||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
||
|
ar[i] = from[i];
|
||
|
}
|
||
|
}
|
||
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||
|
};
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
exports2.EventEmitter = void 0;
|
||
|
var task_collection_1 = require_task_collection2();
|
||
|
var utils_1 = require_utils();
|
||
|
var utils_2 = require_utils2();
|
||
|
function emit(event, a, b, c, d, e) {
|
||
|
var ev = this.events[event];
|
||
|
if (ev) {
|
||
|
if (ev.length === 0)
|
||
|
return false;
|
||
|
if (ev.argsNum < 6) {
|
||
|
ev.call(a, b, c, d, e);
|
||
|
} else {
|
||
|
var arr = new Array(ev.argsNum);
|
||
|
for (var i = 0, len = arr.length; i < len; ++i) {
|
||
|
arr[i] = arguments[i + 1];
|
||
|
}
|
||
|
ev.call.apply(void 0, arr);
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
function emitHasOnce(event, a, b, c, d, e) {
|
||
|
var ev = this.events[event];
|
||
|
var argsArr;
|
||
|
if (ev !== void 0) {
|
||
|
if (ev.length === 0)
|
||
|
return false;
|
||
|
if (ev.argsNum < 6) {
|
||
|
ev.call(a, b, c, d, e);
|
||
|
} else {
|
||
|
argsArr = new Array(ev.argsNum);
|
||
|
for (var i = 0, len = argsArr.length; i < len; ++i) {
|
||
|
argsArr[i] = arguments[i + 1];
|
||
|
}
|
||
|
ev.call.apply(void 0, argsArr);
|
||
|
}
|
||
|
}
|
||
|
var oev = this.onceEvents[event];
|
||
|
if (oev) {
|
||
|
if (typeof oev === "function") {
|
||
|
this.onceEvents[event] = void 0;
|
||
|
if (arguments.length < 6) {
|
||
|
oev(a, b, c, d, e);
|
||
|
} else {
|
||
|
if (argsArr === void 0) {
|
||
|
argsArr = new Array(arguments.length - 1);
|
||
|
for (var i = 0, len = argsArr.length; i < len; ++i) {
|
||
|
argsArr[i] = arguments[i + 1];
|
||
|
}
|
||
|
}
|
||
|
oev.apply(void 0, argsArr);
|
||
|
}
|
||
|
} else {
|
||
|
var fncs = oev;
|
||
|
this.onceEvents[event] = void 0;
|
||
|
if (arguments.length < 6) {
|
||
|
for (var i = 0; i < fncs.length; ++i) {
|
||
|
fncs[i](a, b, c, d, e);
|
||
|
}
|
||
|
} else {
|
||
|
if (argsArr === void 0) {
|
||
|
argsArr = new Array(arguments.length - 1);
|
||
|
for (var i = 0, len = argsArr.length; i < len; ++i) {
|
||
|
argsArr[i] = arguments[i + 1];
|
||
|
}
|
||
|
}
|
||
|
for (var i = 0; i < fncs.length; ++i) {
|
||
|
fncs[i].apply(void 0, argsArr);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
return ev !== void 0;
|
||
|
}
|
||
|
var EventEmitter2 = (
|
||
|
/** @class */
|
||
|
function() {
|
||
|
function EventEmitter3() {
|
||
|
this.events = (0, utils_2.nullObj)();
|
||
|
this.onceEvents = (0, utils_2.nullObj)();
|
||
|
this._symbolKeys = /* @__PURE__ */ new Set();
|
||
|
this.maxListeners = Infinity;
|
||
|
}
|
||
|
Object.defineProperty(EventEmitter3.prototype, "_eventsCount", {
|
||
|
get: function() {
|
||
|
return this.eventNames().length;
|
||
|
},
|
||
|
enumerable: false,
|
||
|
configurable: true
|
||
|
});
|
||
|
return EventEmitter3;
|
||
|
}()
|
||
|
);
|
||
|
exports2.EventEmitter = EventEmitter2;
|
||
|
function once(event, listener) {
|
||
|
if (this.emit === emit) {
|
||
|
this.emit = emitHasOnce;
|
||
|
}
|
||
|
switch (typeof this.onceEvents[event]) {
|
||
|
case "undefined":
|
||
|
this.onceEvents[event] = listener;
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.add(event);
|
||
|
break;
|
||
|
case "function":
|
||
|
this.onceEvents[event] = [this.onceEvents[event], listener];
|
||
|
break;
|
||
|
case "object":
|
||
|
this.onceEvents[event].push(listener);
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function addListener(event, listener, argsNum) {
|
||
|
if (argsNum === void 0) {
|
||
|
argsNum = listener.length;
|
||
|
}
|
||
|
if (typeof listener !== "function")
|
||
|
throw new TypeError("The listener must be a function");
|
||
|
var evtmap = this.events[event];
|
||
|
if (!evtmap) {
|
||
|
this.events[event] = new task_collection_1.TaskCollection(argsNum, true, listener, false);
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.add(event);
|
||
|
} else {
|
||
|
evtmap.push(listener);
|
||
|
evtmap.growArgsNum(argsNum);
|
||
|
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length)
|
||
|
console.warn('Maximum event listeners for "'.concat(String(event), '" event!'));
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function removeListener(event, listener) {
|
||
|
var evt = this.events[event];
|
||
|
if (evt) {
|
||
|
evt.removeLast(listener);
|
||
|
}
|
||
|
var evto = this.onceEvents[event];
|
||
|
if (evto) {
|
||
|
if (typeof evto === "function") {
|
||
|
this.onceEvents[event] = void 0;
|
||
|
} else if (typeof evto === "object") {
|
||
|
if (evto.length === 1 && evto[0] === listener) {
|
||
|
this.onceEvents[event] = void 0;
|
||
|
} else {
|
||
|
(0, utils_1._fast_remove_single)(evto, evto.lastIndexOf(listener));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function addListenerBound(event, listener, bindTo, argsNum) {
|
||
|
if (bindTo === void 0) {
|
||
|
bindTo = this;
|
||
|
}
|
||
|
if (argsNum === void 0) {
|
||
|
argsNum = listener.length;
|
||
|
}
|
||
|
if (!this.boundFuncs)
|
||
|
this.boundFuncs = /* @__PURE__ */ new Map();
|
||
|
var bound = listener.bind(bindTo);
|
||
|
this.boundFuncs.set(listener, bound);
|
||
|
return this.addListener(event, bound, argsNum);
|
||
|
}
|
||
|
function removeListenerBound(event, listener) {
|
||
|
var _a2, _b;
|
||
|
var bound = (_a2 = this.boundFuncs) === null || _a2 === void 0 ? void 0 : _a2.get(listener);
|
||
|
(_b = this.boundFuncs) === null || _b === void 0 ? void 0 : _b.delete(listener);
|
||
|
return this.removeListener(event, bound);
|
||
|
}
|
||
|
function hasListeners(event) {
|
||
|
return this.events[event] && !!this.events[event].length;
|
||
|
}
|
||
|
function prependListener(event, listener, argsNum) {
|
||
|
if (argsNum === void 0) {
|
||
|
argsNum = listener.length;
|
||
|
}
|
||
|
if (typeof listener !== "function")
|
||
|
throw new TypeError("The listener must be a function");
|
||
|
var evtmap = this.events[event];
|
||
|
if (!evtmap || !(evtmap instanceof task_collection_1.TaskCollection)) {
|
||
|
evtmap = this.events[event] = new task_collection_1.TaskCollection(argsNum, true, listener, false);
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.add(event);
|
||
|
} else {
|
||
|
evtmap.insert(0, listener);
|
||
|
evtmap.growArgsNum(argsNum);
|
||
|
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length)
|
||
|
console.warn('Maximum event listeners for "'.concat(String(event), '" event!'));
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function prependOnceListener(event, listener) {
|
||
|
if (this.emit === emit) {
|
||
|
this.emit = emitHasOnce;
|
||
|
}
|
||
|
var evtmap = this.onceEvents[event];
|
||
|
if (!evtmap) {
|
||
|
this.onceEvents[event] = [listener];
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.add(event);
|
||
|
} else if (typeof evtmap !== "object") {
|
||
|
this.onceEvents[event] = [listener, evtmap];
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.add(event);
|
||
|
} else {
|
||
|
evtmap.unshift(listener);
|
||
|
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length) {
|
||
|
console.warn('Maximum event listeners for "'.concat(String(event), '" once event!'));
|
||
|
}
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function removeAllListeners(event) {
|
||
|
if (event === void 0) {
|
||
|
this.events = (0, utils_2.nullObj)();
|
||
|
this.onceEvents = (0, utils_2.nullObj)();
|
||
|
this._symbolKeys = /* @__PURE__ */ new Set();
|
||
|
} else {
|
||
|
this.events[event] = void 0;
|
||
|
this.onceEvents[event] = void 0;
|
||
|
if (typeof event === "symbol")
|
||
|
this._symbolKeys.delete(event);
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
function setMaxListeners(n) {
|
||
|
this.maxListeners = n;
|
||
|
return this;
|
||
|
}
|
||
|
function getMaxListeners() {
|
||
|
return this.maxListeners;
|
||
|
}
|
||
|
function listeners(event) {
|
||
|
if (this.emit === emit)
|
||
|
return this.events[event] ? this.events[event].tasksAsArray().slice() : [];
|
||
|
else {
|
||
|
if (this.events[event] && this.onceEvents[event]) {
|
||
|
return __spreadArray(__spreadArray([], this.events[event].tasksAsArray(), true), typeof this.onceEvents[event] === "function" ? [this.onceEvents[event]] : this.onceEvents[event], true);
|
||
|
} else if (this.events[event])
|
||
|
return this.events[event].tasksAsArray();
|
||
|
else if (this.onceEvents[event])
|
||
|
return typeof this.onceEvents[event] === "function" ? [this.onceEvents[event]] : this.onceEvents[event];
|
||
|
else
|
||
|
return [];
|
||
|
}
|
||
|
}
|
||
|
function eventNames() {
|
||
|
var _this = this;
|
||
|
if (this.emit === emit) {
|
||
|
var keys = Object.keys(this.events);
|
||
|
return __spreadArray(__spreadArray([], keys, true), Array.from(this._symbolKeys), true).filter(function(x) {
|
||
|
return x in _this.events && _this.events[x] && _this.events[x].length;
|
||
|
});
|
||
|
} else {
|
||
|
var keys = Object.keys(this.events).filter(function(x) {
|
||
|
return _this.events[x] && _this.events[x].length;
|
||
|
});
|
||
|
var keysO = Object.keys(this.onceEvents).filter(function(x) {
|
||
|
return _this.onceEvents[x] && _this.onceEvents[x].length;
|
||
|
});
|
||
|
return __spreadArray(__spreadArray(__spreadArray([], keys, true), keysO, true), Array.from(this._symbolKeys).filter(function(x) {
|
||
|
return x in _this.events && _this.events[x] && _this.events[x].length || x in _this.onceEvents && _this.onceEvents[x] && _this.onceEvents[x].length;
|
||
|
}), true);
|
||
|
}
|
||
|
}
|
||
|
function listenerCount(type) {
|
||
|
if (this.emit === emit)
|
||
|
return this.events[type] && this.events[type].length || 0;
|
||
|
else
|
||
|
return (this.events[type] && this.events[type].length || 0) + (this.onceEvents[type] && this.onceEvents[type].length || 0);
|
||
|
}
|
||
|
EventEmitter2.prototype.emit = emit;
|
||
|
EventEmitter2.prototype.on = addListener;
|
||
|
EventEmitter2.prototype.once = once;
|
||
|
EventEmitter2.prototype.addListener = addListener;
|
||
|
EventEmitter2.prototype.removeListener = removeListener;
|
||
|
EventEmitter2.prototype.addListenerBound = addListenerBound;
|
||
|
EventEmitter2.prototype.removeListenerBound = removeListenerBound;
|
||
|
EventEmitter2.prototype.hasListeners = hasListeners;
|
||
|
EventEmitter2.prototype.prependListener = prependListener;
|
||
|
EventEmitter2.prototype.prependOnceListener = prependOnceListener;
|
||
|
EventEmitter2.prototype.off = removeListener;
|
||
|
EventEmitter2.prototype.removeAllListeners = removeAllListeners;
|
||
|
EventEmitter2.prototype.setMaxListeners = setMaxListeners;
|
||
|
EventEmitter2.prototype.getMaxListeners = getMaxListeners;
|
||
|
EventEmitter2.prototype.listeners = listeners;
|
||
|
EventEmitter2.prototype.eventNames = eventNames;
|
||
|
EventEmitter2.prototype.listenerCount = listenerCount;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// ../../node_modules/tseep/lib/index.js
|
||
|
var require_lib = __commonJS({
|
||
|
"../../node_modules/tseep/lib/index.js"(exports2) {
|
||
|
"use strict";
|
||
|
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
|
||
|
if (k2 === void 0) 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 === void 0) k2 = k;
|
||
|
o[k2] = m[k];
|
||
|
});
|
||
|
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
|
||
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
||
|
};
|
||
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
||
|
__exportStar(require_types(), exports2);
|
||
|
__exportStar(require_ee(), exports2);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// src/hls-player.ts
|
||
|
import Hls from "hls.js";
|
||
|
|
||
|
// ../shared/src/assert.ts
|
||
|
function assert(value, message = "value is null") {
|
||
|
if (value === null || value === void 0) {
|
||
|
throw Error(message);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// src/hls-player.ts
|
||
|
var import_tseep = __toESM(require_lib(), 1);
|
||
|
|
||
|
// src/event-manager.ts
|
||
|
var EventManager = class {
|
||
|
constructor() {
|
||
|
__publicField(this, "bindings_", /* @__PURE__ */ new Set());
|
||
|
__publicField(this, "listen", (target) => (type, listener, context) => {
|
||
|
const binding = createBinding(target, type, listener, context);
|
||
|
this.bindings_.add(binding);
|
||
|
});
|
||
|
__publicField(this, "listenOnce", (target) => (type, listener, context) => {
|
||
|
const binding = createBinding(target, type, listener, context, true);
|
||
|
this.bindings_.add(binding);
|
||
|
});
|
||
|
__publicField(this, "unlisten", (target) => (type, listener) => {
|
||
|
const binding = Array.from(this.bindings_).find(
|
||
|
(binding2) => binding2.target === target && binding2.type === type && binding2.listener === listener
|
||
|
);
|
||
|
if (binding) {
|
||
|
binding.remove();
|
||
|
this.bindings_.delete(binding);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
removeAll() {
|
||
|
this.bindings_.forEach((binding) => {
|
||
|
binding.remove();
|
||
|
});
|
||
|
this.bindings_.clear();
|
||
|
}
|
||
|
};
|
||
|
function createBinding(target, type, listener, context, once) {
|
||
|
const methodMap = {
|
||
|
add: target.addEventListener?.bind(target) ?? target.on?.bind(target),
|
||
|
remove: target.removeEventListener?.bind(target) ?? target.off?.bind(target)
|
||
|
};
|
||
|
const remove = () => {
|
||
|
methodMap.remove?.(type, callback);
|
||
|
};
|
||
|
const callback = async (...args) => {
|
||
|
try {
|
||
|
await listener.apply(context, args);
|
||
|
if (once) {
|
||
|
remove();
|
||
|
}
|
||
|
} catch (error) {
|
||
|
console.error(error);
|
||
|
}
|
||
|
};
|
||
|
methodMap.add?.(type, callback);
|
||
|
return {
|
||
|
target,
|
||
|
type,
|
||
|
listener,
|
||
|
context,
|
||
|
once,
|
||
|
remove
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// src/helpers.ts
|
||
|
function preciseFloat(value) {
|
||
|
return Math.round((value + Number.EPSILON) * 100) / 100;
|
||
|
}
|
||
|
function getLangCode(key) {
|
||
|
const value = key ? langCodes[key]?.split(",")[0] : null;
|
||
|
if (!value) {
|
||
|
return "Unknown";
|
||
|
}
|
||
|
return `${value[0].toUpperCase()}${value.slice(1)}`;
|
||
|
}
|
||
|
var langCodes = {
|
||
|
sr: "\u0441\u0440\u043F\u0441\u043A\u0438 \u0458\u0435\u0437\u0438\u043A",
|
||
|
ro: "Rom\xE2n\u0103",
|
||
|
ii: "\uA188\uA320\uA4BF Nuosuhxop",
|
||
|
ty: "Reo Tahiti",
|
||
|
tl: "Wikang Tagalog",
|
||
|
yi: "\u05D9\u05D9\u05B4\u05D3\u05D9\u05E9",
|
||
|
ak: "Akan",
|
||
|
ms: "Bahasa Melayu, \u0628\u0647\u0627\u0633 \u0645\u0644\u0627\u064A\u0648",
|
||
|
ar: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",
|
||
|
no: "Norsk",
|
||
|
oj: "\u140A\u14C2\u1511\u14C8\u142F\u14A7\u140E\u14D0",
|
||
|
ff: "Fulfulde, Pulaar, Pular",
|
||
|
fa: "\u0641\u0627\u0631\u0633\u06CC",
|
||
|
sq: "Shqip",
|
||
|
ay: "aymar aru",
|
||
|
az: "az\u0259rbaycan dili",
|
||
|
zh: "\u4E2D\u6587 (Zh\u014Dngw\xE9n), \u6C49\u8BED, \u6F22\u8A9E",
|
||
|
cr: "\u14C0\u1426\u1403\u152D\u140D\u140F\u1423",
|
||
|
et: "eesti, eesti keel",
|
||
|
gn: "Ava\xF1e'\u1EBD",
|
||
|
ik: "I\xF1upiaq, I\xF1upiatun",
|
||
|
iu: "\u1403\u14C4\u1483\u144E\u1450\u1466",
|
||
|
kr: "Kanuri",
|
||
|
kv: "\u043A\u043E\u043C\u0438 \u043A\u044B\u0432",
|
||
|
kg: "Kikongo",
|
||
|
ku: "Kurd\xEE, \u0623\u06C7\u0632\u0628\u06D0\u0643",
|
||
|
lv: "latvie\u0161u valoda",
|
||
|
mg: "fiteny malagasy",
|
||
|
mn: "\u041C\u043E\u043D\u0433\u043E\u043B \u0445\u044D\u043B",
|
||
|
om: "Afaan Oromoo",
|
||
|
ps: "\u067E\u069A\u062A\u0648",
|
||
|
qu: "Runa Simi, Kichwa",
|
||
|
sc: "sardu",
|
||
|
sw: "Kiswahili",
|
||
|
uz: "O'zbek, \u040E\u0437\u0431\u0435\u043A, ",
|
||
|
za: "Saw cue\u014B\u0185, Saw cuengh",
|
||
|
bi: "Bislama",
|
||
|
nb: "Norsk Bokm\xE5l",
|
||
|
nn: "Norsk Nynorsk",
|
||
|
id: "Bahasa Indonesia",
|
||
|
tw: "Twi",
|
||
|
eo: "Esperanto",
|
||
|
ia: "Interlingua",
|
||
|
ie: "Originally called Occidental; then Interlingue after WWII",
|
||
|
io: "Ido",
|
||
|
vo: "Volap\xFCk",
|
||
|
bh: "\u092D\u094B\u091C\u092A\u0941\u0930\u0940",
|
||
|
he: "\u05E2\u05D1\u05E8\u05D9\u05EA",
|
||
|
sa: "\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D",
|
||
|
cu: "\u0469\u0437\u044B\u043A\u044A \u0441\u043B\u043E\u0432\u0463\u043D\u044C\u0441\u043A\u044A",
|
||
|
pi: "\u092A\u093E\u0934\u093F",
|
||
|
ae: "avesta",
|
||
|
la: "latine, lingua latina",
|
||
|
hy: "\u0540\u0561\u0575\u0565\u0580\u0565\u0576",
|
||
|
ss: "SiSwati",
|
||
|
bo: "\u0F56\u0F7C\u0F51\u0F0B\u0F61\u0F72\u0F42",
|
||
|
nr: "isiNdebele",
|
||
|
sl: "Slovenski Jezik, Sloven\u0161\u010Dina",
|
||
|
or: "\u0B13\u0B21\u0B3C\u0B3F\u0B06",
|
||
|
nd: "isiNdebele",
|
||
|
na: "Dorerin Naoero",
|
||
|
mi: "te reo M\u0101ori",
|
||
|
mr: "\u092E\u0930\u093E\u0920\u0940",
|
||
|
lu: "Kiluba",
|
||
|
rn: "Ikirundi",
|
||
|
km: "\u1781\u17D2\u1798\u17C2\u179A, \u1781\u17C1\u1798\u179A\u1797\u17B6\u179F\u17B6, \u1797\u17B6\u179F\u17B6\u1781\u17D2\u1798\u17C2\u179A",
|
||
|
fy: "Frysk",
|
||
|
bn: "\u09AC\u09BE\u0982\u09B2\u09BE",
|
||
|
av: "\u0430\u0432\u0430\u0440 \u043C\u0430\u0446\u04C0, \u043C\u0430\u0433\u04C0\u0430\u0440\u0443\u043B \u043C\u0430\u0446\u04C0",
|
||
|
ab: "\u0430\u04A7\u0441\u0443\u0430 \u0431\u044B\u0437\u0448\u04D9\u0430, \u0430\u04A7\u0441\u0448\u04D9\u0430",
|
||
|
aa: "Afaraf",
|
||
|
af: "Afrikaans",
|
||
|
am: "\u12A0\u121B\u122D\u129B",
|
||
|
an: "aragon\xE9s",
|
||
|
as: "\u0985\u09B8\u09AE\u09C0\u09AF\u09BC\u09BE",
|
||
|
bm: "bamanankan",
|
||
|
ba: "\u0431\u0430\u0448\u04A1\u043E\u0440\u0442 \u0442\u0435\u043B\u0435",
|
||
|
eu: "euskara, euskera",
|
||
|
be: "\u0431\u0435\u043B\u0430\u0440\u0443\u0441\u043A\u0430\u044F \u043C\u043E\u0432\u0430",
|
||
|
bs: "bosanski jezik",
|
||
|
br: "brezhoneg",
|
||
|
bg: "\u0431\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438 \u0435\u0437\u0438\u043A",
|
||
|
my: "\u1017\u1019\u102C\u1005\u102C",
|
||
|
ca: "catal\xE0, valenci\xE0",
|
||
|
ch: "Chamoru",
|
||
|
ce: "\u043D\u043E\u0445\u0447\u0438\u0439\u043D \u043C\u043E\u0442\u0442",
|
||
|
ny: "chiChe\u0175a, chinyanja",
|
||
|
cv: "\u0447\u04D1\u0432\u0430\u0448 \u0447\u04D7\u043B\u0445\u0438",
|
||
|
kw: "Kernewek",
|
||
|
co: "corsu, lingua corsa",
|
||
|
hr: "hrvatski jezik",
|
||
|
cs: "\u010De\u0161tina, \u010Desk\xFD jazyk",
|
||
|
da: "dansk",
|
||
|
dv: "\u078B\u07A8\u0788\u07AC\u0780\u07A8",
|
||
|
nl: "Nederlands, Vlaams",
|
||
|
dz: "\u0F62\u0FAB\u0F7C\u0F44\u0F0B\u0F41",
|
||
|
en: "English",
|
||
|
ee: "E\u028Begbe",
|
||
|
fo: "f\xF8royskt",
|
||
|
fj: "vosa Vakaviti",
|
||
|
fi: "suomi, suomen kieli",
|
||
|
fr: "fran\xE7ais, langue fran\xE7aise",
|
||
|
gl: "Galego",
|
||
|
ka: "\u10E5\u10D0\u10E0\u10D7\u10E3\u10DA\u10D8",
|
||
|
de: "Deutsch",
|
||
|
el: "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",
|
||
|
gu: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0",
|
||
|
ht: "Krey\xF2l ayisyen",
|
||
|
ha: "(Hausa) \u0647\u064E\u0648\u064F\u0633\u064E",
|
||
|
hz: "Otjiherero",
|
||
|
hi: "\u0939\u093F\u0928\u094D\u0926\u0940, \u0939\u093F\u0902\u0926\u0940",
|
||
|
ho: "Hiri Motu",
|
||
|
hu: "magyar",
|
||
|
ga: "Gaeilge",
|
||
|
ig: "As\u1EE5s\u1EE5 Igbo",
|
||
|
is: "\xCDslenska",
|
||
|
it: "Italiano",
|
||
|
ja: "\u65E5\u672C\u8A9E (\u306B\u307B\u3093\u3054)",
|
||
|
jv: "\uA9A7\uA9B1\uA997\uA9AE, Basa Jawa",
|
||
|
kl: "kalaallisut, kalaallit oqaasii",
|
||
|
kn: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1",
|
||
|
ks: "\u0915\u0936\u094D\u092E\u0940\u0930\u0940, \u0643\u0634\u0645\u064A\u0631\u064A",
|
||
|
kk: "\u049B\u0430\u0437\u0430\u049B \u0442\u0456\u043B\u0456",
|
||
|
ki: "G\u0129k\u0169y\u0169",
|
||
|
rw: "Ikinyarwanda",
|
||
|
ky: "\u041A\u044B\u0440\u0433\u044B\u0437\u0447\u0430, \u041A\u044B\u0440\u0433\u044B\u0437 \u0442\u0438\u043B\u0438",
|
||
|
ko: "\uD55C\uAD6D\uC5B4",
|
||
|
kj: "Kuanyama",
|
||
|
lb: "L\xEBtzebuergesch",
|
||
|
lg: "Luganda",
|
||
|
li: "Limburgs",
|
||
|
ln: "Ling\xE1la",
|
||
|
lo: "\u0E9E\u0EB2\u0EAA\u0EB2\u0EA5\u0EB2\u0EA7",
|
||
|
lt: "lietuvi\u0173 kalba",
|
||
|
gv: "Gaelg, Gailck",
|
||
|
mk: "\u043C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438 \u0458\u0430\u0437\u0438\u043A",
|
||
|
ml: "\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02",
|
||
|
mt: "Malti",
|
||
|
mh: "Kajin M\u0327aje\u013C",
|
||
|
nv: "Din\xE9 bizaad",
|
||
|
ne: "\u0928\u0947\u092A\u093E\u0932\u0940",
|
||
|
ng: "Owambo",
|
||
|
oc: "occitan, lenga d'\xF2c",
|
||
|
os: "\u0438\u0440\u043E\u043D \xE6\u0432\u0437\u0430\u0433",
|
||
|
pa: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40",
|
||
|
pl: "j\u0119zyk polski, polszczyzna",
|
||
|
pt: "Portugu\xEAs",
|
||
|
rm: "Rumantsch Grischun",
|
||
|
ru: "\u0440\u0443\u0441\u0441\u043A\u0438\u0439",
|
||
|
sd: "\u0938\u093F\u0928\u094D\u0927\u0940, \u0633\u0646\u068C\u064A\u060C \u0633\u0646\u062F\u06BE\u06CC",
|
||
|
se: "Davvis\xE1megiella",
|
||
|
sm: "gagana fa'a Samoa",
|
||
|
sg: "y\xE2ng\xE2 t\xEE s\xE4ng\xF6",
|
||
|
gd: "G\xE0idhlig",
|
||
|
sn: "chiShona",
|
||
|
si: "\u0DC3\u0DD2\u0D82\u0DC4\u0DBD",
|
||
|
sk: "Sloven\u010Dina, Slovensk\xFD Jazyk",
|
||
|
so: "Soomaaliga, af Soomaali",
|
||
|
st: "Sesotho",
|
||
|
es: "Espa\xF1ol",
|
||
|
su: "Basa Sunda",
|
||
|
sv: "Svenska",
|
||
|
ta: "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
|
||
|
te: "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41",
|
||
|
tg: "\u0442\u043E\u04B7\u0438\u043A\u04E3, to\xE7ik\u012B, \u062A\u0627\u062C\u06CC\u06A9\u06CC",
|
||
|
th: "\u0E44\u0E17\u0E22",
|
||
|
ti: "\u1275\u130D\u122D\u129B",
|
||
|
tk: "T\xFCrkmen, \u0422\u04AF\u0440\u043A\u043C\u0435\u043D",
|
||
|
tn: "Setswana",
|
||
|
to: "Faka Tonga",
|
||
|
tr: "T\xFCrk\xE7e",
|
||
|
ts: "Xitsonga",
|
||
|
tt: "\u0442\u0430\u0442\u0430\u0440 \u0442\u0435\u043B\u0435, tatar tele",
|
||
|
ug: "\u0626\u06C7\u064A\u063A\u06C7\u0631\u0686\u06D5, Uyghurche",
|
||
|
uk: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",
|
||
|
ur: "\u0627\u0631\u062F\u0648",
|
||
|
ve: "Tshiven\u1E13a",
|
||
|
vi: "Ti\u1EBFng Vi\u1EC7t",
|
||
|
wa: "Walon",
|
||
|
cy: "Cymraeg",
|
||
|
wo: "Wollof",
|
||
|
xh: "isiXhosa",
|
||
|
yo: "Yor\xF9b\xE1",
|
||
|
zu: "isiZulu"
|
||
|
};
|
||
|
|
||
|
// src/types.ts
|
||
|
var Events = /* @__PURE__ */ ((Events2) => {
|
||
|
Events2["RESET"] = "reset";
|
||
|
Events2["READY"] = "ready";
|
||
|
Events2["STARTED"] = "started";
|
||
|
Events2["PLAYHEAD_CHANGE"] = "playheadChange";
|
||
|
Events2["TIME_CHANGE"] = "timeChange";
|
||
|
Events2["VOLUME_CHANGE"] = "volumeChange";
|
||
|
Events2["QUALITIES_CHANGE"] = "qualitiesChange";
|
||
|
Events2["AUDIO_TRACKS_CHANGE"] = "audioTracksChange";
|
||
|
Events2["SUBTITLE_TRACKS_CHANGE"] = "subtitleTracksChange";
|
||
|
Events2["AUTO_QUALITY_CHANGE"] = "autoQualityChange";
|
||
|
Events2["INTERSTITIAL_CHANGE"] = "interstitialChange";
|
||
|
Events2["SEEKING_CHANGE"] = "seekingChange";
|
||
|
Events2["CUEPOINTS_CHANGE"] = "cuePointsChange";
|
||
|
return Events2;
|
||
|
})(Events || {});
|
||
|
|
||
|
// src/state.ts
|
||
|
var noState = {
|
||
|
playhead: "idle",
|
||
|
ready: false,
|
||
|
started: false,
|
||
|
time: 0,
|
||
|
duration: NaN,
|
||
|
interstitial: null,
|
||
|
qualities: [],
|
||
|
autoQuality: false,
|
||
|
audioTracks: [],
|
||
|
subtitleTracks: [],
|
||
|
volume: 1,
|
||
|
seeking: false,
|
||
|
cuePoints: []
|
||
|
};
|
||
|
var State = class {
|
||
|
constructor(params_) {
|
||
|
this.params_ = params_;
|
||
|
__publicField(this, "timerId_");
|
||
|
__publicField(this, "ready", noState.ready);
|
||
|
__publicField(this, "playhead", noState.playhead);
|
||
|
__publicField(this, "started", noState.started);
|
||
|
__publicField(this, "time", noState.time);
|
||
|
__publicField(this, "duration", noState.duration);
|
||
|
__publicField(this, "interstitial", noState.interstitial);
|
||
|
__publicField(this, "qualities", noState.qualities);
|
||
|
__publicField(this, "autoQuality", noState.autoQuality);
|
||
|
__publicField(this, "audioTracks", noState.audioTracks);
|
||
|
__publicField(this, "subtitleTracks", noState.subtitleTracks);
|
||
|
__publicField(this, "volume", noState.volume);
|
||
|
__publicField(this, "seeking", noState.seeking);
|
||
|
__publicField(this, "cuePoints", noState.cuePoints);
|
||
|
this.requestTimingSync();
|
||
|
}
|
||
|
setReady() {
|
||
|
if (this.ready) {
|
||
|
return;
|
||
|
}
|
||
|
this.ready = true;
|
||
|
this.requestTimingSync();
|
||
|
this.params_.onEvent("ready" /* READY */);
|
||
|
}
|
||
|
setPlayhead(playhead) {
|
||
|
if (playhead === this.playhead) {
|
||
|
return;
|
||
|
}
|
||
|
this.playhead = playhead;
|
||
|
if (playhead === "pause") {
|
||
|
this.requestTimingSync();
|
||
|
}
|
||
|
this.params_.onEvent("playheadChange" /* PLAYHEAD_CHANGE */);
|
||
|
}
|
||
|
setStarted() {
|
||
|
if (this.started) {
|
||
|
return;
|
||
|
}
|
||
|
this.started = true;
|
||
|
this.params_.onEvent("started" /* STARTED */);
|
||
|
}
|
||
|
setInterstitial(interstitial) {
|
||
|
this.interstitial = interstitial;
|
||
|
this.setSeeking(false);
|
||
|
this.params_.onEvent("interstitialChange" /* INTERSTITIAL_CHANGE */);
|
||
|
}
|
||
|
setAsset(asset) {
|
||
|
if (!this.interstitial) {
|
||
|
return;
|
||
|
}
|
||
|
if (asset) {
|
||
|
this.interstitial.asset = {
|
||
|
time: 0,
|
||
|
duration: NaN,
|
||
|
...asset
|
||
|
};
|
||
|
this.requestTimingSync();
|
||
|
} else {
|
||
|
this.interstitial.asset = null;
|
||
|
}
|
||
|
}
|
||
|
setQualities(qualities, autoQuality) {
|
||
|
const diff = (items) => items.find((item) => item.active)?.height;
|
||
|
if (diff(this.qualities) !== diff(qualities)) {
|
||
|
this.qualities = qualities;
|
||
|
this.params_.onEvent("qualitiesChange" /* QUALITIES_CHANGE */);
|
||
|
}
|
||
|
if (autoQuality !== this.autoQuality) {
|
||
|
this.autoQuality = autoQuality;
|
||
|
this.params_.onEvent("autoQualityChange" /* AUTO_QUALITY_CHANGE */);
|
||
|
}
|
||
|
}
|
||
|
setAudioTracks(audioTracks) {
|
||
|
const diff = (items) => items.find((item) => item.active)?.id;
|
||
|
if (diff(this.audioTracks) !== diff(audioTracks)) {
|
||
|
this.audioTracks = audioTracks;
|
||
|
this.params_.onEvent("audioTracksChange" /* AUDIO_TRACKS_CHANGE */);
|
||
|
}
|
||
|
}
|
||
|
setSubtitleTracks(subtitleTracks) {
|
||
|
const diff = (items) => items.find((item) => item.active)?.id;
|
||
|
if (
|
||
|
// TODO: Come up with a generic logical check.
|
||
|
!this.subtitleTracks.length && subtitleTracks.length || diff(this.subtitleTracks) !== diff(subtitleTracks)
|
||
|
) {
|
||
|
this.subtitleTracks = subtitleTracks;
|
||
|
this.params_.onEvent("subtitleTracksChange" /* SUBTITLE_TRACKS_CHANGE */);
|
||
|
}
|
||
|
}
|
||
|
setVolume(volume) {
|
||
|
if (volume === this.volume) {
|
||
|
return;
|
||
|
}
|
||
|
this.volume = volume;
|
||
|
this.params_.onEvent("volumeChange" /* VOLUME_CHANGE */);
|
||
|
}
|
||
|
setSeeking(seeking) {
|
||
|
if (seeking === this.seeking) {
|
||
|
return;
|
||
|
}
|
||
|
this.seeking = seeking;
|
||
|
this.requestTimingSync();
|
||
|
this.params_.onEvent("seekingChange" /* SEEKING_CHANGE */);
|
||
|
}
|
||
|
setCuePoints(cuePoints) {
|
||
|
this.cuePoints = cuePoints;
|
||
|
this.requestTimingSync();
|
||
|
this.params_.onEvent("cuePointsChange" /* CUEPOINTS_CHANGE */);
|
||
|
}
|
||
|
requestTimingSync() {
|
||
|
clearTimeout(this.timerId_);
|
||
|
this.timerId_ = window.setTimeout(() => {
|
||
|
this.requestTimingSync();
|
||
|
}, 250);
|
||
|
const timing = this.params_.getTiming();
|
||
|
let shouldEmit = false;
|
||
|
if (this.updateTimeDuration_(this, timing.primary)) {
|
||
|
shouldEmit = true;
|
||
|
}
|
||
|
if (this.interstitial?.asset && this.updateTimeDuration_(this.interstitial.asset, timing.asset)) {
|
||
|
shouldEmit = true;
|
||
|
}
|
||
|
if (shouldEmit) {
|
||
|
this.params_.onEvent("timeChange" /* TIME_CHANGE */);
|
||
|
}
|
||
|
}
|
||
|
updateTimeDuration_(target, shim) {
|
||
|
if (!shim) {
|
||
|
return false;
|
||
|
}
|
||
|
if (!Number.isFinite(shim.duration)) {
|
||
|
return false;
|
||
|
}
|
||
|
const oldTime = target.time;
|
||
|
target.time = preciseFloat(shim.currentTime);
|
||
|
const oldDuration = target.duration;
|
||
|
target.duration = preciseFloat(shim.duration);
|
||
|
if (target.time > target.duration) {
|
||
|
target.time = target.duration;
|
||
|
}
|
||
|
return oldTime !== target.time || oldDuration !== target.duration;
|
||
|
}
|
||
|
};
|
||
|
function getState(state, name) {
|
||
|
return state?.[name] ?? noState[name];
|
||
|
}
|
||
|
|
||
|
// src/hls-player.ts
|
||
|
var HlsPlayer = class {
|
||
|
constructor(container) {
|
||
|
this.container = container;
|
||
|
__publicField(this, "media_");
|
||
|
__publicField(this, "eventManager_", new EventManager());
|
||
|
__publicField(this, "hls_", null);
|
||
|
__publicField(this, "state_", null);
|
||
|
__publicField(this, "emitter_", new import_tseep.EventEmitter());
|
||
|
__publicField(this, "on", this.emitter_.on.bind(this.emitter_));
|
||
|
__publicField(this, "off", this.emitter_.off.bind(this.emitter_));
|
||
|
__publicField(this, "once", this.emitter_.once.bind(this.emitter_));
|
||
|
this.media_ = this.createMedia_();
|
||
|
}
|
||
|
createMedia_() {
|
||
|
const media = document.createElement("video");
|
||
|
this.container.appendChild(media);
|
||
|
media.style.position = "absolute";
|
||
|
media.style.inset = "0";
|
||
|
media.style.width = "100%";
|
||
|
media.style.height = "100%";
|
||
|
return media;
|
||
|
}
|
||
|
load(url) {
|
||
|
this.unload();
|
||
|
this.bindMediaListeners_();
|
||
|
const hls = this.createHls_();
|
||
|
this.state_ = new State({
|
||
|
onEvent: (event) => this.emit_(event),
|
||
|
getTiming: () => ({
|
||
|
primary: hls.interstitialsManager?.primary ?? hls.media,
|
||
|
asset: hls.interstitialsManager?.playerQueue.find(
|
||
|
(player) => player.assetItem === hls.interstitialsManager?.playingAsset
|
||
|
)
|
||
|
})
|
||
|
});
|
||
|
hls.attachMedia(this.media_);
|
||
|
hls.loadSource(url);
|
||
|
this.hls_ = hls;
|
||
|
}
|
||
|
unload() {
|
||
|
this.eventManager_.removeAll();
|
||
|
this.state_ = null;
|
||
|
if (this.hls_) {
|
||
|
this.hls_.destroy();
|
||
|
this.hls_ = null;
|
||
|
}
|
||
|
this.emit_("reset" /* RESET */);
|
||
|
}
|
||
|
destroy() {
|
||
|
this.emitter_.removeAllListeners();
|
||
|
this.unload();
|
||
|
}
|
||
|
playOrPause() {
|
||
|
if (!this.state_) {
|
||
|
return;
|
||
|
}
|
||
|
const shouldPause = this.state_.playhead === "play" || this.state_.playhead === "playing";
|
||
|
if (shouldPause) {
|
||
|
this.media_.pause();
|
||
|
} else {
|
||
|
this.media_.play();
|
||
|
}
|
||
|
}
|
||
|
seekTo(time) {
|
||
|
assert(this.hls_);
|
||
|
if (this.state_?.interstitial) {
|
||
|
return false;
|
||
|
}
|
||
|
if (this.hls_.interstitialsManager) {
|
||
|
this.hls_.interstitialsManager.primary.seekTo(time);
|
||
|
} else {
|
||
|
this.media_.currentTime = time;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
setQuality(height) {
|
||
|
assert(this.hls_);
|
||
|
if (height === null) {
|
||
|
this.hls_.nextLevel = -1;
|
||
|
} else {
|
||
|
const loadLevel = this.hls_.levels[this.hls_.loadLevel];
|
||
|
assert(loadLevel, "No level found for loadLevel index");
|
||
|
const idx = this.hls_.levels.findIndex((level) => {
|
||
|
return level.height === height && level.audioCodec?.substring(0, 4) === loadLevel.audioCodec?.substring(0, 4);
|
||
|
});
|
||
|
if (idx < 0) {
|
||
|
throw new Error("Could not find matching level");
|
||
|
}
|
||
|
this.hls_.nextLevel = idx;
|
||
|
}
|
||
|
this.updateQualities_();
|
||
|
}
|
||
|
setAudioTrack(id) {
|
||
|
assert(this.hls_);
|
||
|
const audioTrack = this.state_?.audioTracks.find(
|
||
|
(track) => track.id === id
|
||
|
);
|
||
|
assert(audioTrack);
|
||
|
this.hls_.setAudioOption({
|
||
|
lang: audioTrack.track.lang,
|
||
|
channels: audioTrack.track.channels,
|
||
|
name: audioTrack.track.name
|
||
|
});
|
||
|
}
|
||
|
setSubtitleTrack(id) {
|
||
|
assert(this.hls_);
|
||
|
if (id === null) {
|
||
|
this.hls_.subtitleTrack = -1;
|
||
|
return;
|
||
|
}
|
||
|
const subtitleTrack = this.state_?.subtitleTracks.find(
|
||
|
(track) => track.id === id
|
||
|
);
|
||
|
assert(subtitleTrack);
|
||
|
this.hls_.setSubtitleOption({
|
||
|
lang: subtitleTrack.track.lang,
|
||
|
name: subtitleTrack.track.name
|
||
|
});
|
||
|
}
|
||
|
setVolume(volume) {
|
||
|
this.media_.volume = volume;
|
||
|
this.media_.muted = volume === 0;
|
||
|
this.state_?.setVolume(volume);
|
||
|
}
|
||
|
get ready() {
|
||
|
return getState(this.state_, "ready");
|
||
|
}
|
||
|
get playhead() {
|
||
|
return getState(this.state_, "playhead");
|
||
|
}
|
||
|
get started() {
|
||
|
return getState(this.state_, "started");
|
||
|
}
|
||
|
get time() {
|
||
|
return getState(this.state_, "time");
|
||
|
}
|
||
|
get duration() {
|
||
|
return getState(this.state_, "duration");
|
||
|
}
|
||
|
get seeking() {
|
||
|
return getState(this.state_, "seeking");
|
||
|
}
|
||
|
get interstitial() {
|
||
|
return getState(this.state_, "interstitial");
|
||
|
}
|
||
|
get qualities() {
|
||
|
return getState(this.state_, "qualities");
|
||
|
}
|
||
|
get autoQuality() {
|
||
|
return getState(this.state_, "autoQuality");
|
||
|
}
|
||
|
get audioTracks() {
|
||
|
return getState(this.state_, "audioTracks");
|
||
|
}
|
||
|
get subtitleTracks() {
|
||
|
return getState(this.state_, "subtitleTracks");
|
||
|
}
|
||
|
get volume() {
|
||
|
return getState(this.state_, "volume");
|
||
|
}
|
||
|
get seekableStart() {
|
||
|
if (this.hls_) {
|
||
|
return this.hls_.interstitialsManager?.primary?.seekableStart ?? 0;
|
||
|
}
|
||
|
return NaN;
|
||
|
}
|
||
|
get live() {
|
||
|
return this.hls_?.levels[this.hls_.currentLevel]?.details?.live ?? false;
|
||
|
}
|
||
|
get cuePoints() {
|
||
|
return getState(this.state_, "cuePoints");
|
||
|
}
|
||
|
createHls_() {
|
||
|
const hls = new Hls();
|
||
|
const listen = this.eventManager_.listen(hls);
|
||
|
listen(Hls.Events.MANIFEST_LOADED, () => {
|
||
|
this.updateQualities_();
|
||
|
this.updateAudioTracks_();
|
||
|
this.updateSubtitleTracks_();
|
||
|
});
|
||
|
listen(Hls.Events.INTERSTITIAL_STARTED, () => {
|
||
|
this.state_?.setInterstitial({
|
||
|
asset: null
|
||
|
});
|
||
|
});
|
||
|
listen(Hls.Events.INTERSTITIAL_ASSET_STARTED, (_, data) => {
|
||
|
const listResponseAsset = data.event.assetListResponse?.ASSETS[data.assetListIndex];
|
||
|
this.state_?.setAsset({
|
||
|
type: listResponseAsset["SPRS-KIND"]
|
||
|
});
|
||
|
});
|
||
|
listen(Hls.Events.INTERSTITIAL_ASSET_ENDED, () => {
|
||
|
this.state_?.setAsset(null);
|
||
|
});
|
||
|
listen(Hls.Events.INTERSTITIAL_ENDED, () => {
|
||
|
this.state_?.setInterstitial(null);
|
||
|
});
|
||
|
listen(Hls.Events.LEVELS_UPDATED, () => {
|
||
|
this.updateQualities_();
|
||
|
});
|
||
|
listen(Hls.Events.LEVEL_SWITCHING, () => {
|
||
|
this.updateQualities_();
|
||
|
});
|
||
|
listen(Hls.Events.AUDIO_TRACKS_UPDATED, () => {
|
||
|
this.updateAudioTracks_();
|
||
|
});
|
||
|
listen(Hls.Events.AUDIO_TRACK_SWITCHING, () => {
|
||
|
this.updateAudioTracks_();
|
||
|
});
|
||
|
listen(Hls.Events.SUBTITLE_TRACKS_UPDATED, () => {
|
||
|
this.updateSubtitleTracks_();
|
||
|
});
|
||
|
listen(Hls.Events.SUBTITLE_TRACK_SWITCH, () => {
|
||
|
this.updateSubtitleTracks_();
|
||
|
});
|
||
|
listen(Hls.Events.INTERSTITIALS_UPDATED, (_, data) => {
|
||
|
const cuePoints = data.schedule.reduce((acc, item) => {
|
||
|
if (item.event) {
|
||
|
acc.push(item.start);
|
||
|
}
|
||
|
return acc;
|
||
|
}, []);
|
||
|
this.state_?.setCuePoints(cuePoints);
|
||
|
});
|
||
|
return hls;
|
||
|
}
|
||
|
updateQualities_() {
|
||
|
assert(this.hls_);
|
||
|
const group = [];
|
||
|
for (const level2 of this.hls_.levels) {
|
||
|
let item = group.find((item2) => item2.height === level2.height);
|
||
|
if (!item) {
|
||
|
item = {
|
||
|
height: level2.height,
|
||
|
levels: []
|
||
|
};
|
||
|
group.push(item);
|
||
|
}
|
||
|
item.levels.push(level2);
|
||
|
}
|
||
|
const level = this.hls_.levels[this.hls_.nextLoadLevel];
|
||
|
const qualities = group.map((item) => {
|
||
|
return {
|
||
|
...item,
|
||
|
active: item.height === level.height
|
||
|
};
|
||
|
});
|
||
|
qualities.sort((a, b) => b.height - a.height);
|
||
|
const autoQuality = this.hls_.autoLevelEnabled;
|
||
|
this.state_?.setQualities(qualities, autoQuality);
|
||
|
}
|
||
|
updateAudioTracks_() {
|
||
|
assert(this.hls_);
|
||
|
const tracks = this.hls_.allAudioTracks.map((track, index) => {
|
||
|
let label = getLangCode(track.lang);
|
||
|
if (track.channels === "6") {
|
||
|
label += " 5.1";
|
||
|
}
|
||
|
return {
|
||
|
id: index,
|
||
|
active: this.hls_?.audioTracks.includes(track) ? track.id === this.hls_.audioTrack : false,
|
||
|
label,
|
||
|
track
|
||
|
};
|
||
|
});
|
||
|
this.state_?.setAudioTracks(tracks);
|
||
|
}
|
||
|
updateSubtitleTracks_() {
|
||
|
assert(this.hls_);
|
||
|
const tracks = this.hls_.allSubtitleTracks.map(
|
||
|
(track, index) => {
|
||
|
return {
|
||
|
id: index,
|
||
|
active: this.hls_?.subtitleTracks.includes(track) ? track.id === this.hls_.subtitleTrack : false,
|
||
|
label: getLangCode(track.lang),
|
||
|
track
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
this.state_?.setSubtitleTracks(tracks);
|
||
|
}
|
||
|
bindMediaListeners_() {
|
||
|
const listen = this.eventManager_.listen(this.media_);
|
||
|
listen("canplay", () => {
|
||
|
this.state_?.setReady();
|
||
|
});
|
||
|
listen("play", () => {
|
||
|
this.state_?.setPlayhead("play");
|
||
|
});
|
||
|
listen("playing", () => {
|
||
|
this.state_?.setStarted();
|
||
|
this.state_?.setPlayhead("playing");
|
||
|
});
|
||
|
listen("pause", () => {
|
||
|
this.state_?.setPlayhead("pause");
|
||
|
});
|
||
|
listen("volumechange", () => {
|
||
|
this.state_?.setVolume(this.media_.volume);
|
||
|
});
|
||
|
listen("seeking", () => {
|
||
|
this.state_?.setSeeking(true);
|
||
|
});
|
||
|
listen("seeked", () => {
|
||
|
this.state_?.setSeeking(false);
|
||
|
});
|
||
|
}
|
||
|
emit_(event) {
|
||
|
this.emitter_.emit(event);
|
||
|
this.emitter_.emit("*", event);
|
||
|
}
|
||
|
};
|
||
|
export {
|
||
|
Events,
|
||
|
HlsPlayer
|
||
|
};
|
||
|
//# sourceMappingURL=index.js.map
|